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.

[参考译文] AM2431:AM2431–FS 定制板上使用 HS-SBL 时 UART Uniflash 刷写故障

Guru**** 2782445 points

Other Parts Discussed in Thread: UNIFLASH, AM2431, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1604775/am2431-am2431-uart-uniflash-to-ospi-flashing-failure-with-hs-fs-sbl-on-custom-board

器件型号: AM2431
Thread 中讨论的其他器件: UNIFLASHSYSCONFIGTMDS243EVM

尊敬的 TI 团队:

我们正在开发基于 AM2431 的定制电路板、并尝试使用 UART Uniflash 将定制 SBL NULL/SBL OSPI 映像刷写到 OSPI 闪存、器件配置为 UART 引导模式。 我们希望您能就下面所述的问题提供指导。

UART 启动模式验证:  

  • 已验证并正确设置引导模式开关以实现 UART 引导。

  • 'C'每 2–3 秒在 UART 控制台上观察到一个字符、确认该字符 ROM 引导加载程序处于活动状态并等待 UART (XMODEM) 输入

初始问题和解决方案

最初、在刷写 SBL 映像时、我们遇到以下错误:

[STATUS] ERROR: Invalid Magic Number in File Header

从中移动相关存储器部分可解决此问题 DDR 至 MSRAM 以及我们的定制板 不包括外部 DDR

闪烁的尝试和观察

初始尝试(预编译映像)

Parsing config file ...
Parsing config file ... SUCCESS. Found 2 command(s) !!!

Executing command 1 of 2 ...
Found flash writer ... sending sbl_prebuilt/am243x-evm/sbl_uart_uniflash.release.hs_fs.tiimage
Sent flashwriter ... SUCCESS

Executing command 2 of 2 ...
--file=sbl_prebuilt/am243x-evm/sbl_null.release.hs_fs.tiimage --operation=flash --flash-offset=0x0
Sent sbl_null ...
[STATUS] ERROR: Incorrect magic number in file header !!!
All commands from config file are executed !!!

当前刷写状态(用户构建的映像)

使用用户构建的映像、我们始终观察到以下行为:

  • 闪存写入器映像加载成功

  • OSPI 闪存擦除成功

  • 刷写 SBL 映像失败

完整的 UART Uniflash 输出:

Parsing config file ...
Parsing config file ... SUCCESS. Found 3 command(s) !!!

Executing command 1 of 3 ...
Found flash writer ... sending sbl_userbuilt/sbl_uart_uniflash.Release.hs_fs.tiimage
Sent flashwriter ... SUCCESS

Executing command 2 of 3 ...
--operation=erase --flash-offset=0x0 --erase-size=0x100000
[STATUS] SUCCESS !!!

Executing command 3 of 3 ...
--file=sbl_userbuilt/sbl_ospi.release.hs_fs.tiimage --operation=flash --flash-offset=0x0
Sent sbl_ospi ...
[STATUS] ERROR: Flashing failed !!!
All commands from config file are executed !!!

 

OSPI 引导尝试:  

  • 尝试刷写后、将引导模式切换到 OSPI 并且电路板进行了下电上电。

  • 在 OSPI 引导期间、在 UART 控制台上未观察到日志。

 

CCS 调试尝试:

  • 将 CCS 连接到 MAIN_Cortex_R5_0_0

  • 已尝试调试 sbl_null

  • 执行卡在以下函数中:

Bootloader_socWaitForFWBoot();
  • 代码不会超过此点。

观察要点:  

原因  OSPI 闪存擦除成功、但刷写失败 ,这表明 OSPI 硬件通信正常工作 和故障可能发生在 映像身份验证或兼容性级别 。 如果我理解错误、请纠正我。  

当前使用的所有图像都是 *.hs_fs.tiimage、这增加了的可能性 图像类型不匹配 (HS 与 GP) 或定制电路板上与安全/生命周期相关的限制。

