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/AM3354:显示数据中止错误的 U-boot

Guru**** 2581345 points
Other Parts Discussed in Thread: TPS65217, AM3517

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/627722/linux-am3354-u-boot-showing-data-abort-error

器件型号:AM3354
主题中讨论的其他器件:TPS65217AM3517

工具/软件:Linux

我在定制板上运行内核版本4.9.28和 uboot 2017.1、该设计类似于 Beagle Bone Black、内核不会启动。 U-boot 正在引导、但有一些警告、请检查下面所述的日志。

U-Boot SPL 2017.01-00319-g7752743-Dirty (2017年9月22日- 10:28:50)
tps65217:设置 UVLO
尝试从 MMC1引导
SPL:环境中未设置 Falcon_args_file、恢复为默认值
读取 args
SPL_load_image_fat_os:读取图像参数时出错、错误--1
正在读取 u-boot.img
正在读取 u-boot.img


U-Boot 2017.01-00319-g7752743-脏 污(2017年9月22日- 10:28:50 +0530)

CPU :AM335X-GP 修订版2.1
I2C:  就绪
DRAM: 512 MiB
MMC:  OMAP SD/MMC:0、OMAP SD/MMC:1.
**第一个描述符不是1:1上的主要描述符**
网络:   未设置。 验证第一个电子保险丝 MAC
CPsw、USB_ether
错误:未设置 USB_ether 地址。

按空格键可在2秒钟内中止自动引导
切换到分区#0,确定
mmc0是当前器件
在器件0上找到 SD/MMC
正在阅读 uEnv.txt
154ms (18.6KiB/s)内读取的3051字节
uEnv.txt 上的已加载环境
正在从 MMC 导入环境...

我尝试运行以下命令来引导 zImage:

1.按空格键可在2秒钟内中止自动引导
=>运行 mmcboot
切换到分区#0,确定
mmc0是当前器件
在器件0上找到 SD/MMC
正在阅读 uEnv.txt
154ms (18.6KiB/s)内读取的3051字节
uEnv.txt 上的已加载环境
正在从 MMC 导入环境...
(注意:之后不会继续)
2.按空格键可在2秒内中止自动引导
=>转到0x80200000
##正在启动应用程序,地址为0x80200000……
未定义的指令
PC:[<801ff000>]         LR:[<80200004>]
重新分配 PC:[<60aac000>]   LR:[<60aad004>]
SP:9df32d78 IP:0000001c    fp:00000002
R10:9ffa0b58 R9:9df32ed8    R8:9df360c8
R7:9ff5450d R6:00000002    R5:80200000 R4:9df360cc
r3:80200000 r2:9df360cc    r1:9df360cc r0:00000001
标志:nzCv 在  模式 SVC_32上关闭 FIQ 的 IRQ
正在重置 CPU ...

