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:AM243x EVM 通过闪存引导

Guru**** 2680875 points

Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1577378/am2431-am243x-evm-boot-via-flash

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

您好、

我正在处理一个工程、将 AM243x EVM 与存储在闪存中偏移 0x0 处的自定义 OSPI SBL 搭配使用。 基于状态变量的自定义引导加载程序将加载存储在闪存中不同偏移处的固件应用程序。 我已经单独验证了映像和引导加载程序、当我通过 CCS 运行映像时、一切都正常。  

我通过 UART UNIFLASH 将相同的映像编程到闪存中、并将电路板复位为 OSPI 引导模式、我遇到了 DMSC SYSFW 无法启动的问题。 我从 CCS 连接到了我的 SBL、并看到我的 SBL 一直在等待 Bootloader_socWaitForFWBoot ()。

我意识到缺少通过 CCS 的 javascript 完成的 SoC 初始化/SYSFW。

我找不到有关如何将 DMSC SYSFW 构建/打包到 SBL 映像以及创建将引导系统的单个 boot.bin 映像的文档/示例。 我需要尽快为定制电路板执行相同操作。  

  1. 在 OSPI 引导模式下、是否可以仅从闪存引导?
  2. 如何为 DMSC - M3 内核和 R5 内核 0 目标创建此引导映像  

谢谢、

