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.

[参考译文] TDA4VM-Q1:通过具有 SBL 的 MMCSD 引导 Linux

Guru**** 2587365 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1567279/tda4vm-q1-booting-linux-via-mmcsd-w-sbl

器件型号:TDA4VM-Q1


工具/软件:

尊敬的专家:

我仅尝试使用 SBL 测试 MMCSD Linux 引导。

Ref 如下所示。

https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/10_00_00_05/exports/docs/pdk_jacinto_10_00_00_27/docs/userguide/jacinto/boot/boot_app.html

我有一个可引导 SD、它包括引导分区和 rootfs 分区。

引导分区文件列表如下所示。

<pre><font color="#4E9A06"><b>gibbs@gibbs-HP-ZBook-15-G5</b></font>:<font color="#3465A4"><b>~/work/j721e/tftpboot/sbl_test_boot</b></font>$ ll /media/gibbs/boot/
total 21230
drwxr-xr-x  2 gibbs gibbs     1536  一   1  1970 <font color="#3465A4"><b>.</b></font>/
drwxr-x---+ 4 root  root      4096  九  18 20:15 <font color="#3465A4"><b>..</b></font>/
-rw-r--r--  1 gibbs gibbs   535660  九  18 20:04 atf_optee.appimage
-rw-r--r--  1 gibbs gibbs     2552  九  18 20:06 lateapp1
-rw-r--r--  1 gibbs gibbs   222036  九  18 20:07 lateapp2
-rw-r--r--  1 gibbs gibbs     1680  九  18 20:07 lateapp3
-rw-r--r--  1 gibbs gibbs   307695  九  18 20:12 tiboot3.bin
-rw-r--r--  1 gibbs gibbs   113456  九  18 20:04 tidtb_linux.appimage
-rw-r--r--  1 gibbs gibbs   263114  九  18 20:03 tifs.bin
-rw-r--r--  1 gibbs gibbs 20286024  九  18 20:05 tikernelimage_linux.appimage
</pre>

lateapp1 = multiple_MCU2_0_MCU2_1_stage1.appimage

lateapp2 = multiple_DSP_MCU3_0_MCU3_1_stage2.appimage

lateapp3 = multiple_mpu1_0_stage3.appimage

但我发现引导失败。

MCU UART 日志如下所示。

我有什么遗漏吗?

需要您的建议。

SDK: ti-processor-sdk-rtos-j721e-evm-10_00_00_05/pdk_jacinto_10_00_00_27

设备类型:GP(我已检查我是否使用 GP 类型映像)

01000000011a00006a3765730000000000000000475020200101010001010100

ibbs@gibbs-HP-ZBook-15-G5:~/work/j721e$ python3 7080.uart_boot_socid.py device_type_evm.txt 
-----------------------
SoC ID Header Info:
-----------------------
NumBlocks            : [1]
-----------------------
SoC ID Public ROM Info:
-----------------------
SubBlockId           :
SubBlockSize         :
DeviceName           : j7es
DeviceType           : GP  
DMSC ROM Version     : [0, 1, 1, 1]
R5 ROM Version       : [0, 1, 1, 1]

非常感谢

