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

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

3天内不再提示

LPC5500双核基本架构!LPC5500双核面貌特征

UtFs_Zlgmcu7890 来源:lp 2019-03-26 16:30 次阅读

这次奉上与LPC5500“核心”相关的“硬核”技术——双核,以飨读者。诚然,MCU双核已不是什么新鲜玩意儿。但是,LPC5500博采了LPC4300和LPC54110这两个系列所长,使得双核更简单实用。

LPC5500双核基本架构

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

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

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

应对竞争架构上的考虑,如下图所示,主要有两条:

内部AHB总线是多层矩阵架构;

分离出多块独立的SRAM

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

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

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

LPC5500双核面貌特征

上面提到,LPC5500双核分为主从,主CPU命名为CPU0,从CPU命名为CPU1。它们都是基于ARM Cortex-M33的。

它们的基本配置构成如下:

1、CPU0 (r0p3版):

频率最高可达100MHz

TrustZone、DSP、浮点单元和存储保护单元(MPU)

内置嵌套向量中断控制器(NVIC)

串行线调试接口(SWD)

系统嘀嗒定时器(System tick timer)

内置嵌套向量中断控制器(NVIC)

串行线调试接口(SWD)

系统嘀嗒定时器(System tick timer)

2、CPU1 (r0p3版):

频率最高可达100 MHz

内置嵌套向量中断控制器(NVIC)

串行线调试接口(SWD)

系统嘀嗒定时器(System tick timer)

显然,作为从的CPU1比主CPU0少了TrustZone、浮点单元(FPU)等,这使得主CPU0天然地计算处理能力更强。

但是赋予主CPU0这些亮点,不是让它做颜值担当,而是任务担当的。这让我们自然想到双核的典型应用——相信这也是大家很关心的。

LPC5500双核典型应用

LPC5500的双核典型应用,即基本应用思路,与之前LPC4300和LPC54110一样。

主CPU用来做处理计算任务(比如算法),从CPU负责外设实时控制和数据传输。

这样,能充分利用双核达到更好性能。参见下图:

哦,LPC5500双核很“酷”的样子,有点“喜欢”上它了,可是,相爱容易相处难啊?!

不要担心,难,那是因为不懂得如何“相处”。

接下来,让我们来聊聊如何和LPC5500双核“相处”——双核的实现,这主要涉及到以下内容:双核启动;双核通讯;双核调试。

1双核启动

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

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

随后的LPC54110系列则实行“民主”机制,两个核可以轮流坐庄,即用户可以在启动过程中选择其中之一为主核,这样提供了灵活性,但略微复杂。

为了简单起见,如今新的LPC5500双核使用固定的主从模式。

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

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

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

2双核通讯

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

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,表示释放了资源为可用。

这套邮箱机制简单框架图如下:

顺便提下,我们在LPC5500 SDK包中还提供了一套开源多核软件开发包,包括库和大量例程。通过库的API提供了支持用户实现复杂的多核通讯机制。

这套多核SDK的库代码包含在LPC5500SDK包以下路径:

middlewaremulticore

例程则在:

oardslpcxpresso55s69multicore_examples

3双核调试

LPC5500的双核都支持SWD调试模式,就调试的级别来说,它们是”平等”的。实际实现时,每个核一般有自己的工程,它们各自的调试和单核无异。

但在两个核有关联时(即前面提到的双核启动和双核通讯过程),调试要有所注意,关键就是要真正理解了这两个过程机制,依据这两个机制的特点进行调试,则基本没什么问题。

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

    关注

    146

    文章

    16996

    浏览量

    350321
  • 存储器
    +关注

    关注

    38

    文章

    7453

    浏览量

    163608
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10826

    浏览量

    211160

原文标题:【硬核干货】LPC5500——简便易用的双核技术

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

