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.

[参考译文] AM6442:刷写 OSPI

Guru**** 2771605 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/1614936/am6442-flashing-ospi

器件型号: AM6442
Thread 中讨论的其他器件: UNIFLASHSK-AM64B

我尝试按照此处的步骤刷写 OSPI: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/TOOLS_FLASH.html#BASIC_STEPS_TO_FLASH_FILES

使用自定义配置脚本运行 uart_uniflash.py 时、我不会遇到任何错误(这与 default_sbl_ospi.cfg 相同、但应用程序文件指向运行 NORTOS 的 R5FSS0-0 的 GPIO_led_blink 工程在 CCS 中生成的.appimage.hs_fs)。  

image.png

切换到 OSPI 引导模式并进行下电上电后、我获得的唯一输出是已连接、但 GPIO 不闪烁、这会导致我认为某些功能无法正常工作。 如何将映像正确加载到 OSPI 中并为此电路板进行引导?

谢谢!

image.png

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

    您好、

    您使用的是定制电路板还是 TI EVM?

    我假设您正在使用默认的 SBL OSPI 而没有任何更改、请确认相同内容。

    由于没有故障日志、我想它卡在 SBL 中的某个位置、您能否按照此处提到的步骤调试 SBL:  【常见问题解答】AM62X/AM64X:【常见问题解答】在 RTOS SDK 中调试  SBL 引导、并告诉我 SBL 在哪个点/指令卡住?

    此致、

    会面。

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

    大家好! 我使用 TI EVM、SK-AM64B。

    是的、我尝试使用默认的 SBL OSPI 而不进行任何更改。

    当运行这些步骤时,这是我被卡住的地方(这指向 main () 的开口曲柄):

     

    此外、我看到以下内容:

    不过、您链接的示例是 NORTOS。

    我还禁用了调用 main () 的断点,我认为这可以解决它在那里停止,但它没有:  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在运行这些步骤时、这是我遇到的问题(这指向 main () 的开头曲柄):

    预计会在您添加的 while 循环处停止、一旦卡住、您可以将 Halted 的值从 1 更改为 0、以进一步调试 SBL OSPI。  

    、这与 default_sbl_ospi.cfg 相同、但应用程序文件指向 CCS 中使用运行 NORTOS0-0 的 R5FSS0-0 的 GPIO_led_blink 工程生成的.appimage.hs_fs

    请与我共享配置文件、并确保如果您在.cfg 中修改了闪存偏移量、还需要在 SBL OSPI 中对其进行相应的更改。

    当您使用默认 SBL 时、我预计 SBL 不会出现问题、您能与我共享 gpio_led_blink 应用程序吗? 同时、您还可以使用 SDK 中的任何其他默认示例、并尝试使用 SBL OSPI 对其进行引导、以检查它是否起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid=“628103" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1614936/am6442-flashing-ospi/6227184
    当运行这些步骤时,这是我被卡住的地方(这指向 main () 的开口曲柄):

    预计会在您添加的 while 循环处停止、一旦卡住、您可以将 Halted 的值从 1 更改为 0、以进一步调试 SBL OSPI。  

    [/报价]

    目前它不会到达循环。 它只是在执行其内的任何代码之前在 main() 处停止。 它在第 56 行停止:  

    这是我的配置。 除了引用“应用程序映像“的两行之外、它应该与 default_sbl_ospi.cfg 相同。  

    -------------------------------------------------------------------------------------------- #
    #                                       #
    #   与 FLASHWRITER 脚本一起使用的默认配置文件   #
    #                                       #
    -------------------------------------------------------------------------------------------- #
    #
    #默认此配置文件,
    #-指向此 EVM 的预编译闪存写入器、引导加载程序
    #-应用程序映像指向此 EVM 的 IPC 回声应用程序映像的相对路径
    # -确保在运行此脚本之前构建此应用程序
    #-您可以自定义此配置文件以指向您自己的引导加载程序和/或应用程序映像
    #-如果您只想验证闪存内容而不是刷写文件,可以使用--operation=flashverify。
    #

    #首先指向 sbl_uart_uniflash 二进制文件,它作为一个服务器来刷写一个或多个文件
    -- flash-writer=sbl_prebuilt/am64x-sk/sbl_uart_uniflash.release.hs_fs.tiimage

    #现在发送一个或多个文件到闪存或 flashverify 根据需要。 发送文件的顺序无关紧要

    #对 OSPI PHY 调优攻击向量进行编程
    --操作=flash-phy-tuning-data

    #发送引导加载程序时、请确保闪存偏移为 0x0。 ROM 期望引导加载程序位于偏移量 0x0 处
    --file=../../examples/drivers/boot/sbl_ospi/am64x-sk/r5fss0-0_nortos/ti-arm-clang/sbl_ospi.release.hs_fs.tiimage --operation=flash --flash-offset=0x0

    #发送应用程序映像时,请确保以偏移 0x80000(默认值)或引导加载程序配置的任何偏移进行闪存
    --file=./../examples/drivers/boot/sbl_ospi/am64x-sk/r5fss0-0_nortos/ti-arm-clang/gpio_led_blink_r5.appimage.hs_fs --operation=flash --flash-offset=0x80000

    #为此应用程序发送 XIP 映像,由于闪存偏移是在映像中指定的,因此无需指定闪存偏移
    --file=../../examples/drivers/boot/sbl_ospi/am64x-sk/r5fss0-0_nortos/ti-arm-clang/gpio_led_blink_r5.appimage_xip --operation=flash-XIP

    gpio_led_blink 应用程序与此处默认安装的应用程序相同:  

    C:\ti\mcu_plus_sdk_am64x_11_00_00_18\examples\drivers\gpio\gpio_led_blink\am64x-sk\r5fss0-0_nortos

    我使用工程向导将其导入 CCS、只在末尾将名称更改为包含_r5、因此我知道我测试的内核是哪个。

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

    尊敬的 Akane:

    指定的专家目前不在办公室、请期待收到延迟的回复。

    此致、

    Tushar

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

    尊敬的 Akane:

    您是否可以在 SBL OSPI 中应用该补丁、并检查 SBL 在此之后是否正常工作:

    diff --git a/examples/drivers/boot/sbl_ospi/am64x-sk/r5fss0-0_nortos/main.c b/examples/drivers/boot/sbl_ospi/am64x-sk/r5
    fss0-0_nortos/main.c
    index e9db819c..e5a6c88f 100644
    --- a/examples/drivers/boot/sbl_ospi/am64x-sk/r5fss0-0_nortos/main.c
    +++ b/examples/drivers/boot/sbl_ospi/am64x-sk/r5fss0-0_nortos/main.c
    @@ -131,6 +131,7 @@ int main(void)
             Bootloader_BootImageInfo bootImageInfo;
             Bootloader_Params bootParams;
             Bootloader_Handle bootHandle;
    +        Bootloader_Config *bootConfig;
     
             Bootloader_Params_init(&bootParams);
             Bootloader_BootImageInfo_init(&bootImageInfo);
    @@ -140,6 +141,9 @@ int main(void)
             {
                 /* Initialize PRU Cores if applicable */
                 Bootloader_Config *cfg = (Bootloader_Config *)bootHandle;
    +            bootConfig = (Bootloader_Config *)bootHandle;
    +            bootConfig->enableScratchMem = 0;
    +            bootConfig->scratchMemPtr = NULL;
                 if(TRUE == cfg->initICSSCores)
                 {
                     status = Bootloader_socEnableICSSCores(BOOTLOADER_ICSS_CORE_DEFAULT_FREQUENCY);

    您需要对默认 SBL OSPI 应用此补丁、因此可以删除之前尝试调试 SBL 的所有更改、然后添加此补丁。

    此致。

    会面。

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

    感谢您的会面、这解决了我的问题。 此修补程序是否会在该软件包的后续版本中发布?

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

    尊敬的 Akane:

    感谢您的确认。

    我为您提供了此补丁、只是为了确认此问题。 从 10.1 版的 SDK 中添加了对安全启动的支持、为此、我们使用缓冲区(通常在 DDR 中)来临时加载映像、并用于解密和身份验证。 用于使用此缓冲器的代码是为 am64x-EVM 的 SBL OSPI 示例添加的: https://github.com/TexasInstruments/mcupsdk-core/blob/next/examples/drivers/boot/sbl_ospi/am64x-evm/r5fss0-0_nortos/main.c#L151 、但 am64x-SK 板的 SBL OSPI 中缺少这种代码、导致了这个问题。

    我将提出错误请求、但这不大可能在下一个版本中修复、目前、如果您不计划使用安全启动、您可以使用当前补丁、否则您也可以从 am64x-EVM SBL OSPI 中复制代码的相关部分、并为 am64x-SK 添加对暂存存储器的支持。

    此致、

    会面。

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

    谢谢! 是否有类似的多分区 OSPI 引导加载程序补丁? 它给了我同样的问题,我遇到了这个。

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

    相同的修复也应该适用于多分区、您可以比较 am64x-EVM 和 am64x-SK 的 main.c 并将必要的更改从 EVM 示例复制到 SK 示例。