This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:要包括在定制板上的器件树。

Guru**** 2568585 points
Other Parts Discussed in Thread: AM5728

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/626126/linux-am5728-device-trees-to-include-on-custom-board

器件型号:AM5728

工具/软件: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 线路配置错误、但据我所知、这是完全相同的。


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您的定制板似乎被定义为 am57xx-beagle-x15。
    下面是我在我的 am572x GPEVM 上执行的操作、我将针对您的电路板 Beagle x15调整步骤
    请尝试以下操作:
    1.创建新的可引导 SD 卡。
    2.然后导航到 rootfs 分区,文件夹/boot:
    将 devicetree-zImage-am57xx-beagle-x15.dtb 重命名为 devicetree-zImage-am57xx-beagle-x15.dtb.old
    将您的 am57xx-beagle-x15.dtb 复制为/boot 中的 devicetree-zImage-am57xx-beagle-x15.dtb
    否、您应该具有修改后的 DTB 文件。

    内核映像也是如此:
    重命名 zImage-4.9.28- zImage- .old
    将修改的 zImage 复制为 zImage-4.9.28- 。
    这将更新您的内核映像。

    尝试此操作并发布结果。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    编辑:忽略以下内容、此问题已解决。  对于后代(以及其他阅读此内容的人)、这是由我的定制板上没有包含板名称的 EEPROM 导致的。  在 board/ti/am57xx/board.c 的 setup_board_EEPROM_env ()中、board_name 默认设置为'beagle_x15'、 我错过了 ti_i2c_EEPROM_AM_Get ()调用(就像一个 idiot)并且没有注意到、如果没有调用、它将跳过所有板检测逻辑、即我硬编码后导致 board_name 更改为"am57xx_EVM_reva3" 如果您的板上没有 EEPROM、 要更改 printenv 中的 board_name 值、请将此函数顶部的 name 变量更改为希望您的板假扮的任何值。

    另一个问题:在选择 FDT 时、我的编译似乎总是查找文件'am57xx-beagle-x15.dtb'。

    ext4功能 COMPAT:0000003c INCOMPAT:00000246 RO_COMPAT:0000007b
    EXT2修订版1、inode_size 256、描述符大小32
    ext4fs 读取0组描述符(blkno 1 blkoff 0)
    <8、0、32>
    <8456、256、128>
    迭代目录引导
    <73992、0、832>
    
    、832>迭代
    
    32、832>、873992、832>、832>、832>迭代目录引导<832>、8392< 832>、832>、832>、832> 2>
    迭代>..<
    <73992、24、8>
    <73992、32、3>
    迭代> etch<
    <73992、36、8>
    <73992、44、5>
    迭代>媒体<
    73992、52、8>
    <73992、60、7>
    迭代> include<
    73992、68、8>
    <73992
    、52>、8>
    tb、15tb
    、tb、tb 4 kb、tb、tb、nl、tb、tb、tb、tb、tb、tb、tb、nl、tb、tb、tb、tb、tb、tb、tb、tb、tb、t
    32>
    <25166166、256、128>
    <25231624、 0、8>
    <25231624、8、1>
    迭代>.<
    25231050、
    
    
    
    32、38>
    迭代>devicetree-zImage-am57xx-EVM-reva3.D231624、24、8><25231050、32、38>迭代> devicetree-zImage-am57xx-EVM-4.9b.<252326、
    <252326、<252326、<252326、<252326 >、
    1624>、80<24>、<24>、802<24>、80<24>、1624>、80<24>、<252326、1624<24>、<24>、80<252326、80<24>、<24<24<24<24<24<24<24<80<80<80<80<80<80<80<80<80<80<80<80<80<80<80<80<252326、16
    
    
    
    
    
    
    
    8>
    <25231627、216、26>
    迭代>vmlinux-4.9.28-geed43d1050<
    <25231628、292、8>
    <25231628、300、6>
    迭代>zImage<
    **文件未找到/boot/am57xx-beagle-x15.dtb **
    命令失败,Res=1
    命令失败,Res=1
    测试(4):'try '='='d1190'
    在当前堆栈#fends: 默认映像加载地址= 0x82000000
    ##无初始化 Ramdisk
    ramdisk start = 0x00000000、ramdisk end = 0x00000000
    ##无平展器件树
    在
    没有针对 argc=3的 FDT 初始值的情况下继续引导 argc=3
    的最终值
    ## FIT 配置未使用指定
    : ATAGS
    ##正在将控制权转移到 Linux (地址82000000)...
    
    正在启动内核...
    

    这有什么原因吗?  我将使用与 EVM 相同的 defconfig。。。

    当我确实在 PSDK 文件夹中包含压缩文件系统中的所有.dtb、但使用我自己的副本使用 devicetree-zImage-am57xx-beagle-15.dtb 和 devicetree-zImage-am57xx-evm-reva3.dtb 时、我会收到以下内容:

    ext4功能 COMPAT:0000003c INCOMPAT:00000246 RO_COMPAT:0000007b
    EXT2修订版1、inode_size 256、描述符大小32
    ext4fs 读取0组描述符(blkno 1 blkoff 0)
    <8、0、32>
    <8456、256、128>
    迭代目录引导
    <73992、0、832>
    
    、832>迭代
    
    32、832>、873992、832>、832>、832>迭代目录引导<832>、8392< 832>、832>、832>、832> 2>
    迭代>..<
    <73992、24、8>
    <73992、32、3>
    迭代> etch<
    <73992、36、8>
    <73992、44、5>
    迭代>媒体<
    73992、52、8>
    <73992、60、7>
    迭代> include<
    73992、68、8>
    <73992
    、52> tb、8>
    tb、tb
    、tb 4tb、tb、tb、tb、tb、nl、tb、tb、nl、tb、tb、tb、tb、tb、nl、tb、tb、tb、tb、tb、tb、tb、
    32>
    <62914816、0、128>
    <62980352、 0、8><62980352
    、8、1>
    迭代>.<
    62980352、12、8>
    <62980352、20、2>
    迭代>.<
    62980352、24、8>
    <62980352、32、45>
    迭代>devic1x-zam571x-idk-idk-idk<62980352<680352<6802<68080802<x>
    
    
    
    
    
    、680352<680352<68080802<80801Tb、6tb、6802<802<802<802<802<802<802<8080802<x>、68080802<802Tb<802<x>、68080802<802<802<80802<8060Tb<802<802<x>、6802<802<802<802<x>、6802Tb<802<802<802<802<802<x>、6802<x<802<
    
    
    
    8><62980352
    、232、24>
    迭代>am572x-idk-jailhouse.dtb<
    <62980352、256、8>
    <62980352、264、32>
    迭代>devic456-uImage-am572x-idk.dtbc<62980352
    、8>62980352-tbm
    
    
    
    
    
    
    
    
    
    
    、6803bm、6803bm、6803bm
    
    0、32>
    迭代> am57xx-evm-reva3-cam-ov1065.dtb<
    <62980353、32、8>
    <62980353、40、30>
    迭代> am571x-idk-lcd10353.dtbt 1t2045.dtbTb<62980353、78,8>62980353-mce-d803<xt80bm
    
    
    、6803bm 803me-me-t80bm
    
    
    
    
    
    
    
    
    、6803v-me-t80bm 803me-t803<6bm、6bm 803bm 803me-te-te-te-te-t803bm 803bm、
    
    30>
    迭代>am571x-idk-lcd101t2587.dtbT<
    <62980353、328、8>
    <62980353、336、44>
    迭代>devicese-am57xx-evme-ovetree-ov1065.dtB<62980353
    、3808-tb <62980354<68024>
    
    
    
    
    
    
    
    、80354<tb
    
    
    、68024<8024>、80354.2<804<tb、804<8024>、8024<tb、804<804<tb、8024<804<804<tb、804<8024>
    
    21>
    迭代>am57xx-beagle-x15.dtb< ext4tb<
    ext4tb 读取240组描述符(blkno 2 blkoff 3584)
    <23、0、32>
    <62914827、256、128>
    获得 symlink > devicetree-uImage-am57xx-be352-x15.dtb<iter
    v2<x32x32>
    、ble-ble-ble40ble-dx、ble-d80240-ble-ble-ble.idl
    
    
    0、8><62980352
    、8、1>
    迭代>.<
    62980352、12、8>
    <62980352、20、2>
    迭代>.<
    62980352、24、8>
    <62980352、32、45>
    迭代>devic1x-zam571x-idk-idk-idk<62980352<680352<6802<68080802<x>
    
    
    
    
    
    、680352<680352<68080802<80801Tb、6tb、6802<802<802<802<802<802<802<8080802<x>、68080802<802Tb<802<x>、68080802<802<802<80802<8060Tb<802<802<x>、6802<802<802<802<x>、6802Tb<802<802<802<802<802<x>、6802<x<802<
    
    
    
    8><62980352
    、232、24>
    迭代>am572x-idk-jailhouse.dtb<
    <62980352、256、8>
    <62980352、264、32>
    迭代>devic456-uImage-am572x-idk.dtbc<62980352
    、8>62980352-tbm
    
    
    
    
    
    
    
    
    
    
    、6803bm、6803bm、6803bm
    
    0、32>
    迭代> am57xx-evm-reva3-cam-ov1065.dtb<
    <62980353、32、8>
    <62980353、40、30>
    迭代> am571x-idk-lcd10353.dtbt 1t2045.dtbTb<62980353、78,8>62980353-mce-d803<xt80bm
    
    
    、6803bm 803me-me-t80bm
    
    
    
    
    
    
    
    
    、6803v-me-t80bm 803me-t803<6bm、6bm 803bm 803me-te-te-te-te-t803bm 803bm、
    
    30>
    迭代> am571x-idk-lcd101t2587.dtbT<
    <62980353、328、8>
    <62980353、336、44>
    迭代> devictB-uImage-am57xx-evme-etree-ov1065.dtB<62980353
    、380>、8>62980352<x352<x352<x80353<x>
    
    
    
    
    
    
    
    
    、80352<x352<x80353<x80353<x>、zble80352<x80352<x80352<x24>、ds-ds<x80354<x8024>、zemetreetree<x80354<x8024>、d80352<x8024>
    
    128>
    <63186640、 0、98557>98557
    字节在466ms (206.1 KiB/s)内读取
    argc=3的初始值
    argc=3的最终值
    argc=3的初始值
    argc=3
    的最终值当前堆栈在0x8df11968 *内核: cmdline 映像地址= 0x82000000
    ##跳过 init Ramdisk
    ##无初始化 Ramdisk
    ramdisk ramdisk start = 0x00000000、ramdisk end = 0x00000000
    * FDT:cmdline 映像地址= 0x88000000
    ##在88000000检查'FDT'/'FDT 映像'
    错误的 FIT 格式:无说明
    * FDT: 原始 FDT blob
    ##平展器件树 blob (88000000)
    使用0x88000000的 FDT blob (
    0x88000000、of_flat_tree)大小0x000180fd
    argc=3的初始值
    argc=3的最终值
    ## FIT 配置
    未使用指定: FDT
    ## initrd 高= 0x90000000,copy_to_ram = 1
    ramdisk load start = 0x00000000,ramdisk load end = 0x00000000
    ##设备树,88000000 ... 880180fc (len=110845 [0x1B0FD])
    正在将设备树加载到8def5000,结束8df100fc ... argc=3的确定
    初始值
    argc=3
    的最终值更新属性'/ocp/ethernet
    
    
    /ocp/ethernet@48484000/从器件@48480200/mac-address'= D4 36 39 fc 4b3e 更新属性'/ocp/ethernet@48484000/从器件@48480200/本地-mc-address'= D4 36 39 fc 4b 更新属性'/ocp/ethernet@484000/从器件@@@4839f=364mc'更改属性'36f 403d4
    = 36f 403mc 正在将控制权转移到 Linux (位于地址82000000)...
    
    正在启动内核...
    
    




  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好、但经过几次尝试、包括将定制板设置为使用 EVM 修订版 A3器件树、以及设置与 EVM 相同的 U-Boot printenv (fdtcontroller 地址和 MAC 地址除外)。  Board_name、board_serial 和 board_revision 分别为 am57xx-EVM-reva3、46164P551378和 A.3A)、并且更正了我发送的器件树的名称(有关我的构建脚本、请参阅下面的内容)、我没有看到任何改进。

    使用 uImage 和 zImage 名称复制设备树的原因是/boot 目录中的快捷方式与 uImage 名称进行了符号链接。  我发现原始 uImage 和 zImage-named DTB 文件是相同的、因此我决定按照我的更改进行操作。  如果您能想到任何东西、请告知您。  我随当前更改附加了 u-boot printenv 和完整的引导日志。

    感谢你的帮助、
    Tom

    #!/bin/sh
    
    
    
    
    
    
    
    
    /media/tom/rootfs/boot/zImage-4.9.28-geed43d1050
    /media/tom/rootfs/boot/devicetree-zImage-am57xx-evm-reva3.dtb export path=/home/tom/psdk4/linux-devkit/sysroots/x86_64-arago-linux/usr/bin
    /media/tom/rootfs/boot/devicetree-uImage-am57xx-evm-reva3.dtb:$path make ARCH=arm cross_compile=arm-linux-gnueabihf- zImage make ARCH=arm cross_compile-arm-linux-gnueabihf- modules make ARCH=arm cross_compile=arm-linux-gnueabihf- am57xx-evm-reva3-arm-arch/dts/bts dbtbs/btdbtdbs/btdb.boot-arch/dbtbtds/btdbtds/btdbtd/ es_decht-boot/ap/ap/db.ap/dbdtdb.ap/db.ap/dtbdb.ap/dtdtdbdbdb.ap/es_decht-arch/es/dbdbdb.ap/es/dtdb.ap/dbdbdbdbdb.ap/es/es/d/
    /media/tom/rootfs
    
    
    

    e2e.ti.com/.../g3_5F00_uboot_5F00_printenv_5F00_short.log

    e2e.ti.com/.../7536.putty.log

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    [引用]使用 uImage 和 zImage 名称复制设备树的原因是/boot 目录中的快捷方式与 uImage 名称符号链接。

    您使用的是哪款 SDK? 所有 AM572x TI Linux SDK 版本均可与 zImage...搭配使用

    至于设置 DTB 文件,您可以在 u-boot 中进行修复。 在 include/configs/ti_omap5_common.h 中更改:
    "Fdtfile=undefined\0"\

    更改为
    "fdtfile= "\0"

    然后删除"findfdt="\
    "如果 test $board_name = omap5_uevm;则"\
    "setenv fdtfile omap5-uevm.dtb;fi;

    相同的头文件中。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用的是 PSDK4。  但我认为我可能会误解这种反应。  我的电路板仍在使用 zImage 映像文件、但器件树快捷方式将链接到以"uImage"开头的 DTB 文件。  因此、快捷文件"am57xx-EVM-reva3.dtb"链接到文件"evicetree-uImage-am57xx-EVM-reva3.dtb"。  我确保了 devicetree-uImage-am57xx-EVM-reva3.dtb 和 devicetree-zImage-am57xx-EVM-reva3.dtb 是相同的、因为它们在原始 PSDK4文件系统中是相同的。   

    将定制板配置为使用 board_rev A.3A 以及与 AM572x GPEVM (46164P551378)相同的序列号报告为 am57xx-EVM-reva3后、U-Boot 选择了 am57xx-EVM-reva3.dtb 快捷方式文件、该文件随后转到电路板的我的器件树。  我通过修改 U-Boot 中的 board/ti/am57xx/board.c 和 board/ti/common/board_detect.c 来完成这些配置、以不读取 EEPROM (我们没有)、并且只需将值硬编码到 setenv()。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、快速问题:由于电路板上没有 EEPROM、我应该禁用 Linux 中的 EEPROM 相关内容吗? 我注意到 arch/arm/configs/tisdk_am57xx-evm_defconfig 中有一些 I2C EEPROM 从器件配置。 如果我确实禁用了从 EEPROM、我是否需要设置任何配置设置(例如板名称、序列号、修订版)、以使 Linux 内核相信它是为与引导加载程序相同的板而构建的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好、我希望您能度过一个愉快的周末。  我已经做了更多的工作、我仍然相当确信我的问题是由于我的电路板识别造成的。  我不使用 EEPROM、我有一个解决方案、在这里、当 board.c 查询 board_detect.c:board_ti_is、board_ti_get_rev 和 set_info_env 时、我已将 board_name、board_rev 和 board_serial 的值硬编码为与 AM5728 EVM rev A3相同的值。  我的补丁如下:

    e2e.ti.com/.../board_5F00_detect.diff

    我还尝试了以下操作:   

    但在引导 Linux 时没有成功。  U-Boot 会检测到正确的设备树、但内核永远不会启动。  我对它为什么不启动的想法太多了、我没有收到任何早期的 printk 调试消息来确定正在发生的情况。  UART 调试与 EVM 相同、电路和所有内容相同。

    您是否认为我没有 EEPROM 会在某种程度上混淆 Linux 内核?  内核中是否有一个电路板检测阶段在某个位置停止?  我在源代码中没有看到任何内容、但我很好奇 U-Boot 是否会将任何电路板检测信息作为起始参数发送到内核。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉耽误你的回答。
    [引用]我是否应该在 Linux 中禁用与 EEPROM 相关的任何内容?
    我个人还没有测试过这个、但可以、继续尝试一下。

    [引述]您认为我没有 EEPROM 会在某种程度上混淆 Linux 内核吗?[/引述]
    不、不应该。

    [引用]内核中是否有一个板检测阶段在某个位置停止?
    否、内核没有电路板检测阶段、这应该在 u-boot 中处理。

    建议您是否可以尝试将配置添加到 am57xx-evm.dts 并将此文件用作器件树。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Yordan Kovachev"]

    建议您是否可以尝试将配置添加到 am57xx-evm.dts 并将此文件用作器件树。
    [/报价]

    我一直在这样做、例如 am57xx-EVM-reva3.dts 。我们有一个器件树碎片(已连接)、它仅包含我们的电路板需要引导和禁用任何非必需组件的准系统更改。  我们使用将其编译为器件树的根  

    使 arch=arm cross_compile=arm-linux-gnueabihf- customboard.dtb

    然后使用以下命令将其复制到 rootfs 分区:

    CP arch/arm/boot/dts/customboard.dTB /media/tom/rootfs/boot/zImage-am57xx-evm-reva3.dtb

    我创建和移动 Linux 的方法遵循 Wiki 中提供的步骤、如下所示:

    !/bin/sh 
    RM -RF /media/tom/rootfs 
    tar xf ~/psdk4/filesystems/tisdk-rootfs-image-am57xx-evm.tar.xz -C /media/tom/rootfs
    
    
    
    
    
    
    
    
    
    
    
    /media/tom/rootfs/boot/zImage-4.9.28-geed43d1050
    /media/tom/rootfs/boot/devicetree-zImage-am57xx-evm-reva3.dtb 导出路径=/home/tom/psdk4/linux-devkit/sysroots/x86_64-arago-linux/usr/bin
    /media/tom/rootfs:$path make ARCH=arm cross_compile=arm-linux-gnueabihf- distclean make arch=arm cross_compil=arm-linux-gnueabihf=arm-arch/copy_decuebrink-linux-board-arch=arm-board-arch/custom-linux-board-arch-board-linux-board-board-linux-board-board-arch-maked/linux-linux-linux_decomeupdtisrech=arm-arch-linux-linux-board-board-board-board-linux-board-board-linux-board-board-arch-arch-arch/customrechnecomeupdtisdtex=arm-linux-linux-board-board-board-linux-board-arch-board-linux-board-arch/customrechnecome.tisf=arm-board-arch-board-linux-linux-board-arch
    
    
    dTB -O dts -o 反编译_devicetree_customboard.dts arch/arm/boot/dts/customboard.dtb 

    e2e.ti.com/.../8883.customboard.txt

    以及使用此配置时的日志

    e2e.ti.com/.../putty.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已返回 U-Boot 并重新检查了电路板检测更改(由于缺少 EEPROM)、我从头开始执行此更改:

    到目前为止、让内核启动还没有成功。  此时、我基本上是在推波助焊、下面是 U-Boot 日志中的几个方面、我希望您能对这些方面提出意见:

    [引述]

    迭代>引导<
    迭代 dir am57xx-EVM-reva3.dtb
    ext4fs 读取256组描述符(blkno 3 blkoff 0)

    [/报价]

    此时 U-Boot 从/boot 中选择设备树。  这是我自己的自定义设备树。  它是/boot 目录中唯一的.dTB (与之前的脚本相反)。  我注意到、它被读取为256组描述符、而 EVM 将其.dTB 选择读取为96组描述符。  我无法确定这意味着什么、但它在引导/机器之间是一致的。  当 EXT4文件系统联机时、两者都具有相同的 COMPAT/INCOMPAT。

    [引述]

    ext4特性 COMPAT:0000003c INCOMPAT:00000246 RO_COMPAT:0000007b
    ext2 rev 1、inode_size 256、描述符大小32
    ext4fs 读取0组描述符(blkno 1 blkoff 0)

    [/报价]

    [引述]

    ##当前堆栈结束于0x8df11ae8 *内核:cmdline 映像地址= 0x82000000
    ##跳过 init Ramdisk
    ##无初始化 Ramdisk
    RAMDISK START = 0x00000000、RAMDISK END = 0x00000000
    * FDT:cmdline 映像地址= 0x88000000
    ##在88000000时检查'FDT'/'FDT Image'
    错误的拟合格式:无说明
    * FDT:原始 FDT blob
    ###展开的设备树 blob、88000000
    使用0x88000000处的 FDT blob 进行引导
    0x88000000大小0x00018f52处的 of_flat_tree
    argc=3的初始值
    argc=3的最终值
    未指定## FIT 配置
    使用:FDT
    ## initrd 高= 0x90000000、copy_to_ram = 1.
    RAMDISK LOAD START = 0x00000000、RAMDISK LOAD END = 0x00000000
    ##设备树(88000000)... 88018f51 (len=114514 [0x1BF52])
    正在将设备树加载到8def4000,结束8df0ff51... 好的
    argc=3的初始值
    argc=3的最终值
    更新属性"/ocp/ethernet@48484000/slave@48480200/mac-address"= D4 36 39 fc 4b 3e.
    更新属性"/ocp/ethernet@48484000/slave@48480200/ local-mac-address"= D4 36 39 fc 4b 3e.
    更新属性"/ocp/ethernet@48484000/slave@48480300/mac-address"= D4 36 39 fc 4b 3f
    更新属性"/ocp/ethernet@48484000/slave@48480300/local-mac-address"= D4 36 39 fc 4b 3f
    ##正在将控制权转移到 Linux (地址82000000)...

    正在启动内核...

    [/报价]

    这是系统挂起前的最终输出。  除了文件大小和 RAM 偏移之外、它看起来与 EVM 的输出相同。   FIT/FDT 消息与 EVM 完全相同、我只能认为这是因为我的配置密切关注 EVM。  U-Boot 表示我的板适用于所有设计和用途、即 EVM。  因此、我不太担心它。   

    对于初始化 ramdisk、我们在 EVM 和定制板之间没有做任何更改、在阅读文档后、EVM 似乎是根据我们需要的规格进行设置的。  initrd_high (0x90000000)是 DDR3 RAM 的上限(256MB、从偏移量0x8000000000开始、仅映射到 EMIF2)。  这实际上是我们的单元和 EVM 之间唯一的主要区别。  我之所以提到这一点、是因为我完全不明白为什么它不会转移到内核。   

    我们非常感谢您的任何帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    检查 common/common_fit.c:
    int fit_select_fdt (const void * fdt、int images、int * fdt_offsetp)

    const char *名称、* FDT_NAME;
    int conf、node、FDT_node;
    int len;

    *FDT_offsetp = 0;
    CONF = FDT_PATH_OFFSET (FDT、FIT_CONVS_PATH);
    if (conf < 0){
    调试("%s":找不到/配置节点:%d\n"、__func__、
    CONF);
    return -EINVAL;

    对于(node = FDT_FIRST_SUBnode (FDT、conf);
    节点>= 0;
    节点= FDT_NEW_SUBnode (FDT、node)){
    name = FDT_getprop (FDT、node、"description"、&len);
    如果(!name){
    #ifdef CONFIG_SPL_LIBCOMMON_SUPPTL.
    printf ("%s":DTB 中缺少 FDT 说明\n"、
    __func__);
    #endif
    return -EINVAL;

    if (board_fit_config_name_match (name))
    继续;

    调试("选择配置'%s'、名称);
    FDT_NAME = FDT_getprop (FDT、node、FIT_FDT_PROP、&len);
    if (!FDT_NAME){
    调试("%s":找不到 FDT 名称属性:%d\n"、
    __func__,len);
    return -EINVAL;


    调试("、FDT '%s'\n"、FDT_NAME);
    FDT_node = FDT_SUBNODE_OFFSET (FDT、IMAGES、FDT_NAME);
    如果(FDT_node < 0){
    调试("%s":找不到 FDT 节点'%s':%d\n"、
    __func__、FDT_name、FDT_node);
    return -EINVAL;


    * FDT_offsetp = FDT_getprop_u32 (FDT、FDT_node、"data-offset");
    Len = FDT_getprop_u32 (FDT、FDT_node、"data-size");
    调试("拟合:选定的'%s'、\n、名称);

    返回 len;


    #ifdef CONFIG_SPL_LIBCOMMON_SUPPTL.
    printf ("这些选项中没有匹配的 DT:\n");
    对于(node = FDT_FIRST_SUBnode (FDT、conf);
    节点>= 0;
    节点= FDT_NEW_SUBnode (FDT、node)){
    name = FDT_getprop (FDT、node、"description"、&len);
    printf ("%s\n"、名称);

    #endif

    return -ENOENT;


    要进入此状态、board_fit_config_name_match 应始终返回 false。
    您可以在 board/ti/am57xx/board.c 中找到 board_fit_config_name_match:
    #ifdef CONFIG_SPL_LOAD_FIT
    int board_fit_config_name_match (const char *名称)

    if (board_is_x15 ()){
    if (board_is_x15_revb1 ()){
    if (!strcmp (name、"am57xx-beagle-x15-revb1"))
    返回0;
    }否则、如果(!strcmp (name、"am57xx-beagle-x15"){
    返回0;

    }否则、如果(board_is_am572x_evm()){
    if (board_is_am572x_evm_reva3 ()){
    if (!strcmp (name、"am57xx-EVM-reva3"))
    返回0;
    }否则、如果(!strcmp (name、"am57xx-beagle-x15"){
    返回0;

    }否则、如果(board_is_am572x_idk ()&&!strcmp (名称、"am572x-idk")){
    返回0;
    }否则、如果(board_is_am571x_idk ()&&!strcmp (名称、"am571x-idk")){
    返回0;


    返回-1;

    #endif

    您能否验证是否已修改 board/ti/am57xx/board.c 以指向您的定制器件树?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好、我已经验证了我的 board.c 和 board_detect.c 现在通过硬编码"正确"EEPROM 结果来提供正确的电路板配置。 我注意到我犯了一个愚蠢的错误、在这个错误中、我更改了 board/ti/common/board_detect.c 中的"ti_i2c_EEPROM_DRA_get"、而不是我在上一篇文章中的"ti_i2c_EEPROM_AM_get"。 我还验证了 Linux 在/rootfs/boot/.中选择了正确的'am57xx-EVM-reva3.dtb' 非常感谢您的帮助!