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.

[参考译文] AM2432-AM243X:在 MCU-PLUS-SDK 上同时使用内核0和内核1的示例

Guru**** 2465890 points
Other Parts Discussed in Thread: AM2432, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1469741/mcu-plus-sdk-am243x-example-for-using-core-0-and-core-1-simultaneously-on-am2432

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:AM2432SysConfig

工具与软件:

您好!

我已经使用了 TI 的 tcp_server_example 并为 am2432编写了一个应用   内核0  使用 mcu_plus_sdk_am243x_08_06_00_43。

我想在上添加另一个应用程序 内核1 .

我看到有一个 ipc_notify_echo 文件夹

文件夹中有 r5fss0-0_freertos r5fss1-0_nortos - projects 。

它们是否是激活两个内核和它们之间的 IPC 的良好起点?

请推荐一个来自 CCS-12.5 Resource Explorer 的示例。

谢谢!

Eli

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

    Eli、您好。IPC_notify 示例是一个很好的起点。  

    AM243x MCU+ SDK:IPC Notify Echo

    您可以从"examples\drivers\ipc\ipc_notify_echo\ipc_notify_echo.c"中选择要使用的内核

    谢谢!

    Paula.

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

    谢谢 Paula、我会尝试。

    此致、

    Eli

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

    尊敬的 Paula:

    链接器有问题:

    构建目标:"ipc_notify_echo_am243x-evm_r5fss1-0_nortos_ti-arm-clang.out"
    调用:ARM 链接器
    "c-/ti/ti-cgt-armllvm_3.2.2.LTS/bin/tiarmclang.exe /ti/mcu_plus_sdk_am243x_10_01_00_32/source/kernel/nortos/lib /ti/mcu_plus_sdk_am243x_10_01_00_32/source/board/lib -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -mlittle-endian -mthumb -Dos_AM243X -D_debug_=1 -g -wall -wl-diag-variable-type-note-at-end /ti/mcu_plus_sdk_am243x_10_01_00_32/source/drivers/lib /ti/ti-cgt-armllvm_3.2.2.LTS/lib /syscfg/ti_dpl_config.o /syscfg/ti_drivers_config.o /syscfg/ti_drivers_open_close.o /syscfg/ti_pinmux_config.o /syscfg/ti_power_clock_config.o /syscfg/ti_board_config.o /syscfg/ti_board_open_close.o /syscfg/ti_enet_config.o /syscfg/ti_enet_open_close.o /syscfg/ti_enet_soc.o /syscfg/ti_enet_lwipif.o -lnortos.am243x.r5f.ti-arm-clang.debug.lib -ldrivers.am243x.r5f.ti-arm-clang.debug.lib -lboard.am243x.r5f.ti-arm-clang.debug.lib
    Makefile:150:目标"ipc_notify_echo_am243x-evm_r5fss1-0_nortos_ti-arm-clang.out"的配方失败
    "SYSCFG/linker.cmd"、第128行:警告#10097:未找到存储器范围:第0页上的 LOG_SHM_MEM
    "syscfg/linker.cmd"、第127行:错误#10265:没有可用于放置".bss.log_shared_mem"的有效存储器范围
    "syscfg/linker.cmd"、第127行:错误#10099-D:程序无法装入可用存储器、或该段包含的调用站点需要无法为此段生成蹦床函数。 针对".bss.log_shared_mem"大小0x3800运行对齐定位失败
    "SYSCFG/linker.cmd"、第125行:警告#10097:未找到存储器范围:第0页上的 USER_SHM_MEM
    "syscfg/linker.cmd"、第124行:错误#10099-D:程序无法放入可用存储器中、或者该段包含的调用站点需要无法为此段生成蹦床函数。 对".bss.user_shared_mem" size 0"段运行对齐放置失败
    "SYSCFG/linker.cmd"、第131行:警告#10097:未找到存储器范围:第0页上的 RTOS_NORTOS_IPC_SHM_MEM
    "syscfg/linker.cmd"、第130行:错误#10099-D:程序无法放入可用存储器中、或者该段包含的调用站点需要无法为此段生成蹦床函数。 针对".bss.ipc_vring_mem"大小0运行包含对齐的放置失败
    错误#10010:链接期间遇到错误;未构建"ipc_notify_echo_am243x-evm_r5fss1-0_nortos_ti-arm-clang.out"
    tiarmclang:错误:tiarmlnk 命令失败、出现退出代码1 (使用-v 查看调用)
    gmake[1]:***[ipc_notify_echo_am243x-evm_r5fss1-0_nortos_ti-arm-clang.out]错误1.
    gmake:***[All]错误2.
    Makefile:146:目标"全部"的配方失败

    ****构建完成****

    我无法在打开工程时看到使用了哪个 limker.cmd。

    请引导我了解解决方案。

    谢谢!

    此致、

    Eli

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

    尊敬的 Paula:

    我已经在 SysConfig 中添加了缺失的存储器区域、现在工程会正确构建。

    在"已更新linker.cmd"中、我看到以下行:
    -e_vectors /* This is the entry of the application, _vector MUST be placed at starting address 0x0 */

    如果我尝试激活 Core-1、矢量表应该放置在0x0、还是应该放置在其他位置以避免干扰 Core-0?

    谢谢!

    此致、
    Eli

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

    尊敬的 Paula:

    我连接到 Core-0并运行 ipc_notify_echo_am243x-evm_r5fss0-0_freertos_ti-arm-clang

    然后、我尝试连接到 Core 1 (加载 ipc_notify_echo_am243x-evm_r5fss1-0_nortos_ti-arm-clang) 总是得到错误:170.

    请帮助,我完全迷路了。

    谢谢!

    此致、

    Eli

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

    您好 Eli、您是否使用了"project CCS system"?、如果不使用、这可能就是您在上文报告的问题

    • 使用 CCS 工程进行编译时、请导入系统 CCS 工程并使用 CCS 工程菜单进行编译(请参阅 将 SDK 与 CCS 工程一同使用)。 这也将构建所有相关的 CPU 项目

    谢谢!

    Paula.

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

    尊敬的 Paula:

    是的、我做过、两个项目构建正确。  

    现在的问题是、运行"0-0" Core-0工程后、无法连接到 Core-1 (错误:170)以加载1-0工程。

    正确的方式或示例是什么?

    谢谢!

    此致、

    Eli

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

    Eli、只是需要确认一下。 运行 OOB"ipc_notify_echo"演示即可、您会得到如下所示的类似日志?

    [IPC notify echo]消息交换由主内核启动!!!
    [M4f0-0] 0.249022s :[IPC notify echo]远程内核正在等待来自主内核的消息...!!!
    [r5f0-1] 0.473040s:[IPC notify echo]远程核心正在等待来自主核心的消息...!!!
    [r5f0-1] 2.645696s:[IPC notify echo]远程内核已回显所有消息!!
    [r5f0-1] 2.645712s:所有测试均已通过!
    [r5F1-0] 0.366043s :[IPC notify echo]远程内核正在等待来自主内核的消息...!!!
    [r5F1-0] 2.538699s:[IPC notify echo]远程内核已回显所有消息!!
    [r5F1-0] 2.538715s:所有测试均已通过!
    [r5F1-1] 0.296028s :[IPC notify echo]远程内核正在等待来自主内核的消息...!!!
    [r5F1-1] 2.468686s :[IPC notify echo]远程内核已回显所有消息!!
    [r5F1-1] 2.468702s :所有测试都通过了!!
    [IPC notify echo]主内核从4个远程内核接收到的所有回传消息!!
    [IPC notify echo]消息发送到每个内核= 1000000
    [IPC notify echo]远程内核数= 4
    [m4f0-0] 4.246567s:[IPC notify echo]远程内核已回显所有消息!!
    [M4f0-0] 4.246586s:所有测试均已通过!
    如果 OOB 不起作用、您能向我们发送日志吗? 另一个主题详细介绍了如何加载/运行此演示以应对 (+) AM6442的需求:ipc_notify_echo -处理器论坛-处理器- TI E2E 支持论坛
    如果 OOB 可以正常工作、但在您修改代码后无法正常工作、您能否将修改内容发送到此处?
    谢谢!
    Paula.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Paula:

    我的工作方式就是这样

    我在启动至 RAM 期间加载"Hello World"例程、然后在终端上看到"Hello World"。

    2.附加到 Core-0、然后->运行->加载  ipc_notify_echo 输出文件(调试程序)

    3.按播放

    我看到对于调试器、 ipc_notify_echo 运行、但没有任何信息显示出来、并且我无法连接到 Core-1

    我是不是做错了?

    谢谢!

    此致、

    Eli

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

    您好、我建议您在   运行刷写的"Hello world"后、刷写"default_sbl_null.cfg" AM243x MCU+ SDK:EVM 设置、而不是加载

    之后、您可以连接两个内核、加载它们各自的*。out 并运行。

    顺便说一下、您对"ipc_notify_echo"进行了哪些修改?

    如果这可行、或者仍然存在问题、请告诉我。

    谢谢!

    Paula.

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

    你好、Paula、

    我已更改 linker.cmd

    /*这是在 main ()中运行的代码所使用的堆栈。
    *在 NORTOS 的情况下,
    *-这意味着 ISR 之外的所有代码都使用这个堆栈
    *对于 FreeRTOS
    *-这意味着在 main ()中调用 vTaskStartScheduler ()之前的所有代码
    *使用此堆栈。
    *-在 vTaskStartScheduler ()之后,在 FreeRTOS 中创建的每个任务都有自己的堆栈
    */

    -- stack_size=16384.
    /*这是 NORTOS 和 FreeRTOS 中 malloc () API 的堆大小
    *这也是 FreeRTOS 中由 pvPortMalloc 使用的堆
    */
    -- heap_size=32768
    -e_vectors /*这是应用程序的条目、_vector 必须放置在起始地址0x0 */

    /*这是 R5处于 IRQ 模式时堆栈的大小
    *在 NORTOS 中,
    *-这里中断嵌套被启用
    *-这是注册为 IRQ 类型的 ISR 使用的堆栈
    *在 FreeRTOS 中,
    *-这里中断嵌套被启用
    *-这是在接收到 IRQ 时初始使用的堆栈
    *-但随后会将模式切换为 SVC 模式,并将 SVC 栈用于所有用户 ISR 回调
    *-因此、在 FreeRTOS 中、IRQ 堆栈大小更小、SVC 堆栈大小更大
    */
    _IRQ_STACK_SIZE = 256;
    /*这是 R5处于 IRQ 模式时堆栈的大小
    *-在 NORTOS 和 FreeRTOS 中,对 FIQ 都禁用嵌套
    */
    _FIQ_STACK_SIZE = 256;
    __SVC_STACK_SIZE = 4096;/*这是 R5处于 SVC 模式时栈的大小*/
    __ABORT_STACK_SIZE = 256;/*这是 R5处于中止模式时栈的大小*/
    __defined_stack_size = 256;/*这是 R5处于 UNDEF 模式时的栈大小*/

    部分中)

    .vectors :{
    }> R5F_VECS , palign (8)


    组:{
    .text.hwi:{
    } palign (8)
    .text.cache :{
    } palign (8)
    .text.mpu:{
    } palign (8)
    .text.boot:{
    } palign (8)
    .text:abort :{
    } palign (8)
    }> MSRAM


    组:{
    .text :{
    } palign (8)
    .rodata :{
    } palign (8)
    }> MSRAM


    组:{
    .data :{
    } palign (8)
    }> MSRAM


    组:{
    .bss :{
    } palign (8)
    RUN_START (__BSS_START)
    RUN_END (__BSS_END)
    .sysmem :{
    } palign (8)
    .stack :{
    } palign (8)
    }> MSRAM


    组:{
    .irqstack:{
    . =。 +_IRQ_STACK_SIZE;
    }对齐(8)
    RUN_START (_IRQ_STACK_START)
    RUN_END (__IRQ_STACK_END)
    .fiqstack:{
    . =。 +_FIQ_STACK_SIZE;
    }对齐(8)
    RUN_START (_FIQ_STACK_START)
    RUN_END (_FIQ_STACK_END)
    svcstack:{
    . =。 +__SVC_STACK_SIZE;
    }对齐(8)
    RUN_START (__SVC_STACK_START)
    RUN_END (__SVC_STACK_END)
    .abortstack:{
    . =。 +___ abort_stack_size;
    }对齐(8)
    RUN_START (__ABORT_STACK_START)
    RUN_END (__ABORT_STACK_END)
    .undefinedstack:{
    . =。 +__undefined_stack_size;
    }对齐(8)
    RUN_START (__未定义_STACK_START)
    RUN_END (__undefined_stack_end)
    }> MSRAM


    组:{
    .arm.exidx:{
    } palign (8)
    init_array :{
    } palign (8)
    fini_array :{
    } palign (8)
    }> MSRAM

    .bss.user_shared_mem (NoLoad):{
    }> USER_SHM_MEM

    .bss.log_shared_mem (NoLoad):{
    }> LOG_SHM_MEM

    bss.ipc_vring_mem (NoLoad):{
    }> RTOS_NORTOS_IPC_SHM_MEM

    .bss.nocache (NoLoad):{
    }> non_cache_mem


    }


    小程序

    R5F_VECS : origin = 0x8000 , length = 0x40
    R5F_TCMA:origin = 0x8040、length = 0x7FC0
    r5F_TCMB0:origin = 0x41018000、length = 0x8000
    Non_cache_mem : origin = 0x70070000 , length = 0x8000
    MSRAM : origin = 0x70120000 , length = 0x40000
    USER_SHM_MEM:origin = 0x701D0000、length = 0x4000
    LOG_SHM_MEM:origin = 0x701D4000、length = 0x4000
    RTOS_NORTOS_IPC_SHM_MEM:origin = 0x701D8000、length = 0x8000
    Flash : origin = 0x60200000 , length = 0x80000

    /*对于在该内核中未定义但由其他内核与当前内核共享的存储器区域*/


    }

    是这样吗?

    谢谢!

    此致、

    Eli

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

    尊敬的 Paula:

    我已使用您的建议-"default_sbl_null.cfg" 、现在我使用调试器在两个内核上运行两个"Hello World" 、并使用一些共享变量。  非常感谢!

    我的下一步是在两个内核上使用"TCP 服务器"示例。 第一个内核将使用"phy"、而第二个内核应在共享 RAM 中具有第一个通过 TCP 连接。

    如何最好的开始? 是否有这样的例子?

    如何操作 TCP 将数据包放在共享 RAM 上而不是通过"phy"发送?

    谢谢!

    此致、

    Eli

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

    您好、Eli、很高兴您能使用双核 IPC 示例。 关于使用 IPC 而不是"phy"的"TCP 服务器"、据我所知、我们没有任何示例。 但是、让我询问几位同事、看看我们是否可以分享任何意见/建议。

    谢谢!

    Paula.

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

    尊敬的 Paula:

    感谢你的帮助。

    是的,请问他们。

    我 希望在修改 TCP 以通过共享 RAM 在内核1上运行时能得到一些额外的帮助。

    我是否应该提出一个新的 问题?

    再次感谢、

    此致、

    Eli

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

    您好、Eli、好的、请打开一个新的 E2E

    谢谢!

    Paula.

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

    尊敬的 Paula:

    谢谢!

    此致、

    Eli