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.

[参考译文] AM62P:AM62P:eMMC 和 OSPI 启动配置。

Guru**** 2925550 points

Other Parts Discussed in Thread: AM62P, UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1652759/am62p-am62p-emmc-and-ospi-boot-configs

部件号: AM62P
Thread 中讨论的其他器件: UNIFLASH

您好、
我正在处理 AM62P MCU 域、
在 MCU+SDK 的 MCU 刷写 cfg 中、我看到了两个文件 default_sbl_ospi_linux_hs_fs.cfg 和 default_sbl_eMMC_linux_hs_fs.cfg

在 ospi 配置中

#第一个指向 sbl_uart_uniflash_stage1 二进制文件,它初始化 DDR 并接收 sbl_uart_uniflash_stage2 二进制文件
--flash-writer=sbl_prebuilt/am62px-sk/sbl_uart_uniflash_stage1.release.hs_fs.tiimage

#指向 sbl_uart_uniflash_stage2 二进制文件,它作为一个服务器来刷写一个或多个文件
#请注意、该二进制文件由 SBL_UART_uniflash_stage1 复制到 DDR、不会写入闪存或 eMMC 等任何引导介质
--file=../../examples/drivers/boot/sbl_uart_uniflash_multistage/sbl_uart_uniflash_stage2/am62px-sk/wkup-r5fss0-0_nortos/ti-arm-clang/sbl_uart_uniflash_stage2.release.appimage.hs_fs --operation=flash --flash-offset=0x0

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

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

#发送引导加载程序时、请确保闪存偏移为 0x0。 ROM 期望引导加载程序位于偏移量 0x0 处
-file=sbl_prebuilt/am62px-sk/sbl_ospi_linux_stage1.release.hs_fs.tiimage --operation=flash --flash-offset=0x0

#带 DM 的第二阶段引导加载程序在 0x80000 或您的引导加载程序配置的任何偏移处刷新
--file=./../examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/wkup-r5fss0-0_freertos/ti-arm-clang/ipc_rpmsg_echo_linux.release.appimage.hs_fs --operation=flash --flash-offset=0x80000

#发送应用程序映像时,请确保以偏移 0x100000(默认值)或引导加载程序配置的任何偏移进行闪存
--file=../../examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/mcu-r5fss0-0_freertos/ti-arm-clang/ipc_rpmsg_echo_linux.release.appimage.hs_fs --operation=flash --flash-offset=0x800000

# HSM 映像以 0x800000 或引导加载程序配置的任何偏移进行刷写
-file=HSMAppimageGen/board/am62px-sk/HSM.appimage.hs_fs --operation=flash --flash-offset=0x240000

# Linux 映像会在 0xC00000 处或为引导加载程序配置的任何偏移处刷新
--file=linuxAppimageGen/board/am62px-sk/linux.appimage.hs_fs --operation=flash --flash-offset=0x1200000

# u-boot.img 刷写到 0x280000
--file=linuxAppimageGen/board/am62px-sk/u-boot.img --operation=flash --flash-offset=0x280000


模式下运行

#第一个指向 sbl_uart_uniflash_stage1 二进制文件,它初始化 DDR 并接收 sbl_uart_uniflash_stage2 二进制文件
--flash-writer=sbl_prebuilt/am62px-sk/sbl_uart_uniflash_stage1.release.hs_fs.tiimage

#指向 sbl_uart_uniflash_stage2 二进制文件,它作为一个服务器将一个或多个文件刷写到 eMMC
#请注意、该二进制文件由 SBL_UART_uniflash_stage1 复制到 DDR、不会写入闪存或 eMMC 等任何引导介质
--file=../../examples/drivers/boot/sbl_uart_uniflash_multistage/sbl_uart_uniflash_stage2/am62px-sk/wkup-r5fss0-0_nortos/ti-arm-clang/sbl_uart_uniflash_stage2.release.appimage.hs_fs --operation=flash --flash-offset=0x0

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

