0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

玩转先楫HPM6000系列双核(下)

先楫半导体HPMicro 2023-05-15 10:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在《玩转MCU双核(上)》文章里,我们给大家介绍了先楫HPM6000系列双核的特性、使用方法以及工程编译与调试。本文紧接上篇内容,给大家详细阐述双核的通信方式、资源分配以及双核应用eRPC架构。如果大家在练手过程中,有其他的建议和想法,欢迎给我们留言互动。

a720ccd0-f0a6-11ed-ba01-dac502259ad0.png

双核的通信方式

Communication

HPM双核通信方式有那些?这里列举如下:

A. 通信外设通信

如enet/uart/spi/can/i2c/gpio等等。Core0和Core1可通过通信外设相互之间发送消息来通信。

( 注意:此方案会浪费对应的通讯外设,且需要硬件上支持。)


B. 共享内存RAM通信

Core0和Core1通过访问同一片内存RAM来达到通信。如:一个核写,另一个和读。

共享RAM要点

1. 双核下的共享RAM区域地址及大小必须相同。

2. 为防止CPU cache的影响,共享的RAM区域在双核下均要设置为nocache区域或者在访问前后强制刷新cache。

注意:如果设置为nocache区域,core0和core1中均要调用初始化PMP。


例如:

HPM-SDK双核例程下,双核linker文件中,均已分配了SHARE_RAM区域。

Core0 linker文件中的SHARE_RAM区域分配:

a7c7e9c0-f0a6-11ed-ba01-dac502259ad0.png

Core1 linker文件中的SHARE_RAM区域分配:

a7dc43fc-f0a6-11ed-ba01-dac502259ad0.png

工程中定义共享RAM区域,并访问读写。

Core0工程下设定nocache区域,并初始化PMP。

Core1工程下同样设定为nocache区域,并初始化PMP。

如下:

Core0工程

a7f64914-f0a6-11ed-ba01-dac502259ad0.png

Core1工程

a809da6a-f0a6-11ed-ba01-dac502259ad0.png

通过debug调试,在core1中打断点,core1中写共享区域。

通过串口发送数据,在core0中读取共享区域。

运行结果如下:

a81d794e-f0a6-11ed-ba01-dac502259ad0.png

从运行结果看,core1中写入的共享区域的数据和core0中读取的共享区域的数据是一致的。

C. 通信信箱MBX通信

HPM支持独有的通信信箱MBX来进行处理器核间通信。主要特性如下:

● 支持 2 个寄存器访问接口

● 每个接口支持 TX FIFO 和 RX FIFO

● 支持标志位反映 TX FIFO 和 RX FIFO 状态

● 支持生成中断

双核MBX通信,参考HPM-SDK例程drivers/mbx。

(注意:当然也支持读写Flash来通信,考虑到并发读写Flash带来的异常,此通信方案不推荐使用。)

在这里,推荐大家结合B和C方案,通过MBX做双核间的消息传递,通过共享RAM的方式来达到大数据的通信。


当然通过双核通信来实现双核间的同步和互斥。例如:通过MBX通信,实现类似OS互斥锁和信号量的功能。

双核的资源分配

Resources


HPM双核资源,除了以下资源是Core0和Core1各自私有的,其余资源均需要合理分配。

● CPU 自身的指令/数据本地存储器 ILM / DLM 为私有

● FGPIO 为私有

● 平台中断控制器 PLIC 为私有

● 软件中断控制器 PLICSW 为私有

● 机器定时器 MCHTMR 为私有

A:双核Flash 资源分配要点

防止Core0和Core1并发同时访问同一个flash。例如:结合MBX通信,实现互斥锁来避免并发访问。并且考虑到flash_xip(非xip的除外) 片上运行,同时应在访问flash前后,禁止和使能全局中断。

B:双核RAM 资源分配要点

1. 除了共享ram区域和各自私有的ILM/DLM区域。其余sram和sdram在core0和core1的分配中不可重叠,避免出现未知数据错误。

2. Core0和Core1共享RAM区域的分配,地址及大小必须相同。

C:双核访问同一外设要点

通常应该避免双核访问同一个外设。如果有需求要同时访问同一外设,需要注意以下几点:

1. 禁止双核均初始化同一外设。如:Core0已经初始化相关外设,Core1无需再次初始化。

2. 防止Core0和Core1并发操作同一外设。例如:结合MBX通信,实现双核互斥锁来防止并发操作。

D:双核使能同一外设中断要点

由于双核Core0/Core1各自的PLIC平台中断控制器是私有的,如果双核均使能了同一个外设中断,需注意以下几点:

