【发布时间】:2021-09-19 06:20:44
【问题描述】:
我的理解是,对于 ARM,一般来说内核启动命令行有三个来源:
- 在内核配置中以 CONFIG_CMDLINE 形式给出的那些
- 引导加载程序(通常是 ARM 处理器上的 U-Boot)传递的那些
- 那些包含在设备树中,在 selected/bootargs 下 使用哪一个取决于内核配置参数。我的问题是如何使用内核配置在这些选项之间进行选择?
并且可以一个附加到另一个,即我们可以使用 CONFIG_CMDLINE 传递一些,然后在设备树中附加硬件特定参数吗?
我正在尝试组合 1、2 和 3,但这不能编译:
/dts-v1/;
#include "imx6q.dtsi"
#include "imx6q-h.dtsi"
#include "imx6q-m.dtsi"
/ {
model = "A M";
compatible = "a,imx6q-hydra13", "a,imx6q-mercury",
"a,imx6q-hydra", "fsl,imx6q";
};
&ssd_touch {
status = "okay";
};
ERROR AT THIS LINE: chosen {
bootargs = "console=ttymxc1,115200";
};
【问题讨论】:
-
您尝试了多少种组合,结果如何,请发布实验和结果
-
CONFIG_CMDLINE 设置默认内核命令字符串。然后可以选择以下选项: (1) CONFIG_CMDLINE_FROM_BOOTLOADER 将优先使用引导加载程序中的命令行,而不是默认的内核命令字符串。 (2) CONFIG_CMDLINE_EXTEND 将命令行从引导加载程序附加到默认内核命令字符串。 (3) CONFIG_CMDLINE_FORCE 将只使用默认的内核命令字符串,忽略引导加载程序提供的任何字符串。
-
这个错误可能是因为你的
chosen节点在根节点之外。 -
@IanAbbott 谢谢。但是设备树在这个方案中的位置是什么?我正在使用 AOSP 9 代码并在 BoardConfig.mk 文件和设备树中设置命令行,但我没有看到设备树命令行出现在任何地方,包括 /proc/cmdline。
标签: command-line linux-kernel arm embedded-linux device-tree