请选择 进入手机版 | 继续访问电脑版
查看: 2555|回复: 2

LPC5500“核心”技术——双核介绍

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31998
    最后登录
    2024-4-9
    发表于 2019-4-30 12:49:06 | 显示全部楼层 |阅读模式
    作者:宁能


    相信最近各位小伙伴,一定被我们的新品LPC5500铺天盖地的“硬核”技术震撼,特别是在涉及安全加密方面。

    这次小编奉上与LPC5500“核心”相关的“硬核”技术——双核,以飨读者。

    诚然,MCU双核已不是什么新鲜玩意儿。之前,我们的LPC4300和LPC54110系列都支持双核。但是,LPC5500博采了这两个系列所长,使得双核更简单实用。

    不管是双核小白还是高手,都可以通过本篇对LPC5500双核获得基本全面的了解,我们其他官方渠道也提供了大量的有关双核应用的资料,比如大量SDK例程和应用笔记,有需要可以进一步研究应用双核到产品中,大力提升产品性价比。

    篇幅所限,就不走过堂地介绍LPC5500了。咱们直奔主题。


    -———————————— LPC5500双核基本架构 -————————————

    双核并不高深,所谓双核就是两个CPU——中央处理单元,也就是一个MCU芯片内置了两个CPU。

    和之前支持双核的LPC系列一样,针对于MCU嵌入式应用,LPC5500依然采用简单的非对称架构,即一个主CPU,一个从CPU,这类似于有些产品采用主MCU和从MCU的设计。只是支持双核的MCU,是共享此MCU所有的存储器和外设接口资源。

    共享就带来竞争的问题,处理不当则影响性能。LPC5500有配套的系统架构来使得此共享可转化为并行的,从而尽量避免竞争,来保证性能不被影响。

    应对竞争的架构上的考虑主要有两条:一是内部AHB总线是多层矩阵架构;二是分离出多块独立的SRAM。如下图:

    11.jpg
    图中,红色框是多层AHB矩阵总线,绿色框是多块分立的存储块,主CPU和从CPU的代码数据可存放在不同存储块中,它们和图中左下角大量外设接口并行的挂在矩阵总线上。

    这样,蓝色框中的双核CPU0和CPU1,可以同时并行地对存储块和外设接口进行访问,即程序可以同时运行。如此,则双核的威力能够得以充分的发挥。

    至此,我们初步认识了LPC5500双核,了解了其基本框架。但是,这好比我们只是远远的看见了一个人,大概知道其身形,他具体容貌怎样的呢…


    -———————————— LPC5500双核面貌特征 -————————————

    上面提到,LPC5500双核分为主从,主CPU命名为CPU0,从CPU命名为CPU1。它们都是基于ARM Cortex-M33的。
    它们的基本配置构成如下:
    ◆ CPU0 (r0p3版):
    -频率最高可达100MHz
    -TrustZone、DSP、浮点单元和存储保护单元(MPU)
    -内置嵌套向量中断控制器(NVIC)
    -串行线调试接口(SWD)
    -系统嘀嗒定时器(System tick timer)
    ◆ CPU1 (r0p3版):
    -频率最高可达100 MHz
    -内置嵌套向量中断控制器(NVIC)
    -串行线调试接口(SWD)
    -系统嘀嗒定时器(System tick timer)

    显然,作为从的CPU1比主CPU0少了TrustZone、浮点单元(FPU)等,这使得主CPU0天然地计算处理能力更强。
    但是赋予主CPU0这些亮点,不是让它做颜值担当,而是任务担当的。这让我们自然想到双核的典型应用——相信这也是大家很关心的。


    -———————————— LPC5500双核典型应用 -————————————

    LPC5500的双核典型应用,即基本应用思路,与之前LPC4300和LPC54110一样。
    主CPU用来做处理计算任务(比如算法),从CPU负责外设实时控制和数据传输。
    这样,能充分利用双核达到更好性能。参见下图:
    12.jpg

    哦,LPC5500双核很“酷”的样子,有点“喜欢”上它了,,,可是,相爱容易相处难啊?!
    不要担心,难,那是因为不懂得如何“相处”。
    接下来,让我们来聊聊如何和LPC5500双核“相处”——双核的实现,这主要涉及到以下内容:双核启动;双核通讯;双核调试。


    -———————————— 双核启动 ————————————

    对于单核MCU,上电启动过程简单明了,如单身狗的生活简单自由,该干啥干啥,不能指望也无需考虑他人。

    两人世界就需要协商着行动了,LPC5500采取了和最早LPC4300系列类似的双核启动机制,即出厂默认并固定一个核为主,另一个为从,不能更改,“专制”却简单易用。

    随后的LPC54110系列则实行“民主”机制,两个核可以轮流坐庄,即用户可以在启动过程中选择其中之一为主核,这样提供了灵活性,但略微复杂。
    为了简单起见,如今新的LPC5500双核使用固定的主从模式。

    LPC5500上电时,自然地按照主从,主核CPU0如单核一样直接启动,从核CPU1则hold住不动——这由硬件自动完成。

    主核启动后负责初始化运行环境,然后配置好从核的启动地址(即从核代码映像运行的起始地址),最后释放从核CPU1——这些由软件完成。这时,主从双核就分别如同单核一样同时运行它们各自的代码了。

    要让双核“和谐”运作,关键是要让两个核的代码映像存储和运行空间独立互不干扰(参见前面关于多层总线矩阵和多块存储块的介绍),这点具体实现方法是灵活的,比单核来得复杂些。这里就不具体展开,有需要的可找相关资料学习,比如,我们有篇应用笔记通过测试双核coremark分数,提供了一种达到最好性能的实现方法。不关心这些细节也不用担心,NXP已经提供了相关SDK库可直接借用。


    -———————————— 双核通讯 -————————————

    当两个核都运行起来后,它们可以像两个不同行业的人,各自做着自己的本职工作,默默为社会贡献自己的力量,老死不相往来。但大多数应用中,两个核除了各司其职,还需要互相通讯,协同工作。

    LPC5500提供了一套简单的硬件通讯机制,叫内部CPU邮箱通讯机制,可以适用于大多数嵌入式系统双核的通讯应用。

    这套机制从LPC54110系列继承而来,最早的LPC4300系列双核通讯几乎完全靠软件来实现,占用资源,且给使用带来不少难度。目前这套机制,简单易用,但不死板,留给用户一定灵活发挥空间。

    它主要提供了两种寄存器,一种是32位的CPU中断寄存器,两个CPU都能访问它,32位中只要有一位不为零,就能产生中断请求,且每一位可代表一个不同状况,比如事件或者状态,这完全可由用户自己定义。

    这样CPU间就可相互实时通讯了,比如一个CPU完成某项任务,写入一个非0值到此寄存器,发出中断信号,另一CPU中断后读取此值,来决定后续工作。

    通讯的一大需求就是同步,这就需要另一个叫做互斥寄存器的来完成,它只有第0位(bit0)可用,复位后默认值为1。当读此寄存器时,读出数值的同时这位自动被清0;当写它时,这位将再次被置为1。

    此正是互斥量的特性,以用于实现CPU间对任何共享资源的握手同步。例如,当一个CPU要访问某共享资源时,先读此寄存器,若读到的是1,表示资源可用,同时1被自动清为0;若读到0,则表示资源被占用;在CPU用完共享资源时,即写此寄存器,使其置1,表示释放了资源为可用。
    这套邮箱机制简单框架图如下:
    13.jpg

    顺便提下,我们在LPC5500 SDK包中还提供了一套开源多核软件开发包,包括库和大量例程。通过库的API提供了支持用户实现复杂的多核通讯机制。
    这套多核SDK的库代码包含在LPC5500SDK包以下路径:
    <SDK installationdirectory>\middleware\multicore
    例程则在:
    <SDK installationdirectory>\boards\lpcxpresso55s69\multicore_examples


    -———————————— 双核调试 -————————————

    LPC5500的双核都支持SWD调试模式,就调试的级别来说,它们是”平等”的。
    实际实现时,每个核一般有自己的工程,它们各自的调试和单核无异。
    但在两个核有关联时(即前面提到的双核启动和双核通讯过程),调试要有所注意,关键就是要真正理解了这两个过程机制,依据这两个机制的特点进行调试,则基本没什么问题。
    比如,启动时,是先调试主核,等它释放了从核,从核才能调试。具体的操作,有篇应用笔记,专门很详细地介绍了如何在MCUXpresso下调试LPC5500双核。

    LPC5500的双核特点你Get到了吗?如想了解更多内容,请访问恩智浦官网:
    http://www.nxp.com/lpc5500



    文章出处:恩智浦MCU加油站

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    7 天前
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92608
    最后登录
    2024-4-9
    发表于 2019-5-3 10:22:37 | 显示全部楼层
    很有意思~~
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2020-10-14 18:24:53 | 显示全部楼层
    LPC55系统的双核操作在看完此篇文章后就显得简单了。
    谢谢管管的分享了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-16 18:22 , Processed in 0.136449 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表