之前在uboot学习中分析bootm原理的,我们知道了uboot启动内核是通过传入三个参数来启动的。
kernel_entry为内核zImage在内存的首地址。
之前我们传的三个参数分别是:
0,芯片的机器ID,uboot给内核参数tag在内存的首地址r2。
查看上面截图的代码,可以看到r2也可以是另设备树文件(dtb)在在内存的地址。
对于使用tag传参给内核,机器的ID是必须要和内核中配置的芯片一致的。
而对于使用设备树来启动内核,机器ID则不是必须的。
同时,对新的4.x的内核,默认支持设备树传参启动。
接下来我们简单分析一下内核的启动对三个传参r0,r1,r2的处理。
1. 此时系统所满足的条件:
- MMU = off, D-cache = off, I-cache = dont care
- r0 = 0, r1 = machine nr, r2 =