文章目录
- 一、概述
- 二、形象比喻:办公室的白板和档案柜
- 三、环境变量工作流程
- 四、核心环境变量详解
- 4.1 启动控制类
- 4.2 内核加载地址类
- 4.3 bootargs -- 内核命令行参数
- 4.4 网络配置类
- 4.5 分区和启动路径类
- 五、环境变量操作命令
- 六、环境变量存储机制
- 6.1 RK3506 的存储配置
- 6.2 环境变量存储布局
- 6.3 环境变量加载优先级
- 七、典型场景实战
- 场景1:网络启动内核调试
- 场景2:进入恢复模式
- 场景3:备份和恢复环境变量
- 八、环境变量在脚本中的使用
- 📝 本章小结
- 🏠 课后练习
前面几章把 U-Boot 编译出来了、烧到板子上了,板子也能起来。但你有没有想过,U-Boot 每次上电凭什么知道从哪儿加载内核、用什么命令启动、网口 IP 是多少?答案就是这一章的主角–环境变量。环境变量是 U-Boot 的"遥控器",它控制着启动行为、网络参数、内核加载地址这些运行时行为。这一章要解决四个问题:哪些环境变量控制启动流程,bootcmd和bootargs分别起什么作用?怎么用saveenv让变量掉电不丢失,它背后到底发生了什么?环境变量存在哪儿,eMMC、SPI Flash、NAND 有什么区别?以及最实际的–误改了关键变量怎么抢救回来?建议开讲前先把板子通上电、串口连好,等会儿讲到操作命令可以跟着敲printenv看真实输出。这一章和前面烧写章、和后面 U-Boot 命令行章是紧密衔接的–烧写章把固件搬上去了,这一章讲固件里"可调的参数"怎么管,下一章再讲 U-Boot 命令行那些操作具体怎么用。
一、概述
从宏观上认识环境变量是什么、解决什么问题。
环境变量是 U-Boot 中最重要的配置机制。它们控制着启动行为、网络参数、内核加载地址等一切运行时行为。环境变量存储在 Flash 的特定区域,掉电不丢失。
"掉电不丢失"这四个字是环境变量和普通内存变量最大的区别。你在 U-Boot 命令行敲setenv设的变量,默认只在 RAM 里活着,一断电就没了。要让它真正"固化"下来下次启动还在,得走saveen