注意:请查找附件中的图像文件和用户构建的文件以供您参考。  

请您帮助确认:

  1. HS-AM2431 映像是否应在全新/自定义 FS 器件上运行、而无需额外配置。

  2. 观察到的行为与 a 一致 GP 与 FS 图像不匹配

  3. 验证器件安全性/生命周期状态的任何建议步骤。

  4. 是否*.tiimage应使用 GP () 映像在定制电路板上进行早期启动、甚至对于支持安全功能的(“H")“)器件也是如此。 如果有适用于 AM2431 的任何网状标准图像和构建文件、请共享相同内容。  

感谢您的支持。 我们期待着你在这一问题上提供指导。

userbuilt_sbl_tiimage.zip 

sbl_null.Release.hs_fs.zip 

此致、
马尼坎丹五世

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

    您好:

    感谢您的详细步骤。

    我了解了您的查询和您所面临的问题。

    请查看以下调试步骤:

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您的详细答复以及分享调试步骤和应用手册。

    根据您的建议、我们运行了常见问题解答中引用的 Python 脚本来识别器件类型。 根据输出、我们确认 SoC 为 HS-TCA FS
    请查找附件 txt 文件 其中包含供您参考的脚本输出。

    /cfs-file/__key/communityserver-discussions-components-files/908/AM243_5F00_Device_5F00_type.txt

    同时、我们已经开始查看您分享的应用手册 (SPRADS5)、特别是该部分 “常见的启动问题和调试“ 、以便在生成映像时识别我们的 OSPI/QSPI /闪存/引导配置中的任何潜在缺陷。

    此外、我们还将分享我们的 SysConfig 文件 用于生成 SBL 映像。 如果您可以查看它并告诉我们您是否注意到任何配置问题或不匹配、将会非常有帮助。 与手动试错相比、您的审查将帮助我们更快地识别问题。

    /cfs-file/__key/communityserver-discussions-components-files/908/8407.example.zip


    器件类型:HS-Device FS
    DMSC ROM 版本:0.2.0.0
    R5 ROM 版本:0.2.0.0

    鉴于此、到目前为止使用的所有映像(闪存写入器,SBL NULL 和 SBL FS) 都)都构建为 HS-OSPI tiimage。
    我目前正在查看上面提供的应用手册、尤其是“常见启动问题和调试“一节、以及验证example.syscfg用于编译的中的配置 sbl_null'.

    介绍了有关我们定制电路板设计的 SysConfig 更改的要点:
    The board does not include external DDR
    相应地、已在 syscfg 中完全禁用/删除 DDR、这解决了 UART 刷写期间较早的*“文件标头中的无效魔术编号“*问题
    在初始 sbl_null 编译期间、会观察到存储器重叠/冲突
    为了解决此问题、在 CCS 链接器/存储器段配置中减小了栈和堆大小

    在此阶段:
    通过 UART Uniflash 成功执行 OSPI 擦除
    闪存写入器成功加载
    刷写 HS-OSPI SBL FS 映像失败
    OSPI 引导时、没有 UART 输出
    通过 CCS 进行调试时、执行会暂停在 Bootloader_socWaitForFWBoot ()`中

    为了帮助确定任何配置差距、我附加了用于 sbl_null 的 syscfg 文件

    我还想确认:
    1. FS 在早期启动期间、是否存在任何特定于 HS-syscfg 器件的其他要求或常见缺陷。
    2.如果 AM2431 FS + OSPI +无 DDR 用例有已知良好的基准 syscfg 或 SBL 配置。

    如果您需要我们的任何其他详细信息,请告诉我们

    再次感谢您的支持。

    此致、  

    马尼坎丹五世

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

    您好:

    此外、我还想确认:
    1. FS 在早期启动期间、是否存在任何特定于 HS-syscfg 器件的其他要求或常见缺陷。
    2.如果 AM2431 HS-DDR FS + OSPI +无 DDR 用例有已知良好的参考 syscfg 或 SBL 配置。

    我已经查看了您所附的 SysConfig 文件。 看起来是针对 SBL NULL、是正确的。 您能否分享 SBL UART uniflash 的 SysConfig 文件?

    另外、请参阅以下内容: 关于 AM6442:什么是 Bootloader_socWaitForFWBoot ()? 

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您查看的 SysConfig 文件 SBL NULL 用于确认配置看起来正确。

    根据要求、请查看随附的 用于生成 SBL UART Uniflash 映像的 SysConfig 文件 。 请查看本文档、如果您发现任何特定于 FS 器件的配置问题或其他要求、敬请告知我们。

    /cfs-file/__key/communityserver-discussions-components-files/908/Uniflash_5F00_example-_2800_1_2900_.zip

    我们还在查看您分享的参考线程Bootloader_socWaitForFWBoot()、以更好地了解我们在调试期间观察到的行为。 是否有任何技术手册可以根据引用的主题来识别此问题?  

    如果您需要我们方面的更多信息、请告知我们。

     

    此致、

    马尼坎丹五世

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

    您好、

    您能告诉我您电路板上的闪存器件名称吗?

    此致、

    Vaibhav

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

    您好、  
    我们使用 英飞凌科技部件号: S28HS512TGABHM010  

    闪存 — NOR (SLC) 存储器 IC 512Mbit SPI — 八通道 I/O 200MHz 5.45ns 24FBGA (6x8)

    此外、Im 共享 OSPI 电路原理图快照以供您参考。  

    /resized-image/__size/640x480/__key/communityserver-discussions-components-files/908 OSPI-SCH-SNAP

    /cfs-file/__key/communityserver-discussions-components-files/908 OSPI-SCH-SNAP.pdf

    谢谢、  

    马尼坎丹五世

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

    尊敬的 Vaibhav:

    我希望跟进我们之前的问题、并检查是否有任何更新。 我们目前正在等待您的指导继续下去、您的支持将极大地帮助我们向前迈进。 项目时间表很紧、我们非常感谢您在此阶段可以分享的任何方向或建议。

    非常感谢您的持续支持。

    此致、
    马尼坎丹五世

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

    您好、

    昨天我审核了 SysConfig 文件和 SBL NULL/SBL UART Uniflash 工程、查看是否还有其他需要关注的问题。

    更新:

    我将让您运行基本的 OSPI 闪存 IO 和 OSPI 闪存诊断示例、以检查闪存是否正常工作。 为此、您需要按如下方式刷写:

    1. 如何运行 OSPI 闪存 诊断应用程序?
      1. 下载 Tera Term 软件。
      2. 打开 Tera Term 软件并为 AM243 打开 UART 的 COM 端口 X。
      3. 将电路板设置为 UART 引导模式。
      4. 按以下方式发送 SBL NULL 释放 HS FS 文件。


        注意:  您需要发送一次、然后再发送一次、因为这样会克服热复位勘误表。 因此、基本上、逐个发送同一个 SBL NULL 版本 HS FS 文件两次。

      5. 完成后、内核将初始化、之后您可以打开 CCS 并从目标配置创建 AM243 .ccxml 文件。
      6. 连接到 CCS 中的 R500 内核并加载 OSPI 闪存诊断应用。
    2. 对 OSPI 闪存 IO 执行相同的操作。

    如果您观察到按照我之前提到的方式、SBL NULL 仍然无法执行、那么在这种情况下、请告诉我。

    如果您观察到我提到的两个应用程序成功执行、请告诉我。

    期待您的答复。

    仅供参考、这是为了排除闪存导致问题或其他问题、如果是其他问题、我会将您的线程路由给另一位专家、但我会同时等待您的结果。

    如果需要进一步说明、请告诉我。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:  

    感谢您的指导。

    按照建议、我们执行了 OSPI 闪存诊断 OSPI 闪存 IO 应用、方法是遵循您共享的确切过程((UART 引导模式、发送 SBL NULL HS-CCS 映像两次以克服热复位勘误表、然后通过 FS 加载应用程序)。

    请查找附件 UART 日志和结果文件 供您参考。

    日志中的观察结果

    • SBL 空 (HS-SBL FS) 成功引导并正确初始化 SYSFW 和内核。

    正在启动 NULL 引导加载程序...
    DMSC 固件版本 11.0.7--v11.00.07 (Fancy Rat)
    DMSC 固件版本 0xb
    DMSC ABI 修订版 4.0
    INFO:bootloader_runCpu:205:CPU m4f0-0 已初始化为 400000000 Hz!!
    INFO:bootloadSelfCpu:257:CPU r5f0-0 初始化为 800000000 Hz!!
    INFO:bootloader_runSelfCpu:267:全部完成、正在重新设置自身...

    • OSPI 闪存 IO 应用程序成功执行、没有任何错误日志。  

    • OSPI 闪存诊断 应用程序:OSPI 闪存诊断应用程序报告了:
      “All tests have passed“。

      • 0x340x5B1A正确检测闪存制造商 ID () 和设备 ID ()。

      • 成功执行读写测试。

      •   在块擦除操作期间报告失败:

        ""[OSPI Flash Diagnostic Test] Executing Flash Erase on first block...
        [OSPI Flash Diagnostic Test] Erase Failed !!!""

    如附加日志中所示、所有其他操作均已完成。

    /cfs-file/__key/communityserver-discussions-components-files/908/OSPI_5F00_DIAG.zip

    请提供有关的建议 后续步骤 根据这些结果、让我们知道我们应该如何继续下去?

    谢谢。此致、
    马尼坎丹五世

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

    您好:

    [报价 userid=“658703" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1604775/am2431-am2431-uart-uniflash-to-ospi-flashing-failure-with-hs-fs-sbl-on-custom-board/6188181 “]"[OSPI 闪“ 闪存诊断测试]在第一个块上执行闪存擦除... [OSPI 闪存诊断测试]擦除失败!!“

    我认为这是一个问题。

    我想  在执行特定操作后与我分享闪存寄存器的值。 该寄存器基本上是配置寄存器 3。

    在 SDK 中、在 flash_nor_ospi.c 文件中、将有一个函数调用、即: flash_quirkSpansionUNHYSADisable

    在其中、按如下方式修改函数调用:

    int32_t Flash_quirkSpansionUNHYSADisable(Flash_Config *config)
    {
        int32_t status = SystemP_SUCCESS;
        uint8_t regData = 0x00;
        uint32_t write = 0;
    
        status = Flash_norOspiRegRead(config, 0x65, 0x04, &regData);
        DebugP_log("Configuration Register 3, Non-Volatile value: %u \r\n", regData);
        
        regData = 0x00;
    
        /* Hybrid Sector Disable */
        status = Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
        DebugP_log("Configuration Register 3, Volatile value: %u \r\n", regData);
    
        if(status == SystemP_SUCCESS)
        {
            if((regData & ((uint8_t)(1 << 3))) == 0)
            {
                /* Set UNHYSA bit */
                regData |= (1 << 3);
                write = 1U;
            }
            else
            {
                /* No action */
            }
        }
    
        if(write)
        {
            status = Flash_norOspiRegWrite(config, 0x71, 0x04, regData);
        }
        
        DebugP_log("After setting to Uniform Mode of the Flash, the values are as follows: \r\n");
        
        regData = 0x00;
        status = Flash_norOspiRegRead(config, 0x65, 0x04, &regData);
        DebugP_log("Configuration Register 3, Non-Volatile value: %u \r\n", regData);
        
        regData = 0x00;
        status = Flash_norOspiRegRead(config, 0x65, 0x00800004, &regData);
        DebugP_log("Configuration Register 3, Volatile value: %u \r\n", regData);
    
        return status;
    }

    将 API 替换为我给出的实现(只是一堆日志记录语句)后、请在执行 OSPI 闪存 IO(不是 OSPI 闪存诊断)时与我共享日志。

    为了确保您的应用 OSPI 闪存 IO 选择您所做的更改、您需要执行以下操作:

    转到中的目录 命令提示符 AS: MCU_PLUS_SDK_INSTALL_PATH>source>board

    >gmake -s -f makefile.am243x.r5f.ti-arm-clang.freertos profile=debug

    >gmake -s -f makefile.am243x.r5f.ti-arm-clang.freertos profile=release

    >gmake -s -f makefile.am243x.r5f.ti-arm-clang.nortos profile=debug

    >gmake -s -f makefile.am243x.r5f.ti-arm-clang.nortos profile=release

    然后重新构建应用 OSPI 闪存 IO。

    请告诉我结果。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    我已经通过将 API 替换为提供的日志记录实现方案来实现您在 Flash_quirkSpansionUNHYSADisable 中建议的更改。

    在重新构建电路板库 并重新构建 OSPI 闪存 IO 应用后、我尝试对其进行调试以观察与配置寄存器 3 相关的日志。 但是、在调试过程中、不会打印其他日志。 观察到的唯一日志是“所有测试均已通过“、这与之前看到的行为相同、即使在应用这些更改之前也是如此。

    调试结果:  

    正在启动 NULL 引导加载程序...

    DMSC 固件版本 11.0.7--v11.00.07 (Fancy Rat)
    DMSC 固件版本 0xb
    DMSC ABI 修订版 4.0

    INFO:bootloader_runCpu:205:CPU m4f0-0 已初始化为 400000000 Hz!!
    INFO:bootloadSelfCpu:257:CPU r5f0-0 初始化为 800000000 Hz!!
    INFO:bootloader_runSelfCpu:267:全部完成、正在重新设置自身...

    所有测试均已通过!!

    -未打印预期的调试日志-  

    我还使用相同的修改更改测试了 OSPI 闪存诊断。 在这种情况下、擦除失败错误也会继续发生、我无法观察到任何与配置寄存器 3 相关的日志。

    我想澄清一点:
    是否应该在调试 OSPI 闪存 IO 时观察日志记录变化、或者是否应该调试 OSPI 闪存诊断? 您前面提到的错误会出现在 OSPI 诊断应用程序中、因此我想确认哪个应用程序应该会反映这些与寄存器相关的日志。

    请让我知道您希望我如何继续。

    请找到随附的文件来获取调试结果和 重新编译 电路板库(make 文件 CMD 提示符)。   

    /cfs-file/__key/communityserver-discussions-components-files/908/OSPI-flash-IO_5F00_Updated-Result.txt

    /cfs-file/__key/communityserver-discussions-components-files/908/makefile_5F00_log.txt

    谢谢、  

    马尼坎丹五世  

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

    尊敬的 Vaibhav:

    此外、我们还捕获了 OSPI 波形 中的示例 CLK、CS 和 DQ0 有两个引导信号。

    我们观察到 时钟、芯片选择和数据线路在擦除命令阶段切换 。 不过、 擦除操作完成后、我们正在刷写、但 没有观察到进一步的数据活动 高速控制器。

    共享配置文件中用于擦除和刷写 OSPI 的命令  

    //先擦除:  
    --operation=erase --flash-offset=0x0 --erase-size=0x100000

    //永久引导加载程序(存储在 OSPI @ 0x0 中)

    -file=sbl_userbuild/sbl_null.Release.hs_fs.tiimage --operation=flash --flash-offset=0x0

    我们将共享捕获的波形图像以供您参考、因为它可能有助于进一步理解和调试问题。

    请告知我们您的想法或您建议的任何其他检查。

    波形文件:  

    /cfs-file/__key/communityserver-discussions-components-files/908/OSPI_5F00_WAVEFROM.zip

    -对不起匆忙,我们是在瓶颈上完成项目,请做必要的一举一动。  

    谢谢。此致、
    马尼坎丹五世

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

    尊敬的 Vaibhav:

    温馨提示、请关注以下查询中有关 OSPI 刷写问题的内容。  

    如果您有 任何已知可正常工作的 AM2431 OSPI 引导二进制文件或参考文件、请与我们分享吗?
    我们希望从最后测试相同内容、以排除任何与配置相关的问题。

    谢谢、  

    马尼坎丹五世  

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

    您好、

    我已将该主题重新分配给另一位专家、他们会在某个时候回复您。

    谢谢、

    Vaibhav

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

    您好、

    您必须在 UART UNIFLASH 示例中进行以下更改:

    1.请在 SysConfig 中使用以下参数添加另一个内存区域 MSSRAM_2:

    2.然后将.bss.filebuf 段的加载存储器从 MSRAM_1 更改为 MSRAM_2:

    3. 在 main.c 中将 bootloader_UNIFLASH MAX_FILE_SIZE 定义为 0x150000:

    diff --git a/examples/drivers/boot/sbl_uart_uniflash/am64x-evm/r5fss0-0_nortos/main.c b/examples/drivers/boot/sbl_uart_uniflash/am64x-evm/r5fss0-0_nortos/main.c
    index 65eb60f5..c25037be 100644
    --- a/examples/drivers/boot/sbl_uart_uniflash/am64x-evm/r5fss0-0_nortos/main.c
    +++ b/examples/drivers/boot/sbl_uart_uniflash/am64x-evm/r5fss0-0_nortos/main.c
    @@ -41,7 +41,7 @@
     #include <drivers/bootloader/bootloader_xmodem.h>
     #include <drivers/bootloader/bootloader_uniflash/bootloader_uniflash.h>
     
    -#define BOOTLOADER_UNIFLASH_MAX_FILE_SIZE (0x800000) /* This has to match the size of DDR section in linker.cmd */
    +#define BOOTLOADER_UNIFLASH_MAX_FILE_SIZE (0x150000) /* This has to match the size of DDR section in linker.cmd */
     uint8_t gUniflashFileBuf[BOOTLOADER_UNIFLASH_MAX_FILE_SIZE] __attribute__((aligned(128), section(".bss.filebuf")));
     
     #define BOOTLOADER_UNIFLASH_VERIFY_BUF_MAX_SIZE (32*1024)

    请重新编译 UART UNIFLASH 并在此之后尝试刷写、验证这是否解决了问题。

    此致、

    会面。

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

    尊敬的会议:

    我们希望分享一个快速更新、并在另外一点上寻求您的指导。

    对 UART Uniflash 示例应用建议的更改后、OSPI 刷写和引导流程开启 AM2431 此时正常工作。 我们能够在 UART 上看到有效和成功的引导日志。

    变更摘要:  

    • 添加了 MSSRAM_2 内存区域

    • 移动了 bss.filebuf 部分(从中) MSRAM_1 最终目的 MSSRAM_2

    • 更新了 Bootloader_UNIFLASH _MAX_FILE_SIZE 最终目的 0x150000

    重建 UART Uniflash 后、OSPI 擦除和刷写过程现在成功完成、没有任何问题。 请在下面找到 UART Uniflash 日志以供参考(状态显示所有步骤都成功)。

    目前是我们的产品 禁用 DDR 以避免启动期间出现“幻数不正确“问题。 禁用 DDR 后、引导成功完成。 但是、由于未来可能需要 DDR 支持、我们想了解在不遇到该问题的情况下启用 DDR 的正确方法。 (请查看该主题中的消息历史记录以获取问题详细信息)  

    您能否分享您的想法或建议的检查/配置、以解决 AM2431 上的 DDR 幻数错误问题?

    再次感谢您的支持。

    此致、
    马尼坎丹五世

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

    嗨、Manikandan、

    这可能是与 DDR 配置相关的问题、如果使用定制电路板、则可能是由不正确的 DDR 配置引起的。

    您可以使用此工具为自定义 DDR 生成配置: https://dev.ti.com/sysconfig/#/config/?args=--product%20%2Fmnt%2Ftirex-content%2FProcessor_DDR_Config_0.10.32.0000%2F.metadata%2Fproduct.json%20--device%20AM2431%20--package%20%22FCBGA%20P$OPEN$ALVP$CLOSE$%22%20--variant%20AM2431-C%20--context%20system 

    有关更多详细信息、请参阅以下内容: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_02_00_24/exports/docs/api_guide_am243x/DRIVERS_DDR_PAGE.html#autotoc_md2453

    此致、

    会面。

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

    您好、认识 Thakar、

    感谢您提供的信息。

    我们希望寻求您对 A 的指导 DDR4 配置问题

    我们正在使用与 TMDS243EVM 相同的 DDR4 存储器系列:

    • TMDS243EVM DDR 器件: MT40A1G16KD-062E IT:E

    • 定制电路板 DDR 器件: MT40A1G16TB-062E IT:F

    我们定制电路板上使用的 DDR 器件还在 EVM BOM 中作为替代/替换器件列出、根据审查结果、我们没有看到这两种器件之间有任何技术或时序差异。

    因为 TMDS243EVM 可以与配合使用 SDK 中提供的默认 DDR 配置文件 、我们的理解是、相同的默认配置也应适用于定制电路板。 如果此假设无效、请更正我们。

    但是、在定制电路板上使用默认 SDK 文件时、我们在刷写过程中会遇到以下错误:

    Parsing config file ...
    Parsing config file ... SUCCESS. Found 2 command(s) !!!
    
    Executing command 1 of 2 ...
    Found flash writer ... sending sbl_prebuilt/am243x-evm/sbl_uart_uniflash.release.hs_fs.tiimage
    Sent flashwriter ... SUCCESS
    
    Executing command 2 of 2 ...
    --file=sbl_prebuilt/am243x-evm/sbl_null.release.hs_fs.tiimage --operation=flash --flash-offset=0x0
    Sent sbl_null ...
    [STATUS] ERROR: Incorrect magic number in file header !!!
    All commands from config file are executed !!!

    [STATUS] ERROR: Incorrect magic number in file header !!!
    

    上面共享了完整的 UART Uniflash 日志以供参考。

    我们的理解是、如果 DDR4 配置问题得到正确解决、我们应该能够:

    • 应用 DDR4、用于在引导期间访问 RAM 而不是依赖 MSSRAM_2 区域

    • 使用在 EVM 上工作的相同默认 SDK 启动文件

    请告知我们这一理解是否正确、或者定制硬件是否需要进行任何其他 DDR 特定配置更改。

    我们还分享了 DDR4 原理图部分 供您审查。 您在解决此问题方面的指导将非常有帮助。

    /cfs-file/__key/communityserver-discussions-components-files/908/DDR4-Section-Image.pdf

    EVM BOM:  

    MT40A1G16KD-062E IT:E FBGA96_31-49_520X360_1-2 MT40A1G16TB-062E IT:F

     

    谢谢、  

    马尼坎丹五世  

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

    您好、

    我将此主题分配给另一位专家来回答您有关 DDR 配置的问题、请等待他们的响应。

    此致、

    会面。

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

    您好、认识 Thakar、

    感谢您的更新。

    ***我们正在等待专家对 DDR 配置问题的反馈。 鉴于时间紧迫、如果能尽早澄清这一点、我们将不胜感激。***

    使用 MSRAM_2 进行 OSPI 引导:  

    同时、我们一直在与合作 MSSRAM_2 存储器区域 。 通过此配置、 SBL Null 引导加载工作正常 、我们可以看到一条成功的引导消息。

    但是、当我们使用时 默认 SBL_OSPI 映像 以及中 修改的 UniFlash 文件  、我们在引导过程中遇到以下错误:

    日志:

    ERROR: Flash_norOspiOpen:1329: Flash_norOspiOpen : PHY enabling failed!!! Continuing without PHY...
    Configuration Register 3, Non-Volatile value: 0
    Configuration Register 3, Volatile value: 0
    After setting to Uniform Mode of the Flash, the values are as follows:
    Configuration Register 3, Non-Volatile value: 0
    Configuration Register 3, Volatile value: 0
    ERROR: Board_flashOpen:204: FLASH open failed for instance 0 !!!
    ASSERT: 0.46198s: ../main.c:main:131: status == SystemP_SUCCESS failed !!!
    

    您能否检查并帮助我们了解为什么会发生此错误?

    我们怀疑这个问题可能与将 RAM 区域更改为有关 MSSRAM_2 。 如果仅在 UniFlash 文件中进行此更改、是否会导致此失败?
    此外、我们是否需要修改任何其他内容、无论是在生成启动映像时还是在默认值范围内 SBL_OSPI —支持 RAM 区域更改?

    如果我们的理解有误、请纠正我们。

    谢谢。此致、
    马尼坎丹五世

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

    尊敬的会议:

    请找到我们使用 DDR 旁路 UniFlash 文件测试的其他点。 添加了在测试过程中记下的更多观察结果:

    1. UniFlash 文件 :DDR 已绕过、内存区域已配置为 MSSRAM_2 区域

    2. SBL_OSPI :使用 SDK 中提供的默认文件。

    3. 自定义应用映像文件 :我们使用 uart_echo_Polling_LLD 作为基本文件,并对引脚映射进行了一些更改。

      BAS 工程文件路径:  C:\ti\mcu_plus_sdk_am243x_11_00_00_15\examples\drivers\uart\uart_echo_polling_LLD\am243x-evm\r5fss0-0_nortos

    这是我们正在使用的当前配置。 根据我们内部团队的讨论、我们计划绕过 DDR、继续使用不依赖于 DDR 的定制电路板。

    测试步骤:

    • 步骤 1. :使用上述配置时、UART 引导模式刷新成功。 我们随附了成功刷写的日志、以供您参考。

    • 步骤 2. :刷写后,电路板断电,引导带引脚更改为 OSPI 引导模式。

    • 步骤 3. :下电上电后,我们会在 OSPI 引导期间收到附加的错误消息。 共享日志以供您参考。

    我们还将共享所有配置和引导文件以供您查看。 如果缺少成功引导所需的任何内容、请告知我们。

    我们希望此 SoC 能够在不依赖 DDR 的情况下成功引导。 在这种情况下、是否需要对进行任何具体更改 SBL_OSPI 还是在应用映像生成期间绕过 DDR? 请查找包含重要项目文件的 ZIP 文件以供您查看。

    /cfs-file/__key/communityserver-discussions-components-files/908/modified_5F00_uniflash_5F00_default_5F00_sbl_5F00_ospi-22_2D00_01_2D00_26.zip

    我们尽早请求您的帮助、因为我们在此设置过程中遇到了问题、而且我们的项目时间表非常紧迫。 请认为这是紧急的,并尽快做必要的。

    此致、
    马尼坎丹五世

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

    嗨、Manikandan、

    SBL 还利用 DDR、将应用映像临时加载到缓冲区以进行解密和身份验证、我认为这正是导致该问题的原因:

    如果您目前计划绕过 DDR、我建议您使用为 am243-LP 板打造的示例和 SBL、因为该板也没有 DDR、因此在用于用例时应该更容易移植。

    此致、

    会面。