一、基础概念
- 系统移植 :简单理解就是让开发板可以运行Linux操作系统。
- 驱动:Linux内核和硬件设备之间适配代码,属于内核级编程,实现内核控制外设硬件。
为什么开发板要运行Linux?Linux提供哪些核心能力
- 内存管理
- 进程管理(多任务调度)
- 网络协议栈
- 文件系统(数据存储、人机交互)
- IPC进程间通信
二、系统移植4个核心文件
| 文件名称 | 作用说明 |
|---|---|
| u‑boot.imx(U‑Boot) | Bootloader引导加载程序;上电初始化硬件,引导Linux内核启动,为内核加载做准备 |
| zImage | Linux内核镜像,Linux内核本体,负责处理器、内存、进程、硬件、网络管理 |
| imx6ull‑alientek‑emmc.dtb | 设备树文件(内核3.0版本之后独立出来),描述板子硬件资源(寄存器、引脚、外设);3.0之前硬件信息直接编译进zImage |
| rootfs.tar.bz2 | 根文件系统压缩包;存放库文件、配置、用户程序,提供用户交互环境 |
系统完整启动顺序: U‑Boot → 加载zImage内核 + dtb设备树 → 挂载rootfs根文件系统
三、开发板启动方式(拨码开关选择)
| 启动方式 | 使用场景 |
|---|---|
| USB启动 | 芯片级调试 |
| SD卡启动 | 裸机开发、软件开发调试阶段 |
| EMMC启动 | 产品量产使用 |
| Nand flash启动 | 本开发板不使用 |
四、SD卡存储器分区布局
根据烧写脚本
imx6mksdboot.sh,SD卡数据分布如下:
- 0扇区(0字节):MBR分区表,占用512字节,保存分区定义
- 保留区域(1KB ~ 1MB) :存放
u‑boot.imx,占用300KB‑800KB - 分区1:FAT32,容量64MB,挂载为/boot
- 存放文件:
zImage、设备树.dtb文件
- 存放文件:
- 分区2:EXT3,占用SD卡剩余全部空间,挂载为根目录 /
- 存放根文件系统解压内容:
bin/ etc/ lib/ usr/ - 驱动模块路径:
lib/modules/
- 存放根文件系统解压内容:
五、系统移植定义
将U‑Boot、zImage内核镜像、rootfs根文件系统,烧写到开发板存储介质的整个过程,叫做系统移植。
- U‑Boot:开源引导加载程序;完成硬件初始化、镜像加载、给内核传递启动参数。
- zImage:Linux内核镜像,管理处理器、内存、进程调度、网络通信、硬件设备。
- rootfs:根文件系统,Linux运行基础,提供文件管理,用户交互。
注意:
imx6ull‑alientek‑emmc.dtb设备树记录硬件资源。Linux3.x以前硬件信息编译在内核镜像;3.x之后独立成dtb文件。
六、三种常见烧录模式
| 烧录模式 | 操作说明 | 应用场景 |
|---|---|---|
| 模式一:烧写到SD卡 | U‑Boot、内核、设备树、根文件系统全部写入SD卡 | 多设备部署、系统刷机恢复 |
| 模式二:烧写到EMMC | 整套系统烧录进板载EMMC | 开发结束,产品量产 |
| 模式三:开发调试模式 | U‑Boot烧写到SD卡;zImage通过TFTP网络下载;rootfs通过NFS挂载 | 开发调试,不用反复烧写SD卡 |