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.

[参考译文] AM2432:与 SBL 中使用的相同代码相比、从应用程序代码从自定义 OSPI 闪存读取的数据被移动一个字节。

Guru**** 2957910 points

Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1655883/am2432-data-read-from-custom-ospi-flash-from-application-code-is-shifted-by-one-byte-compared-to-the-same-code-used-in-sbl

器件型号: AM2432
Thread 中讨论的其他器件: UNIFLASH、 SYSCONFIG

您好、

我们将 AM243x 与定制闪存一起使用。 我们已经创建了一个自定义 flasher_JTAG_uniflash 工程、用于 使用 uniflash 工具对闪存进行编程、并创建一个自定义 SBL 用于将应用程序从自定义闪存复制到 RAM。 这种方法已经很好了。 此外、在 SBL 中写入闪存也是可以的。 我们计划在将来使用 XIP、因此我们在 SBL 和应用中也激活 DAC 模式。 我现在遇到了一个现象、即在 SBL 和应用中通过 CSS20 中的存储器视图读取闪存内容是不同的。 在应用中、内容被移动一个字节。 请参阅随附的图片。

SBL:

AM243x_sbl.png

应用:

AM243x_appl.png

不仅“Memory“视图显示了这种情况、而且我的代码还从闪存读取这些值。 我可以看到、SBL 和应用程序中的闪存/OSPI 的 SysConfig 设置是相同的。 我将 mcu_plus_sdk_am243x_12_00_00_26 用于 SBL 和应用程序。 SBL 中的存储器视图适合 uniflash 工具中的存储器视图。  

有什么想法我做错了?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SBL 中的内存视图适合 uniflash 工具中的存储器视图。  [/报价]

    抱歉。 我不再确定这一个:

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

    尊敬的 Peta:

    您是否可以共享 SBL 和应用程序的 SysConfig 文件?

    您是否还可以分享正在使用的定制闪存器件的名称?

    此致、

    Aryamaan

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

    尊敬的 Aryamaan:

    感谢您的答复。 请查找所请求的文件附件。 闪存部分是 GigaDevice GD25Q64E.e2e.ti.com/.../8463.syscfg.zip

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

    感谢您分享文件。 SBL 和应用程序端的 OSPI 和闪存配置相同、因此这在 SysConfig 中似乎不会出现 OSPI 或闪存配置问题。

    您可以尝试以下操作吗?

    在 SBL 端和应用程序端执行读取操作后、您能否验证 OSPI 寄存器的内容在 SBL 和应用程序中是否相同?

    OSPI 寄存器位于:0xFC40000h 至 0xFC400FCh 的地址。

    例如、CCS 存储器浏览器中 OSPI 寄存器的值如下所示:

    在您的情况下、这些寄存器的值会不同。

    此致、

    Aryamaan

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

    尊敬的 Arymaan:

    我发现了该应用显示不同闪存读取结果的原因:
    在应用程序 Flash_norOspiOpen() 中失败、因为 bootQuirksFxn 不返回 0。
    这是因为我 从一个 sdk11 示例 sbl_ospi 复制了 flashFixUpQspiBoot()、在这个示例中、函数具有以下签名:
    Void flashFixUpQspiBoot(void);
    请注意、故障分析类型无效!
    在 SBL 中、此函数返回 0(随机)、在我的应用程序中、我必须修改代码、此处它不会返回 0。
    简而言之:如果我在 Quirks 函数中使用正确的返回类型和返回 0、则我的应用程序将按预期运行。
    感谢你的帮助。

    此致
    Peta

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

    尊敬的 Peta:

    flashFixUpQspiBoot 和 Flash_quirkOSPIEarlyFixup 等引导查询功能主要设计为与 AM243x EVM 上安装的默认闪存器件配合使用。 对于定制闪存器件、这些函数必须设置为 NULL 或根据自定义闪存配置进行修改。

    Im 很高兴您的问题已解决!

    此致、

    Aryamaan