Uboot如何传递bootargs给Linux
Uboot如何传递bootargs
uboot并不是直接将bootargs传递给kernel,而是修改dts中的chosen节点实现的。
在uboot中可以发现该函数:
int fdt_chosen(void *fdt) |
就不用管这个函数是怎么被调用的了,反正一定是会被调用到的。
该函数使用fdt_find_or_add_subnode
寻找chosen节点,如果没找到chosen节点,就创建一个,随后返回offset。
随后调用board_fdt_chosen_bootargs
函数,该函数定义如下:
/** |
该函数直接将环境变量中的bootargs
返回,str被赋值为bootargs。
随后调用 fdt_setprop
去设置bootargs。
至此bootargs修改完毕。
总结
情况 | 最后 kernel 用的 bootargs 来源 |
---|---|
U-Boot bootargs 非空 | 用 U-Boot 传的 bootargs |
U-Boot bootargs 为空 | 用 Linux DTS 自己的 chosen节点作为bootargs |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Troy's blog!
评论