嵌入式开发技术总结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

龙源期刊网嵌入式开发技术总结作者:张梅何福贵来源:《中国教育信息化·高教职教》2009年第09期摘要:由于嵌入式系统是一个资源受限的系统,所以嵌入系统的软件开发是采用交叉开发实现的。本文总结了嵌入式系统软件的开发技术,分析了嵌入式软件开发的各个过程,给出了每个过程能够使用的各种方法和技术,详细叙述了它们的实现过程,主要内容包括启动软件的选择、启动软件的各种烧写方法、操作系统内核的下载方法、根文件系统的下载方法、NFS文件系统的配置、通过NFS应用程序的交叉开发和目标机程序的编译等。关键词:嵌入式系统交叉开发网络文件系统简单文件传输协议中图分类号:TP311.52文献标识码:A文章编号:1673-8454(2009)17-0078-03嵌入式系统将拥有最大的市场。目前在世界范围内嵌入式系统带来的工业年产值已超过了一万亿元,现在嵌入式系统正处在高速发展阶段。嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上开发软件比较困难,有时候甚至是不可能的。目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行。需要交叉开发环境(CrossDevelopmentEnvironment)的支持是嵌入式应用软件开发时的一个显著特点,交叉开发环境是指编译、链接和调试嵌入式软件的环境,它与运行嵌入式软件的环境有所不同,通常采用宿主机/目标机模式,目标机和宿主机之间的连接通常有三种连接方式:目标机的串口连接宿主机的串口,目标机的JTAG口连接宿主机的并行口,目标机的网口连接宿主机的网口,如图1所示。本文选用某公司生产的OURS_ARM9_2410EP为嵌入式目标系统,OURS_ARM9_2410EP是一个典型的嵌入式实验系统,支持ARM9,具有丰富的外部接口,包括串口、JTAG口、PCMCIA卡、SMC卡、SD卡、USB、网口和VGA接口等,支持三种启动方式,分别可以从两种龙源期刊网启动,具有丰富的扩展功能,可扩展GPS&GPRS、射频卡和蓝牙等模块。一、目标机程序的编译嵌入式系统中的软件一般包含四个部分:启动部分、操作系统内核、根文件系统和应用程序,这些程序是在宿主机的交叉编译环境中编译成目标机CPU能够运行的目标代码,然后下载到目标机。常用的嵌入式集成开发环境有Tornado、PB(PlatformBuilder)、ADS(ARMDeveloperSuite)、GNU工具链等。二、启动部分的烧写启动部分的烧写有三种方法:通过JTAG接口使用命令烧写、使用仿真器烧写和交叉烧写,其中交叉烧写要求嵌入式系统中含有两个启动部分。ARM9_2410EP可以直接从FLASH硬盘的零地址执行代码,也就是说将初始启动代码烧写到FLASH零地址开始的地方就可以启动目标系统。支持ARM结构的启动软件有:U_BOOT、PPCBOOT、REBOOT和BLOB,本文以PPCBOOT为例进行说明。PPCBOOT是源代码开放并遵守GPL(GeneralPublicLicense)的自由软件,支持多种CPU架构,包括alpha、arm、x86、ia64、mips、mips64、ppc、s390、sh、sparc和sparc64,是被广泛使用的一个启动软件。首先使用GNU工具链将PPCBOOT编译成在目标机可运行的程序ppcboot.bin,编译过程请参阅文献[1]。1.通过JTAG接口烧写JTAG技术可以实现在目标机是裸机的情况下将程序烧写到目标机,是简单和直接的烧写方法。用JTAG连接线连接宿主机的并口和目标机的JTAG接口,确认已经将JTAG连接好,通过跳线开关配置要烧写的NORFLASH。在RedHatLinux或WindowsXP打开命令窗口,运行命令:龙源期刊网:ppcboot.bin其中JFLASH为烧写工具,/f表示文件,ppcboot.bin是OURS_ARM9_2410EP系统引导程序。后面有两个选择,表示要烧写的目标地址,分别选择0,0,即开始对FLASH烧写引导程序ppcboot.bin。此后大约等待六七分钟,烧写完成。烧写结束后又出现选择,输入2退出,这时目标板的启动部分烧写完成。使用这种方法烧写的时间比较长,一般较少使用。2.通过仿真器烧写在WindowsXP中安装ARMADS集成开发环境,即ARMDeveloperSuite。安装Multi-ICE仿真器,在宿主机的并口和目标机的JTAG接口之间连接仿真器,连接宿主机的串口和目标机的串口,安装Multi-ICEv2.2软件。运行Multi-ICEServer,点击软件界面左上角的Auto-Configure按钮,在出现仿真器符号后,仿真器连接成功。通过仿真器可以使程序直接运行在目标机的内存中,不使用目标机的FLASH,有很多程序就是通过仿真器在目标机运行和调试的。在WindowsXP中打开超级终端,在ADS集成开发环境中编译项目ProgramFlash,ProgramFlash是专门编写的操作FLASH的一个软件。通过仿真器运行ProgramFlash,ProgramFlash在超级终端的运行界面如图2所示。选择写入的FLASH,然后在超级终端发送ppcboot.bin,按照提示就可以完成启动的烧写。3.交叉烧写在目标机支持多启动的情况下,可以从一个FLASH启动,利用启动软件写FLASH的功能,通过热跳线,写到另一个FLASH中。龙源期刊网的启动软件的运行界面,此时通过热跳线到另一个FLASH,然后选择4就可以实现交叉烧写。三、操作系统内核的下载操作系统内核下载到目标机有三种方法:通过JTAG烧写、通过网口和串口从宿主机下载。其中通过JTAG烧写的操作与第一部分相同。在目标机启动PPCBOOT后,由于PPCBOOT支持网口和串口下载,操作系统内核就通过网口或串口下载到目标机。PPCBOOT的详细使用说明见参考文献[2]。目前使用较多的嵌入式实时操作系统有:美国WindRiver公司设计开发的嵌入式实时操作系统VxWorks、微软公司的WindowsCE、Linux、UC/OS、eCos、Lynx实时系统公司的LynxOS和QNX软件系统有限公司的QNX等。本文以Linux为例说明操作过程,Linux内核的交叉编译是在RedHatLinux环境中实现的,编译后内核的文件名是bzImage,内核的编译过程见文献[3]。下面分别说明通过网口和串口内核的下载过程。1.使用网口从网口下载操作系统内核,首先要在RedHatLinux或WindowsXP中启动tftp服务,启动超级终端,然后启动目标机的PPCBOOT,在超级终端中就可以使用PPCBOOT的tftp命令,将内核下载到目标机。[4]龙源期刊网环境中的操作过程。SMDK2410#表示PPCBOOT的提示符。(1)RedHatLinux环境实现过程:1)在RedHatLinux中启动tftp服务;2)在根目录下建立/tftpboot目录;3)把Linux内核bzImage拷贝到/tftpboot目录下;4)在RedHatLinux中启动超级终端minicom;5)启动目标板的PPCBOOT;6)在超级终端中运行tftp命令SMDK2410#tftp0x30008000bzImage。其中数值0x30008000为内核下载到实验箱内存中的地址。7)下载Linux内核,SMDK2410#fl0x10400000x300080000x100000。三个参数的意义:0x1040000为内核烧写到Flash的地址,当PPCBOOT启动后它会从此地址加载Linux内核。0x30008000为上一步使用的内核下载到内存中的地址。0x100000为内核的大小,0x100000可被替换为大于内核大小且是0x20000倍数的最小整数。(2)WindowsXP环境实现过程:1)在WindowsXP中启动tftp服务器;2)在WindowsXP中启动超级终端;3)启动目标板PPCBOOT;4)在超级终端中运行命令:SMDK2410#tftp0x30008000bzImage;5)下载Linux内核:SMDK2410#fl0x10400000x300080000x100000。2.通过串口从串口下载操作系统内核,同样需要在RedHatLinux或WindowsXP中启动超级终端。启动目标机的PPCBOOT,在PPCBOOT的提示符下输入loadb命令,loadb命令的功能是通过串行线下载可执行文件到目标机,命令格式是:loadb[offset][baud],其中Offset是地址偏移量,baud是串口的波特率。这个命令开始执行后,在超级终端中打开发送文件选项,出现发送文件对话框,在文件名选择项中加入要烧写的内核,然后单击发送,注意超级终端的波特率要与loadb命令的波特率一致。四、根文件系统根文件系统(RootFileSystem)下载到目标机的方法与操作系统内核的方法相同。首先制作根文件系统,Linux根文件系统的制作见文献[5],假定制作后根文件系统的文件名是ramdisk.image.gz,使用下面的命令下载。龙源期刊网其参数意义与上面的内核下载相同。五、应用程序由于应用程序运行在内核和根文件之上,所以应用程序的交叉开发能采用更方便的方法,一般采用NFS系统实现。在应用程序运行之前,应交叉编译为目标机的可执行程序。NFS(NetworkFileSystem)指网络文件系统,是Linux系统中经常使用的一种服务,NFS是一个RPCservice,很像Windows中的文件共享服务。它的设计是为了在不同的系统间使用,所以它的通讯协议设计与主机及作业系统无关。当使用者想使用远端档案时只要用“mount”就可把远端档案系统挂接在自己的档案系统之下,使得远端的档案在使用上和本地的档案没两样。NFS系统配置包括目标机和宿主机的配置,其中以宿主机已配置为主。在NFS服务中,宿主机(Servers)是被挂载(mount)端,为了远端目标机(Clients)可以访问宿主机的文件,宿主机配置两方面内容:打开NFS服务,允许“指定用户”使用。在RedHatLinux或WindowsXP中均可以使用NFS服务,本文以RedHatLinux为例进行说明。1.NFS文件系统配置宿主机NFS文件系统的配置过程如下。首先打开/etc/exports文件,加入如下内容:/192.168.2.*(rw,sync,no_root_squash)。其中:/表示宿主机的目录,在目标机共享,192.168.2.*为目标机的IP地址范围,括弧内表示操作的权限,然后运行命令:exportfs。NFS服务的启动是由一些命令来完成的,它们是:portmap、rpc.nfsd、rpc.lockd、rpc.statd、rpc.mountd和rpc.rquotad,如果系统中有这几个命令,就运行下列命令启动NFS服务:servicenfsstart或/etc/rc.d/init.d/nfsstart;如果系统中没有,就下载工具包nfs-utils-1.0.7.tar.gz,然后编译安装就龙源期刊网可以了。在目标机也应该启动NFS服务。在上述的工作完成以后,目标机和宿主机就可以通过NFS文件

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功