第 1 章 嵌入式Linux开发构成之简介

摘要

此处简单介绍一下嵌入式Linux开发的基本知识。

嵌入式Linux开发的基本流程,其实之前在:

嵌入式Linux开发环境组成

有了一些简单的介绍了。此处更加详细的解释一下,关于嵌入式Linux开发的方方面面。

典型的嵌入式Linux的开发,其最基本的流程是:

  1. 搭建嵌入式开发环境:制作和配置交叉编译器环境

    搭建环境,保证有交叉编译器可以使用,用于后续交叉编译。

  2. 移植Bootloader:最典型的就是Uboot

    移植uboot

    修改更新uboot,在其中添加对应的功能支持,修复bug等等。

    比如,修改其中的cmd_nand.c去添加新的其他nand flash方面的功能的支持等等。

  3. 移植Linux的内核kernel

    移植,裁剪Linux kernel,之后再去交叉编译出所需要的uImage等系统镜像文件

    编译内核期间,最常用的命令就是:

    
    make menuconfig
    make uImage
    
            

    关于make menuconfig,不了解的可以参考:【教程】什么是menuconfig和menuconfig的使用方法和技巧

  4. 制作自己的根文件系统系统

    需要注意的是,此处所说的制作文件系统,分两大步骤:

    • 用工具制作出最基本的文件系统的文件内容

      比如用BuildrootCrosstool-NG或者其他工具,制作出自己的基本的文件系统的文件内容

    • 用对应文件系统制作工具制作出文件系统镜像

      再用专门的文件系统制作工具,去基于之前的文件系统的所有的文件内容,制作成对应的镜像文件。

      比如用Yaffs2的工具制作出Yaffs2的文件系统镜像文件

    根据自己所选择的根文件系统的类型不同,选择对应的不同的工具去制作对应的根文件系统。

    典型的嵌入式中,存储设备往往都是用的Nand Flash,所以对应的文件系统的类型也是MTD类型的某个日志型的文件系统,比如:

    • Yaffs2

      用特定的工具去制作makeyaffs2image去制作yaffs2的文件系统镜像文件,其中内部制作过程涉及到,把Yaffs2的文件系统本身相关的一些数据,制作出来,放到一个page的oob的位置,

      待后续写入此文件系统镜像文件期间,oob数据写入到对应的物理上的page的oob的位置,这样Yaffs2文件系统运行起来之后,就可以在oob的位置读取到对应的信息,可以正确的管理此文件系统了。

      制作出来的文件系统镜像文件的名字,一般都是类似于:

      TOOD:确认文件名是不是rootfs.arm.yaffs2???

      TODO:把yaffs2_makeyaffs2image_support_2k_4k_8k.7z上传到自己的网站后,把链接贴到此处

    • Jffs

    • UBIFS

TODO:抽空确认下面文件的名字是否正确!!!

有了对应的这些文件:

然后再去用烧录工具去将这些文件,烧录到目标开发板中,

然后再去用串口工具连接开发板,进行调试

调试Uboot是否正常运行,调试Linux内核是否工作正常等等。

如此,才是一个基本的,完整的嵌入式Linux开发流程。

此外,对于烧录过程,可以参考:【详解】嵌入式开发中固件的烧录方式