i.MX6ULL嵌入式Linux系统移植学习笔记

一、基础概念

  1. 系统移植 :简单理解就是让开发板可以运行Linux操作系统。
  2. 驱动: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卡数据分布如下:

  1. 0扇区(0字节):MBR分区表,占用512字节,保存分区定义
  2. 保留区域(1KB ~ 1MB) :存放u‑boot.imx,占用300KB‑800KB
  3. 分区1:FAT32,容量64MB,挂载为/boot
    • 存放文件:zImage、设备树.dtb文件
  4. 分区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卡