学习嵌入式 Linux 的流程


在一个嵌入式系统中使用 Linux 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程:


准备工作:


1 .建立开发环境


操作系统一般使用 RedHat-Linux ,版本从 7 到 9 都可以,选择定制安装或全部安装,通过网络下载相应的 GCC 交叉编译器进行安装(例如 arm-Linux-gcc 、 arm-μclibc-gcc ),或者安装产品厂家提供的交叉编译器。


2 .配置开发主机


配置 MINICOM ,一般的参数为波特率为 115 200 bps ,数据位为 8 位,停止位为 1 ,无奇偶校验,软件硬件流控设为无。在 Windows 下的超级终端的配置也是这样的。 MINICOM 软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络,主要是配置 NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。


第一步:


3 .建立引导装载程序 BOOTLOADER


从网络上下载一些公开源代码的 BOOTLOADER ,如 U-BOOT 、 BLOB 、 VIVI 、 LILO 、 ARM-BOOT 、 RED-BOOT 等,根据自己具体的芯片进行移植修改。有些芯片没有内置引导装载程序,例如三星的 ARM7 、 ARM9 系列芯片,这样就需要编写开发板上 Flash 的烧写程序,网络上有免费下载的 Windows 下通过 JTAG 并口简易仿真器烧写 ARM 外围 Flash 芯片的烧写程序,也有 Linux 下的公开源代码的 J -Flash 程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是系统正常运行的第一步。如果购买了厂家的仿真器当然比较容易烧写 Flash ,这对于需要迅速开发自己产品的人来说可以极大地提高开发速度 , 但是其中的核心技术是无法了解的。


4 .下载别人已经移植好的 Linux 操作系统


如 μCLinux 、 ARM-Linux 、 PPC-Linux 等,如果有专门针对所使用的 CPU 移植好的 Linux 操作系统那是再好不过的,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带 MMU 的 CPU 可以使用模块方式调试驱动,对于 μCLinux 这样的系统则需编译进内核进行调试。


5 .建立根文件系统


从 www.busybox.net 下载使用 BUSYBOX 软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于 /etc 目录下,包括: /etc/init.d/rc.S 、 /etc/profile 、 /etc/.profile 等,自动挂装文件系统的配置文件 /etc/fstab ,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用 mkcramfs 、 genromfs 等工具产生烧写映像文件。


6 .建立应用程序的 Flash 磁盘分区


一般使用 JFFS2 或 YAFFS 文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性 Flash ( NOR 型) 512KB ~ 32MB ,有的系统使用非线性 Flash ( NAND 型) 8 ~ 512MB ,有的两个同时使用,需要根据应用规划 Flash 的分区方案。


第三步:


7 .开发应用程序


应用程序可以放入根文件系统中,也可以放入 YAFFS 、 JFFS2 文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于 μCOS-II 的方式。


8 .烧写内核、根文件系统、应用程序


尾声


9.发布产品