1. 禁止双核均初始化同一外设。如:Core0已经初始化相关外设,Core1无需再次初始化。

2. 双核各自的私有PLIC中均要使能当前中断。如:Core0的PLIC中使能了IRQn_GPIO0_Z中断,Core1的PLIC中同样也要使能IRQn_GPIO0_Z中断。

3. 禁止双核外设中断处理接口中均清除中断标识位。如:Core0中清除了当前外设中断标识位,Core1中无需再次清除。如下:

a83bdd30-f0a6-11ed-ba01-dac502259ad0.pnga859c822-f0a6-11ed-ba01-dac502259ad0.png

E:双核异常要点

由于HPM双核是两个独立的CPU,是主从架构。

当双核出现异常情况,需要注意以下几点:

1. 其中一个核出现异常(crash)但未重启,另一个核仍能正常运行,不受影响。

2. Core0异常重启,Core1也会随之重启。

主从架构,Core0为主,Core1为从。当复位发生时,系统总是由Core0启动,而Core1处于待机状态,需要Core0装载启动Core1。

3. Core1异常重启,Core0仍正常运行,不受影响。

推荐结合看门狗WDG来合理处理双核异常情况。

双核应用eRPC架构

eRPC Structure

eRPC(Embeded Remote Procedure Call) 是一个简单的、易用的、高效的远程调用框架。

RPC是一种机制,Client端通过简单的本地函数调用,就能使用Server端提供的服务。对于Client端而言,使用远程服务就像调用应用程序中内置的库函数一样。

当Client端调用远程函数时,该函数的标识(identifier)和函数的参数(parameters)将被序列化到字节流中,此字节流通过传输层的通信通道(IPC、TCP/IP、UART、SPI等)传至Server端。Server端收到字节流数据后,解析函数参数并根据标识选择调用的服务函数。若函数有返回值,则Server端将返回值序列化并发送回Client端。


以下是RPC架构框图(此图仅显示一个传输方向,省略了来自Server端的回复)。

a870d31e-f0a6-11ed-ba01-dac502259ad0.png

对应多核(MultiCore)应用,通过RPMsg-Lite是作为传输层;对于多芯片(MultiProcessor)应用,通过UART、SPI、TCP/IP等作为传输层信号通道。

HPM6000系列双核应用,将使用RPmsg-Lite作为传输层。

RPMsg-Lite(Remote Processor Messaging Lite)是ePRC的传输层,RPMsg协议定义了一个标准化的二进制接口,用于在多核系统中内核之间的通信。

RPMsg协议的分层模型如下:

a882ac06-f0a6-11ed-ba01-dac502259ad0.png

它是实现eRPC的关键部分,采用的数据通讯方式为共享内存和消息通知。

详细介绍参考GitHub官方网站:

https://github.com/EmbeddedRPC/erpc

https://github.com/nxp-mcuxpresso/rpmsg-lite

HPM-SDK已完成了eRPC的移植,采用RPmsg-Lite作为数据传输层,采用MBX作为事件通知。