正在重置...
(注意:之后不会继续)
请查找随附的 uEnv 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如果您的定制板与 BBB 类似、您是否可以尝试在定制板上引导 BBB 的 uboot 和内核二进制文件? 分享您的观察结果。

    谢谢、
    Prabhuraj
    Black胡椒 技术
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我尝试了 BBB 的二进制文件,但没有显示任何内容。 即使 uboot 也不会引导。 我尝试的二进制文件在 BBB 中工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在同一电路板中、3.14内核运行正常。 现在、我要将其升级到4.9.28。 在3.14内核中、loadaddr 为0x80200000。 因此地址应该正确。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    按空格键可在2秒钟内中止自动引导
    => loadx
    ##准备好将二进制(xmodem)下载到115200bps 的0x80200000...
    C 模式、30847 (SOH)/0 (STX)/0 (CAN)数据包、重试1次
    ##总大小 = 0x003c3f50 = 3948368字节
    =>转到0x80200000
    ##正在启动应用程序,地址为0x80200000……

    我通过 xmodem 加载了内核、现在数据中止错误不会出现。 但内核在启动内核后挂起

    => bootz

    正在启动内核...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在地址0x88000000加载了 FDT?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我通过 xmodem 加载、它只接受 loadaddr (0x80200000)。 如何通过 xmodem 加载 FDT addr。 TFTP 引导在我的主板中不可用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参见用法、有一个可以更改的偏移量。

    =>帮助 loadx
    loadx -通过串行线路加载二进制文件(xmodem 模式)

    用法:
    loadx [关闭][波特]
    -通过串行线路加载二进制文件、偏移量为"off"和波特率为"BAUD"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。 这对我来说很有帮助、通过 xmodem 上传 DTB。

    但似乎它不接受 DTS。 我尝试了 AM335x_bonebblack.dTB 和定制板 dts 文件(在3.14内核中工作正常)。

    => bootz

    正在启动内核...


    错误:无法识别/不受支持的机器 ID (R1 = 0x0000157d)。

    可用的机器支持:

    ID (十六进制) 名称
    FFFFFFFF 基于 DT 的通用系统
    FFFFFFFF 通用 DRA72X (平展器件树)
    FFFFFFFF 通用 DRA74X (平展器件树)
    FFFFFFFF 通用 AM43 (平展器件树)
    FFFFFFFF 通用 OMAP5 (平展器件树)
    FFFFFFFF 通用 OMAP4 (平展设备树)
    FFFFFFFF 通用 AM33XX (平展器件树)
    FFFFFFFF 通用 ti816x (平展器件树)
    FFFFFFFF 通用 ti814x (平展器件树)
    FFFFFFFF 通用 AM3517 (平展器件树)
    FFFFFFFF 通用 OMAP3-GP (平展器件树)
    FFFFFFFF 通用 OMAP36xx (平展器件树)
    FFFFFFFF 通用 OMAP3 (平展器件树)
    FFFFFFFF Nokia RX-51电路板
    FFFFFFFF 通用 OMAP2430 (平展器件树)
    FFFFFFFF 通用 OMAP2420 (平展器件树)

    请检查您的内核配置和/或引导加载程序。

    从理论上讲、设备树文件应跨内核版本工作、您的3.14设备树文件很可能无法正常使用 Linux 4.9、我必须对其进行调整。 但无法了解如何修改它。。。 请帮帮我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您没有将 FDT 地址传递给 bootz 命令。 请尝试此行。
    bootz ${loadaddr}-${fdtaddr}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    按空格键可在2秒钟内中止自动引导
    => bootz 0x80200000 - 0x88000000
    ###展开的设备树 blob、88000000
    使用0x88000000处的 FDT blob 进行引导
    正在保留 FDT 存储器区域:Addr=88000000 size=9000
    在88000000、8800bfff 结束时使用设备树

    正在启动内核...

    几秒钟后、它将自动重新启动。 它在启动内核时挂起、我尝试启用了 learprintk。 请建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过 xmodem 加载内核和 DTB 后、我尝试执行 GO 命令。 请检查以下日志。

    按空格键可在2秒钟内中止自动引导
    => loadx 0x80200000 115200
    ##准备好将二进制(xmodem)下载到115200bps 的0x80200000...
    C 模式、32836 (SOH)/0 (STX)/0 (CAN)数据包、重试1次
    ##总大小 = 0x004021a8 = 4202920字节
    => loadx 0x88000000 115200
    ##准备好二进制(xmodem)下载到0x88000000 (115200bps)...
    C 模式、282 (SOH)/0 (STX)/0 (CAN)数据包、重试1次
    ##总大小 = 0x00008cfb = 36091字节
    =>去吧
    GO -在地址'addr'处启动应用程序

    用法:
    去地址[arg...]
    -在地址'addr'处启动应用程序
    传递"arg"作为参数
    =>转到0x80200000
    ##正在启动应用程序,地址为0x80200000……

    错误:无法识别/不受支持的机器 ID (R1 = 0x9df370cc)。

    可用的机器支持:

    ID (十六进制) 名称
    FFFFFFFF 基于 DT 的通用系统
    FFFFFFFF 通用 DRA72X (平展器件树)
    FFFFFFFF 通用 DRA74X (平展器件树)
    FFFFFFFF 通用 AM43 (平展器件树)
    FFFFFFFF 通用 OMAP5 (平展器件树)
    FFFFFFFF 通用 OMAP4 (平展设备树)
    FFFFFFFF 通用 AM33XX (平展器件树)
    FFFFFFFF 通用 ti816x (平展器件树)
    FFFFFFFF 通用 ti814x (平展器件树)
    FFFFFFFF 通用 AM3517 (平展器件树)
    FFFFFFFF 通用 OMAP3-GP (平展器件树)
    FFFFFFFF 通用 OMAP36xx (平展器件树)
    FFFFFFFF 通用 OMAP3 (平展器件树)
    FFFFFFFF Nokia RX-51电路板
    FFFFFFFF 通用 OMAP2430 (平展器件树)
    FFFFFFFF 通用 OMAP2420 (平展器件树)

    请检查您的内核配置和/或引导加载程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请尝试以下命令:
    => bootz 0x80200000 - 0x88000000
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    => bootz 0x80200000 - 0x88000000
    ###展开的设备树 blob、88000000
    使用0x88000000处的 FDT blob 进行引导
    在88000000、8800bcfa 结束时使用设备树

    正在启动内核...

    请检查我的最后一个帖子...已经发布在那里。 请提供建议、我缺少什么以及如何继续。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可能设备树与您的硬件不匹配、或者控制台消息是路由器到不同 TTY 的。 请检查 帖子。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在具有相同板的3.14内核中、DTB 工作正常。 为什么它采用相同的 dtb (针对4.9内核编译)..?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么它在4.9.28内核中不采用相同的 DTB?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因为 DTS 需要在内核中重新编译、而内核将在其上运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我在4.9.28内核下编译了.dts 文件、它生成了.dTB。 仅用于4.9.28内核的编译.dTB。 您能否解释一下内核中重新编译的内容...?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    能否帮助我解决4.9内核中的 DTS 问题?

    1.如何确定 DTS 中的哪个器件不匹配?
    2.为什么显示无法识别/不受支持的计算机 ID?
    我尝试了 AM335x-Beaglebon.dTB、因为我的定制板设计类似于 Beagle Bone 板。 但误差是相同的。
    4.我是否必须在任何地方设置机器 ID?

    错误:无法识别/不受支持的机器 ID (R1 = 0x9df370cc)。

    可用的机器支持:

    ID (十六进制)名称
    FFFFFFFF 基于通用 DT 的系统
    FFFFFFFF 通用 DRA72X (平展器件树)
    FFFFFFFF 通用 DRA74X (平展器件树)
    FFFFFFFF 通用 AM43 (平展器件树)
    FFFFFFFF 通用 OMAP5 (平展器件树)
    FFFFFFFF 通用 OMAP4 (平展器件树)
    FFFFFFFF 通用 AM33XX (平展器件树)
    FFFFFFFF 通用型 ti816x (平展器件树)
    FFFFFFFF 通用 ti814x (平展器件树)
    FFFFFFFF 通用 AM3517 (平展器件树)
    FFFFFFFF 通用 OMAP3-GP (平展器件树)
    FFFFFFFF 通用 OMAP36xx (平展器件树)
    FFFFFFFF 通用 OMAP3 (平展器件树)
    FFFFFFFF Nokia RX-51电路板
    FFFFFFFF 通用 OMAP2430 (平展器件树)
    FFFFFFFF 通用 OMAP2420 (平展器件树)

    请检查您的内核配置和/或引导加载程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Madhu Sundar "]
    1.如何确定 DTS 中的哪个器件不匹配?
    [/报价]
    将 AM335x-Beaglebon.dts 与内核3.14中的工作器件树进行比较。 从头开始、创建常规节点、然后将其他外设分组或逐个添加。
    [引用用户="Madhu Sundar "]
    2.为什么显示无法识别/不受支持的计算机 ID?
    [/报价]
    当您不使用 bootz 在指定的器件树中启动内核、而是使用 GO 命令跳转到该地址时。 内核认为您正在使用 ATAGS 进行引导,因此它打印出无法识别/不受支持的计算机 ID。
    [引用用户="Madhu Sundar "]
    我尝试了 AM335x-Beaglebon.dTB、因为我的定制板设计类似于 Beagle Bone 板。 但误差是相同的。
    [/报价]
    定制板将需要定制器件树。
    [引用用户="Madhu Sundar "]
    4.我是否必须在任何地方设置机器 ID?
    [/报价]
    在这种情况下、您只需使用 bootz 命令并取消设置 FDT_HIGH。

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

    我没有做过几次试验来找到这个问题。

    我在定制板中使用4.9.28内核和 uboot-2017.1、这与 BeagleBone Black 类似。

    定制板在内核版本3.14中与器件树一起工作。 现在、我想让它在内核4.9.28 + uboot.2017.1上工作。

    试用版1:uBoot-2017.1 +内核4.9.28 +定制板 DTS --- >不引导

    途径2:uBoot-2017.1 + kernel 3.14 +定制板 dts --- >正确引导

    途径3:uBoot-2017.1 +内核3.14 + AM335x-evm.dts ------ >正确引导

    根据以上路径、Uboot 和 DTS 运行正常...问题与内核4.9.28有关。

    按照以下步骤、我配置并编译内核4.9.28。 如果我要修改/添加任何步骤、请提出建议。

    步骤1:下载并解压 SDK。

    步骤2:在内核源树下、
    使 arch=arm cross_compile=arm-linux-gnueabihf- mrproper

    使 arch=arm cross_compile=arm-linux-gnueabihf- tisdk_am335x-evm_defconfig

    make arch=arm cross_compile=arm-linux-gnueabihf- uImage dtbs (此处未编译.dts 文件)。
    我执行了以下命令

    使 arch=arm cross_compile=arm-linux-gnueabihf- am335x-evm.dtb

    步骤3:分区 SDCARD

    步骤4:将 MLO、uboot.img 复制到/media/boot、复制屋顶、将 zImage、dtb 复制到/media/rootfs/boot

    步骤5:为电路板加电后。 我收到以下错误

    ##从80200000的传统映像引导内核...
    映像名称:linux-4.9.28-geed43d1050
    创建日期: 2017-10-13 7:11:04 UTC
    映像类型:ARM Linux 内核映像(未压缩)
    数据大小:3590872字节= 3.4 MIB
    载入地址:80200000
    入口点:80200000
    正在验证校验和... 好的
    ###展开的设备树状图、位于80f80000
    使用0x80f80000处的 FDT blob 进行引导
    正在加载内核映像... 好的
    在80f80000、80f8d75d 结束位置使用设备树

    正在启动内核...


    错误:无法识别/不受支持的机器 ID (R1 = 0x0000157d)。

    可用的机器支持:

    ID (十六进制) 名称
    FFFFFFFF 基于 DT 的通用系统
    FFFFFFFF 通用 AM33XX (平展器件树)

    请检查您的内核配置和/或引导加载程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请检查 帖子。