摘要
此处简单介绍一下嵌入式Linux开发的基本知识。
嵌入式Linux开发的基本流程,其实之前在:
有了一些简单的介绍了。此处更加详细的解释一下,关于嵌入式Linux开发的方方面面。
典型的嵌入式Linux的开发,其最基本的流程是:
- 搭建嵌入式开发环境:制作和配置交叉编译器环境
搭建环境,保证有交叉编译器可以使用,用于后续交叉编译。
- 移植Bootloader:最典型的就是Uboot
移植uboot
修改更新uboot,在其中添加对应的功能支持,修复bug等等。
比如,修改其中的cmd_nand.c去添加新的其他nand flash方面的功能的支持等等。
- 移植Linux的内核kernel
移植,裁剪Linux kernel,之后再去交叉编译出所需要的uImage等系统镜像文件
编译内核期间,最常用的命令就是:
make menuconfig make uImage
关于make menuconfig,不了解的可以参考:【教程】什么是menuconfig和menuconfig的使用方法和技巧
- 制作自己的根文件系统系统
需要注意的是,此处所说的制作文件系统,分两大步骤:
- 用工具制作出最基本的文件系统的文件内容
比如用Buildroot、Crosstool-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文件:u-boot.bin
- kernel文件:uImage
- rootfs文件:rootfs.arm.yaffs2
然后再去用烧录工具去将这些文件,烧录到目标开发板中,
然后再去用串口工具连接开发板,进行调试
调试Uboot是否正常运行,调试Linux内核是否工作正常等等。
如此,才是一个基本的,完整的嵌入式Linux开发流程。
此外,对于烧录过程,可以参考:【详解】嵌入式开发中固件的烧录方式