U-Boot简介
是一段用于启动Linux内核的bootloader裸机程序,其主要作用是:初始化必要的外设,将Linux内核从源存储拷贝到内存中,最终启动内核
基于I.MX6ULL的U-Boot的一些开发概念
I.MX通过置位BOOT引脚进行配置选择从SD卡、EMMC、NAND FLASH等等的启动方式
生成的U-Boot.bin文件需要加上头部(IVT、DCD等数据),然后再烧录到启动存储中
I.MX上电后先跑芯片内置BootROM程序,把U-Boot加载到内存后,再跳转执行U-Boot
U-Boot提供命令行交互界面,其可以选择系统从网络启动、从EMMC启动等等
通常情况下,是参考原厂开发板做硬件,而后在原厂提供的BSP包上做修改
基于 I.MX6ULL 的 U-Boot 移植流程简述
在 U-Boot 官网中找到参考的开发平台,通常是原厂开发板,以其为模板工程,修改移植到私有板子上。
- 添加私有板子配置,复制最接近的一份原厂开发板配置文件,重命名为私有板子工程配置文件(包括defconfig、头文件、板级文件夹等)
- 添加适配图形化界面配置文件
- 驱动适配修改,如LCD驱动、网络驱动等
U-Boot在I.MX6ULL中的启动流程简述
U-Boot顶层Makefile详解
暂略
U-Boot启动流程详解
暂略
补充
u-boot对内核的参数传递示例
1 | /* boot从网络启动 */ |
1 | /* boot从emmc启动 */ |
bootargs
其为 U-Boot 传递给内核的参数,用于控制内核的行为,如设置控制台、指定根文件系统位置、根文件系统类型、启动哪些服务等等
bootcmd
其为在 U-Boot 在启动内核之前执行的命令,可以用来初始化硬件、加载内核镜像等等