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:通过 USB 刷写 AM62P MCU

Guru**** 2917540 points

Other Parts Discussed in Thread: AM62P, UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1648596/am62p-am62p-mcu-flashing-through-usb

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

您好、

我正在研究 AM62P R5 内核、并想知道是否可以使用 USB 引导模式刷写 MCU 和 DM 内核。

目前、我正在将器件切换到 UART 引导模式、并使用该 uart_uniflash 工具对其进行刷写。

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

    尊敬的 

    AM62 器件目前仅支持用于 MCU+ SDK 的 UART Uniflash。 MCU+ SDK 不支持 DFU Uniflash 或 JTAG Uniflash 等刷写实用程序。

    有关使用 USB DFU 进行基于 Linux 的刷写、请参阅以下文档:

    此外、我们最近还添加了对 snagfactory Processor SDK 中所述工具的支持。 该工具还支持通过 USB DFU 接口进行刷写:

    此致、

    JOMY  

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

    你好 Jomy Paul P S 

    感谢您的澄清和共享文档。

    我想确认是否也可以使用使用 USB DFU(包括 snagfactory/snagboot 支持)基于 Linux 的 SDK 刷写方法来刷写 AM62 器件中的 MCU R5 固件/映像。

    目前、MCU+ SDK 仅支持用于 MCU 映像刷写的 UART Uniflash。
    是否有任何受支持的方法可以使用以下方法通过 USB DFU 刷写 MCU R5 应用程序:

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

    尊敬的 

    我想确认是否也可以使用使用 USB DFU(包括 snagfactory/snagboot 支持)基于 Linux 的 SDK 刷写方法在 AM62 器件中刷写 MCU R5 固件/映像

    目前、官方唯一支持的独立方法是使用 UniFlash 通过 UART 来刷写 AM62x 上的 MCU R5 应用映像
    谢谢、
    JOMY  

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

    你好 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 刷写过程中、或者在启动期间动态加载?

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

    尊敬的 

    我想对上述问题再补充一点。

    是否有任何支持的方法可以使用:
    通过 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 应用程序。

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

    你好 Jomy Paul P S 

    通过将 Snagfactory (用于在自定义偏移处刷写固件)与 Remoteproc 框架相结合、您可以在系统引导期间动态控制固件加载。 Remoteproc 允许系统 (Linux/Android) 加载并启动设备树中定义的 R5 固件。

    是否使用 Remoteproc 框架在每次启动时加载 MCU 固件、或者每次刷写到专用的 MCU 分区/存储中?
    MCU 固件加载机制在这种情况下的工作原理。

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

    尊敬的 

    是否在每次使用 Remoteproc 框架进行引导时加载 MCU 固件、或者每次都将其刷写到专用的 MCU 分区/存储中?
    尝试了解在这种情况下 MCU 固件加载机制是如何工作的。

    我想了解您的当前设置。 您使用的是 SBL 引导流程还是 SPL 引导流程?

    如果您使用的是 SBL、则可以使用 snagfactory 加载 MCU R5 映像。 只需进行细微更改、具体而言、您需要更新文档中提供的 YAML 文件。

    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

    如果您使用的是 SPL 引导流程、则需要使用 远程处理器 机制来加载 MCU R5 固件。
    谢谢、
    JOMY Paul  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Jomy Paul P S 

    [引述 userid=“686310“ url=“~/support/processors-group/processors/f/processors-forum/1648596/am62p-am62p-mcu-flashing-through-usb/6362541
    我想了解您的当前设置。 您使用的是 SBL 引导流程还是 SPL 引导流程?

    [/报价]

    我们当前的要求是、我们需要 DM 内核、MCU R5 内核和 A53 内核中的 Android。
    上电时、DM 应引导、然后 MCU R5 应从 EMMC 引导、稍后的 Android 应从 EMMC 引导。

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

    尊敬的 

    我们当前的要求是、我们需要 DM 内核、MCU R5 内核和 Android(A53 内核)。
    开机时、DM 应引导、然后 MCU R5 应从 EMMC 引导、随后的 Android 应从 EMMC 引导。

    您将其称为 SBL 引导流程。
    在上述 TI 文档的 eMMC YAML 闪存部分中、您需要进行以下更改:

    替换:
    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

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

    你好 Jomy Paul P S 

    [引述 userid=“686310“ url=“~/support/processors-group/processors/f/processors-forum/1648596/am62p-am62p-mcu-flashing-through-usb/6363983
    在上述 TI 文档的 eMMC YAML 闪存部分中、您需要进行以下更改:
    [/报价]

    以上链接对我不起作用。

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

    尊敬的 

    [引述 userid=“686310“ url=“~/support/processors-group/processors/f/processors-forum/1648596/am62p-am62p-mcu-flashing-through-usb/6356275

    此外、我们最近还添加了对 snagfactory Processor SDK 中所述工具的支持。 该工具还支持通过 USB DFU 接口进行刷写:

    [/报价]

    两个链接是相同的—请检查一下吗?  

    谢谢、

    JOMY