gpt4 book ai didi

linux-device-driver - 通过设备树中选择的节点传递 Bootargs 不适用于 Beaglebone Black

转载 作者:行者123 更新时间:2023-12-03 01:18:51 24 4
gpt4 key购买 nike

根据我的理解,选择的节点用于将启动参数发送到内核。以下是现有设备代码(am335x-bone-common.dtsi)选择的节点。

chosen {
stdout-path = &uart0;
};

因此,我修改了所选节点以传递内核参数。

chosen {
bootargs = "console=ttyO0,115200 root=/dev/mmcblk0p2 rootfstype=ext3 rw rootwait";
stdout-path = &uart0;
};

在启动开发板时,我遇到了 KERNEL PANIC,这是日志{https://pastebin.com/XHyrsmfG }

仅供引用:这些是在串行控制台(minicom)上发出的 u-boot 命令,以便使用 SD 卡移植内核和设备树。

fatload mmc 0:1 0x81000000 zImage
fatload mmc 0:1 0x82000000 am335x-boneblack.dtb
bootz 0x81000000 - 0x82000000

最佳答案

As per my understanding chosen node is used to send boot arguments to the kernel.

您的理解不完整。
正如另一个答案中已经提到的,引导加载程序(即 U-Boot)提供的内核命令行是引导板时当前使用的实际参数列表。

对于 ARM Linux,默认内核配置优先于引导加载程序的命令行,而不是设备树中所选节点中的默认内核命令字符串和 bootargs。
rationale according to U-Boot author/maintainer Wolfgang Denk似乎任何硬编码的内置 bootargs 都不如可以轻松定制并由引导加载程序提供的 bootargs。这正是您所看到的。

实际上存在三种可能的 ARM 内核启动配置选择:

Kernel command line type:
(X) Use bootloader kernel arguments if available
( ) Extend bootloader kernel arguments
( ) Always use the default kernel command string

如果您希望始终忽略 U-Boot 的 bootargs 变量中的命令行(以及来自 DT 的命令行),而只使用 CONFIG_CMDLINE 中定义的默认内核命令字符串,则应针对该列表中的第三个选择 (CONFIG_CMDLINE_FORCE) 配置内核。
请注意,此选项列表仅在启用 CONFIG_ATAGS 时才可用(“支持传统 ATAGS 引导数据传递”)。

选择 DT bootargs 的方案是使用现有的内核配置,但只需删除该 U-Boot 环境变量(即 setenv bootargs)即可。
如果您将 U-Boot 的 bootargs 变量更改为另一个答案中提到的空字符串,内核将使用其默认内核命令字符串 (CONFIG_CMDLINE) 而不是 DT。

另请参阅How to set Linux kernel command line on ARM?

关于linux-device-driver - 通过设备树中选择的节点传递 Bootargs 不适用于 Beaglebone Black,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48801998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com