1.6 嵌入式系统的开发流程
以Linux操作系统为例,论述嵌入式系统的开发流程。
1.6.1 建立开发环境
安装操作系统与交叉编译器,操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-1inux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器。
1.6.2 配置开发主机的参数
配置MINICOM参数,MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。一般情况下的参数为波特率115200 Baud/s,数据位8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。配置网络主要是配置NFS网络文件系统,需要关闭防火墙以简化嵌入式网络调试环境设置过程。
1.6.3 建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-Boot、RED-Boot等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的ARV17、ARM9系列芯片,这样就需要编写开发板上FLASH的烧写程序,也可以在网上下载相应的烧写程序,如Linux下的公开源代码的J-FLASH程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户购买了厂家的仿真器,则比较容易烧写FLASH,虽然无法了解其中的核心技术,但对于需要迅速开发自己的应用的人来说可以极大提高开发速度。
1.6.4 下载已经移植好的Linux操作系统内核
如MCLiunx、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于MCLiunx这样的系统只能编译内核进行调试。
1.6.5 建立根文件系统
可以从http://www.busy.box.net下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile及自动挂装文件系统的配置文件/etc/fstab等,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。
1.6.6 建立应用程序的FLASH磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动。有的系统使用一个线性FLASH(NOR型)512KB~32MB,有的系统使用非线性FLASH(NAND型)8MB~512MB,有的系统两种同时使用,需要根据应用规划FLASH的分区方案。
1.6.7 开发应用程序
根据需要开发应用程序,把开发成功的应用程序可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μC/OS-II的方式。
1.6.8 烧写内核、根文件系统和应用程序,发布产品。
如图1.12所示,列出了嵌入式系统的开发流程。
图1.12 嵌入式系统的开发流程
思考与实验
一、思考题
1.什么是嵌入式系统?
2.嵌入式系统有哪些主要特点?
3.常用嵌入式处理器有哪些?
4.常用嵌入式操作系统有哪些?
5.嵌入式有哪些应用领域?
6.嵌入式开发流程如何?
二、判断题
1. MCU指嵌入式微控制器。( )
2. DSP是专门用于信号处理方面的嵌入式微处理器。( )
3. SoC指的是嵌入式片上系统。( )
4. ARM是指Advanced RISC Machines Limited的英文缩写。( )
三、选择题
1.嵌入式系统的三个基本要素包含( )。
A.存储性
B.嵌入性
C.通用性
D.高性能
2.在目前,下列( )属于嵌入式计算机。
A.嵌入式DSP处理器
B.CS8900A
C.MMC
D.SD
3.通常基于ARM系统的Linux开发步骤中,如有以下操作:
①开发目标硬件系统:如选择微处理器,FLASH及其他外设等;
②开发BOOTLOADER;
③开发一个根文件系统:如rootfs的制作;
④开发上层的应用程序;
⑤开发相关硬件的驱动程序:如LCD等;
⑥移植Linux内核;
⑦建立交叉编译工具。
4.嵌入式系统开发按照上述7步来考虑,开发BOOTLOADER应该属于( )步。
A.1
B.2
C.3
D.4
E.5
F.6
G.7