Prasanna

 

 

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

    尊敬的 Prasanna:

    我通过 UART UNIFLASH 将相同的映像编程到闪存中、并将电路板复位为 OSPI 引导模式、遇到 DMSC SYSFW 无法启动的问题。 我从 CCS 连接到了我的 SBL、并看到我的 SBL 一直在等待 Bootloader_socWaitForFWBoot ()。

    这个问题主要发生在您已经在 OSPI 中刷写了 SBL 并且 SBL OSPI 已引导时、然后您尝试在 CCS 中将 SBL 加载到 R5 时、如果您必须调试 SBL、请参阅以下常见问题解答:  【常见问题解答】AM62X/AM64X:【常见问题解答】在 RTOS SDK 中调试 SBL 引导 

    我意识到、我缺少通过 CCS 的 javascript 完成的 SoC 初始化/SYSFW。

    如果您已刷写 SBL OSPI 并在 OSPI 引导模式下引导、则不需要执行此操作、如果您未连接到 CCS 并仅让电路板自由运行、您是否会观察到预期的日志?: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_01_00_17/exports/docs/api_guide_am243x/GETTING_STARTED_FLASH.html#autotoc_md63

    在 OSPI 引导模式下是否可以仅从闪存引导?

    是的

    如何为 DMSC - M3 内核和 R5 内核 0 目标创建此引导映像
     

    请参阅本指南: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_01_00_17/exports/docs/api_guide_am243x/BOOTFLOW_GUIDE.html#autotoc_md627

    您还可以引用 SBL OSPI 的链接器文件、以了解如何构建最终的 tiboot3.bin: https://github.com/TexasInstruments/mcupsdk-core/blob/next/examples/drivers/boot/sbl_ospi/am243x-evm/r5fss0-0_nortos/ti-arm-clang/makefile

    此致、

    会面。

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

    尊敬的会议:

    感谢您的详细答复。 是的、我已经使用 loop_forever() 方法调试了我的 SBL、以连接到内核并从该方法运行它。 这就是我验证 SBL 和 FW 应用的方法  

    当我将电路板复位为 OSPI 引导并重新启动时、我没有在控制台上看到任何日志或看到系统实际启动。 我希望看到显示 DMSC 固件日志、这是我在 CCS 调试中看到的、此外、我的固件应用程序不会将任何日志打印到控制台。  我在 SBL 和 FW 应用上使用相同的 USART0 实例。  

    我将 loop_forever () 添加回我的 SBL、将其刷写到 EVM 并重置电路板、等待 SoC 引导、我连接到内核、发现 SBL 一直在等待从 SYSFW 引导。  

    当我返回到预编译的 sbl_OSPI_hs.fs.tiimage + SDK 示例 Helloworld 应用时、我会在控制台上看到所有日志。

    因此我想知道 DSMC 是否无法正常启动或 SBL blob 缺少 SYSFW 二进制+ boardcfg。

    谢谢、

    Prasanna

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

    尊敬的会议:

    这是发生的事情。

    -从闪存引导,没有控制台日志,没有任何生命的痕迹。 使用 JTAG 连接到目标、选中后、SBL 卡在  Bootloader_socWaitForFWBoot () 处

    -从闪存引导,使用 SBL 调试方法将无限循环添加到 main ()。 使用 JTAG 连接到目标和无限循环中断、并单步执行 SBL 代码、一切都正常。 控制台打印出所有日志。  我确实注意到、由于 CPSW 锁定问题、在冷重启期间需要进行额外的检查、并再次复位 SoC 以在 SBL 继续之前进行热重启。  

    在不涉及 CCS 的情况下、SBL 滞留在同一点。 我想知道为什么会有区别。  

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

    尊敬的 Prasanna:

    感谢您的解释、您能给我分享您的 SBL OSPI 映像吗?

    此致、

    会面。

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

    e2e.ti.com/.../pr_5F00_sbl_5F00_ospi_5F00_image.zip

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

    我尝试仅使用 2MB 的内部 SRAM 从 OSPI 引导此映像。 我禁用了 EVM 上的外部 DDR。

    这是我如何对引导加载程序和固件映像进行分区的方法。 所有内容都只能在 R5FSS0_0 内核上运行。

    0x70000000 至 0x70110000 - SBL

    0x70110000 至 0x70200000 — 固件应用程序映像

    我目前已禁用固件应用程序映像引导加载程序的身份验证。 但我已经分配了额外的空间 (0x70080000 - 0x70110000)、用于稍后在一切正常工作时对映像进行身份验证。

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

    尊敬的 Prasanna:

    0x701E0000 存储了一个 128KB 的空间、为 DMSC 操作保留、您的应用程序似乎可能与该区域重叠、这可能是导致该问题的原因。

    在为 SBL 和应用程序分配空间时、请参阅此存储器映射: AM243x MCU+ SDK:存储器映射布局

    此致、

    会面。

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

    尊敬的会议:

    我会查看这些内容。 但在使用 CCS 和单步执行代码时、它如何正常工作?

    因此、不可能从内部 SRAM 单独启动? 是否存在图像大小限制? 您是否有任何有关此方面的文档?

    谢谢、

    Prasanna

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

    尊敬的会议:

    我通过剥离分配给应用程序映像身份验证的额外缓冲区来测试版本。 它表现出了相同的行为。  

    我仅使用 0x70080000 至 0x70180000 的内部 SRAM。 这处于 SBL 负载区域的可接受范围内。  

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    我可以在我结束时尝试一次测试、您能告诉我您使用的 MCU+SDK 版本吗?

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

    SDK 版本:AM243X_10_01_00_32

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

    尊敬的 Prasanna:

    我将在我结束时对此进行一次测试、并提供更新。

    此致、

    会面。

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

    尊敬的会议:

    只是跟进。 有任何更新吗?

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

    尊敬的 Prasanna:

    您共享的 SBL 映像确实存在一些问题、能否请共享用于创建此 tiimage 的命令?

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

    尊敬的会议:

    感谢您的确认。 我使用 CCS 生成映像、而不是从 SDK 手动构建映像。

    我的 CCS 版本:

    版本:20.3.0.14__1.9.0

    默认 VS Code API:1.96.0

    下面是我做的:

    我打开了示例工程 —  sbl_ospi_am243x-evm_r5fss0-0_nortos_ti-arm-clang。

    我更新了我的 example.syscfg 文件、删除了对 MPU 中 DDR 驱动程序或 DDR 地址空间的任何/所有引用、并重新编译了 SBL。

    我构建了 SBL 映像、为我提供了我要测试的.hs.fs 映像。

    我在这个主题中发现了一些关于 boardcfg 的有趣内容。 我不确定这是否丢失了部分:  

    e2e.ti.com/.../4944294

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

    e2e.ti.com/.../Build_2D00_ccs_2D00_output.txt

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

    e2e.ti.com/.../8270.sbl_5F00_ospi_5F00_am243x_2D00_evm_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

    在这里附加了我的整个工程文件夹。 看一下。 我不知道这里缺少什么。 我认为这些示例以某种方式适合 CCS 调试、不适用于独立测试?

    我每次使用预编译的 SBL 时都能正常工作。

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

    尊敬的 Prasanna:

    感谢您分享整个项目! 这有助于我找出问题。

    我注意到在 main.c 中、您使 bootConfig->scratchMemPtr = NULL;但您仍然没有通过将 bootConfig->enableScratch Mem 设置  为 0 禁用引导加载程序的暂存内存支持。 这将导致以下代码行尝试实际读取一个无效地址: https://github.com/TexasInstruments/mcupsdk-core/blob/next/source/drivers/bootloader/bootloader.c#L1363、从而导致中止。

    在 main.c 中的 bootConfig->scratchMemPtr = NULL 之前添加 bootConfig->enableScratch Mem=0 可解决此问题:

    添加此行后、我可以使用您共享的 Project 进行引导:

    DMSC Firmware Version 10.0.8--v10.00.08 (Fiery Fox)
    DMSC Firmware revision 0xa
    DMSC ABI revision 4.0
    
    KPI_DATA: [BOOTLOADER_PROFILE] Boot Media       : NOR SPI FLASH 
    KPI_DATA: [BOOTLOADER_PROFILE] Boot Media Clock : 166.667 MHz 
    KPI_DATA: [BOOTLOADER_PROFILE] Boot Image Size  : 0 KB 
    KPI_DATA: [BOOTLOADER_PROFILE] Cores present    : 
    r5f0-0
    KPI_DATA: [BOOTLOADER PROFILE] SYSFW init                       :      11052us 
    KPI_DATA: [BOOTLOADER PROFILE] System_init                      :      11764us 
    KPI_DATA: [BOOTLOADER PROFILE] Drivers_open                     :       1670us 
    KPI_DATA: [BOOTLOADER PROFILE] Board_driversOpen                :     131236us 
    KPI_DATA: [BOOTLOADER PROFILE] Sciclient Get Version            :      10069us 
    KPI_DATA: [BOOTLOADER PROFILE] CPU load                         :       5036us                                                                             
    KPI_DATA: [BOOTLOADER PROFILE] SBL End                          :          4us                                                                             
    KPI_DATA: [BOOTLOADER_PROFILE] SBL Total Time Taken             :     170834us                                                                             
                                                                                                                                                               
    Image loading done, switching to application ... 

    此致、

    会面。

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

    尊敬的会议:

    以便闭合环路。 在我的调试过程中,我遇到了随机 SBL 在 ParseMultiCoreImage () 内崩溃的问题,并在不同的线程中遇到了相同的建议。

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1555998/mcu-plus-sdk-am243x-disable-bootloader-scratch-memory---bootloader_scratch_mem_enable-define?tisearch=e2e-sitesearch&keymatch=BOOTLOADER_SCRATCH_MEM_ENABLE#

    这使它对我很有用。  

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

    根据我们的讨论、我现在正在从 SBL 调试我的 XIP 映像启动问题。

    我遵循了前面分享的过程、可以看到在使用预构建的 SBL 时、示例工程在 XIP 模式下工作正常。

    当我尝试使用自己的 SBL 与相同的 hello_world.hs_fs 和 hello_world.xIP 映像时、它不起作用、我最终会遇到相同的问题。  它再次返回到同一个中止代码。

    我已使用默认版本验证了 SBL 中的 syscfg 设置、这些设置是匹配的。 我不确定我的 SBL 映像有哪些不同之处。

    它看起来像这里讨论的问题,但我看不到任何明确的解决方法:  

    (+) LP-AM243:在单个应用中使用 XIP — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

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

    e2e.ti.com/.../sbl_2D00_xip_2D00_app.zip

    找到附加的存储器映射和 syscfg 文件。 我不确定我的 SBL 有什么问题、 我想知道我的 SBL 是否在闪存中实际启用 DAC 模式。

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

    尊敬的 Prasanna:

    如果我使用您的 SBL 并在完成后更新您、我将尝试测试我是否遇到相同的问题。

    此致、

    会面。

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

    尊敬的会议:

    只是跟进。 您是否有机会查看我的设置和/或测试结束? 我们目前对此项目冻结、以便完成我们的设计。 感谢您的帮助。

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    有关专家已离职。 请预计响应会延迟。

    谢谢你

    Yashraj

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

    尊敬的 Yashraj:

    我现在被此项目阻止。 你能给我一个更新吗?

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    很抱歉延迟、请允许我在本周结束前提供最新信息。

    此致、

    会面。

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

    尊敬的会议:

    我又回来了。“ 我被此项目阻止。 如果我需要再次联系 FAE 并安排会议、请告诉我

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    对延迟深表歉意。

    当暂存存储器被禁用时、我们似乎在这里禁用了 DAC 模式。 因此、XIP 应用程序可能无法正常工作: https://github.com/TexasInstruments/mcupsdk-core/blob/next/source/drivers/bootloader/bootloader.c#L774

    您可以尝试将此行注释掉、或者将 enableDacMode 设置为 true 而不是 false、然后检查这样是否能解决问题。 请注意、进行此更改后、您需要重新构建库以及 SBL。

    此致、

    会面。