snifer

【技术分享】【原创】嵌入式Linux开发流程

0
阅读(3135)

最近天气比较寒冷,在这写写嵌入式Linux开发流程,希望能给大家带来一丝暖意。

嵌入式 linux 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下
过程:
建立开发环境。操作系统一般使用 REDHAT-LINUX,版本 7 到 9 都可以,选择定制安装或全部安装,通过网络下载相应的 GCC 交叉编译器进行安装(比如 arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。

配置开发主机。配置 MINICOM,一般参数为波特率 115200,数据位 8 位,停止位 1,无奇偶校验,软硬件控制流设为无。在 WINDOWS 下的超级终端的配置也是这样。MINICOM 软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具

配置网络,主要是配置 NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
建立引导装载程序 BOOTLOADER,从网络上下载一些公开源代码的 BOOTLOADER,如 U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT 等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的 ARM7、ARM9 系列芯片,这样就需要编写烧写开发板上flash 的烧写程序,网络上有免费下载的 WINDOWS 下通过 JTAG 并口简易仿真器烧写 ARM 外围 flash 芯片的程序。也有 LINUX 下公开源代码的 J-FLASH 程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。

如果你购买了厂家的仿真器当然比较容易烧写 flash 了,但是其中的核心技术是无法了解的。这对于需要迅速开发应用的人来说可以极大地提高开发速度。

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

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

建立应用程序的 flash 磁盘分区,一般使用 JFFS2 或 YAFFS 文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性 flash(NOR 型)512K-32M,有的系统使用非线性 flash(NAND 型)8-512M,有的两个同时使用,需要根据应用规划 flash 的分区方案。


开发应用程序,可以下载到根文件系统中,也可以放入 YAFFS、JFFS2 文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于 UCOS-II的方式。
烧写内核、根文件系统、应用程序。
发布产品。

就这样,算完成了,这就是嵌入式Linux开发流程,希望能给大家带来一点启发。