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

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

3天内不再提示

双核心之间如何互相协调

UtFs_Zlgmcu7890 来源:互联网 作者:佚名 2017-10-17 16:47 次阅读

随着汽车智能化的不断发展,汽车电子行业有着越来越大的市场。作为NXP在汽车电子上主推的控制器件,MPC系列高性能和高安全性MCU正在逐步提高自身的地位,发挥着更为显著的作用。本文以MPC5746R的实际应用为例,讲解双核心之间如何互相协调,共同发挥更大的性能。

MPC5746R采用双CPU核心机制,两个独立可编程的基于e200z425的内核0和内核1,每个内核主频最高可达200M。另外还有一个基于e200z424的安全内核用于和内核0同步运行,以确保程序运行时的可靠性。

MPC5746R的两个核心共享片内外设及内存单元。同时中断控制器可以为两个核心提供各自独立的控制单元,使中断请求可以根据用户设置而交给不同的核心处理。

用户可以为两个内核编写各自独立的程序,看上去就像一个系统运行了两个线程。事实也确实如此,两个内核并行以200M的速度执行用户为其各自编写的程序,处理着各种复杂的任务。但是有时候也会出现一些问题导致不愉快的事情发生。

可以举几个例子:

1) 某一时刻,内核1要往某个寄存器写数据来执行功能1,但不巧此时内核0也需要往这个寄存器写数据来执行功能0。同时写入冲突可能导致功能0和功能1都不能正常执行,这时应该何如避免。

2) 由于外设资源只有1份,假设用户设定让内核1初始化系统和资源,内核0需要在初始化完成后执行相关功能操作,那么内核0如何在第一时间内知道初始化已经完成。

3) 内核1和内核0合作处理复杂的算法,当内核0处理完了一部分算法之后想把处理结果交给内核1,这时候彼此独立的双核之间如何通信。通信时间如何节省。

其实芯片在设计的时候,早已考虑好了这些问题,并做出了相应的功能来保证双核之间的协调运作。基于以上的示例,我们需要了解一个重要的知识点叫做信号量,信号量是一种在进程之间作用资源保护和同步的机制。

MPC5746R提供了16路的硬件信号量供用户使用,用户可以写入处理器对应的号码以锁定某一路信号量并且只有锁定该信号的处理器能解锁该信号。这样就为处理器之间的资源访问保护及同步提供了硬件基础。

我们以具体的方法来解决上诉三个例子所面临的问题:

1) 内核在写入某个寄存器之前,先检测信号量是否锁定,如果锁定,等待信号解锁再进行操作,如果没有锁定,则先锁定一个信号量,等到操作完成后,再释放信号量,这样就不会出现共享资源的访问冲突。

2) 内核0需要等待内核1初始化完成之后才能进行功能操作,即与内核1之间进行同步。可以在内核1程序开始的时候,上锁信号量,等各项初始化完成之后,解锁信号量。而内核0则在程序开始的时候就等待该信号量的解锁,一旦解锁,就说明初始化完成,即完成同步操作,也就解决了上诉第二个问题。

3) 两个内核在通信的时候,最重要的一个问题是接收方如何随时准备好接收数据而不过多消耗CPU资源。在MPC5746R中,可以通过软中断解决。内核1 需要发送数据给内核0的时候,先配置好软件中断的优先级,然后将中断请求设置成内核0。在数据写入之后,触发中断,中断请求发送至内核0。而内核0只要写好相应的中断服务函数,就能在不过多消耗CPU资源的情况下,通过中断接收数据,完成内核间的通信。

需要注意的是,对于独立的双核之间通信数据的存取,MPC5746R并没有为此单独开辟一个空间。但是在实际应用中,一种可行的方法是灵活的使用各通信模块中,未使用的缓冲单元。例如CAN模块中,最多有96个数据缓冲结构,CAN通信的过程中并不一定都会使用,我们可以根据实际需要使用几个数据缓冲单元作为内核间数据传输的通道。需要发送数据的内核将数据写入指定的数据缓冲结构体,然后触发软件中断。接收一方在中断服务函数中将数据从数据缓冲结构体中读取出来。可以在缓冲结构体中设置一些标志位来判断读写是否成功。

以上就是双核之间资源保护,同步和通信的一些具体示例方法,当然方法并不是唯一的,希望读者在使用过程中能够举一反三,灵活运用,最终达到“双核交火,协同作战”的目的。

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

    关注

    68

    文章

    10825

    浏览量

    211145

