微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 双核实时系统的架构方法

双核实时系统的架构方法

时间:02-26 来源:3721RD 点击:

1.引言

嵌入式技术的不断成熟以及业界对工业设备小型化、个性化需求的不断提高促使越来越多的工业设备控制系统采用嵌入式系统设计。工业设备控制最大的特点是对系统实时性要求较高。而通常情况下,控制过程中常常同时存在多种不同实时性要求的任务,不同任务对处理器时间的占用比例也有较大差异,因此如何有效的满足并提高系统实时性能成为研究的重点。

传统的控制系统单核处理器架构是主流,除了通过提升处理器主频来提高系统的响应速度,还通过使用抢占式实时操作系统,引入多线程,改进系统任务调度策略等软件方法来进一步提高系统性能。但随着应用不断复杂,控制精度要求不断提高,有限的系统资源成为控制系统性能提升的最大瓶颈。

针对单CPU架构的局限性,多处理器系统的研究应用逐渐增多,文献[1]采用FPGA和多个DSP互连的并行处理结构,实现了一个高速数据传输带宽、低延迟且计算性能强大的实时图像处理系统。文献[2]提出了一种基于ARM的双CPU协调运动控制系统的设计方法。文献[3]采用ARM+DSP的主从式双CPU结构设计实现了嵌入式运动控制器。文献[4]分析比较了几种典型的嵌入式双核通信接口,并介绍了典型接口的设计要点。文献[5]在单核嵌入式操作系统构架的基础上,提出一种基于对称通信的双核处理器嵌入式操作系统构架,解决了异构双核处理器中的通信效率和共享内存的利用问题。随着双核架构应用的不断推广,同时双核微处理器技术逐渐成熟,如何设计稳定高效的系统软件架构成为当前研究的重点。本文以F28M35双核系统为例,介绍了一种以IPC通信机制为核心,基于共享内存的双核软件架构方法。

2.双核间通信的系统结构

完成双核间的数据通信,除了数据传输介质--共享内存外,还需要系统提供一套双核间交互的信号机制。通常该信号机制中同时包括中断信号和非中断信号。利用该信号机制,结合共享内存,可设计出各种灵活的通信方式。

从通信信号的角度,通信方式可分为轮询方式和中断方式。由于轮询方式使内核处于忙等的状态,因此应尽量避免使用,该方式多用于双核之间事件需严格按照一定的顺序执行的情况,例如系统启动时双核之间的初始化交互。

从携带数据量的角度讲,双核之间可仅仅利用信号机制完成通信,双方协定默认的操作;另外,也是大部分时候的通信方式,双方通过共享内存交换数据,该方式在设计时,将共享内存划分为两种属性的内存区,分别用于两个方向的数据传递。一种内存允许一个内核进行读写操作,而允许另外一个内核进行只读操作,另一种则方向相反。例如,A内核欲向B内核发送数据时,先将数据写入A核空间内的共享内存区,然后向B核发送信号,B核收到信号后从该方向的共享内存区将数据取出,并回复A核,完成一次数据通信。

通信协议和通信接口封装是双核通信应该重点考虑的环节。简单的数据通信,双方可以直接发送数据,默认双方已经知道数据的含义以及数据应该放置的内存地址。但是随着系统逐渐复杂,代码量逐渐增加,无协议的数据通信给编程和理解都带来很大问题,降低系统的可扩展性能。在设计中双核通信可以采用和系统外设相同的通信协议,例如串口通信使用的Modbus协议,这样可以重复利用协议解析函数,同时也可提高可移植性。另外可根据实际需要自行定义适用的通信协议,或者将通用的通信协议做适当的修改以更适应共享内存大数据量的数据通信。关于通信接口的软件封装通常定义数据发送函数、数据接收函数、协议解析函数等,原则是接口应尽量精简,最大程度降低双核间的耦合度。

3.双核间的数据共享机制

双核间实现数据共享主要有两种策略,一种是将共享数据直接存储于共享内存中,双核均可对其进行操作。该方法关键要解决对共享内存互斥访问的问题。关于双口RAM互斥访问的方法大致有两种:

1)硬件判优,系统通过存储器冲突仲裁单元向两个内核提供共享内存访问冲突标志,当双核同时对相同地址的RAM进行存取时,仲裁单元促发相应忙信号,设计中可利用该信号插入等待时间,避免访问冲突。

2)信号量机制,系统提供独立于双核的信号量管理单元。该方式又叫令牌判优方式,每个令牌可对应指定地址,指定长度的共享内存段。双核按照协定的规则交替获得令牌,进而操作相应的共享内存段。当双核同时申请同一个令牌时,信号量管理单元裁定谁先占用。设计中可通过在访问内存前先申请对应的令牌实现双核对共享内存区的互斥访问。

另一种实现数据共享的策略是在双核各自本地定义相同的数据作为共享数据,按照写后及时更新的原则,利用中断方式通过双核间的数据通信实现数据同步。这种方法适用于共享数据满足一定条件时,即该共享数据对于其中一个内核是只读的,否则,由于双核独立运行,运行进度几乎没有制约,若出现双核均改写共享数据的话,无法保证数据的有效性。

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

网站地图

Top