一种基于共享内存的数据存取方法及装置制造方法及图纸

技术编号:9642297 阅读:112 留言:0更新日期:2014-02-07 00:42
本发明专利技术涉及数据处理领域,尤其涉及一种基于共享内存的数据存取方法及装置,该方法包括:第一处理器向预先设定的共享内存区域申请第一数据缓冲区;第一处理器将需要发送的数据保存在所述第一数据缓冲区,并向第二处理器发送中断指令;第二处理器收到所述中断指令后,判断第一数据缓冲区内是否存在需要读取的数据,若是,则读取所述需要读取的数据,本发明专利技术通过将共享内存区域分区的方法,使每个分区只对应一个处理器的写数据和另一个处理器的读数据,避免了两个处理器在同一区域写数据和读数据,解决了双处理器之间的冲突问题,有效提高了数据的存取速度,通过中断指令进行数据通知,提高了数据存取的实时性。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及数据处理领域,尤其涉及一种基于共享内存的数据存取方法及装置,该方法包括:第一处理器向预先设定的共享内存区域申请第一数据缓冲区;第一处理器将需要发送的数据保存在所述第一数据缓冲区,并向第二处理器发送中断指令;第二处理器收到所述中断指令后,判断第一数据缓冲区内是否存在需要读取的数据,若是,则读取所述需要读取的数据,本专利技术通过将共享内存区域分区的方法,使每个分区只对应一个处理器的写数据和另一个处理器的读数据,避免了两个处理器在同一区域写数据和读数据,解决了双处理器之间的冲突问题,有效提高了数据的存取速度,通过中断指令进行数据通知,提高了数据存取的实时性。【专利说明】一种基于共享内存的数据存取方法及装置
本专利技术涉及数据处理领域,尤其涉及一种基于共享内存的数据存取方法及装置。
技术介绍
现有的技术中,处理器间进行数据交互的主要方法是串行通信模块(UART,USB等),这种通信模式基本上能满足大多应用要求,但是在大数据量和时间要求高的应用中无法满足设计需求,而共享内存技术,是一种在多核处理器之间进行数据交互的通信方式之一,使多核之间能够协同完成某一特定的功能而设计,存取数据快,实时性强,但多核之间共享内存数据存取是发生访问冲突是多数工程师软件应用开发中的难题,现有的共享内存数据交互技术,没有一套统一的方法,各软件工程师在设计此类应用的时候,经常出现存取数据错误,内存访问越界,严重的引起系统崩溃,通常的实现方法是:A、B处理器申请一块共用的内存作为数据交互缓冲区,A处理器在该内存区域内存放新的数据并设置标志C,B处理器检测该内存区域是否存在数据,并试图取走数据和修改标志C,但这个时候如果A处理器又接收到新的数据需要放在该内存区域,在B处理器还没有修改标志或取走数据时,就造成了数据的读写冲突,在实时性的要求上比较高,B处理器本应该收到正确的两包数据,实际上它只取到了一包错误的数据,在现有方法中,处理器需要不断检测是否接收到新的数据,使用频率过高。
技术实现思路
本专利技术的目的在于提出一种基于共享内存的数据存取方法及装置,能够提高数据存取的实时性、稳定性和速度。为达此目的,本专利技术采用以下技术方案:一种基于共享内存的数据存取方法,包括:第一处理器向预先设定的共享内存区域申请第一数据缓冲区,用以第一处理器向第二处理器发送数据;所述第一处理器将需要发送的数据保存在所述第一数据缓冲区,并向第二处理器发送中断指令;所述第二处理器收到所述中断指令后,判断所述第一数据缓冲区内是否存在需要读取的数据,若是,则读取所述需要读取的数据。其中,所述第一数据缓冲区包括读数据指针区域、写数据指针区域、数据起始存放区域、保留区域、有效数据区域、无效数据区域和缓冲区结束地址。其中,所述第一处理器将需要发送的数据保存在所述第一数据缓冲区包括:初始化所述读数据指针区域和写数据指针区域,给读数据指针和写数据指针赋予相等的初始值;将所述需要发送的数据保存在所述数据起始存放区域及有效数据区域,并将包含所述需要发送的数据的数据包的首四个字节作为所述数据包的真实长度;根据所述数据包的真实长度修改所述写数据指针。其中,所述判断所述第一数据缓冲区内是否存在需要读取的数据具体为:比较写数据指针是否等于读数据指针,如果不相等,则说明存在需要读取的数据。其中,读取所述需要读取的数据之后还包括:第二处理器根据已被取走的数据的长度,修改所述读数据指针。其中,将所述需要发送的数据保存在所述数据起始存放区域及有效数据区域还包括:当所述有效数据区域的数据部分或全部被取走后,被取走数据的这部分区域将变为变化数据区域;当无效数据区域不足以保存所述数据包时,将数据包内未保存的余下数据保存在所述变化数据区域;当所述变化数据区域不足以保存所述数据包时,加大所述第一数据缓冲区的空间和/或增大第一处理器发送数据的时间间隔。其中,所述共享内存区域还包括第二数据缓冲区,所述第二数据缓冲区用于保存所述第二处理器向所述第一处理器发送的数据。一种基于共享内存的数据存取装置,包括:申请单元,用于第一处理器向预先设定的共享内存区域申请第一数据缓冲区,用以第一处理器向第二处理器发送数据;保存单元,用于所述第一处理器将需要发送的数据保存在所述第一数据缓冲区,并向第二处理器发送中断指令;读取单元,用于所述第二处理器收到所述中断指令后,判断所述第一数据缓冲区内是否存在需要读取的数据,若是,则读取所述需要读取的数据。其中,所述第一数据缓冲区包括读数据指针区域、写数据指针区域、数据起始存放区域、保留区域、有效数据区域、无效数据区域和缓冲区结束地址。其中,所述保存单元包括:初始化单元,用于初始化所述读数据指针区域和写数据指针区域,给读数据指针和写数据指针赋予相等的初始值;保存定长单元,用于将所述需要发送的数据保存在所述数据起始存放区域及有效数据区域,并将包含所述需要发送的数据的数据包的首四个字节作为所述数据包的真实长度;修改指针单元,用于根据所述数据包的真实长度修改所述写数据指针;中断单元,用于发送中断指令。其中,所述判断所述第一数据缓冲区内是否存在需要读取的数据具体为:比较写数据指针是否等于读数据指针,如果不相等,则说明存在需要读取的数据。其中,读取所述需要读取的数据之后还包括:第二处理器根据已被取走的数据的长度,修改所述读数据指针。其中,将所述需要发送的数据保存在所述数据起始存放区域及有效数据区域还包括:当所述有效数据区域的数据部分或全部被取走后,被取走数据的这部分区域将变为变化数据区域;当无效数据区域不足以保存所述数据包时,将数据包内未保存的余下数据保存在所述变化数据区域;当所述变化数据区域不足以保存所述数据包时,加大所述第一数据缓冲区的空间和/或增大第一处理器发送数据的时间间隔。其中,所述共享内存区域还包括第二数据缓冲区,所述第二数据缓冲区用于保存所述第二处理器向所述第一处理器发送的数据。本专利技术的有益效果为:一种基于共享内存的数据存取方法,包括:第一处理器向预先设定的共享内存区域申请第一数据缓冲区,用以第一处理器向第二处理器发送数据;所述第一处理器将需要发送的数据保存在所述第一数据缓冲区,并向第二处理器发送中断指令;所述第二处理器收到所述中断指令后,判断所述第一数据缓冲区内是否存在需要读取的数据,若是,则读取所述需要读取的数据,本专利技术通过将共享内存区域分区的方法,使每个分区只对应一个处理器的写数据和另一个处理器的读数据,避免了两个处理器在同一区域写数据和读数据,解决了双处理器之间的冲突问题,有效提高了数据的存取速度,通过中断指令进行数据通知,提高了数据存取的实时性。进一步地,以写数据的处理器修改写数据指针,以读数据的处理器修改读数据指针,有效提高了数据的稳定性。【专利附图】【附图说明】图1是本专利技术实施例一提供的基于共享内存的数据存取方法流程图。图2是本专利技术实施例一提供的共享内存区域结构示意图。图3是本专利技术实施例一提供的第一数据缓冲区结构示意图。图4是本专利技术实施例一提供的第一处理器将需要发送的数据保存在所述第一数据缓冲区的方法流程图。图5是本专利技术实施例二提供的基于共享内存的数据存取装置结构示意图。图6是本专利技术实施例二提供的保存单元结构示意图。【具体实施方式】下面结合图1-图6本文档来自技高网
...

【技术保护点】
一种基于共享内存的数据存取方法,其特征在于,包括:第一处理器向预先设定的共享内存区域申请第一数据缓冲区,用以第一处理器向第二处理器发送数据;所述第一处理器将需要发送的数据保存在所述第一数据缓冲区,并向第二处理器发送中断指令;所述第二处理器收到所述中断指令后,判断所述第一数据缓冲区内是否存在需要读取的数据,若是,则读取所述需要读取的数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:李红京余世均
申请(专利权)人:深圳市道通科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1