公开/公告号CN103218327A
专利类型发明专利
公开/公告日2013-07-24
原文格式PDF
申请/专利权人 惠州市德赛西威汽车电子有限公司;
申请/专利号CN201310154550.4
申请日2013-04-28
分类号G06F13/378;
代理机构广州粤高专利商标代理有限公司;
代理人任海燕
地址 516006 广东省惠州市仲恺高新区和畅五路西103号
入库时间 2024-02-19 19:37:31
法律状态公告日
法律状态信息
法律状态
2016-08-10
授权
授权
2015-12-09
著录事项变更 IPC(主分类):G06F13/378 变更前: 变更后: 申请日:20130428
著录事项变更
2013-08-21
实质审查的生效 IPC(主分类):G06F13/378 申请日:20130428
实质审查的生效
2013-07-24
公开
公开
技术领域
本发明涉及一种嵌入式系统多进程交互共用SPI通讯总线的方法。
背景技术
在现有技术中,交互式多进程嵌入式多媒体系统的SPI通信多采用如图1的系统设计方案: A系统是个没有显示设备的嵌入式系统,主要实现如Tuner芯片的驱动和管理、CD或者DVD机芯的驱动和管理、电源检测和管理、倒车的检测和管理等功能。而这些功能如果需要显示出来,则需要另外一个基于Arm的多进程多媒体嵌入式B系统来完成,嵌入式B系统需要,除了完成自己的任务之外,还需要显示和处理A系统的所有功能的显示任务。A系统和B系统之间的通信只有一条SPI 通信总线,也就是A系统和B系统之间交互的数据,全部只能够通过唯一的一条SPI 通信总线。传统的设计是因为A,B两个系统只有一条SPI通信总线,则B系统里面只能够有一个进程可以和A 系统进行通信。所以B系统的设计则往往是创建一个独立的通信进程和A系统进行通信, B系统的通信进程收到A系统的消息之后,广播给其它需要使用这条消息的进程,这种方法也能够达到一条消息同时给导航系统多个进程共享的目的。但是这种设计存在明显的设计缺陷,主要的缺点是下面几个:1、只有B系统的SPI通信进程可以接受和处理A系统的SPI消息,一旦通信进程出现异常不能正常工作,则这个系统将会瘫痪,系统的设计稳定性较差。2、B系统所有使用SPI消息的进程都需要时刻等待通信进程是否有SPI消息抛出,接收到之后还需判断是否是自己需要的数据,不是自己需要的数据则丢掉,因此整个系统的资源消耗会比较大,执行效率比较低,造成资源浪费。3、通信进程不能处理消息的优先级,收到消息之后按照收到的先后顺序向系统进行广播,无法满足单个消息使用进程自己定义自己的消息处理优先级。4、当某个SPI 处理线程比较繁忙的时候,则不能及时响应SPI处理进程的系统广播消息,此时又有另外的SPI消息广播,此时容易造成消息丢失,从而造成系统存在严重的质量缺陷。
发明内容
为了解决上述现有交互式多进程嵌入式多媒体系统的SPI通信的问题,本发明提供一种嵌入式系统多进程交互共用SPI通讯总线的设计方案。
嵌入式系统多进程交互共用SPI通讯总线的方法,包括以下步骤:(1)系统初始化并创建进程;(2)系统为各种SPI消息进行一一标记;(3)进程向系统注册自身需要的SPI消息;(4)系统根据收到的SPI消息的标记将SPI消息发送给对应的进程。
所述步骤(2)所述标记的方法为:为每一个不同的SPI消息分配唯一的编号。
步骤(3)的实现方法为:进程通过自身需要的SPI消息对应的编号向系统注册,系统将每个进程对应注册的SPI消息分别进行存储。
步骤(3)还包括进程向系统申请单独的通信消息队列的步骤。
步骤(4)的实现方法为:(41)系统接收到SPI消息,并查询其对应的编号;(42)根据编号查询所有对应的进程;(43)将SPI消息发送到所有对该消息注册的进程。
所述步骤(43)的实现方法为:将SPI消息放入对应的进程向系统申请的消息队列中,并通知该进程。
还包括SPI消息丢弃步骤:若查询不到任何进程注册所接收到的SPI消息,则将该SPI消息丢弃。
还包括SPI消息注销步骤:若某进程不再需要其已注册的SPI消息或者进程退出时,则向系统发送注销请求,系统收到请求后将存储的相关记录删除。
综上所述,本发明具有以下有益效果:(1)应用层的进程有自己独立的SPI通信队列,可根据需要只注册自己关注的SPI消息,对其他SPI消息的交互无需做任何处理;(2)单一进程的SPI通信不再受其他进程的限制,是否需要处理SPI 消息完全不受其他进程的影响,进程的创建和退出也不会影响其他进程的SPI消息处理;(3)某个进程的SPI消息队列堵塞,完全不会影响到其他进程的通信,系统的稳定性得到了提高。
附图说明
图1为本发明所述嵌入式系统多进程交互共用SPI通讯总线的方法系统架构示意图;
图2为本发明所述嵌入式系统多进程交互共用SPI通讯总线的方法实施流程示意图。
具体实施方式
为了让本领域的技术人员能够更好地了解本发明的技术方案,下面结合附图对本发明作进一步的阐述。
如图1和图2所示,本发明揭示了一种嵌入式系统多进程交互共用SPI通讯总线的方法,包括以下步骤:
(1)系统开机上电后,加载SPI 驱动程序初始化SPI通信设备和总线,实现系统与其他系统的SPI消息交互。SPI驱动加载完成之后,系统判断其SPI驱动是否加载成功,如果SPI 驱动加载失败,则重新加载SPI驱动程序,直到SPI驱动加载成功为止。SPI驱动加载成功后继续加载其他驱动模块,直到整个系统所有驱动初始化完成。系统初始化完成后便开始创建一些进程。
(2)系统为各种SPI消息进行一一标记,即为每一个不同的SPI消息分配唯一的编号。
(3)进程创建时,通过自身需要的SPI消息对应的编号向系统注册,系统将每个进程对应注册的SPI消息分别进行存储;同时进程向系统请求单独的通信消息队列,用于缓存接收到的SPI消息。
(4)系统根据收到的SPI消息的标记将SPI消息发送给对应的进程,系统接收到SPI消息,并查询其对应的编号,根据编号查询所有对应的进程,将SPI消息放入对应的进程向系统申请的消息队列中,并通知该进程。
设嵌入式系统B中创建了三个进程A、B和C,嵌入式系统B接收到来自嵌入式系统A的SPI消息后,首先判断该SPI消息的编号,设本次嵌入式系统B接收到的SPI消息编号为1,嵌入式系统B会根据进程注册的SPI消息的信息查询进程A,B和C 哪个进程注册了消息1,经过查询发现有进程A和进程C注册了这条消息,则嵌入式系统B把该SPI消息分别放入A进程和C进程的通信消息队列里面,并通知进程A和进程C有相关的SPI消息需要它们来解析和处理,然后继续等待接收新的SPI消息。若嵌入式系统B查询不到任何进程注册了编号为1的SPI消息,则将所接收到的SPI消息丢弃。另外,若某进程不再需要其已注册的SPI消息或者进程退出时,则向嵌入式系统B发送注销请求,嵌入式系统B收到请求后将存储的相关记录删除。
本实施例只是本发明的较优实施方式,未进行详细描述的部分均采用公知的成熟技术。需要说明的是,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些改变和变形都应属于本发明所附的权利要求的保护范围。
机译: 多频共用天线以及如何在多个频带中使用天线
机译: SPI主机与SPI设备串行外设接口(SPI)工作模式同步方法及SPI总线同步装置
机译: SPI主机与SPI器件与SPI总线同步器件之间的SPI工作模式同步方法