Other Parts Discussed in Thread: AM62P, UNIFLASH
部件号: AM62P
Thread 中讨论的其他器件: UNIFLASH
您好、
我正在研究 AM62P R5 内核、并想知道是否可以使用 USB 引导模式刷写 MCU 和 DM 内核。
目前、我正在将器件切换到 UART 引导模式、并使用该 uart_uniflash 工具对其进行刷写。
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.
尊敬的 Abhijith Raj:
AM62 器件目前仅支持用于 MCU+ SDK 的 UART Uniflash。 MCU+ SDK 不支持 DFU Uniflash 或 JTAG Uniflash 等刷写实用程序。
有关使用 USB DFU 进行基于 Linux 的刷写、请参阅以下文档:
此外、我们最近还添加了对 snagfactory Processor SDK 中所述工具的支持。 该工具还支持通过 USB DFU 接口进行刷写:
此致、
JOMY
感谢您的澄清和共享文档。
我想确认是否也可以使用使用 USB DFU(包括 snagfactory/snagboot 支持)基于 Linux 的 SDK 刷写方法来刷写 AM62 器件中的 MCU R5 固件/映像。
目前、MCU+ SDK 仅支持用于 MCU 映像刷写的 UART Uniflash。
是否有任何受支持的方法可以使用以下方法通过 USB DFU 刷写 MCU R5 应用程序:
尊敬的 Abhijith Raj:
我想确认是否也可以使用使用 USB DFU(包括 snagfactory/snagboot 支持)基于 Linux 的 SDK 刷写方法在 AM62 器件中刷写 MCU R5 固件/映像
你好 Jomy Paul P S ,
我之前已将 Hello World 示例刷写到适用于 MCU R5 内核的 AM62P eMMC。
稍后、我们的团队构建了 Android SDK、并在 SoC 端刷写了 Android 映像。 对 EVK 进行下电上电后、我观察到 MCU 正在运行 IPC echo/rpmsg 示例、而不是之前刷写的 Hello World 应用程序。
您能否说明 IPC echo/rpmsg 固件是如何作为 Android 设置的一部分加载/刷写的?
MCU 固件是否捆绑在 Android 刷写过程中、或者在启动期间动态加载?
尊敬的 Abhijith Raj:
我想对上述问题再补充一点。
通过 USB DFU 刷写 MCU R5 应用程序是否有任何支持的方法可以使用:
使用 Snagfactory、您可以将映像刷写到闪存中任何所需的内存偏移。 写入映像后、 引导加载程序负责将这些映像加载并引导到各自的内核。
除此之外、您还有两种管理固件执行的方法:
通过将 Snagfactory (用于在自定义偏移处刷写固件)与 Remoteproc 框架相结合、您可以在系统引导期间动态控制固件加载。 Remoteproc 允许系统 (Linux/Android) 加载并启动器件树中定义的 R5 固件。
或者、您可以实现 基于引导加载程序的加载方法、其中引导加载程序(例如 SPL/U-Boot)直接从刷写的偏移量中读取 R5 固件、将其加载到相应的存储器中、并引导 R5 内核。 这使您能够 完全控制固件执行、而无需依靠远程处理。
有关远程内核引导的参考、您可以检查: https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__ASTUPTn5xbFkK9F0gRlUSw__AM62P-ACADEMY__fp5YxRM__LATEST
您能否说明 IPC echo/rpmsg 固件是如何加载/刷写的、作为 Android 设置的一部分?
MCU 固件是捆绑在 Android 刷写过程中还是在引导过程中动态加载?
发生这种情况是因为 Android SDK 使用 Remoteproc 框架,该框架 am62p-mcu-r5f0_0-fw在引导期间加载设备树中定义的默认 R5 固件 ()。 这可能会覆盖之前刷写的任何 MCU 应用程序。
通过将 Snagfactory (用于在自定义偏移处刷写固件)与 Remoteproc 框架相结合、您可以在系统引导期间动态控制固件加载。 Remoteproc 允许系统 (Linux/Android) 加载并启动设备树中定义的 R5 固件。
是否使用 Remoteproc 框架在每次启动时加载 MCU 固件、或者每次刷写到专用的 MCU 分区/存储中?
MCU 固件加载机制在这种情况下的工作原理。
尊敬的 Abhijith Raj :
是否在每次使用 Remoteproc 框架进行引导时加载 MCU 固件、或者每次都将其刷写到专用的 MCU 分区/存储中?
尝试了解在这种情况下 MCU 固件加载机制是如何工作的。
https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_02_08_02/exports/docs/linux/Foundational_Components Flash_via_Fastboot.html
下面显示了一个示例配置以供参考。
boards:
0451:6165: am62p
soc-models:
am62p-firmware:
tiboot3:
path: "<path_to_linux_sdk>/board-support/built-images/tiboot3.bin"
tispl:
path: "<path_to_linux_sdk>/board-support/built-images/tispl.bin"
u-boot:
path: "<path_to_linux_sdk>/board-support/built-images/u-boot.img"
am62p-tasks:
- eraseblk-size: 0x40000
fb-buffer-addr: 0x82000000
fb-buffer-size: 0x7000000
target-device: nor0
- task: run
args:
- "oem_run:mtd list"
- "oem_run:setenv mtdids nor0=nor0"
- task: mtd-parts
args:
- name: ospi.tiboot3
size: 0x80000
- name: ospi.tispl
size: 0x200000
- name: ospi.u-boot
size: 0x400000
- name: ospi.rootfs
size: 0x37c0000
start: 0x800000
- task: flash
args:
- image: "<path_to_mcu_sdk>/tools/boot/sbl_prebuilt/am62px-sk/sbl_ospi_linux_stage1.release.hs_fs.tiimage"
part: ospi.tiboot3
- image: "<path_to_mcu_sdk>/tools/boot/sbl_prebuilt/am62px-sk/sbl_ospi_linux_stage2.release.appimage.hs_fs"
part: ospi.tispl
- image: "<path_to_mcu_sdk>/examples/hello_world/am62px-sk/mcu-r5fss0-0_freertos/ti-arm-clang/hello_world.release.appimage.hs_fs"
part: ospi.rootfs
我们当前的要求是、我们需要 DM 内核、MCU R5 内核和 A53 内核中的 Android。
上电时、DM 应引导、然后 MCU R5 应从 EMMC 引导、稍后的 Android 应从 EMMC 引导。
尊敬的 Abhijith Raj:
我们当前的要求是、我们需要 DM 内核、MCU R5 内核和 Android(A53 内核)。
开机时、DM 应引导、然后 MCU R5 应从 EMMC 引导、随后的 Android 应从 EMMC 引导。
替换:
tiboot3.bin→sbl_eMMC_linux_stage1(偏移量 0x0)
tispl.bin→sbl_eMMC_linux_stage2(DM 固件)(偏移量 0x80000)
加法:
偏移量为 0x800000 时的 Cortex-R5F 应用映像
偏移为 0x1200000 的 A53 映像
注意:DM 固件 (stage2) 会加载 Cortex-R5F 和 A53
同时—两者同时开始运行
stage2 完成加载时。 它不是按顺序排列的。
您可以参考此 Linux 示例
boards:
"0451:6165": "am62p"
soc-models:
am62p-firmware:
tiboot3:
path: "<path_to_linux_sdk>/board-support/built-images/tiboot3.bin"
tispl:
path: "<path_to_linux_sdk>/board-support/built-images/tispl.bin"
u-boot:
path: "<path_to_linux_sdk>/board-support/built-images/u-boot.img"
am62p-tasks:
- target-device: mmc0
fb-buffer-addr: 0x82000000
fb-buffer-size: 0x7000000
- task: gpt
args:
- name: rootfs
size: 1G
- task: reset
- task: flash
args:
- image: "<path_to_mcu_sdk>/tools/boot/sbl_prebuilt/am62px-sk/sbl_emmc_linux_stage1.release.hs_fs.tiimage"
image-offset: 0x0
part: "hwpart 1"
- image: "<path_to_mcu_sdk>/tools/boot/sbl_prebuilt/am62px-sk/sbl_emmc_linux_stage2.release.appimage.hs_fs"
image-offset: 0x80000
part: "hwpart 1"
- image: "<path_to_mcu_sdk>/tools/boot/linuxAppimageGen/board/am62px-sk/u-boot.img"
image-offset: 0x280000
part: "hwpart 1"
- image: "<path_to_mcu_sdk>/examples/<your_mcu_app>/am62px-sk/mcu-r5fss0-0_freertos/ti-arm-clang/<your_mcu_app>.release.appimage.hs_fs"
image-offset: 0x800000
part: "hwpart 1"
- image: "<path_to_mcu_sdk>/tools/boot/linuxAppimageGen/board/am62px-sk/linux.appimage.hs"
image-offset: 0x1200000
part: "hwpart 1"
谢谢、
JOMY
以上链接对我不起作用。
尊敬的 Abhijith Raj :
[引述 userid=“686310“ url=“~/support/processors-group/processors/f/processors-forum/1648596/am62p-am62p-mcu-flashing-through-usb/6356275此外、我们最近还添加了对 snagfactory Processor SDK 中所述工具的支持。 该工具还支持通过 USB DFU 接口进行刷写:
谢谢、
JOMY