一种片上双核系统及其虚拟串口通信方法与流程

文档序号:16879942发布日期:2019-02-15 22:01阅读:456来源:国知局
一种片上双核系统及其虚拟串口通信方法与流程

本发明涉及一种片上双核系统及其通信方法,属于计算机技术领域。



背景技术:

嵌入式技术的不断成熟以及业界对工业设备小型化、个性化需求的不断提高促使越来越多的工业设备控制系统采用嵌入式系统设计。工业设备控制最大的特点是对系统实时性要求较高。而通常情况下,控制过程中常常同时存在多种不同实时性要求的任务,不同任务对处理器时间的占用比例也有较大差异,因此如何有效的满足并提高系统实时性能成为研究的重点。随着双核架构的不断推广,双核技术的不断成熟,如何设计出稳定高效的系统架构越来越受到重视,而双核间的数据通信对于系统的稳定和系统的实时性起着至关重要的作用。

现有技术中有一种片上双核系统,一个核上跑linux操作系统,另一个核上裸跑。linux操作系统下对内存的访问可以通过/dev/mem来实现,首先打开/dev/mem节点,然后调用mmap()函数将要操作的内存地址映射到一个虚拟地址addr,通过addr这个地址实现对特定内存的访问。此种方式下,linux每隔一定的时间间隔轮询接收标志,当接收标志有效说明有数据接收,将接收的数据读出,调用协议层处理函数,然后将标志置为无效,完成一次接收过程。发送数据时,先将数据写入共享内存中,然后置位发送有效,等待对方接收数据。而裸跑的核处理就更简单,直接轮询接收标志,有数据就将数据读出,调用协议层处理函数;发送数据时,先将数据写入共享内存,再置位数据有效标志,如此循环,完成双核之间的数据通信。共享内存分为两块,分别对应双核的收和发通道,数据有效标志和数据长度是另外两个需要维护的数据结构,发送的一方只置位有效标志,接收的一方则负责清零,如此来保持数据的同步。其不足之处在于:双核之间数据传输速度慢,无法保证数据的实时性;数据吞吐量有限,数据传输效率低下;从程序可移植的角度看,使用/dev/mem的方式进行内存访问需要重新设计程序架构以满足上层协议的处理,不便于程序移植。



技术实现要素:

本发明的目的在于克服现有技术中的不足,提供一种片上双核系统及其虚拟串口通信方法,能够提高数据传输的实时性及数据传输效率。

为达到上述目的,本发明是采用下述技术方案实现的:

第一方面,本发明提供了一种片上双核系统的通信方法,包括各自配置有虚拟串口的两个处理器核,所述方法包括:

预发送数据的处理器核通过虚拟串口向另一处理器核发送中断信号,另一处理器核通过响应中断实现两处理器核之间的数据传输。

结合第一方面,进一步的,两处理器核通过共享内存实现数据传输,具体包括:

将共享内存配置为数据接收通道和数据发送通道;

将待发送数据的数据长度和数据本身写入数据发送通道,通过数据接收通道读取数据长度和数据本身。

结合第一方面,进一步的,处理器核将所接收的数据交由nepadm协议层函数处理。

结合第一方面,进一步的,为处理器核配置虚拟串口的方法包括:

在dts文件中根据需求配置虚拟串口参数,在/dev/目录下产生的名为ttyocm0的节点即为所配置的虚拟串口。

结合第一方面,进一步的,所述中断信号为硬件中断信号。

第二方面,本发明提供了一种片上双核系统,包括两个处理器核和共享内存;两所述处理器核各自配置有虚拟串口;所述共享内存配置有数据接收通道和数据发送通道;

预发送数据的处理器核通过虚拟串口向另一处理器核发送中断信号,另一处理器核响应中断,通过共享内存的数据发送通道发送数据,通过数据接收通道接收数据。

综上所述,本发明提供的片上双核系统及其通信方法,将共享内存的读写封装于串口的收发操作中,能够提高数据的吞吐量和数据传输速度,从而提高数据传输效率;双核之间通过发送硬件中断信号实现数据传送,增强了片上双核系统间的数据响应的实时性;虚拟串口采用软件运行实现,无需占用硬件资源,且作为设备节点存在,方便应用层的调用,有助于应用层程序的可移植性,缩短产品开发周期。

附图说明

图1是本发明实施例提供的一种片上双核系统的结构示意图。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

如图1所示,是本发明实施例提供的一种片上双核系统的结构示意图,包括两个处理器核和共享内存。共享内存配置有数据接收通道和数据发送通道。两处理器核各自配置有虚拟串口。

为处理器核配置虚拟窗口的方法具体如下:

linux系统下,在dts文件中加入虚拟串口的配置

linux系统会在/dev/目录下产生名为ttyocm0的节点,该节点即为虚拟串口。两处理器核就是通过该虚拟串口实现数据通信的。

共享内存被分成两块,一块对应ttyocm0节点的接收通道,一块对应ttyocm0节点的发送通道。

当裸跑处理器核需要发送数据时,接收中断由裸跑处理器核触发,linux系统响应中断,在共享内存的接收通道中读取接收数据的长度和数据本身,交由协议层处理。当linux系统需要发送数据时,把数据长度和数据本身写入共享内存的发送通道,然后触发裸跑处理器核的中断。从应用层的角度,数据的收发是被封装成串口的send和receive函数,处理起来和其他串口没有区别,保证了函数接口的一致性,便于程序的移植。最后接收完成的数据交由nepadm协议层函数处理,完成了双核之间的数据通信。

在裸跑的核一侧,处理方式和linux系统下类似,当中断被触发,程序进入虚拟串口的接收处理函数,将数据接收缓存,交由上层协议函数处理。

本发明提供的片上双核系统的通信方法,是采用上述片上双核系统实现的,具体包括:预发送数据的处理器核通过虚拟串口向另一处理器核发送中断信号,另一处理器核通过响应中断实现两处理器核之间的数据传输。

两处理器核通过共享内存实现数据传输,具体包括:

将共享内存配置为数据接收通道和数据发送通道;

将待发送数据的数据长度和数据本身写入数据发送通道,通过数据接收通道读取数据长度和数据本身。

处理器核将所接收的数据交由nepadm协议层函数处理。

为处理器核配置虚拟串口的方法包括:

在dts文件中根据需求配置虚拟串口参数,在/dev/目录下产生的名为ttyocm0的节点即为所配置的虚拟串口。

所述中断信号为硬件中断信号。

本发明将cpu对共享内存的读写封装于串口的收发操作之中,首先,内存访问速度快,提高了数据传输的速度,而且使用硬件中断,增强了片上双核系统之间的数据响应的实时性;其次,串口在linux系统下作为设备节点存在,方便应用层的调用,有助于应用层程序的可移植性,缩短产品开发的时间;最后,虚拟串口完全使用软件运行,无需占用硬件资源,非常适用于资源有限的嵌入式应用领域。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1