Gibbs

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

    嗨、Gibbs、

    我想您错过了该过程中的第 4 步和第 5 步(即:构建和复制 bootapp 步骤)。

    此致

    Gokul

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

    嗨、Gokul

    我犯了一个错误,你是对的。  

    它现在可以为我工作。

    另外一个概念说明、

     每台不同的 Core 都可以作为我的“托管应用程序映像“

    步骤如下所示。

    要将多个.rprc 映像拼接到一个多核映像中、请执行以下命令

    对于 Linux:linux/packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen
     <PDK> LE 55 output.appimage <core_id_1> core_1.rprc <core_id_2> core_2.rprc 

    是否正确?

    非常感谢。

    Gibbs

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

    嗨、Gibbs、

    很抱歉耽误你的时间。 我已将此查询重定向至相应的 PDK 专家。 提前感谢您的耐心。

    此致

    Gokul

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

    嗨、Gibbs

    请参阅以下步骤、如果有用、请告知我们。

    工作目录(路径):
    karthikeansaravanan~LAP678U:@/ti/ti-processor-sdk-rtos-j721e-evm-11_00_00_06/pdk_jacinto_11_00_00_21/packages/ti/binary/GPIO_Baremetal_Led Blink_Test App/bin/j721e_EVM$

    将多个.rprc 映像拼接成单个多核映像的命令:
    /home/karthikeyansaravanan/ti/ti-processor-sdk-rtos-j721e-evm-11_00_00_06/pdk_jacinto_11_00_00_21/packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen LE 55 Multicoly_APP 11 GPIO_MCU2_1_release.rprc Blink_Test 10 GPIO_MCU2_MCU2_0_release.rprc Baremetal_Led Blink_Test Baremetal_Led

    输出文件名:
    多核应用

    此致、

    Karthik

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

    您好  Karthik、

    抱歉、稍后回复。

    按照您的说明成功构建多核映像、这称为“Multiplet_app"</s>“

    这是 SD 引导竞争中的复制映像。

    cp -f ./sbl_mmcsd_img_mcu1_0_release.tiimage /media/gibbs/boot/tiboot3.bin
    cp -f ./tifs.bin /media/gibbs/boot
    cp -f ./sbl_boot_app_mmcsd_j721e_evm_mcu1_0_freertos_TestApp_release.appimage /media/gibbs/boot/app
    cp -f ./Multicore_app /media/gibbs/boot/lateapp1
    cp -f ./multicore_images/j721e_evm/multicore_DSPs_MCU3_0_MCU3_1_stage2.appimage /media/gibbs/boot/lateapp2
    cp -f ./multicore_images/j721e_evm/multicore_MPU1_0_stage3.appimage /media/gibbs/boot/lateapp3

    从 SD 引导后、似乎启动失败、记录如下。

    在执行“lateapp1"时“时似乎挂起

    Welcome to minicom 2.7.1
    
    OPTIONS: I18n 
    Compiled on Dec 23 2019, 02:06:26.
    Port /dev/ttyUSB1, 15:04:47
    
    Press CTRL-A Z for help on special keys
    
    SBL Revision: 01.00.10.01 (Sep 18 2025 - 13:18:27)
    TIFS  ver: 10.0.8--v10.00.08 (Fiery Fox)
    Starting Sciserver..... PASSED
    MCU R5F App started at 2250 usecs
    Loading BootImage
    
     BootApp_MMCBootImageLate: fp 0x 0x41c12300, fileName is 0:/lateapp1
    

    正常启动应如下所示。

    SBL Revision: 01.00.10.01 (Sep 18 2025 - 13:18:27)
    TIFS  ver: 10.0.8--v10.00.08 (Fiery Fox)
    Starting Sciserver..... PASSED
    MCU R5F App started at 2251 usecs
    Loading BootImage
    
     BootApp_MMCBootImageLate: fp 0x 0x41c12300, fileName is 0:/lateapp1
    
     Called SBL_MulticoreImageParse, status = 0
    BootImage completed, status = 0
    SBL_SlaveCoreBoot completed for Core ID#10, Entry point is 0x70014000
    SBL_SlaveCoreBoot completed for Core ID#11, Entry point is 0x70016000
    Loading BootImage
    
     BootApp_MMCBootImageLate: fp 0x 0x41c12300, fileName is 0:/lateapp2
    
     Called SBL_MulticoreImageParse, status = 0
    BootImage completed, status = 0
    SBL_SlaveCoreBoot completed for Core ID#12, Entry point is 0x70018000
    SBL_SlaveCoreBoot completed for Core ID#13, Entry point is 0x7001a000
    SBL_SlaveCoreBoot completed for Core ID#16, Entry point C66X_0 booted
    is 0x90030000
    SBL_SlaveCoreBoot completed for Core ID#17, Entry point is 0x90930000C66X_1 booted
    
    SBL_SlaveCoreBoot completed for Core ID#18, Entry poC7X_0 booted
    int is 0x91a00000
    Loading BootImage
    
     BootApp_MMCBootImageLate: fp 0x 0x41c12300, fileName is 0:/lateapp3
    
     Called SBL_MulticoreImageParse, status = 0
    BootImage completed, status = 0
    SBL_SlaveCoreBoot completed for Core ID#0, Entry point is 0x70024000
    MPU1_0 booted
    Boot App: Started at 2471 usec
    Boot App: Total Num booted cores = 8
    Boot App: Booted Core ID #10 at 37477 usecs
    Boot App: Booted Core ID #11 at 38105 usecs
    Boot App: Booted Core ID #12 at 143610 usecs
    Boot App: Booted Core ID #13 at 144237 usecs
    Boot App: Booted Core ID #16 at 145077 usecs
    Boot App: Booted Core ID #17 at 145914 usecs
    Boot App: Booted Core ID #18 at 146558 usecs
    Boot App: Booted Core ID #0 at 154146 usecs
    MCU Boot Task started at 2471 usecs and finished at 168581 usecs
    MCU2_0 booted
    MCU2_1 booted
    MCU3_0 booted
    MCU3_1 booted
    lateapps booted successfully
    MCU2_0 reports: All tests have passed

    我认为“Led EVB.App_MCU2_0“或“我认为“Led LED.App_MCU2_1“应该工作失败、因为我在 Blink_Test 上没有看到任何闪存 Blink_Test

    我有什么遗漏吗?

     我们可以组合用于启动的任何多核映像吗? 任何限制?

    谢谢你。

    Gibbs

    e2e.ti.com/.../sbl_5F00_mmcsd_5F00_img_5F00_mcu1_5F00_0_5F00_release.tiimage

    e2e.ti.com/.../0207.tifs.bin

    e2e.ti.com/.../sbl_5F00_boot_5F00_app_5F00_mmcsd_5F00_j721e_5F00_evm_5F00_mcu1_5F00_0_5F00_freertos_5F00_TestApp_5F00_release.appimage

    e2e.ti.com/.../Multicore_5F00_app

    e2e.ti.com/.../8540.multicore_5F00_DSPs_5F00_MCU3_5F00_0_5F00_MCU3_5F00_1_5F00_stage2.appimage

    e2e.ti.com/.../2364.multicore_5F00_MPU1_5F00_0_5F00_stage3.appimage

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

    嗨、 Gibbs、

    您能否仔细检查_resetvectors两个示例二进制文件中的地址? 它们不应该相同、因为具有相同的地址会导致不正确执行。

    此致、

    Karthik

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

    嗨、 Gibbs、
    在 GPIO 裸机示例的.map 文件中、MCU2_0 和 MCU2_1 共享相同的 reset_vectors 地址 (0x41CE3000)。 在原始演示应用程序中、这些地址不同:MCU2_0 为 (0x70014000)、MCU2_1 为 (0x70016000)。 您是否在运行原始演示应用和 GPIO 裸机示例时观察到了相同的 lateapp1 挂起问题?

    此致、

    Karthik

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

    您好、Karthik

    原始演示链接如下所示。

    这对我很有效,没有 app1 挂起。

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/10_00_00_05/exports/docs/pdk_jacinto_10_00_00_27/docs/userguide/jacinto/boot/boot_app.html

    但是、只有当我将组合应用映像用于“GPIO_App Blink_Test、App_MCU2_0_release.rprc“和“GPIO Baremetal_Led Baremetal_Led Blink_Test、App_MCU2_1_release.rprc“时、lateapp1 才会挂起。这与原始应用不同。

    我 是否应该将复位矢量更改为 41ce3000?

    如果答案是肯定的、该怎么做?

    谢谢你。

    Gibbs

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

    嗨、 Gibbs、
    抱歉、我有点困惑。 之前、您提到了通过 MMCSD 引导 Linux、但现在是指通过 MMCSD 引导 lateapps。 您能否澄清您的要求并解释您使用 Lateapps 的原因?

    此致、

    Karthik

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

    您好、 Karthik

    抱歉晚回复、让您感到困惑。

    让我来解释一下背痛。

    *背景

    我尝试测试不带 SPL 的快速引导、因此唯一的选择是通过介质 MMCSD 或 OSPI 闪存的 SBL 进行引导。 由于 EVB 上的 OSPI 闪存存在一些硬件问题、因此我 首先测试 MMCSD。 因为我认为这个想法应该非常相似。 根据客户要求、应用应是“使用 SBL 引导 Linux、其中包括来自 MMCSD(或 OSPI 闪存)的多核映像“或“仅通过 SBL 从 MMCSD(或 OSPI 闪存)引导多核映像“。 他们都包括 lateapps。

    *测试/目标

    我逐步测试默认示例(二进制)、它适合我。 但基本上、客户可以更改(构建)他们自己的应用程序(例如:R5 Core、lateapp1、lateapp2 等)、因此我尝试测试如何组合我们自定义的多核映像并成功引导它们。 此 引导场景包括使用 SBL 引导 Linux、其中包括来自 MMCSD(或 OSPI 闪存)的多核映像“和“仅通过 SBL 从 MMCSD(或 OSPI 闪存)引导多核映像“。

    我在默认示例中甚至找到了带 HLOS 或未带的 SBL 引导、这两个示例都使用相同的 lateapps。

    抱歉、这是我第一次尝试测试  引导的多核映像。

    如果我认为有问题、请对我进行纠正。

    谢谢你。

    Gibbs

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

    嗨、Gibbs、

    我注意到两个应用二进制文件映射到同一存储器区域、合并后可能会导致引导失败。 您可以检查 IPC IPC_ECHO_TEST_FreeRTOS 示例 :它对每个内核使用不同的存储器范围(如 MCU2_0_DDR_space = 0xA2400000、MCU2_1_DDR_space = 0xA3400000 )。 尝试更新链接器文件、以便每个应用使用自己的非重叠地址范围。

    e2e.ti.com/.../Screenshot-from-2025_2D00_10_2D00_15-11_2D00_46_2D00_35.zip

    e2e.ti.com/.../ipc_5F00_echo_5F00_test_5F00_freertos_5F00_map.zip

    此致、

    Karthik