收藏 人收藏

    评论

    相关推荐

    基于恩智浦LPC5500系列MCU的OKDO E1开发板详解

    OKDO E1 开发板作为恩智浦 LPC5500 系列开发平台中独特的一员,以其小巧的尺寸,高易用性收获了许多用户的高度关注。开发板仅 2 枚硬币大小,却集成了 LPC55S69 主芯片
    发表于 11-13 15:20 1557次阅读

    基于Cortex M33的LPC5500系列MCU主要功能特性介绍

    (内置闪存)进行实时执行,并通过Arm TrustZone-M保护资产。此外,LPC5500系列MCU共有7个可扩展的家族,提供多种封装和内存选项,还具有全面的MCUXpresso软件和工具生态系统
    发表于 11-13 16:06 2359次阅读
    基于Cortex M33的<b class='flag-5'>LPC5500</b>系列MCU主要功能特性介绍

    恩智浦LPC55S16 MCU获得了PSA 2级和SESIP 2级保证认证

    LPC55S16 MCU属于恩智浦EdgeVerse™计算和安全产品组合,是基于Arm® Cortex®-M33内核的通用LPC5500 MCU系列的成员。
    发表于 11-21 09:28 1742次阅读

    非对称MCU基础知识及间通信

    来源 网络本文从对比两颗分立MCU与单芯片MCU开始(以LPC4350为例),展开介绍了非对称MCU的基础知识与重要特点。接下来,重
    发表于 05-15 14:26

    LPC55S69 Flashmagic不编程的原因?

    到我的主板。(这也为我的 PCB 供电)我遵循了 flashmagic 的设置:选择 USB LPC55S69。十六进制文件。设备 LPC55S69(USB、LPC5500)接口
    发表于 03-15 07:54

    LPC55S69的性能技巧是什么?

    我 以为 我看到了关于优化 LPC55S6x 系列性能的应用说明,但我现在找不到任何东西。有这样的资源吗?我主要寻找的是有关内存争用的信息。我看到两个内核共享相同的闪存接口。从闪存运行的两个内核可以实现什么样的性能?第二个核
    发表于 03-31 09:07

    LPC5500 Flash过度编程是否可行?

    我了解 LPC5500 处理器具有带 ECC 的闪存,页面大小为 512 字节,用于擦除和编程。 在 LPC55S6x/LPC55S2x 用户手册的 5.7.13 ECC 部分,我发现它说 由于
    发表于 06-01 06:56

    奔腾再升级 E5500即将面世

    奔腾再升级 E5500即将面世 Nehalem
    发表于 12-24 08:55 977次阅读

    非对称MCU基础知识及间通信

    本文从对比两颗分立MCU与单芯片MCU开始(以LPC4350为例),展开介绍了非对称MCU的基础知识与重要特点。接下来,重点介绍了
    发表于 03-26 15:31 3626次阅读
    非对称<b class='flag-5'>双</b><b class='flag-5'>核</b>MCU基础知识及<b class='flag-5'>核</b>间通信

    中文版LPC43xx系列ARM微控制器数据手册

    中文版LPC43xx系列ARM微控制器数据手册
    发表于 10-09 09:29 0次下载
    中文版<b class='flag-5'>LPC</b>43xx系列ARM<b class='flag-5'>双</b><b class='flag-5'>核</b>微控制器数据手册

    安全、高能、低耗!NXP正式开始量产LPC551x

    LPC551x/S1x作为系列中的入门级产品,提供出色的能效比的同时,依然继承了LPC5500系列的诸多安全功能。使其除了在物联网应用中游刃有余,还能扩展应用到消费类及工业自动化领域。
    的头像 发表于 06-03 11:25 4806次阅读

    如何使用IAR从零开始搭建LPC5500核工程

    , 让一个 150MHz 的 Cortex-M33 内核闲在那里实在浪费, 并且在一些对性能有要求的情况下, 使用同时工作确实可以简化应用的开发过程, 并提升系统整体的工作效率 。 笔者最近就遇到了这么一个案例 。
    发表于 11-25 09:45 9次下载

    串口DMA发送+中断接收的例程

    LPC5500的SDK中提供了非常丰富的串口例程(如下图所示)。
    的头像 发表于 07-21 09:14 2688次阅读

    关于LPC5500中USB的FRAME_INT中断

    关于LPC5500中USB的FRAME_INT中断
    的头像 发表于 10-30 18:26 506次阅读
    关于<b class='flag-5'>LPC5500</b>中USB的FRAME_INT中断

    LPC5500_SDK例程:串口DMA发送+中断接收

    LPC5500_SDK例程:串口DMA发送+中断接收
    的头像 发表于 10-30 16:59 1042次阅读
    <b class='flag-5'>LPC5500</b>_SDK例程:串口DMA发送+中断接收