在进行嵌入式系统的开发时,首先面临的难题就是如何挑选一个适合自己的开发平台。ARM系列处理器是专门针对嵌入式设备设计的,是目前构造嵌入式系统硬件平台的首选。本文将介绍如何挑选适合实际需要的嵌入式开发平台,如何构建实用的开发环境,以及如何迈出嵌入式Linux系统开发的第一步。
选用指南
在进行嵌入式系统的开发之前,首先必须要选择恰当的开发平台。对于经验丰富的开发者来说,当然可以自己动手组装硬件,然后挑选合适的嵌入式Linux系统,将其移植到开发平台上。但对于初学者来说,可能更好的办法是购买硬件厂商已经做好的开发板,将精力集中在应用程序的开发上。
虽然ARM微处理器有多达十几种的内核结构、几十个芯片生产厂家和众多的功能组合,但这也给广大嵌入式开发人员在确定方案时带来了一定的困难。客观上讲,嵌入式系统一般都是量身打造的。开发人员必须依据客户需求选择合适的软硬件平台,否则的话要么无法完成所要求的功能,要么就会造成资源的浪费,挑选出一个合适的方案确实很不容易。初学者在做决定时不妨借鉴下面的一些经验。
ARM公司设计了一系列的微处理器内核结构,以适应不同应用领域的需要。如果用户希望使用Windows CE或标准Linux等操作系统来减少软件开发时间,就需要选用ARM720T以上带有内存管理单元(MMU)的ARM芯片,如ARM720T、ARM920T、ARM922T、ARM946T等。但对于ARM7TDMI这类没有MMU的微处理器来说,只能运行像UcLinux那样不需要MMU支持的操作系统,而无法运行标准的Linux。
微处理器的工作频率在很大程度上决定了其运算能力的高低。ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片的系统主时钟为20MHz到133MHz;ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9芯片的系统主时钟为100MHz到233MHz;ARM10系列微处理器的典型处理速度为1.25MIPS/MHz,其时钟频率则可以高达400MHz。不同ARM芯片对时钟的处理各不相同。有些芯片只有一个主时钟频率,而有些芯片的内部时钟控制器则可以分别为ARM核、USB、UART和DSP等功能部件提供不同频率。
大多数ARM微处理器片内存储器的容量都不大,需要用户在设计嵌入式系统时扩充外部存储器。
除了ARM微处理器核之外,几乎所有的ARM芯片都根据各自不同的应用领域扩展了相应的功能模块,并集成在芯片之中,从而形成了片内外围电路,如USB接口、I/O接口、RTC和LCD控制器等。嵌入式系统的开发人员应该尽可能运用这些外围电路,来实现系统所要求的功能。这样既可以简化系统的设计,同时又能够提高系统的可靠性。
为嵌入式系统挑选合适的硬件平台是一件很复杂的工作。以上给出的只是一些基本的原则,实际应用当中还要根据情况灵活确定。笔者在展开对嵌入式Linux的研究和开发之时,经过比较和鉴别,选用了一款基于S3C4510B处理器的开发板。它是由三星公司推出的一款具有很高性价比的16/32位RISC微控制器,采用的是ARM公司提供的ARM7TDMI RISC处理器核。由于它具有高性能、低功耗等优点,因此特别适合于对价格和功耗比较敏感的应用场合,如手持设备、网络通信和工业控制等。
S3C4510B整个开发板的结构大致如图1所示。
图1 基于S3C4510B的开发板框图
快速入门
下面就来一睹嵌入式Linux的芳容。如果用户的开发板是由专门的硬件厂商提供的,一般来说都会预装一个嵌入式操作系统,如Windows CE、Palm OS或Linux等。此处介绍的S3C4510B开发板预装的是嵌入式Linux。我们不妨借用它来感受一下嵌入式Linux的开发方法。如果用户的开发板是自己组装的,或者买来时预装的是其它的嵌入式操作系统,那么就需要自己动手来重新构建系统了。
正如前面介绍过的,在开发嵌入式系统时需要用到两个平台:一个是开发平台(Host),另一个是目标平台(Target)。开发平台通常用普通的PC机充当。它可以通过串行端口、并行端口和以太网等方式与目标平台相连,从而共同构成一个嵌入式系统的基本开发环境。对于嵌入式Linux系统来说,最简单的开发环境只需要用到宿主机、目标板和串行连接线。它们之间的连接如图2所示。
图2 最简单的开发环境
当硬件连接好之后,接下去该做的就是要在宿主机和目标板之间建立起连接。这需要在宿主机上运行一个终端仿真程序。Linux下终端仿真程序非Minicom莫属。Minicom是一个界面友好,并且容易使用的串口通信程序,利用它可以很方便地对串行端口进行监视或控制,是嵌入式Linux开发环境中非常重要的一个组成部分。稍微了解串行通信的人都知道,进行串行通信时比较麻烦的是通信参数的设置。好在Minicom提供了非常友好的配置界面,通过执行下面的命令将进入Minicom的配置界面,如图3所示。
# minicom -s
图3 Minicom配置界面
从选单中选择Serial port setup项,进入串行端口配置界面。然后用户根据所用开发板的具体情况,选择正确的串行设备文件、波特率、数据位、停止位、奇偶校验位、硬件流控制和软件流控制参数。在图4中选择的参数代表使用串口1(/dev/ttyS0)、波特率为19200bps、数据8位、无奇偶校验位、停止1位、无硬件流控制和无软件流控制。
在设置好串行通信的参数之后,重新返回到Minicom的主配置界面;然后选择Save setup as dfl项保存当前配置值;再选择Exit from Minicom项退出Minicom。
图4 串行端口参数设置
如果一切正常,下面就可以通过Minicom来与开发板建立起正常的通信了。首先执行如下命令再次进入Minicom:
# minicom
然后接通开发板上的电源,或者按下开发板上的复位键,就可以在Minicom中监视到开发板上嵌入式Linux系统的当 前运行状态。可以将Minicom想象成是开发板上嵌入式Linux系统的一个虚拟终端,也就是说在Minicom中输入的所有命令都将交由开发板上的嵌入式Linux系统来进行处理。
小结
构建嵌入式系统的首要任务是明确它到底要做些什么。用途决定了嵌入式系统的整个行为模式和体系结构,同时也决定了它所应该采用的硬件平台和软件平台。为嵌入式系统挑选目标平台必须审慎,因为这牵涉到有没有好的开发环境和技术支持,一定要根据实际情况来挑选合适的处理器、合适的开发板和合适的开发环境。在开发嵌入式系统时请始终牢记一点,用户需求永远是嵌入式系统的“第一推动力”。
相关链接
ARM处理器简介
ARM(Advanced RISC Machines)公司位于英国剑桥,主要业务是设计16位和32位的嵌入式微处理器。但它本身并不生产和销售芯片,而是采用技术授权的方式,让其它半导体制造商进行ARM微处理器的制造。
采用RISC结构的ARM处理器具有如下一些典型的特点:体积小、功耗低、成本廉、性能高;支持Thumb(16位)/ARM(32位)双指令集;寄存器数量众多,指令执行速度快;绝大多数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;采用固定长度的指令格式。(T111)