原文标题:MPC5746R “双核交火,协同作战”

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    协调器和节点之间放置协调器能不能组网?

    假设这个协调器是一个黑客放置的,位置在原先协调器和节点之间。节点能否和原先的协调器组网?
    发表于 03-15 16:18

    请问在z-stack中,终端和终端能不能互相发送消息,通过协调器转发也可以?

    本帖最后由 一只耳朵怪 于 2018-5-31 15:53 编辑 你好,我想请问 下在z-stack中,终端和终端能不能互相发送消息,通过协调器转发也可以?还有协议栈中有实现终端与终端之间进行绑定的功能吗(例如:开关和灯进
    发表于 05-31 00:48

    【银杏科技ARM+FPGA双核心应用】STM32H7系列6——I2C

    `一、硬件平台二、实验简介 本实验基于ARM+FPGA超mini款iCore4T双核心板,一步一步带你利用STM32CubeMx工具完成对GPIP的配置,然后通过模拟I2C的形式,带你走进I2C时序
    发表于 03-27 08:45

    【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC

    `一、硬件平台二、实验简介本实验基于ARM+FPGA超mini款iCore4T双核心板,一步一步带你利用STM32CubeMx工具完成对ADC的配置,通过编写ADC采集驱动程序来完成对模拟信号的采集
    发表于 03-31 22:50

    【银杏科技ARM+FPGA双核心应用】STM32H7系列11——ADC_74IC

    `一、硬件平台二、实验简介本实验基于ARM+FPGA超mini款iCore4T双核心板,一步一步带你利用STM32CubeMx工具完成对ADC的配置及74HC4051控制IO的配置,编写
    发表于 04-02 09:41

    【银杏科技ARM+FPGA双核心应用】STM32H7系列13——SDRAM

    `一、硬件平台二、实验简介本实验基于ARM+FPGA超mini款iCore4T双核心板,核心板ARM挂有一片32MB SDRAM,可用于数据采集缓存,液晶显示缓存,代码执行等。该实验将带你一步一步
    发表于 04-06 22:08

    【银杏科技ARM+FPGA双核心应用】STM32H7系列15——SDIO

    `一、硬件平台二、实验简介本实验基于ARM+FPGA超mini款iCore4T双核心板,核心板SDIO总线挂有一个TF CARD,可以用于图片,字库,固件等文件的存储。本实验将带你一步一步利用
    发表于 04-08 20:05

    Intel双核心处理器

    Intel双核心处理器              目前Intel推出的双核心处理器有Pentium D和Pentium Extreme Edition,同时推出945/95
    发表于 12-17 17:00 622次阅读

    AMD双核心处理器

     AMD双核心处理器 AMD推出的双核心处理器分别是双核心的Opteron系列和全新的Athlon 64 X2系列处理器。其中Athlon 64 X2是用以抗衡Pentium D和Pentium Extreme
    发表于 12-17 17:06 307次阅读

    CPU双核心简介

    CPU双核心简介       &
    发表于 12-17 17:07 884次阅读

    CPU双核心类型有哪些?

    CPU双核心类型有哪些?         &nbs
    发表于 12-24 10:09 979次阅读

    Intel CEO确认双核心Atom上网本处理器

    Intel CEO确认双核心Atom上网本处理器 传闻多时的双核版Atom上网本处理器终于得到了Intel官方的证实,上网本也即将拥有两个物理核心
    发表于 04-15 10:12 846次阅读

    Altera在28nm FPGA中整合双核心ARM A9核心

    Altera公司日前推出采用 ARM 架构的 SoC FPGA 系列产品,在单芯片中整合了28nm Cyclone V 和 Arria V FPGA 架构、双核心 ARM Cortex-A9 MPcore 处理器、错误更正码(ECC)保护内存控制器、周边和高性能互联
    发表于 10-19 09:25 868次阅读

    联发科挥军双核心市场 6577本月发布

    亚洲手机晶片龙头联发科(2454 )首颗双核心晶片「MT6577」(指晶片代号)本月可望对外举行产品发表会,宣告进军双核心市场,带动7月智慧型手机晶片出货量明显放大。 「MT6577」不但
    发表于 06-02 09:16 2427次阅读

    微服务架构中的服务之间如何互相调用呢?

    在微服务架构中,需要调用很多服务才能完成一项功能。服务之间如何互相调用就变成微服务架构中的一个关键问题。
    的头像 发表于 01-31 09:46 2164次阅读