#发送引导加载程序时、请确保闪存偏移为 0x0。 ROM 需要在 eMMC 的偏移 0x0 处使用引导加载程序
-file=sbl_prebuilt/am62px-sk/sbl_eMMC_linux_stage1.release.hs_fs.tiimage --operation=flash-eMMC -flash-offset=0x0

#第 2 阶段引导加载程序在 0x80000 或您的引导加载程序配置的任何偏移处刷新
--file=../../examples/drivers/boot/sbl_emmc_linux_multistage/sbl_emmc_linux_stage2/am62px-sk/wkup-r5fss0-0_freertos/ti-arm-clang/sbl_emmc_linux_stage2.release.appimage.hs_fs --operation=flash-eMMC --flash-offset=0x80000

# HSM 映像在 0x240000 或引导加载程序配置的任何偏移处刷新
-file=HSMAppimageGen/board/am62px-sk/HSM.appimage.hs_fs --operation=flash-eMMC --flash-offset=0x240000

#发送应用程序映像时,请确保以偏移 0x800000(默认值)或引导加载程序配置的任何偏移进行闪存
--file=../../examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/mcu-r5fss0-0_freertos/ti-arm-clang/ipc_rpmsg_echo_linux.release.appimage.hs_fs --operation=flash-eMMC --flash-offset=0x800000

#将 Linux 映像刷新为 0x1200000 或为引导加载程序配置的任何偏移
--file=linuxAppimageGen/board/am62px-sk/linux.appimage.hs_fs --operation=flash-eMMC --flash-offset=0x1200000

# u-boot.img 刷写到 0x280000
-file=linuxAppimageGen/board/am62px-sk/u-boot.img -operation=flash-eMMC -flash-offset=0x280000

 

 

在比较两种配置时、我注意到在第 2 阶段引导加载程序偏移处刷写的映像存在差异 (0x80000)


ospi 配置-  
 具有 DM 的第二阶段引导加载程序刷写到 0x80000 或刷写到引导加载程序配置的任何偏移量
--file=./../examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/wkup-r5fss0-0_freertos/ti-arm-clang/ipc_rpmsg_echo_linux.release.appimage.hs_fs --operation=flash --flash-offset=0x80000

 eMMC 配置  
#第 2 阶段引导加载程序在 0x80000 或您的引导加载程序配置的任何偏移处刷新
--file=../../examples/drivers/boot/sbl_emmc_linux_multistage/sbl_emmc_linux_stage2/am62px-sk/wkup-r5fss0-0_freertos/ti-arm-clang/sbl_emmc_linux_stage2.release.appimage.hs_fs --operation=flash-eMMC --flash-offset=0x80000

我的理解是、偏移处的映像 0x80000 旨在用作 2 级引导加载程序。 但是、在 OSPI 配置中、要刷写的文件是 ipc_rpmsg_echo_linux 应用程序、而在 eMMC 配置中、刷写 sbl_emmc_linux_stage2 的文件是映像。

这导致了对引导流程的一些困惑:

  1. 0x80000 在 OSPI 配置中刷写的映像实际上是否用作 Stage 2 引导加载程序?
  2. Stage 2 引导加载程序是否也包含 DM 固件、或者它们是单独的组件?
  3. 为什么在 OSPI 配置的 Stage 2 引导加载程序偏移处刷写了一个 RPMsg 示例、而 eMMC 配置使用专用 sbl_emmc_linux_stage2 映像?
  4. OSPI 配置中的注释“2nd Stage Bootloader with DM“是否准确、或者 RPMsg 应用程序只是用作 WKUP_R5 固件吗?

