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.

[参考译文] AM263P4-Q1:RBL/SBL 检查清单?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1624226/am263p4-q1-rbl-sbl-checklist

器件型号: AM263P4-Q1

您好:

在 DevBoot 模式下、我可以使用修改后的 sbl_load.js 在我们的 custom* HW 上运行 custom* SBL:

image.png

CPU 复位后、.mcelf 应用程序将运行。

我的问题是、当我将 SOC 引导引脚置于 QSPI 4S 模式时、自定义 SBL 和应用程序不会运行。

上电后、如果我连接调试器(而不加载程序或复位)、PC 与我的 SBL 代码中的符号不相关联:

image.png

我得出结论、RBL 未加载我的 SBL。 但是、我不确定现在要检查什么。

我已要求硬件团队在 1S 中配置引导模式、但如果这无法解决问题、我的下一个举措是什么?

  • 是否有一个项目或流程图清单来消除愚蠢的错误?
  • 我是否可以检查任何寄存器、这些寄存器可以提供 RBL 故障原因的线索?

 

*定制 SBL 使用 mcu_plus_sdk_am263px_11_00_00_19 中的“sbl_ospi_morode_elf"作为“作为基准、并对 S25FL128SAGMFI000 - Quad SPI 闪存 进行了修改| Infineon Technologies 闪存并移除与我们的硬件无关的 I2C 和 EEPROM。

唯一的其他区别是、我们有 TI 提供的特殊 hsmRtImg.h (Nikhil Dasan)、用于打开跟踪端口。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]我的问题是、当我将 SOC 引导引脚置于 QSPI 4S 模式时、自定义 SBL 和应用程序不运行。

    在尝试在 4s 引导模式下从闪存引导之前、请确保设置了 QE(四路使能位)。 这是我认为电路板启动过程中存在的一个常见问题。

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

    用于启用四路模式的序列  (1S-1S-4S)  从闪存更改为闪存。 根据 JEDEC 标准、有 7 种不同类型的四路使能 (QE):

    • 0  :设备没有 QE 位。 基于指令进行检测。

    • 1.  :QE 是状态寄存器 2 的位 1。 它是通过具有两个数据字节的 Write Status 设置的、其中第二个字节的位 1 为一。 它通过具有两个数据字节的 Write Status 清除、其中第二个字节的位 1 为零。 仅向 STATUS 寄存器写入一个字节会产生清除状态寄存器 2(包括 QE 位)的副作用。

    • 2.  :QE 是状态寄存器 1 的位 6。 它通过使用一个数据字节(其中位 6 为一)的 Write Status 进行设置。 使用一个数据字节通过 Write Status 将其清除、其中位 6 为零

    • 3.  :QE 是状态寄存器 2 的第 7 位。 它通过写入状态寄存器 2 指令 3Eh 进行设置(带有一个数据字节,其中第 7 位为 1)。 使用一个数据字节(其中位 7 为零)通过写入状态寄存器 2 指令“0x3E"清除“清除该值。 使用指令“0x3F"读取“读取状态寄存器 2。

    • 4.  :QE 是状态寄存器 2 的位 1。 它是通过具有两个数据字节的 Write Status 设置的、其中第二个字节的位 1 为一。 它通过具有两个数据字节的 Write Status 清除、其中第二个字节的位 1 为零。 向 STATUS 寄存器写入一个字节不会修改 STATUS 寄存器 2。

    • 5.  :QE 是状态寄存器 2 的位 1。 使用读取状态指令“0x05"读取“读取状态寄存器 1。 使用指令“0x35"读取“读取状态寄存器 2。 QE 通过写入状态指令 01h 进行设置、该指令有两个数据字节、其中第二个字节的位 1 为一。 它通过具有两个数据字节的 Write Status 清除、其中第二个字节的位 1 为零。

    • 6.  :QE 是状态寄存器 2 的位 1。 使用读取状态指令“0x05"读取“读取状态寄存器 1。 使用指令“0x35"读取“读取状态寄存器 2、使用指令“0x15"读取“读取状态寄存器 3。 QE 通过写入状态寄存器指令“0x31"进行“进行设置、其中有一个数据字节、其中位 1 为 1。 它通过写入状态寄存器指令“0x31"清除“清除、并有一个数据字节、其中位 1 为零。

    此配置作为 syscfg flash->Protocl enable configuration->Quad Enable 类型的一部分提供

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

    非常感谢 Nilabh。 看起来 QE 在默认情况下未启用。

    我必须弄清楚如何在 Infineon 闪存中对 NV 寄存器进行编程。 对我来说是一个新的领域。

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

    一种简单的编程方法是运行 OSPI 闪存 IO 示例、以在 4S 模式下执行读取/写入操作、在编程中配置 QE 位。

    程序将配置 QE 位、因为 QE 位是非易失性的、它将从下一个引导周期开始生效

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

    这是一个很好的提示、非常感谢。

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

    如果您有任何其他问题、请告诉我。

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

    再次感谢 Nilabh。 我只是用你的建议来解决它。

    对于其他读者:我修改了 SBL 以使用 1S-1S-4S、最初是 1S-1S-1S、因为我(也)谨慎:

    然后、我在调试器中使用 load_sblJava 脚本运行它。 根据 Nilabh 的建议、这似乎已经永久启用了四路模式、现在它可以在我的应用中以 OSPI 4S 模式启动。