嵌入式系统设计的过程
按照常规的工程设计方法, 嵌入式系统的设计可以分成 3 个阶段: 分析, 设计和实现。分析阶段是确定要解决的问题及需要完成的目标, 也常常被称为需求阶段; 设计阶段主要是解决如何在给定的约束条件下完成用户的要求; 实现阶段主要是解决如何在所选择的硬件和软件基础上进行整个软、硬件系统的协调实现。在分析阶段结束后, 开发者通常面临的一个棘手的问题就是硬件平台和软件平台的选择, 因为它的好坏直接影响着实现阶段任务的完成。
通常, 硬件和软件的选择包括处理器、硬件部件、操作系统、编程语言、软件开发工具、硬件调试工具、软件组件等。在上述选择中, 处理器往往是最重要的, 操作系统和编程语言也是非常关键的。处理器的选择常常会限制操作系统的选择,操作系统的选择又会限制开发工具的选择。
硬件平台的选择
处理器的选择
嵌入式系统的核心部件是各种类型的嵌入式处理器。据不完全统计, 目前全世界嵌入式处理器的品种总量已经超过 1000 多种, 流行体系有 30 几个系列。但与全球 PC 市场不同的是。没有一种微处理器和微处理器公司可以主导嵌入式系统, 仅以 32 位的CPU 而言, 就有 100 种以上嵌入式微处理器。由于嵌入式系统设计的差异性很大, 因此选择是多样化的。ARM 是近年来在嵌入式系统有影响力的微处理器架构,ARM的设计非常适用于小型的嵌入式设备。
设计者在选择处理器时要考虑的主要因素有:
① 处理性能。一个处理器的性能取决于多个方面的因素,如时钟频率,内部寄存器的大小,指令是否对等处理所有的寄存器等。对于许多需用处理器的嵌入式系统设计来说,目标不是在于挑选速度最快的处理器,而是在于选取能够完成作业的处理器和I/O子系统。如果是面向高性能的应用设计,那么建议考虑某些新的处理器,其价格相对低廉,如IBM和Motorola Power PC。
② 技术指标。当前,许多嵌入式处理器都集成了外围设备的功能,减少了芯片的数量,降低了整个系统的开发费用。开发人员首先考虑的是,系统所要求的一些硬件能否无需过多的胶合逻辑(GL,Glue Logic)就可以连接到处理器上。其次是考虑该处理器的一些支持芯片,如DMA控制器,内存管理器,中断控制器,串行设备、时钟等的配套。
③ 功耗。嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS导航器、智能家电等消费类电子产品。这些产品中选购的微处理器,典型的特点是要求高性能、低功耗。许多CPU生产厂家已经进入了这个领域。今天,用户可以买到一颗嵌入式的微处理器,其速度像笔记本中的Pentium一样快;而它仅使用普通电池供电即可,并且价格很便宜。如果用于工业控制,则对这方面的考虑较弱。
④ 软件支持工具。仅有一个处理器,没有较好的软件开发工具的支持也是不行的,因此选择合适的软件开发工具对系统的实现会起到很好的作用。
⑤ 是否内置调试工具。处理器如果内置调试工具可以大大缩小调试周期,降低调试的难度。
⑥ 供应商是否提供评估板。许多处理器供应商可以提供评估板来验证理论是否正确,决策是否得当。
硬件选择的其它因素
首先, 需要考虑的是生产规模。如果生产规模比较大, 可以自己设计和制备硬件, 这样可以降低成本。反之, 最好从第三方购买主板和 I/O 板卡。
其次, 需要考虑开发的市场目标, 如果想使产品尽快发售, 以获得竞争力, 就要尽可能购买成熟的硬件。反之, 可以自己设计硬件, 降低成本。
另外, 软件对硬件的依赖性, 即软件是否可以在硬件没有到位的时候并行设计或先行开发也是硬件选择的一个考虑因素。
最后, 只要可能, 尽量选择使用普通的硬件。在 CPU 及架构的选择上, 一个原则是: 只要有可替代的方案, 尽量不要选择 LINUX尚不支持的硬件平台。
3、软件平台的选择
嵌入式软件的开发流程, 主要涉及代码编程、交叉编译、交叉连结、下载到目标板和调试等几个步骤, 因此软件平台的选择也涉及操作系统、编程语言和集成开发环境 3 个方面。
① 操作系统提供的开发工具。有些实时操作系统(RTOS)只支持该系统供应商的开发工具,因此,还必须向操作系统供应商获取编译器、调试器等;而有些操作系统使用广泛,且有第三方工具可用,因此,选择的余地比较大。
② 操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择那些可移植性程度高的操作系统,避免操作系统难以向硬件移植而带来的种种困难,加速系统的开发进度。
③ 操作系统的内存要求。均衡考虑是否需要额外花钱去购买RAM或EEPROM来迎合操作系统对内存的较大要求。
④ 开发人员是否熟悉此操作系统及其提供的API。
⑤ 操作系统是否提供硬件的驱动程序,如网卡等。
⑥ 操作系统的可剪裁性。有些操作系统具有较强的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。
⑦ 操作系统的实时性能。
[NextPage]
集成开发环境考虑的因素
集成开发环境IDE(Integrated Development Environment)应考虑以下因素:
① 系统调试器的功能。系统调试特别是远程调试是一个重要的功能。
② 支持库函数。许多开发系统提供大量使用的库函数和模板代码,如大家比较熟悉的C++编译器就带有标准的模板库。它提供了一套用于定义各种有用的集装、存储、搜寻、排序对象。与选择硬件和操作系统的原则一样:除非必要,尽量采用标准的 glibc。
③ 编译器开发商是否持续升级编译器。
④ 连接程序是否支持所有的文件格式和符号格式。
硬件调试工具的选择
好的软件调试程序可以有效地发现大多数的错误,但是如果再选择一个好的硬件调试就会达到事半功倍的效果。常用的硬件调试工具有以下几种:
① 实时在线仿真器(ICE,In-Circuit Emulator)。用户从仿真插头向ICE看,ICE应是一个可被控制的MCU。ICE是通过一根短电缆连接到目标系统上的。该电缆的一端有一个插件,插到处理器的插座上,而处理器则插到这个插件上。ICE支持常规的调试操作,如单步运行、断点、反汇编、内存检查、源程序级的调试等等。
② 逻辑分析仪。逻辑分析仪最常用于硬件调试,但也可用于软件调试。它是一种无源器件,主要用于监视系统总线的事件.
③ ROM仿真器。ROM仿真器用于插入目标上的ROM插座中的器件,用于仿真ROM芯片。可以将程序下载到ROM仿真器中,然后调试目标上的程序,就好像程序烧结在PROM中一样,从而避免了每次修改程序后直接烧结的麻烦。
④ 在线调试OCD或在线仿真(on-chip emulator)
特别的硅基材料以及定制和CPU引脚的串行连接,在这种特殊的CPU芯片上使用OCD (On-Chip Debugging),才能发挥出OCD的特点。用低端适配器就可以把OCD端口和主工作站以及前端调试软件连接起来。从OCD的基本形式看来,它的特点和单一的ROM监测器是一致的,但是不像后者那样,需要专门的程序以及额外的通信端口。
嵌入式领域CPU选择参考:
ARM:三星 Micrel
PPC:Freescale IBM
X86:Intel
IDE参考:
Tornado + vxworks:windriver
linux:montavista
ads:freescale(motorola)
我个人感觉现在在嵌入式系统设计中一个比较头疼的问题就是方案的选型,很多好的产品之所以成功,很大一部分功劳就是它成功的选型。这方面是一个不断积累的过程。CPU的选型是所有选型中的重中之重,很重要。国内有些厂家在生长消费类产品时,一味选择便宜的cpu和硬件模块,而忽视一些其它模块(软件模块)的重要性,导致研发周期变长,甚至流产,所以我们在做设计时,一定要全盘考虑清楚。总体说来,电子产品的设计有如下一些选型:
设计工具(原理图和pcb):考虑protel容易上手,建议用它。cadence功能强大,也可以考虑,其它的有powerpcb等。
设计平台:windows xp + linux(架站和软件维护)
cpu:处理性能、技术指标(胶合逻辑)、功耗、软件支持工具、是否内置调试器、是否提供评估板、价格
操作系统选择:开发工具(gcc、gdb,是否有第三方工具等)、硬件接口移植难度、内存要求、API是否容易熟悉、是否提供硬件驱动(网口)、是否可以剪裁、实时性能、价格等
IDE选择:是否容易上手、是否持续更新、编译调试器功能是否强大。
硬件仿真器:一般做开发应用。
新闻热点
疑难解答