0x80000 在这两种情况下、有人能请他人澄清预期的引导流程以及放置在偏移处的映像作用吗?

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

    您好、

    [报价 userid=“685432“ url=“~/support/processors-group/processors/f/processors-forum/1652759/am62p-am62p-emmc-and-ospi-boot-configs
    • 0x80000 在 OSPI 配置中刷写的映像实际上是否用作 Stage 2 引导加载程序?
    • Stage 2 引导加载程序是否也包含 DM 固件、或者它们是单独的组件?
    [/报价]

    用于 WKUP_R5 的 ipc_rpmsg_echo_linux 是一个多线程应用程序、其中 1 个线程用作引导加载程序、另一个用作 DM 固件:

    为什么在 OSPI 配置的 Stage 2 引导加载程序偏移处刷写了一个 RPMsg 示例、而 eMMC 配置使用专用 sbl_emmc_linux_stage2 映像?

    背后没有特定的原因、sbl_eMMC_linux_stage2 不运行唤醒内核应用、因此它将运行引导线程并执行 SciServer 初始化、但不会初始化 IPC 应用、如果您需要测试 IPC、那么您可以直接使用 IPC rpmsg 示例、因为它是在 OSPI cfg 文件中完成的。

    此致、

    会面。

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

    你好  ,见塔卡,

    我的要求是使用自定义应用程序从 OSPI 引导 DM/WKUP_R5 内核。 例如、我需要在 DM 内核上运行的固件来处理 CAN 节点和 GPIO、因此我假设需要为该内核开发和加载自定义固件。

    同时、在 MCU R5 上运行的主应用程序应该从 eMMC 引导并执行一组不同的功能。

    您能否说明一下这预计如何与次级引导加载程序配合使用? 具体来说:

    • 次级引导加载程序如何与在 DM/WKUP_R5 内核上运行的自定义应用程序交互?
    • 自定义 DM 固件是集成到次级引导加载程序映像中、还是单独加载?
    • 如果我在 DM 内核上需要自定义应用程序、当 MCU R5 应用程序从 eMMC 引导时、建议的引导流程是什么?

    我正在尝试了解如何在引导期间组合和加载次级引导加载程序和自定义 DM 固件。

    谢谢。

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

    您好、

    [报价 userid=“685432“ url=“~/support/processors-group/processors/f/processors-forum/1652759/am62p-am62p-emmc-and-ospi-boot-configs/6373476
    • 次级引导加载程序如何与在 DM/WKUP_R5 内核上运行的自定义应用程序交互?
    • 自定义 DM 固件是集成到次级引导加载程序映像中、还是单独加载?
    [/报价]

    您用于 WKUP R5 的 ipc_rpmsg_echo 是一个 FreeRTOS 应用、因此我们在这里创建 2 个任务、请参阅以下地址: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/wkup-r5fss0-0_freertos/main.c#L114

    在这里、 sbl_stage2_main 任务充当您的 SBL 阶段 2 并启动 MCU、HSM 和 A53 的应用程序映像、而 main_thread 会初始化 SciServer 线程并通过调用 ipc_rpmsg_echo_main: https://github.com/TexasInstruments/mcupsdk-core-k3/blob/k3_main/examples/drivers/ipc/ipc_rpmsg_echo_linux/am62px-sk/wkup-r5fss0-0_freertos/main.c#L94C5-L94C24 来运行 IPC 应用程序 

    如果我需要 DM 内核上的自定义应用程序、当 MCU R5 应用程序从 eMMC 引导时、建议的引导流程是什么?

    您可以为自定义应用使用与 ipc_rpmsg_echo 相同的流程。 您可以使用 IPC 示例作为基础、只需调用自定义应用程序主函数而不是 ipc_rpmsg_echo_main   

    同时、在 MCU R5 上运行的主应用程序应该从 eMMC 引导并执行一组不同的功能。

    请注意、不支持从双引导介质 (OSPI+EMM) 引导来自 MCU+SDK 的 OOB、因此您必须进行一些更改才能实现此功能。 您可以参阅此常见问题解答、了解如何启用从双引导介质引导:  【常见问题解答】如何使用 MCU+SDK 从双引导介质 (OSPI NOR + eMMC) 引导? 

    请注意、根据您的要求、必须将 MCU 实例的引导介质更改为 EMMC、而不是 Linux 实例。

    此致、

    会面。