第12章 · 播客 第11集
嵌入式系统设计 · 开发环境选择、系统测试与全章必背
🎙️ 本集播客:第11集(全章收官):协同合成工具 POLIS、COSYMA、Chinook 与协同模拟工具 PTOLEMY、TSS 对号入座;选处理器看什么、操作系统七问含 Windows CE 软实时、语言四维度含 C 语言最广;开发五步、测试三部分五差别四集中;最后全章三段总必背,引出第 13 章开发管理。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
接着上集,系统设计工具分协同合成和协同模拟两类,POLIS 是哪家搞的?
雅
小雅
先看协同合成工具,主要有三个。POLIS:是 UC-Berkeley 开发的交互式嵌入式系统的软硬件协同设计框架,适用于小型控制系统的设计,系统描述支持基于 FSM 的语言,由于软、硬件均可透明地从同一 CFSM 描述中取得,设计空间的灵活性也相应增加,支持使用 PTOLEMY 的协同模拟,在描述及实现层均支持正式的验证,但架构的支持受限,即硬件 CFSMs 所包围的只有一个处理器,而且不支持共享内存。
雅
小雅
COSYMA:由德国 IDA 公司开发,是一种探索硬件与软件协同设计合成进程的平台,面向软件系统的描述较简单,支持自动分割和协同处理器合成,在合成时期可以对设计空间进行探索,系统合成取决于硬件限制,不支持并发模块即一次只能有一个线程执行,架构同样受限,不支持正式验证,设计的成功与否取决于分割及开销估计技术。
雅
小雅
Chinook:是为控制系统而设计的,整个系统的描述作为一个输入提供给 Chinook,内部模式基于类似等级状态的模式,它不对代码进行分割,为整个设计提供单一的模拟环境,支持多种系统架构,尤其是多处理器结构;支持定时限制的描述,能合成多种接口,包括系统之间的软硬件接口,能直接从定时图表中合成设备驱动器,可以控制处理器之间的通信。
雅
小雅
协同模拟工具两个。PTOLEMY:关键思想是混合使用面向对象内核的计算模型,可用于模拟多种系统,在各种应用中被广泛使用,但不适合于系统合成,硬件模拟也是它的一项功能。TSS,Tool for System Simulation:是模拟复杂硬件的工具,采用 C 语言编写,单个模块的提取可由用户控制,可以方便地添加与删除模块;但不支持分级模块,没有用于同步各处理器存取共享数据结构的机制,模块间通信通过端口和总线进行,并且 TSS 支持多核系统的模拟。出题爱配对:POLIS 归 UC-Berkeley,COSYMA 归德国 IDA,TSS 用 C 语言写、支持多核模拟,PTOLEMY 不适合系统合成。
明
阿明
硬件子系统这块,选处理器要考虑什么?
雅
小雅
先记住开发环境四部分:目标硬件平台、嵌入式操作系统、编程语言和开发工具。处理器选择要考虑:处理器的速度——目标不是挑选速度最快的处理器,而是选取能够完成作业的处理器和 I/O 子系统,性能满足需求并有一定余量但不必选得太高;技术指标——许多嵌入式处理器都集成了外围设备的功能,要考虑配套的 DMA 控制器、内存管理器、中断控制器、串行设备、时钟等支持芯片。
雅
小雅
还有几条:开发人员对处理器的熟悉程度;处理器的 I/O 功能是否满足需求;相关软件支持工具;处理器是否集成了调试功能,如是否支持 JTAG、BDM 等调试方式;处理器制造商的支持可信度。背景也记一句:嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS 导航器、智能家电等消费类电子产品,典型特点是要求高性能、低功耗。
明
阿明
操作系统选择呢?我记得有条关于 Windows CE 的。
雅
小雅
选操作系统考虑七方面:操作系统的功能;配套开发工具的选择;操作系统的移植难易程度——它是关系到整个系统能否按期完工的一个关键因素;操作系统的内存需求如何,如 tornado/vxworks,开发人员能按照应用需求分配所需的资源,从需要几 k 字节存储区的嵌入设计到复杂的高端实时应用,可任意选择多达 80 种不同的配置;操作系统附加软件包,是否包含网络协议栈、文件系统、各种常用外设的驱动等。
雅
小雅
还有两条:操作系统的实时性如何——有些嵌入式操作系统只能提供软实时性能,如 Microsoft Windows CE 2.0 是 32 位、Windows 兼容、微内核、可伸缩实时操作系统,可以满足大部分嵌入式和非嵌入式应用的需要,但实时性不够强,属于软实时嵌入式操作系统;操作系统的灵活性如何,是否具有可剪裁性,如嵌入式 Linux、tornado/vxworks 等。
明
阿明
编程语言的选择,汇编和高级语言怎么权衡?
雅
小雅
四个维度先看前两个。通用性:不同种类的微处理器都有自己专用的汇编语言,为系统开发者设置了巨大障碍,软件重用无法实现;高级语言和具体机器的硬件结构联系较少,通用性较好。可移植性:汇编语言和具体微处理器密切相关,为某个微处理器设计的程序不能直接移植到另一个不同种类的微处理器上使用,移植性差;高级语言对所有微处理器都是通用的,程序可以在不同微处理器上运行,可移植性较好,这是实现软件重用的基础。
雅
小雅
后两个维度。执行效率:越是高级的语言,其编译器和开销就越大,应用程序也就越大、越慢;但单纯依靠汇编语言开发,编程复杂、开发周期长,存在开发时间和运行性能之间的权衡。可维护性:低级语言可维护性不高;高级语言往往是模块化设计,各模块之间的接口是固定的,问题可以很快定位到某个模块,也便于系统功能的扩充和升级。
雅
小雅
语言清单:比较广泛应用的高级语言有 Ada、C/C++、Modula-2 和 Java 等。Ada 语言定义严格,易读易懂,有较丰富的库程序支持,目前主要在国防、航空、航天等相关领域应用。C 语言具有广泛的库程序支持,是嵌入式系统中应用最广泛的编程语言,在将来很长一段时间内仍将占重要地位。C++ 是面向对象的编程语言,但目标代码往往比较庞大和复杂,在嵌入式系统应用中应充分考虑这一因素。问答「嵌入式系统中应用最广泛的编程语言是」,答 C 语言。
明
阿明
软件开发过程五步,和最后的测试,一起收掉吧。
雅
小雅
嵌入式软件的开发过程主要有五步:选择开发语言,建立交叉开发环境;根据详细设计说明编写源代码,进行交叉编译、链接;目标代码的重定位和下载;在宿主机或目标机调试、验证软件功能;进行代码的优化。测试这边:通常嵌入式系统测试主要包括软件测试、硬件测试、单元测试三个部分;一般系统的硬件测试包括可靠性测试和电磁兼容性测试,关于电磁兼容性目前已经有了强制性国内和国际标准。
雅
小雅
嵌入式软件测试方法和原理跟通用软件基本一致,但内容上有五条差别:嵌入式软件必须长时间稳定运行;一般不会频繁地版本升级;通常使用在关键性的应用中;必须和嵌入式硬件一起对产品的故障和可靠性负责;现实世界的条件是异步和不可预测的,使得模拟测试非常困难。
雅
小雅
由于这些差别,嵌入式系统软件测试主要集中在四个方面:因为实时性和同时性很难同时满足,所以大多数测试集中于实时测试;大多数实时系统都有资源约束,因此需要更多的性能和可用性测试;可以使用专用实时跟踪工具对代码覆盖率进行测试;对可靠性的测试级别比通用软件要高得多。另外,性能测试也是嵌入式系统最主要的测试活动之一,对系统有决定性影响。
明
阿明
POLIS 和 COSYMA 都「架构受限」,这两个受限有什么不一样?
雅
小雅
记原文的限定语:POLIS 是硬件 CFSMs 所包围的只有一个处理器,而且不支持共享内存,但它在描述及实现层均支持正式的验证;COSYMA 是不支持并发模块,即一次只能有一个线程执行,架构同样受限,不支持正式验证,设计的成功与否取决于分割及开销估计技术。出题就问「支持正式验证的协同合成工具是哪个」,POLIS 独一份。
明
阿明
Chinook 不对代码进行分割,这算优点还是特点?
雅
小雅
算它的辨识特征:COSYMA 支持自动分割,Chinook 不对代码进行分割,一个分割一个不分割,对比着记就不会认错人。Chinook 的其他辨识点:内部模式基于类似等级状态的模式,为整个设计提供单一的模拟环境,支持多种系统架构尤其是多处理器结构,能直接从定时图表中合成设备驱动器。
明
阿明
TSS 的「不支持分级模块」会不会和「支持多核模拟」混着考?
雅
小雅
这两个正好一反一正,出题人最爱放同一道题里:TSS 不支持分级模块,没有用于同步各处理器存取共享数据结构的机制,模块间通信通过端口和总线进行;但它支持多核系统的模拟。判断题「TSS 支持分级模块」,错;「TSS 可以模拟多核系统」,对。
明
阿明
测试五差别里「必须和嵌入式硬件一起对产品的故障和可靠性负责」这条,会不会改成软件单独负责来坑人?
雅
小雅
正是这么坑的。原文是嵌入式软件必须和嵌入式硬件一起对产品的故障和可靠性负责——「一起」两个字是题眼,改成「软件单独负责」就是错项。另外四条差别也别逐字背串:长时间稳定运行、不频繁版本升级、关键性应用、现实世界条件异步不可预测导致模拟测试非常困难。
明
阿明
代码覆盖率那句「可以使用专用实时跟踪工具」的原文位置,也是四集中的第三条吧?
雅
小雅
对,四集中的第三条原文是「可以使用专用实时跟踪工具对代码覆盖率进行测试」,配合第九集那句白盒测试要求更高的代码覆盖率,两个知识点是呼应的。简答题问「嵌入式软件测试集中在哪四个方面」,按实时测试、性能和可用性测试、实时跟踪工具测代码覆盖率、更高可靠性级别四条答。
明
阿明
全章到这里就讲完了,给我来个总必背吧,十一章的内容我怕串台。
雅
小雅
全章必背第一段,硬件部分:三要素嵌入性、专用性、计算机系统;处理器四分类 EMPU 单板机、EMCU 单片机占 70%、EDSP 哈佛结构、SoC 大集成;AMBA 三总线 AHB、ASB、APB,PCI 不属于 AMBA,CPCI 替代 VME 和 MultiBUS,Avalon 是 Altera 的 SOPC 总线;Cache 全在微处理器内部;RS-232 二十 kbps、15 米、增强器 1000 米,USB 四根电缆 480Mbps 必须有主控制器,1394 三档速率 98.304、196.608、392.216 对应 S100 到 S400、4.5 米 6 根电缆、不需要主控制器。
雅
小雅
第二段,软件环境部分:交叉开发 CPD、目标文件 COFF 和 ELF;五种调试法,插桩不能响应外部中断,ICE 替 CPU 实时跟踪,BDM 调试加执行两种模式,指令级模拟器更接近实际;现场总线是工业自动化领域的计算机局域网,FCS 开放互操作彻底分散;嵌入式 Internet 直接联网占 IP、瘦设备用 EMIT;协议栈四区别接口、裁剪、兼容、效率;数据库三问题一致性事务安全、乐观复制、八特性里 SQL92 和数据同步最重要;实时正确性看逻辑加时间,硬软区别在错失后果,中断响应时间到用户服务例程。
雅
小雅
第三段,设计与收尾:嵌入式操作系统五特点没有集中式管理;核心设计方法是软硬件协同设计,NRE 是一次性设计成本;处理器技术三类、IC 技术三类;FSM 六元组 S、I、O、F、H、S0,数据流靠令牌,并发进程使用最广泛,OCTOPUS 是诺基亚的;处理器选型看速度余量与配套,操作系统七问,C 语言应用最广;测试三部分软件、硬件、单元,四集中以实时测试为主,代码覆盖率要求更高。
明
阿明
三段念完,第 12 章嵌入式系统设计在我脑子里立起来了:硬件、网络、数据库、操作系统、开发设计五座山头,每座山头的数字和名词都点得到位。
雅
小雅
嵌入式这个大杂烩章能拿稳,说明你的知识框架已经相当扎实了。下一章进入第 13 章开发管理,讲软件的开发模型管理、成本估算、进度管理、配置管理这些项目管理硬菜,很多计算题在那边等着你,公式比这章还多,先休息一集再来。