嵌入式系统(ARM)开发平台选型(一)摘要:本文从实际应用的角度出发,重点对Linux嵌入式系统开发中硬件平台选型问题进行论述。关键词:嵌入式系统;ARM;Linux操作平台1嵌入式Linux系统嵌入式系统是软件和硬件的综合体。它是以应用为中心,以计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。Linux具有强大的功能,很好地支持了各种现代编程技术,将Linux应用于嵌入式系统的开发有如下一些优点:1)内核完全开放,使得设计者可以自己设计和开发出真正的硬件实时系统和软件实时系统。2)Linux本身具有一整套工具链,使用者可以较容易地自行建立嵌入式系统的开发环境和交叉编译及运行环境。3)强大的网络支持,可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。2硬件平台的选择2.1处理器的选择设计者在选择处理器时要考虑的主要因素有:(1)处理性能。处理器的性能取决于多个方面的因素,如时钟频率、内部寄存器的大小、指令是否对等处理所有的寄存器等。如果是面向高性能的应用设计,那么建议考虑某些新的处理器,其价格相对低廉,如IBM和MotorolaPowerPC。(2)技术指标。当前许多嵌入式处理器都集成了外围设备,采用这类CPU可以减少系统的体积,降低系统的开发成本。开发人员首先考虑的是,系统所要求的一些硬件能否无需过多的胶合逻辑(GL,GlueLogic)就可以连接到处理器上;其次是考虑该处理器的一些支持芯片,如DMA控制器、内存管理器、中断控制器、串行设备、时钟等的配套。(3)功耗。嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS导航器、智能家电等消费类电子产品。这些产品中选购的微处理器,典型的特点是要求高性能、低功耗。(4)软件工具。仅有一个处理器,没有较好的软件开发工具的支持也是不行的,因此选择合适的软件开发工具对系统的实现会起到很好的作用。(5)内置调试工具。使用具有内置调试工具的处理器可以大大缩小调试周期,降低调试的难度。(6)供应商是否提供评估板。许多处理器供应商可以提供评估板来验证理论是否正确,决策是否得当。2.2硬件选择的其他因素(1)生产规模。打算做一套,多套,还是规模生产,如果生产规模比较大,可以自己设计和制备硬件,这样可以降低成本。反之,最好从第三方购买主板和I/O板卡。(2)市场目标。如果想使产品尽快发售,以获得竞争力,就要尽可能买成熟的硬件;反之,可以自己设计硬件,降低成本。(3)软件对硬件的依赖性。软件是否可以在硬件没有到位的时候并行设计或先行开发。3软件平台的选择嵌入式软件的编写和开发调试的主要流程为:代码编程、交叉编译、交叉链接、重定位、下载到目标板和调试等几个步骤,因此软件平台的选择也涉及到以下几个方面。3.1操作系统的选择(1)操作系统选择应考虑的因素硬件方案确定之后,操作系统的选择就相对轻松了。硬件的不同,会影响操作系统的选择。低端无MMU(MemoryManagementUnit,存储器管理单元)的CPU,要使用uClinux操作系统;而相对高端的硬件,则可以用普通的嵌入式Linux操作系统。uClinux和普通的Linux有各自的优势和缺点。可用于嵌入式系统软件开发的操作系统很多,但关键是如何选择一个适合开发项目的操作系统。笔者认为应该从以下几点进行考虑。①操作系统提供的开发工具:有些实时操作系统(RTOS)只支持该系统供应商的开发工具,因此还必须向操作系统供应商获取编译器、调试器等;而有些操作系统使用广泛,且有第三方工具可用,因此选择余地较大。②操作系统向硬件接口移植的难度:操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择可移植性程度高的操作系统,避免操作系统难以向硬件移植而带来的种种困难,加速系统的开发进度。③操作系统的内存要求:均衡考虑是否需要额外花钱去购买RAM或EEPROM来迎合操作系统对内存的较大要求。④开发人员是否熟悉此操作系统及其提供的API。⑤操作系统是否提供硬件的驱动程序。⑥操作系统的可剪裁性。有些操作系统具有较强的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。⑦操作系统的实时性能。(2)几类嵌入式Linux系统的比较嵌入式Linux系统方面的产品主要分为三类。第一类是专门为Linux的嵌入式应用而做的,如何让Linux更小、更容易嵌入到体积要求和功能、性能要求更高的硬件中去,是他们的产品开发方向。第二类是专门为Linux的实时特性设计的产品,将Linux开发成实时系统尤其是硬实时系统,应用于一些关键的控制场合。第三类的产品是将实时性和嵌入式方案结合起来的方案。因此要根据自己的嵌入式要求和实时性要求,选择适合自己的嵌入式Linux;同时,和选择硬件的原则一样,如果可能,尽量选择使用普通的嵌入式Linux系统。3.2编程语言的选择编程语言的选择主要考虑以下因素。(1)通用性:不同种类的微处理器都有自己专用的汇编语言,这就为系统开发者设置了一个巨大的障碍,使得系统编程更加困难,软件重用无法实现。而高级语言一般和具体机器的硬件结构联系较少,多数微处理器都有良好的支持,通用性较好。(2)可移植性程度:汇编语言和具体的微处理器密切相关,为某个微处理器设计的程序不能直接移植到另一个不同种类的微处理器上使用,移植性差;而高级语言对所有微处理器都是通用的,程序可以在不同的微处理器上运行,可移植性较好。