例程:hpm_sdk\samples\multicore\erpc

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18604

    浏览量

    386610
  • 先楫半导体
    +关注

    关注

    12

    文章

    270

    浏览量

    3131
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    芯片赋能HPM生态灵巧手二次开发,工业控制/实验室原型速落地

    搭载半导体高性能MCU芯片的HPM生态灵巧手开发平台,凭借RISC-V、600MHz高算力与EtherCAT实时通信模块,实现微秒级
    的头像 发表于 12-02 10:01 100次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>芯片赋能<b class='flag-5'>HPM</b>生态灵巧手二次开发,工业控制/实验室原型速落地

    半导体高性能MCU入驻立创商城,国产芯势力再添新动能

    半导体(HPMicro)宣布其全系列高性能MCU芯片正式上架立创商城(LCSC),标志着国产高端MCU在供应链渠道与生态服务方面迈上新台阶,国产芯势力再添新动能。
    的头像 发表于 07-31 08:32 897次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体高性能MCU入驻立创商城,国产芯势力再添新动能

    半导体HPM6E8Y:实时控制芯片驱动的机器人关节“芯”时代

    及产品总监费振东带来了一款实时控制芯片驱动——HPM6E8Y。     据费振东介绍,半导体HPM6E8Y系列高性能MCU芯片为机器人关
    发表于 05-13 11:50 1595次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>HPM</b>6E8Y:<b class='flag-5'>先</b><b class='flag-5'>楫</b>实时控制芯片驱动的机器人关节“芯”时代

    重磅更新 | 半导体HPM_APPS v1.9.0发布

    重磅更新 | 半导体HPM_APPS v1.9.0发布
    的头像 发表于 05-13 11:29 1338次阅读
    重磅更新 | <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>HPM</b>_APPS v1.9.0发布

    【强势上新】HPM5E00:EtherCAT运动控制MCU,半导体再拓工业总线产品新版图

    2025年5月6日 上海 |高性能微控制器及嵌入式解决方案提供商“上海半导体科技有限公司”(半导体,HPMicro)正式发布 新一代EtherCAT运动控制MCU——
    发表于 05-07 14:07 967次阅读
    【强势上新】<b class='flag-5'>HPM</b>5E00:EtherCAT运动控制MCU,<b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体再拓工业总线产品新版图

    【强势上新】HPM5E00:EtherCAT运动控制MCU,半导体再拓工业总线产品新版图

    2025年5月6日上海|高性能微控制器及嵌入式解决方案提供商“上海半导体科技有限公司”(半导体,HPMicro)正式发布新一代EtherCAT运动控制MCU——
    的头像 发表于 05-06 11:09 976次阅读
    【强势上新】<b class='flag-5'>HPM</b>5E00:EtherCAT运动控制MCU,<b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体再拓工业总线产品新版图

    600MHz RISC-V 加持!HPM6P00重新定义国产高性能混合信号MCU

    6P00 系列,聚焦工业自动化、智能电源及精密伺服控制领域。作为该系列的旗舰产品HPM6P81内置 RISC-V ,主频高达 600 M
    发表于 03-25 11:19 1234次阅读
    600MHz RISC-V <b class='flag-5'>双</b><b class='flag-5'>核</b>加持!<b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>6P00重新定义国产高性能混合信号MCU

    600MHz RISC-V 加持!HPM6P00重新定义国产高性能混合信号MCU

    2025年3月25日,上海——高性能微控制器及嵌入式解决方案提供商上海半导体科技有限公司(半导体,HPMicro)正式发布全新一代高性能混合信号微控制器——
    的头像 发表于 03-25 08:50 1039次阅读
    600MHz RISC-V <b class='flag-5'>双</b><b class='flag-5'>核</b>加持!<b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>6P00重新定义国产高性能混合信号MCU

    半导体HPM6E8Y荣获芯片创新奖,彰显卓越产品力!

    科技有限公司(半导体,HPMicro)于年初在CES2025发布的新品——HPM6E8Y微控制器芯片,凭借其高性能、高集成度、小封装及简单易用等优势荣获“芯片创新奖”
    的头像 发表于 03-04 13:36 1178次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>HPM</b>6E8Y荣获芯片创新奖,彰显卓越产品力!

    半导体HPM_SDK v1.7.0发布!这些更新你值得关注!

    半导体HPM_SDK v1.7.0发布!这些更新你值得关注!
    的头像 发表于 02-08 13:42 1036次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>HPM</b>_SDK v1.7.0发布!这些更新你值得关注!

    半导体hpm_apps v1.7.0上线

    半导体hpm_apps v1.7.0上线
    的头像 发表于 02-08 13:41 1285次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>hpm</b>_apps v1.7.0上线

    半导体HPM_SDK v1.8.0 发布

    半导体HPM_SDK v1.8.0 发布
    的头像 发表于 02-08 13:39 1002次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体<b class='flag-5'>HPM</b>_SDK v1.8.0 发布

    半导体发布高性能HPM6E8Y系列MCU

    近日,上海半导体科技有限公司,国内领先的高性能微控制器及嵌入式解决方案提供商,推出了专为机器人运动与控制设计的高性能MCU产品——HPM6E8Y系列。这一创新产品为当前蓬勃发展的机
    的头像 发表于 01-23 15:40 1166次阅读

    半导体HPM OBOX 离线烧录器正式发布

    在量产烧录领域,一个令人振奋的消息传来——终于可以摆脱上位机的束缚,实现更加高效、便捷的量产流程!这一切得益于半导体推出的离线OBOX,一款基于HPM 5361 MCU开发的创新离线烧录器
    的头像 发表于 01-16 15:29 1082次阅读

    CES 2025:半导体发布高性能机器人MCU

    半导体科技有限公司(半导体,HPMicro)闪耀登场。该公司发布了一款专注于机器人运动与控制的高性能MCU产品——HPM6E8Y系列,为当前火热的机器人市场注入了新的活力。
    的头像 发表于 01-09 16:14 1303次阅读