第12章 · 播客 第9集
嵌入式系统设计 · 时间指标与软硬件协同设计
🎙️ 本集播客:第9集:把任务切换、中断延迟、中断响应、中断恢复、最大关中断、任务响应、系统响应一条线画清;嵌入式系统设计为什么核心是软硬件协同设计,十一个技术指标里 NRE 成本是什么;处理器技术三分类与 IC 技术三分类的优缺点对照,还有四大开发模型。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
上集埋的伏笔,今天把时间性能指标一条线串清楚?
雅
小雅
对,评估实时操作系统设计性能时,时间性能指标是最重要的指标。先画主线:一个中断发生,先是系统「获知」它,这段时间叫中断延迟时间——从中断发生到系统获知中断的时间,主要受系统最大关中断时间的影响,关中断时间越长,中断延迟也就越长。获知之后开始处理,处理本身花的时间叫中断处理执行时间,该时间由具体的应用决定。而从中断发生到开始执行用户中断服务例程的时间,叫中断响应时间。处理完,从用户中断服务例程结束回到被中断的代码之间的时间,叫中断恢复时间。
明
阿明
等一下,中断延迟是「到系统获知」,中断响应是「到开始执行用户中断服务例程」,这两个就差在中间那段?
雅
小雅
对,一个到「系统知道」,一个到「用户程序动手」,中断响应覆盖得更远。接着是最大关中断时间,它包含两个方面:一是内核最大关中断时间,即内核在执行临界区代码时关中断;二是应用关中断时间;关中断最大时间是这两种关中断时间的最大值。然后是任务响应时间:从任务对应的中断产生到该任务真正开始运行的时间。最后系统响应时间:指系统在发出处理请求到系统做出应答的时间,即调度延迟,这个时间的大小主要由内核任务调度算法所决定。
明
阿明
对于可抢占式调度还有个补充?
雅
小雅
有,原文单独一句:对于可抢占式调度,中断恢复的时间还要加上进行任务切换和恢复新的任务上下文的时间。还有任务切换时间也要抠定义:是指 CPU 控制权由运行态的任务转移给另外一个就绪任务所需要的时间,包括在进行任务切换时保存和恢复任务上下文所花费的时间,及选择下一个待运行任务的调度时间;该指标跟微处理器的寄存器数目和系统结构有关,相同的操作系统在不同微处理器上运行时所花费的时间可能不同。把六个时间念一遍防混:任务切换、中断延迟、中断处理执行、中断响应、中断恢复、系统响应,加一个任务响应。
明
阿明
这条时间线我记住了。下面该说嵌入式系统的开发设计了?这可是练习题的最后一道。
雅
小雅
先把主旨句背下来:嵌入式系统设计的主要任务是定义系统的功能、决定系统的架构,并将功能映射到系统实现架构上。然后是必考句:嵌入式系统的设计方法跟一般的硬件设计、软件开发的方法不同,是采用硬件和软件协同设计的方法,开发过程不仅涉及软件领域的知识,还涉及硬件领域的综合知识,甚至还涉及机械等方面的知识。练习题问「嵌入式系统设计采用的核心设计方法是」,四个选项:自顶向下设计方法、面向对象设计方法、结构化设计方法、软硬件协同设计方法——答案选软硬件协同设计方法。
明
阿明
前面三个选项听着也都挺有道理的。
雅
小雅
这正是题目的坏心思:自顶向下、面向对象、结构化都是软件工程的常规方法,放在通用软件开发里都对,但嵌入式的招牌就是软硬件协同。同款考点还有嵌入式系统设计的特点,原文列了八条:软硬件协同并行开发;微处理器的类型多种多样;实时嵌入式操作系统具有多样性;与通用系统开发相比可利用系统资源很少;应用支持少;要求特殊的开发工具;软硬件都要很健壮;调试很困难。判断题问「嵌入式系统设计可以软硬件分开顺序开发」,错。
雅
小雅
再看十一个技术指标,名词解释题的高发区。NRE 成本,非重复性工程成本:设计系统所需要支付的一次性货币成本,一旦设计完毕,不需要支付额外的设计费用,就可以制造任意数目的产品。单位成本:生产单个产品所需要支付的货币成本,不包含 NRE 成本。大小:系统所占的空间,对软件一般用字节数来衡量,对硬件用逻辑门或晶体管的数目来衡量。性能:系统完成规定任务所需要的时间,有两种衡量方式,一是响应时间,即开始执行到任务结束之间的时间;二是完成量,即单位时间内所完成的任务量。
雅
小雅
功率:系统所消耗的功率,决定了电池的寿命或电路的散热需求。灵活性:在不增加 NRE 成本的前提下,改变系统功能的能力。样机建立时间:建立系统可运行版本所需的时间。上市时间:从系统开发到可以上市卖给消费者的时间,最主要的影响因素包括设计时间、制造时间和检测时间。可维护性:系统推出或上市后进行修改的难易程度。正确性:正确实现了系统的功能。安全性:系统不会造成伤害的概率。最后这句也是考点:各个设计指标之间一般是互相竞争的,改良了某个指标常常会导致其他指标的恶化。
明
阿明
NRE 成本是其中最陌生的,我再确认一遍:一次性、设计完了就能无限造、跟单位成本分开算。
雅
小雅
对。接着是八大设计挑战,过一遍关键词:需要多少硬件——硬件太少达不到功能性能要求,太多又使产品过于昂贵;如何满足时限——用提高处理器速度的方法解决时间约束是不可取的,因为价格上升,而且有时钟频率提高执行速度也未必提高,程序速度可能受存储系统的限制;如何减少系统的功耗——降低运算速度是一种方法但会牺牲性能,必须认真设计;如何保证系统的可升级性——硬件平台可能使用几代,通过改变软件来改变系统特性;如何保证系统的可靠性;测试的复杂性——不能离开嵌入式系统工作的整个环境来测试;可视性和可控制性有限——通常没有显示设备和键盘,实时系统一般无法为了观察而停机;开发环境受限——只能采用交叉式开发。
明
阿明
开发模型这块,和软件工程那章能对上吗?
雅
小雅
名字都认识,但要注意嵌入式场景下的表述。常用四种。瀑布模型,由需求分析、系统结构设计、编码、测试、维护五个主要阶段构成,各阶段工作和信息总是由高级的抽象到较详细的设计步骤单向流动,是一个理想的自顶向下的设计模型。螺旋模型,假定要建立系统的多个版本,早期版本是简单的试验模型,每层设计都经过需求分析、结构设计、测试三个阶段,通过一系列设计循环加深对系统的理解,螺旋模型比瀑布模型更加符合实际。
雅
小雅
逐步求精模型,第一个系统被作为原型,其后逐个将系统进一步求精,当设计者对应用领域不是很熟悉时这个方法很有意义。层次模型,完整系统由更多小设计组成,从最高抽象层次的整体设计到中间层次的详细设计再到具体模块设计,逐层展开,每个流程可能由单个设计人员或设计小组承担,每个小组从上级小组获得要求。
雅
小雅
然后是嵌入式软件开发全流程:项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固化、测试及运行。前五个阶段与通用软件开发基本一致,按软件工程方法进行;程序建立阶段做源代码编写、编译、链接,都在宿主机进行,不需要用到目标机;产生可执行文件后用交叉开发环境调试;调试通过后固化到目标机——可以固化在 EPROM 和 FLASH 等存储器中,也可固化在 DOC 和 DOM 等电子盘中,通常要借助专用编程器。还有一句要背:由于嵌入式系统对安全性和可靠性的要求比通用计算机系统要高,所以在对嵌入式系统进行白盒测试时,要求有更高的代码覆盖率。
明
阿明
中断处理执行时间这条我注意到原文说「该时间由具体的应用决定」,这话什么意思?
雅
小雅
意思是它不是操作系统的锅,是你的中断服务例程写多长就多长,所以在评估 RTOS 性能时,它是变数,真正的系统指标是中断延迟、中断响应、中断恢复这些框架性时间。出判断题「中断处理执行时间由操作系统内核决定」,错。
明
阿明
NRE 成本和单位成本这对概念,能不能出一道计算式选择题?比如「量产摊薄 NRE」那种。
雅
小雅
能。逻辑链是:NRE 是一次性设计成本,一旦设计完毕不需要支付额外设计费用就可以制造任意数目的产品;数量越大,NRE 摊到每个产品上的份额越小——这正是原文处理器技术那节说的「数量大时,自行设计的 NRE 成本分摊下来,可降低单位成本」。反之用通用处理器,数量少时单位成本较低,数量大时相对较高。问「为什么大批量时定制方案更划算」,答 NRE 分摊。
明
阿明
十一指标里「性能的两种衡量方式」也容易混吧?
雅
小雅
两种:响应时间,即开始执行到任务结束之间的时间;完成量,即单位时间内所完成的任务量。一个是「一次多快」,一个是「一阵多少」。考法:问「单位时间内完成的任务量是哪个指标」,答完成量,别答响应时间。
明
阿明
处理器技术三类里「专用指令集处理器」的定义再帮我抠一遍,它和单片机什么关系?
雅
小雅
专用指令集处理器是一个可编程处理器,针对某一特定类型的应用进行最优化,这类特定应用具有相同的特征,如嵌入式控制、数字信号处理等。原文点明:单片机和数字信号处理器是两类应用广泛的专用处理器——单片机是针对嵌入式控制应用进行最佳化的微处理器,数字信号处理器是针对数字信号进行常见运算的微处理器。所以题目问「DSP 属于哪类处理器技术」,答专用处理器。
明
阿明
三种核心技术呢?我记得是处理器技术、IC 技术、设计验证技术。
雅
小雅
对。处理器技术分三类。通用处理器:重要特征是存储程序和通用的数据路径,数据路径一般有大量寄存器及一个或多个通用的算术逻辑单元,设计者只需对存储器编程;优势是上市时间和 NRE 成本较低、灵活性高、数量少时单位成本较低;缺陷是数量大时单位成本相对较高、某些应用性能可能很差、体积和功耗可能变大。单用途处理器:设计用于执行特定程序的数字电路,也指协处理器、加速器、外设,如 JPEG 编码解码器;优缺点与通用处理器基本相反。专用指令集处理器:是可编程处理器,针对某一特定类型的应用进行最优化;单片机和数字信号处理器是两类应用广泛的专用处理器。
雅
小雅
IC 技术分三类。全定制 VLSI:从晶体管的版图尺寸、位置、连线开始设计,面积利用率高、速度快、功耗低,但 NRE 成本很高、制造时间很长,适用于大量或对性能要求严格的应用。半定制 ASIC 专用集成电路:约束型设计方法,包括门阵列设计法和标准单元设计法,灵活方便、性价比高、缩短设计周期。可编程 ASIC:所有各层都已经存在,设计完成后在实验室里即可烧制出设计的芯片,不需要 IC 厂家参与,开发周期显著缩短,NRE 成本较低,但单位成本较高、功耗较大、速度较慢。设计验证技术这边:硬件设计领域技术包括芯片级设计技术和电路板级设计技术;芯片级的核核心是编译综合、库与 IP、测试验证;软件设计技术的核心是软件语言。
雅
小雅
本集必背第一段:中断延迟时间是中断发生到系统获知,受最大关中断时间影响;中断响应时间是中断发生到开始执行用户中断服务例程;中断恢复时间是用户中断服务例程结束回到被中断代码之间;最大关中断时间是内核关中断与应用关中断的最大值;任务响应时间是任务对应中断产生到任务真正开始运行;系统响应时间即调度延迟,由内核任务调度算法决定。
雅
小雅
第二段:嵌入式系统设计核心方法是软硬件协同设计,特点八条包括软硬件协同并行开发、调试很困难;十一指标里 NRE 成本是一次性设计成本,单位成本不含 NRE,性能分响应时间和完成量,指标之间互相竞争;开发模型四件套瀑布、螺旋、逐步求精、层次;开发流程十一阶段到固化为止,白盒测试要求更高代码覆盖率;三种核心技术是处理器技术、IC 技术、设计验证技术;处理器技术分通用、单用途、专用指令集三类;IC 技术分全定制 VLSI、半定制 ASIC、可编程 ASIC 三类。
明
阿明
时间线加三大技术分类,这集的骨架我搭好了。
雅
小雅
最后一集收尾:嵌入式软件设计模型——状态机 FSM 的六元组、FSMD、HCFSM、数据流模型的令牌、并发进程模型、面向对象模型的隐式显式并发,还有诺基亚的 OCTOPUS;再把需求分析规格说明、POLIS 和 COSYMA 这些协同工具、处理器操作系统编程语言怎么选、测试三部分四集中,一次讲完,全章收官。