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.

[参考译文] TDA4AL-Q1:[TDA4]我是否可以使用从 0x41C00000 512KB 存储器开始的 OCMC?

Guru**** 2535150 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1564014/tda4al-q1-tda4-can-i-use-the-ocmc-start-from-0x41c00000-512kb-memory

器件型号:TDA4AL-Q1


工具/软件:

您好:

  在以下文档中、MCU 域使用 0x41C82000 地址和大小为 502KB。

  我们正在修改 MCU 域固件将一些代码放入 0x41C82000 地址。 但是、我们是否也可以在 MCU 域中使用 0x41C00000 512KB 大小的存储器?

  从 0x41C00000 地址中、用于保持 SPL/SBL 映像。 并注释这仅在 SPL/SBL 执行期间。 跳转到 MCU1_0 应用后即可声明。

  现在我使用 pdk_j721s2_10_01_00_25 软件。 SDK 版本之前  10.01.00.04。如何使用 OCMC 0x41C00000 地址?

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

    您好:

       1.使用 SPL 引导过程模式。

       2.我是否可以 在 MCU 链接器文件中定义 OCMC 0x41C00000 地址、以将 MCU 代码并排放置? 如下所示:

           OCMC_RAM (RWIX):origin=0x41C00000 length=0x80000

       3.我想把我的代码载入这个 0x41C00000。 我可以这么做吗?

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

    您好、

    执行 R5 SPL 后、设备管理器固件开始在 MCU 域 MCU1_0 上运行。

    您使用的是自定义二进制文件吗? 您还启用了哪些附加功能?

    此致、

    Keerthy  

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

    尊敬的 Keerthy:

        我使用 MCU1_0 来实现 ADAS 功能。 ADAS 功能由四个周期性任务运行。 10ms、20ms、100ms 和 200ms 任务。

    每个周期都必须运行一些 ADAS 功能。 20ms 具有高负载。 因为这些 ADAS 函数放入 DDR 和 MCU1_0 中的性能较差。 因此、我想将 ADAS 函数代码放入 OCMC RAM 中。 但在 MCU1_0 中、只能使用 505KB。 我们已经在 ADAS 上使用了 128KB OCMC RAM 来处理常量和可变数据。 因此我们没有更多的 OCMC RAM。 这就是我希望在 SPL 跳转到 MCU1_0 后使用 SPL OCMC RAM 的原因。  

      是的、我们使用 MCU1_0 中的自定义二进制文件。

    下面的显示了我测量了 DDR 中的 ADAS 代码并在不同的 R5F 上运行。 我们看到 MCU1_0(MCU 域)承担 69.6%的负载。 但主域 R5F 的效率为 44.45%。  

    我们的工程还将使用主域运行摄像头服务、DSP 将运行 AI。 因此、 MCU1_0 上的 DDR 带宽会更差。  并会使 20ms 任务需要更高的负载。 约 95%。 这就是为什么我希望使用更快速的 RAM (OCMC) 来放入 ADAS 代码的原因。

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

    您好:  

    感谢您提供详细信息。  引导加载程序执行完成后、该存储器应该可以自由使用。  

    我将再次确认。

    此致、

    Keerthy  

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

    您好:

    执行 SBL 完成后、可以重新使用 OCM RAM。 我得到了我们的专家的确认。

    - Keerthy

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

    尊敬的 Keerthy:

       好的、谢谢!   如何使用此 SBL 存储器 0x41C00000 OCMC RAM 512KB? 如何将我的 ADAS 代码和数据放入该存储器区域?  

       如下所示、我从 uboot 代码中找到。 列出 SPL 存储器映射。 如何 为 MCU1_0 应用重新使用 SPL (256KB)。 我想将 ADAS 函数代码.text 放入这个存储器区域。 怎么会这样呢?

    R5 存储器映射:
    -------------------

    . 列表表:
    :宽度: 16 16 16
    :标题行: 1.

    *-地区
    -起始地址
    -结束地址

    *- SPL (256KB)
    - 0x41c00000
    - 0x41c40000

    *-空 (135KB)
    - 0x41c40000
    - 0x41c61f20

    *-堆栈 (16KB)
    - 0x41c65f20
    - 0x41c61f20

    *-全球数据 (224B)
    - 0x41c65f20
    - 0x41c66000

    *-堆 (64KB)
    - 0x41c66000
    - 0x41c76000

    *- BSS (40KB)
    - 0x41c76000
    - 0x41c80000

    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------

    *- DM 数据 (16KB)
    - 0x41c80000
    - 0x41c84130

    *-空 (494KB)
    - 0x41c84130
    - 0x41cff9fc

    *- MCU 暂存区 (512B)
    - 0x41cff9fc
    - 0x41cffbfc

    *- ROM 数据 (1027B)
    - 0x41cffbfc
    - 0x41cfffff

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

    您好、

    是否使用 SPL 引导流? 我们以为您正在使用 SBL、对吧?

    此致、

    Brijesh

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

    您好、Brijesh:

        我使用 SPL 引导流程。 这是用于映像更新的 u-boot 模式。

        所有映像都放入 eMMC 存储中。 我们的引导流程使用的是 SPL 模式。 因此、0x41C00000 存储器将把 u-boot 的 spl 映像放置在那里。

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

    您好、

    好的、 执行 SPL 后、此 OCM 存储器可以在稍后的引导流程中重复使用。 您希望 将此存储器准确用于何处?  

    此致、

    Brijesh

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

    e2e.ti.com/.../j721s2.rare2e.ti.com/.../fih_5F00_adas_5F00_freertos_5F00_mcu1_5F00_0_5F00_release.xer5f.rar

    您好、Brijesh:

       1.我附加了 j721s2.rar。 我在 MCU0_1 链接器文件中使用了这种模式。 这是当前的链接器映射设置。

       2.我附加了 FIH_ADAS_FORertos_mcu1_0_release.xer5f.rar。 这是我的 ADAS 固件映射文件。

       3.如下从映射文件捕获。 我想将 ADAS 函数代码放入  0x41C00000 存储器中。 我已经尝试修改链接器文件、使其像 INP_FUNC 文本一样放入 0x41C00000 中。 但导致启动失败。 它卡在 R5 SPL 级。 我认为应该是 SPL 加载 DM (ADAS) 固件并导致崩溃。  

    链接器文件示例:将 ADAS 函数代码  HIN 和 INP 放入 OCMC_Sbl_Recover 中。

    /*--回收的 SBL OCMC 代码的新部分--*/
    .sbl_remove_code:load_start (_sbl_remove_code_load_start)、
    load_end (_sbl_remove_code_load_end)、
    RUN_START (_sbl_reme_code_run_start)

    /*列出您要移至此处的所有 ADAS 库函数*/
    *(.text.HIN_FUNC_STEP)
    *(.text.INP_FUNC_STEP)
    /*此通配符很关键 — 它移动所有必要的“胶水“代码*/
    *(.tramp.*)
    }> OCMC_Sbl_recoe at >_CORE_DDR_SPACE /*<<<这是唯一的更改*/

    模块代码 ro 数据 RW 数据
    ----- ----- -----
    ./adas_lib/adas/lib/adas_lib.lib src
    INP_FUNC.o 259080 10204 16544
    EV_FUNC.o 124664 124 5956
    OFS_FUNC.o 105044 15 11701
    HIN_FUNC.o 96068 7608 10236
    TTD_FUNC.o 96412 20 2744
    DCT_FUNC.o 79076 12 5980
    LFS_FUNC.o 64720 0 2004
    VHC_FUNC.o 49620 144 11073
    ACC_FUNC.o 52564 0 1476
    INP_ADAS_LIB.o 41768 0
    RVI_FUNC.o 34916 0 660
    HAL_FUNC.o 33948 0 1348
    LKAW_FUNC.o 31380 0 928
    DCT_ADAS_LIB.o 24824 0
    LFC_FUNC.o 20140 0 1356
    EGD_FUNC.o 16516 0 3424
    INP_FUNC_DATA.o 0 19401 0
    EVS_ADAS_LIB.o 18676 0
    CSW_FUNC.o 17412 0 312
    VINC_ADAS_LIB.o 14956 0
    ACC_ADAS_LIB.o 13824 0
    TTD_ADAS_LIB.o 13540 0
    TSR_FUNC.o 12700 236 216
    DFM_FUNC.o 8728 0 584
    DIP_FUNC.o 8832 0 83
    IVI_SigProc.o 8520 5 279
    RVO_FUNC 8064 0 648
    OUTP_FUNC.o 8640 0
    LFS_ADAS_LIB.o 8544 0
    LFC_ADAS_LIB.o 6948 0
    appt_FUNC.o 6844 0 86
    HAL_FUNC_DATA.o 0 6512 0
    OFS_ADAS_LIB.o 6432 0
    CAS_FUNC.o 5456 0 36
    EGD_ADAS_LIB.o 4928 0
    HAL_ADAS_LIB.o 4808 0
    lkaw_adas_lib.o 4468 0
    FSP_FUNC o 3700 0 106
    CSW_ADAS_LIB.o 3060 0
    TSR_ADAS_LIB.o 2920 0
    DFM_ADAS_LIB.o 2508 0
    AHLB_FUNC.o 2352 0 32
    RVI_ADAS_LIB.o 2368 0
    EGD_FUNC_DATA.o 0 2108 0
    DCT_FUNC_DATA.o 0 2096 0
    DIP_ADAS_LIB.o 1548 0
    EVS_FUNC_DATA.o 0 1412 0
    LFS_FUNC_DATA.o 0 1372 0
    VINC_FUNC_DATA.o 0 1372 0
    FSP_FUNC DATA.o 0 1120 0
    AEBW_FUNC.o 1064 0 9
    LFC_FUNC_DATA.o 0 1037 0
    APPT_ADAS_LIB.o 1024 0
    OUTP_ADAS_LIB.o 936 0
    ahlb_ADAS_LIB.o 788 0
    RVO_ADAS_LIB.o 784 0
    CAS_ADAS_LIB.o 716 0
    PMM_FUNC.o 648 0 3.
    TTD_FUNC_DATA.o 0 596 0
    FSP_ADAS_LIB.o 492 0
    ACC_FUNC_DATA.o 0 442 0
    DSC_FUNC.o 436 0
    rt_nonfinality.o 340 0 36
    OFS_FUNC_DATA.o 0 372 0
    HIN_ADAS_LIB.o 300 0
    CSW_FUNC DATA.o 0 248 0
    DFM_FUNC_DATA.o 0 245 0
    RVI_FUNC_DATA.o 0 236
    TSR_FUNC_DATA.o 0 88 0
    OBD_INTERFACE_IN.o 0 0 72
    rtGetInf.o 56 0
    LKAW_FUNC_DATA.o 0 52 0
    DIP_FUNC_DATA.o 0 46 0
    rtGetNaN.o 28 0 0
    PMM_ADAS_LIB.o 16 0
    RVO_FUNC DATA.o 0 8 0
    appt_FUNC_DATA.o 0 3 0
    -------------------------------------------------------- +--- +--- +/- +
    共计:1339144 57134 77932

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

    您好、 Brijesh:

    e2e.ti.com/.../6840.j721s2.rar

        再次附上 j721s2.rar 文件。  

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

    您好、Brijesh:

        以下链接器文件将代码从 DDR 回收到 OCMC。  

        1.在构建代码阶段。 将让这些代码从 DDR 复制到 MCU0_1 应用中 SBL 的 OCMC RAM(回收)。

        2. SPL 将代码加载到 DDR 中。

        3. SPL 跳转至 MCU 应用执行。

        4.在 MCU 应用程序中、运行 copy_rehound_code_to_ocmc() 以将这些 ADAS 函数代码从 DDR 回收到 SBL 的 OCMC RAM。

        但在项目 1 中、R5 卡在 SPL 中。  

    /*--回收的 SBL OCMC 代码的新部分--*/
    .sbl_remove_code:load_start (_sbl_remove_code_load_start)、
    load_end (_sbl_remove_code_load_end)、
    RUN_START (_sbl_reme_code_run_start)

    /*列出您要移至此处的所有 ADAS 库函数*/
    *(.text.HIN_FUNC_STEP)
    *(.text.INP_FUNC_STEP)
    /*此通配符很关键 — 它移动所有必要的“胶水“代码*/
    *(.tramp.*)
    }> OCMC_Sbl_recoe at >_CORE_DDR_SPACE /*<<<这是唯一的更改*/

    /**
     * @brief  Copies the .sbl_reclaim_code section from its temporary load address
     * in DDR to its final run address in the reclaimed OCMC RAM.
     */
    void copy_reclaimed_code_to_ocmc(void)
    {
        // Calculate the size of the code block to be moved
        uint32_t size = _sbl_reclaim_code_load_end - _sbl_reclaim_code_load_start;
    
        if (size > 0)
        {
        
    		UART_printf("\n start copy ENTRY... \n");
            // Perform the copy from the Load Address to the Run Address
            memcpy(_sbl_reclaim_code_run_start, _sbl_reclaim_code_load_start, size);
    		UART_printf("\n end copy ENTRY... \n");
    
            // CRITICAL STEP: Flush the processor's instruction pipeline.
            // This ensures that when the CPU calls the function, it fetches
            // the new instructions from their new location in OCMC, not old
            // instructions from its cache.
            __asm__ __volatile__ ("ISB");
        }
    }
    

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

    您好:

    如果我理解整个序列,您将使用 SPL 引导序列,并且您的 MCU 应用程序需要使用 OCMC RAM 而不是 DDR 来使用它。 我是对的吗?

    MCU1_0 上可加载应用程序的大小是多少? 如果小于 500KB、则可以从  0x41C82000 开始

    [quote userid=“642242" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564014/tda4al-q1-tda4-can-i-use-the-ocmc-start-from-0x41c00000-512kb-memory/6028971 在 MCU 应用程序中、运行 copy_rehound_code_to_ocmc () 以将这些 ADAS 函数代码从 DDR 回收到 SBL 的 OCMC RAM。

    您在应用程序中的哪一个位置声称这一点?  

    此致

    Tarun Mukesh

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

    尊敬的  Tarun Mukesh:

    如果我了解整个序列、您将使用 SPL 引导序列、并且您的 MCU 应用程序需要使用 OCMC RAM 而不是 DDR 来使用它。 我是否正确

        是的、您是对的。 我想这么做。 但 MCU 应用 FIH_ADAS_freertos_mcu1_0_release_strip.xer5f 的大小为 1.874KB。 它更大。  ADAS 库函数也较大。 因此、我无法将 MCU 应用程序直接放入 0x41C82000 中。

    [引述 userid=“547969" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564014/tda4al-q1-tda4-can-i-use-the-ocmc-start-from-0x41c00000-512kb-memory/6031288

    您在应用程序中的哪一个位置声称这一点?  

    此致

    [/报价]

       我从 taskFxn() 任务调用函数代码。 随附的代码如下所示。

    int main(void)
    {
        TaskP_Params taskParams;
    
    #if defined ECHO_TEST_BTCM && defined FREERTOS && defined BUILD_MCU
        /* Relocate FreeRTOS Reset Vectors from BTCM*/
        void _freertosresetvectors (void);
        memcpy((void *)0x0, (void *)_freertosresetvectors, 0x40);
    #endif
    
    #if defined ECHO_TEST_BTCM && defined SAFERTOS && defined BUILD_MCU
        /* Relocate FreeRTOS Reset Vectors from BTCM*/
        void _axSafeRTOSresetVectors (void);
        memcpy((void *)0x0, (void *)_axSafeRTOSresetVectors, 0x40);
    #endif
    
        /*  This should be called before any other OS calls (like Task creation, OS_start, etc..) */
        OS_init();
    
        /* Initialize the task params */
        TaskP_Params_init(&taskParams);
        /* Set the task priority higher than the default priority (1) */
        taskParams.priority = 2;
        taskParams.stack        = gAppTskStackMain;
        taskParams.stacksize    = sizeof (gAppTskStackMain);
    
        Maintask = TaskP_create(&taskFxn, &taskParams);
        if(NULL == Maintask)
        {
            OS_stop();
        }
        OS_start();    /* does not return */
    
        return(0);
    }
    
    /*
     * ==========================================================================
     * OCMC Code Relocation Section
     * ==========================================================================
     */
    
    // 1. Declare the symbols created by the linker.
    //    These names MUST match the ones in your linker script.
    extern uint8_t _sbl_reclaim_code_load_start[];
    extern uint8_t _sbl_reclaim_code_load_end[];
    extern uint8_t _sbl_reclaim_code_run_start[];
    
    /**
     * @brief  Copies the .sbl_reclaim_code section from its temporary load address
     * in DDR to its final run address in the reclaimed OCMC RAM.
     */
    void copy_reclaimed_code_to_ocmc(void)
    {
        // Calculate the size of the code block to be moved
        uint32_t size = _sbl_reclaim_code_load_end - _sbl_reclaim_code_load_start;
    
        if (size > 0)
        {
        
    		UART_printf("\n start copy ENTRY... \n");
            // Perform the copy from the Load Address to the Run Address
            memcpy(_sbl_reclaim_code_run_start, _sbl_reclaim_code_load_start, size);
    		UART_printf("\n end copy ENTRY... \n");
    
            // CRITICAL STEP: Flush the processor's instruction pipeline.
            // This ensures that when the CPU calls the function, it fetches
            // the new instructions from their new location in OCMC, not old
            // instructions from its cache.
            __asm__ __volatile__ ("ISB");
        }
    }
    
    static void taskFxn(void* a0, void* a1)
    {
    	copy_reclaimed_code_to_ocmc();
    
        /* Initialize SCI Client - It must be called before board init */
        ipc_initSciclient();
    
        /* IPC Board Init should be done only for MCU1_0 for Linux,
         * unconditionally for RTOS
         */
    #if defined(A72_LINUX_OS) && defined(BUILD_MCU1_0)
        ipc_boardInit();
    #elif !defined(A72_LINUX_OS)
        ipc_boardInit();
    #endif
    
    #if (defined (BUILD_MCU1_0) && (defined (SOC_J721E) || defined (SOC_J7200) || defined (SOC_J721S2) || defined (SOC_J784S4) || defined (SOC_J742S2)))
        TaskP_Handle sciserverInitTask;
        TaskP_Params sciserverInitTaskParams;
    
        /* Initialize SCI Client Server */
        TaskP_Params_init(&sciserverInitTaskParams);
        sciserverInitTaskParams.name         = "SciServer";
        sciserverInitTaskParams.priority     = IPC_INIT_SCISERVER_TASK_PRI;
        sciserverInitTaskParams.stack        = gSciserverInitTskStack;
        sciserverInitTaskParams.stacksize    = sizeof (gSciserverInitTskStack);
    
        sciserverInitTask = TaskP_create(&Ipc_setupSciServer, &sciserverInitTaskParams);
        if(NULL == sciserverInitTask)
        {
            OS_stop();
        }
    #endif
    
    UART_printf("\n fih_ipc_setup ENTRY... \n");
    fih_ipc_setup();
    UART_printf("\n fih_ipc_setup EXIT... \n");
    
    //MCAN part
    UART_printf("\n mcan_main ENTRY... \n");
    main_mcan();
    UART_printf("\n mcan_main EXIT... \n");
    
    // ADAS part
    App_printf("\n adas_main ENTRY... \n");
    adas_main();
    initCanTasks();
    App_printf("\n adas_main EXIT... \n");
    
    // XCP part
    App_printf("\n main_xcp ENTRY... \n");
    main_xcp();
    App_printf("\n main_xcp EXIT... \n");
    }

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

    Hi Sheng-shun、

    感谢您提供详细信息。

    [引用 userid=“642242" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564014/tda4al-q1-tda4-can-i-use-the-ocmc-start-from-0x41c00000-512kb-memory/6031376 “]、但 MCU 应用 FIH_ADAS_FREERTOS_mcu1_0_RELEASE_strip.xer5f 大小 为 1.874KB。 它更大。

    是 1.874MB 吗? 我们只有 MCU_MSRAM_1MB0_RAM0x0041C00000 0x0041CFFFFF 1MB 可用。

    我从 taskFxn () task
    调用这个声明函数代码

    你能说一点以后,可能在 107 号线周围,并尝试一下吗?

    此致

    Tarun Mukesh

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

    尊敬的 Tarun Mukesh:

        我刚刚在 MCU0_1 链接器文件中放入以下代码。 导致 SPL 将被卡住。  

        在链接器文件下方、尝试将 ADAS 函数文本代码放入 0x41C00000 中。 但会使启动失败。 我还在 MCU 应用程序中进行了一些登录。 MCU 应用程序似乎无法启动。 那么我的问题是如何将 MCU 应用.text 代码放入 0x41C00000 中呢?

    MEMORY
    {
        OCMC_SBL_RECLAIM (RWIX) : origin=0x41C00000, length=0x80000
    }
    
    SECTIONS
    {
        /* --- New Section for Reclaimed SBL OCMC Code --- */
        .sbl_reclaim_code : LOAD_START(_sbl_reclaim_code_load_start),
        LOAD_END(_sbl_reclaim_code_load_end),
        RUN_START(_sbl_reclaim_code_run_start)
        {
            /* List all ADAS library functions you want to move here */
            *(.text.HIN_FUNC_step)
            *(.text.INP_FUNC_step)
            /* This wildcard is critical - it moves all the necessary "glue" code */
            *(.tramp.*)
        } > OCMC_SBL_RECLAIM AT > __CORE_DDR_SPACE /* <<< THIS IS THE ONLY CHANGE */
    }

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

    您好:

    无需为此使用任何 API。 您可以创建一个分区并使用它。

    例如:您可以参考 PDK /packages/ti/drv/sciclient/examples/sciserver_testapp/linker_r5_freertos_release.lds 中提供的 sciserver 测试应用链接器文件

    在本例中、我们将.bss 段放置在您提到的同一存储器中。

     .bss       :{*(.bss.devgroup*)} align (4)  > sbl_used_occm_ram

    SBL_USED_OCMC_RAM       :origin = 0x41C00000、length = 0x30000

    但正如我上面说过的、这里的问题是这样的

    是 1.874MB 吗? 我们只有 MCU_MSRAM_1MB0_RAM0x0041C00000 0x0041CFFFFF 1MB 可用。

    此致

    Tarun Mukesh