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.

[参考译文] AM5749:早期启动问题(SPL/MLO)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1214485/am5749-early-boot-problem-spl-mlo

器件型号:AM5749

您好!

电路板是定制板参考 AM574x IDK,修改了电源单元,并更改了 DDR3 (AM5749,DDR3/L:IGB13H8G162BF-13KI 2pic,ECC DDR3/L:IGB13H8G802BF-13KI 1pic)
U-boot 版本为"u-boot-2019.01+gitAUTOINC+333c3e72d3-g333c72d3"
device_tree=am574x-idk
配置已用 am57xx_evm_defconfig

我使用 CCS V12.2.0调试器运行"step over"来跟踪此问题。
代码将进入_main ()--> memset、然后跳转至0x0000000c PRUS1_CFG_PRUSS_GPCFG1、并在此处停止。

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

    您好!

    控制台上是否有任何日志、或者只是一个空白窗口?
    您是否能够从调试器共享调用堆栈?

    -基尔西

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

    Keerthy、您好!

    感谢您的回复!
    我们有控制台,但没有任何输出(只是一个空白的 sceen )。

    更新当前状态:
    [情况1]。 启动时、我们等待大约60秒。然后开始运行"单步执行"进行跟踪。
    代码将进入_main()--> memset 并在此处停止。

    CCS 将外观如下照片:


    没有电池堆信息输出。

    然后按下"supend"按钮、  代码将 跳转至0x0000000c PRUS1_CFG_PRUSS_GPCFG1。

    [情况2]. 启动时立即开始运行"单步执行"进行跟踪。
    代码将成功通过_main()。
    系统将在函数 dm_spi_release_bus ()中的0x4030fffe 和0x40310004之间跳过 bwtfe。
    电芯堆栈 ATDM_SPI_RELEASE_BUS ()(位于 spi-uclass.c:82)。

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

    您好!

    什么是启动介质? 从何处加载引导二进制文件?

    此致、

    基尔西

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

    您好!

    我通过  create-sdcard.sh 将 SPL(MLO)下载到 SD 卡。

    U-boot 版本为"u-boot-2019.01+gitAUTOINC+333c3e72d3-g333c72d3"。

    二进制文件从   u-boot-2019.01构建。

    配置命令为  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- device_tree=am574x-idk am57xx_evm_defconfig

    构建命令为  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- device_tree=am574x-idk

    我在 spl_relocate_stack_gd ()中添加了测试代码 ,如下所示:

    ASM ("测试:NOP");
    asm (" nop");
    asm (" b test ");
    asm (" nop");
    asm (" nop");

    当启动 PC 将停止在测试代码位置,然后我修改 PC 到 PC+4跳离开测试代码.

     

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

    您好!

    您是否曾尝试使用 SDK 的 board-support/prebuilt-images 文件夹中的 MLO?

    您能否尝试检查一下在定制电路板上的行为是否不同?

    此致、

    基尔西

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

    您好!

    我使用 电路板支持/预编译映像中的 MLO 进行引导、PC 将 跳转到0x0000000c PRUS1_CFG_PRUSS_GPCFG1。

    但我们还没有任何用于锁定 PC 的测试代码、因此无法逐步调试。  

    我有两个问题:

    1.为什么 PC 跳转至 PRUS1_CFG_PRUSS_GPCFG1?

    2.修改了哪些硬件让代码保留在 dm_spi_release_bus ()中?

    我上传了 如下原理图:

    https://drive.google.com/file/d/18dAa_4N50VTIAZShWKz7TJ-HIMD5DxA-/view?usp=sharing

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

    大家好  

     情况2:

    我从 memset ()跟踪 asm 跳转至 memset 中的 dm_spi_release_bus ()、如下所示:

    _main ()--> memset ()--> 0x40303102 BX r14  

    然后进入这一行将跳到 r14(0x4030ffffffff ),即 dm_spi_release_bus ()--> 0x4030ffe LDR r3,[r3,#4]

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

    您好!

    由于我们无法重现此问题、因此、您可以提供详细的调用堆栈将会有所帮助。
    也跳至0xC 绝对有问题的迹象。 执行空间应位于内部 RAM 空间中。

    -基尔西

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

    添加到 Keerthy 的回复...

    0xC 为 CPU 中止的矢量。 它与  PRUSS1_CFG_PRUSS_GPCFG1无关。

    您可能已在地址加载了一些二进制和这些符号。

    最可能的情况是您的代码中出现了错误、例如、一个无效指针导致 CPU 访问无效地址、从而生成了数据中止。 它将在0xC 地址结束。