工具/软件:Linux
大家好、我一直在我们的定制板上引导 Linux、我有几个关于 Linux 内核器件树的问题。 作为参考、我使用的是 PSDK 4及其附带的4.9.28内核。 我一直在为我们的固件修改现有的 DTS 文件、而不是现在自行修改。
在 PSDK wiki 中的 Linux 内核用户指南中:
该指南指出、要编译的器件树将是 AM572x EVM 的 am57xx-EVM-reva3.dts 文件。 这是合理的、分解该过程产生的 DTB 可为 EVM 生成完整的器件树。 但是、当我仅将 am57xx-EVM-reva3.dtb 文件复制到器件存储卡上的/boot 时、我的器件会在以下位置挂起:
正在更新属性'/ocp/ethernet@48484000/从器件@48480300/mac-address'= D4 36 39 fc 4b 3f 正在更新属性'/ocp/ethernet@484000/从器件@48480300/local-mac-address'= D4 36 39 fc 4b 3f ##正在将控制传输到 Linux (地址82000000)... 正在启动内核...
在搜索 E2E 后、我认为这只是器件树配置错误。
考虑到这一点、我进行了编辑、并将我自己的器件树版本放在/boot 目录中、作为目录中唯一的.dTB 文件、以及 zImage。 当我尝试引导时、收到以下消息:
迭代>zImage<** 找不到文件/boot/am57xx-beagle-x15.dtb ** 命令失败,Rese=1 命令失败,Rese=1
这就提出了一个我迄今无法回答的问题:如果编译后的器件树 blob am57xx-EVM-reva3.dtb 包含器件的完整器件树、那么为什么 zImage 会请求其他 dtb?
其次,磁盘上的其它设备树有什么作用? 它们是否只是 LCD 屏幕和 EVM 各种兼容摄像头等外设的片段?
第三、这是否意味着 wiki 中的器件树编译过程不正确、因为没有说明必须创建多个器件树块?
完整启动日志为 attached.e2e.ti.com/.../g3_5F00_linux1.loge2e.ti.com/.../g3_5F00_linux_5F00_only_5F00_one_5F00_dtb.log
编辑:我发现 zImage 所需的唯一器件树二进制文件似乎是 am57xx-beagle-x15.dtb 文件。 如果/boot 中仅包含该文件、U-Boot 将移至正在启动内核... 但它仍然挂起。
2017年9 月19日编辑:确保定制板的 U-Boot 和 Linux UART 配置相同后、减去 u-boot 特定的 u-boot、dm-pre-reloc 标签、在 Linux 中不起作用(不重要、因为它不存在于 EVM 的器件树配置中)。 此外、EVM 和定制板 UART 配置是相同的。 定制板上 UART3的电路与 EVM 的电路相同、.config 文件也相同。
其他什么可能导致此内核挂起??? 根据我找到的所有来源、"启动内核"后未收到任何消息的原因是 UART 线路配置错误、但据我所知、这是完全相同的。
