2020/1/231嵌入式系统软硬件设计与开发—实例介绍以S3C2410处理器的GPS手持设备开发过程为例,介绍嵌入式Linux系统软硬件的设计与开发。通过实例,加深对嵌入式Linux开发流程的概念的理解,了解嵌入式Linux系统开发的基本过程。包括以下部分:需求分析系统硬件设计系统软件设计系统集成与部署2020/1/232需求分析(1)首先,分析系统工作原理,再选择合适的参考硬件平台,然后选择合适的操作系统和软件。(1)系统工作原理系统首先通过GPS模块获得绝对位置数据,并将数据通过UART通信方式传给处理器,经处理器处理后得到当前地图的相对位置,并实时显示到LCD上,使用户随时知道自己的方位;键盘和触摸屏作为人机接口,进行进一步的查询工作;USB用于同微机通信,是可选功能;存储器单元用于存储数据,包括操作系统和应用程序。2020/1/233需求分析(2)(2)选择参考硬件平台目前半导体供应商提供各种ARM/XSCALE体系结构的处理器,有些ARM926和XSCALE核的处理器都已经用来设计手机等高端移动通信设备,有些则可以用来设计中低端的PDA设备。考虑价格因素,采用Samsung的S3C2410ARM920T处理器。S3C2410属于中低端的处理器,适合手持设备并且国内外参考硬件平台很多,系统大部分模块在硬件平台上可以直接测试。2020/1/234需求分析(3)(2)选择参考硬件平台系统包括CPU、GPS模块、存储器单元、LCD模块、触摸屏、键盘、USB接口等部分组成本项目的硬件参考配置如下:·CPU单元(S3C2410X16/32-bitARM920T内核)·存储器单元(2MBNORFlash和32MBNANDFlash,64MBSDRAM)·复位电路(包括上电复位和手动复位,至少保持4个时钟周期的有效低电平,保证系统的可靠复位)·电源电路·时钟电路(外部12MHz时钟输入,经内部PLL倍频至200MHz及32.768KHz的RTC时钟输入)·实时时钟(内部RTC带日历功能)·LCD接口·触摸屏接口·键盘接口·GPS模块·USB接口2020/1/235需求分析(4)(3)选择操作系统和软件SamsungS3C2410是最开放的开发设计平台。它的软件和硬件设计资料可以免费从互联网上获取,并且WindowsCE和Linux两种操作系统都能支持。在参考板上一般可以直接对WindowsCE和Linux进行测试。Linux对S3C2410处理器支持的相当好,操作系统内核和应用程序都是开放源码的。因此,Linux可以完全按照自己的需要裁减配置系统,使得尺寸更小,而且Linux操作系统性能比Windows操作系统性能更优越。另外,可以避免支付Windows产品的版税。S3C2410在Linux社区有庞大的用户群,可以获取丰富的开发调试信息。因此,选择Linux作为工程样机的操作系统。由于图形界面要求并不复杂,选择QT/Embedded图形系统。2020/1/236系统硬件设计(1)(1)电源电路设计电源电路的设计是非常重要的,大多数不稳定的因素或故障都是由于电源方面的设计造成的;特别是对于手持设备来说,如何减少系统的功耗往往成为工程师最为头疼的问题。因此必须加以重视,否则后患无穷。电源分开关电源和线性电源,每种方式都有自己的优点和弱点。在输入输出压降幅度大、功耗高,或是要求升压的场合,往往采用开关电源方案;在压降小、功率要求不是很大的时候,使用线性电源为宜。这里不深入研究,只是用一个最普通的方案实现。2020/1/237系统硬件设计(2)(1)电源电路设计电源由电池提供的2.4V电压输入,经DC/DC开关电源变换器升压至5V输出,3.3V由低压差线性电压源LDO通过+5V调整输出得到,1.8V则由LDO通过3.3V调整输出得到,这样完成了系统供电。2020/1/238系统硬件设计(3)(2)复位电路设计复位对于一个系统来说很重要,由于各个单元要进入正常工作状态,都需要可靠的复位。正常情况下,一般有上电复位和手动复位。如果电源电压出现波动,系统会非正常复位,这时候会发生复位时间不够从而造成一些错误甚至死机,所以复位监控电路也是必要的复位。2020/1/239系统硬件设计(4)(3)时钟电路设计CPU部分需要两路时钟输入,一路是CPU工作时钟输入,另一路提供给RTC电路。CPU工作时钟是一个有源晶振,无需外部电容,直接输出12MHz时钟信号到CPU,由CPU内部PLL倍频到200MHz。2020/1/2310系统硬件设计(5)(4)SDRAM接口电路设计SDRAM具有容量大,存取速度快,成本低的特点,因而广泛应用到微机处理系统中。SDRAM主要用来存放执行代码和变量,是系统启动之后主要进行存取操作的存储器。由于SDRAM需要定时刷新以保持存储的数据,因而要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。S3C2410X及其他一些ARM芯片在片内具有独立的SDRAM刷新控制逻辑,可方便的与SDRAM接口。但某些ARM芯片则没有SDRAM刷新控制逻辑,就不能直接与SDRAM接口,在进行系统设计时应注意这一点。目前常用的SDRAM为8位/16位的数据宽度,可根据系统需求,构建16位或32位的SDRAM存储器系统。本例中使用的是两片三星K4S561632C-TC75芯片构建32位的SDRAM存储器系统。每片K4S561632C的存储容量为16组×16M位(32M字节),工作电压为3.3V,常见封装为54脚TSOP,兼容LVTTL接口,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh),16位数据宽度。2020/1/23112020/1/2312系统硬件设计(6)(5)Flash接口电路设计Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。现在市场上两种主要的非易失闪存技术是NOR和NAND。NOR的特点是芯片内执行,这样应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。两者的速度差异如下:NOR的读速度比NAND稍快一些。NAND的写入速度比NOR快很多。NAND的4ms擦除速度远比NOR的5s快。NAND的擦除单元更小,相应的擦除电路更少。各大存储器生产厂商采用统一的标准进行设计生产,所以常用的型号往往是完全兼容的,可以直接替代。在应用Flash时,只要注意遵循数据手册的指导,按说明进行设计即可,一般不会出现问题。基于以上分析,我们用NORFlash存储Boot代码,NANDFlash存储操作系统和应用程序代码。前者我们选用ST公司的M29W160(1Mb×16),后者用三星的K9F5608B(32MB×8)2020/1/23132020/1/2314系统硬件设计(7)(6)JTAG接口电路设计JTAG接口对于开发调试非常重要。对于产品来说也可以通过JTAG修复或者更新软件,所以最好预留这个接口,至少引出JTAG接口线。2020/1/2315系统硬件设计(8)(7)USB接口电路设计S3C2410X提供了方便的USB1.1接口,片内包括2个USB控制器,可设置为两个主机或1主机1设备接口说明:CON14工作在A-TYPE(主机)状态,跳线J35、J36的2、3脚接通时CON16有效,工作在A-TYPE(主机模式)状态,跳线J35、J36的1、2脚接通时,CON17有效,工作在B-TYPE(设备模式)状态。2020/1/2316系统硬件设计(9)(8)键盘输入接口电路设计键盘采用中断方式连接,共6个功能键,占用6个中断源。当有按键被按下时,会实时产生中断请求信号,通知CPU处理。2020/1/2317系统硬件设计(10)(9)LCD(触摸屏)接口电路设计S3C2410X支持TFT/STN型的LCD及触摸屏,但是不能直接与LCD相连,需要接口板驱动LCD。S3C2410X通过50pin的插座作为LCD与触摸屏接口,至于接口板,市场上可以买到,管脚定义都是标准的。2020/1/2318系统硬件设计(11)(10)GPS接口电路设计本设计选用的GPS模块是HIMARK的AR2010-GM,该产品体积小、功耗低,具备标准GPS功能,技术参数如下:定位精度5~25mCEPw/oS/A;速率0.1m/sw/oS/A;时间±1μsec(卫星时间);冷起动90s;暖起动45s;热起动15s;海拔高度max.18000m;速度max.500m/s;加速度max.±4g;导航修正速率1/s;端口RS232串口x1,TTLx1;速率4.8、9.6、19.2和38.4kbit/s(可选择升级至115.2kbit/s);输出协议NMEA0183:GGA、GLL、GSV、GSA、RMC、VTG;电源3VDC~9VDC;消耗电流小于27mA;卫星信道12-channel;工作温度-40℃~85℃;储存温度-55℃~100℃;工作适度5%~95%AR2010-GM模块的功能强大,内部结构复杂,但是与CPU的通信非常简单,采用标准UART方式,只需4根信号线即可,无需任何附加元件就能和S3C2410X连接。2020/1/2319系统硬件设计(12)(11)PCB设计制作随着处理器频率的不断加快,对PCB的布局和走线要求越来越高,早已不是仅仅布通就可以的时代了。当今的PCB板制造技术向高密度、高精度、细孔径、细导线、细间距、高可靠、多层化、高速传输、轻量、薄型方向发展,在生产上同时向提高生产率、降低成本、减少污染、适应多品种、小批量生产的方向发展。对于主频高达200MHz的S3C2410X处理器来说,它的PCB设计是硬件工作中的难点,前面所有工作都集中体现在电路板上,因而PCB的设计直接影响整个系统的性能。掌握好PCB设计的步骤和要点,不仅能加快开发进度,更会增加系统的稳定性,也为软件开发创造更好的条件。在PCB布板之前,一定要保证原理图的正确性,PCB的电气关系是由原理图的网表生成的,错误的原理图会直接导致错误的PCB板,还要重新返工。2020/1/2320系统软件设计(1)在样机硬件设计阶段,就可在参考硬件平台上进行软件开发。软件开发是一个反复修改编译的过程,交叉开发环境的软件开发流程如图所示当样机电路板做好以后,还需要移植到新的平台上。因为样机是参照参考板设计的,所以大部分接口(特别是片上的设备接口)都相同。但是可能增减个别的接口或者替换外围芯片,例如:将Flash由AMD公司的Am29LV800B替换成ST公司的M29W160(1Mbit×16),容量增加了,擦写Flash的指令也要相应修改。软件移植包括Linux系统的3个组成部分:U-Boot移植、内核移植和应用程序移植。这里样机开发板名称假设为GPS2410,程序移植时将引用这个名称。2020/1/2321系统软件设计(2)1、U-Boot的移植S3C2410的参考平台上一般使用vivi作为Linux引导程序。如果不习惯vivi或者觉得U-Boot好用,那就把U-Boot移植到硬件板上。(1)在顶层Makefile中为开发板添加新的配置选项,添加下面2行:gps2410_config:unconfig@./mkconfig$(@