微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 非对称双核MCU基础知识及核间通信

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

时间:04-06 来源:互联网 点击:

嵌入到M4的映像中了。M4在初始化期间,要把M0的映像拷贝到准备让M0执行的位置。由于M0固定从零地址开始取向量,M4还需要设置M0的地址映射,把映像的首地址设置成为M0的零地址。

值得一提的是,这种“主控带动协控”的设计哲学,也是被AMP普遍采用的。

调试时的细节:当我们使用调试仿真器连接MCU时,通常都会产生复位信号,但范围可仅限于内核,也可复位全片。在调试M0时,需设置复位范围仅包括M0,避免殃及正在运行的M4。另外,也需要编写适当的调试初始化脚本,以准备好内核的执行环境。这些工作繁琐,但具有高度的通用性,我们可以借鉴现有的脚本。

我们可以同时调试M4和M0:只需运行两个独立的IDE进程,分别打开相应的工程即可。经实践,至少在MDK+ULINK下可行。

核间任务分工

M0没有M4强大的处理能力,但是作为一个CPU,亦有完整的中断系统和基本的算术与数据传送能力,并且在LPC4350上,可以在高达204MHz的主频下运行。合理地分担一些任务给M0,才能利用双核设计的优势。接下来,我们讨论两种主要的任务分工模型。

处理高频中断——智能“DMA”:中断的响应是有额外开销的:既包括CPU的中断模型本身产生的硬件开销,也包括操作系统的中断管理产生的软件开销,当然,也还有中断服务程序本身执行的开销。当中断的频率很高时(比如:高达几十甚至几百kHz),中断的响应将对CPU时间产生不可忽略的额外开销。更重要的是,中断的响应是由硬件处理,并凌驾于任务管理之上的,这可以影响任何任务的执行而不论其优先级如何。DMA明显改善了这一状况。但是当DMA通道或总线分配不足,或者是设备不受DMA支持时,我们就可以让M0来响应这些高频的中断,合理组织数据缓冲区,而如同一个智能的DMA一样。

例如:在调光设备中,需要进行多达几十甚至上百路的AD采样来获取每路灯光的预期亮度,以及同样多的LED来指示实际输出的亮度。后者需要非常多的PWM,极可能已超出硬件PWM通道的数目。因此,在实现AD采样与软件PWM时,均需要快速的通道数据流处理与高频LED刷新,以保证PWM精度。这两者很容易导致高达几十kHz的中断请求,仅中断响应的额外开销就可占用一半以上的CPU时间。传统的做法是使用若干颗MCU来分摊并由主控轮询。在LPC4350下,则可由M0来处理这些任务。同样的例子也适用于PLC应用,它需要快速地刷新多路控制。

为弱计算操作提供额外的处理能力:M0的整体性能约是M4的72%,但对于弱计算操作(如:加减乘与逻辑运算,移位,以及简单的数据传送),并没有太多劣势。弱计算操作在程序中往往占一半以上的比例,尤其体现在驱动程序及一些通信协议栈上。合理地分配一部分弱计算操作任务给M0,可以有效提升整体的处理能力。这样,完成相同的任务只需更低的主频,而降低功耗,或者反过来,能够在有限的主频下完成需求更大的任务。

例如:在高精密工业运动控制中,对于电机的控制往往需要运算量很大的算法,同时又要处理如CAN、工业以太网,以及各种现场总线的通信。我们可以让M4来运行电机控制算法,而通信协议栈与驱动程序则由M0来完成。同样的例子也适用于嵌入式音频——由M4执行音频编解码与音效处理算法,而M0则负责音频总线、USB等事务。

本文小结

通过以上的介绍可以看出,相比传统的使用多颗MCU的方案,非对称双核MCU在性能、成本、功耗、生产等诸多环节都有明显的优势。核间通信稍显复杂,但作为基础设施可由底层系统软件来实现。在具体开发时,应根据实际问题合理分配任务,并且在初始化流程、内核鉴别以及调试上,需注意一些操作细节。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top