CN114356825A - 一种基于芯片的spi双路通信方法和系统 - Google Patents
一种基于芯片的spi双路通信方法和系统 Download PDFInfo
- Publication number
- CN114356825A CN114356825A CN202111548746.2A CN202111548746A CN114356825A CN 114356825 A CN114356825 A CN 114356825A CN 202111548746 A CN202111548746 A CN 202111548746A CN 114356825 A CN114356825 A CN 114356825A
- Authority
- CN
- China
- Prior art keywords
- chip
- thread
- user data
- communication
- spi
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004891 communication Methods 0.000 title claims abstract description 208
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 125
- 230000001360 synchronised effect Effects 0.000 claims description 53
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000003993 interaction Effects 0.000 abstract description 6
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000001125 extrusion Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
Images
Landscapes
- Communication Control (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提出了一种基于芯片的SPI双路通信方法和系统,所述方法包括:构建应用平台与芯片之间的双路SPI通信链路,并配置通信线程A和通信线程B,使其一一对应于双路SPI通信链路;将用户APP的用户数据放入发送队列;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;从所述接收队列读取芯片处理结果并返回给用户APP。本发明有效提升了应用平台与芯片之间的数据交互速度,有利于充分发挥芯片片内的处理性能,提高芯片的利用率。
Description
技术领域
本发明涉及SPI通信技术领域,尤其涉及一种基于芯片的SPI双路通信方法和系统。
背景技术
由于用户需求的个性化服务,应用平台APP也越来越多样,可能会存在海量APP同一时间段内与同一芯片进行业务交互的场景。
随着车联网V2X技术的发展,对SE(安全芯片)SM2验签性能的要求越来越高,普遍要求2000次/秒以上。一般安全芯片片内SM2验签性能可到4000次/秒以上,但在主流AP平台上,如采用单路SPI同步通信机制,受限于系统驱动和CPU调度等多方面原因,外部实测性能很难满足要求,无法发挥安全芯片的性能。
发明内容
基于上述,有必要提供一种基于芯片的SPI双路通信方法和系统,加快应用平台与芯片的通信效率,有利于充分发挥芯片片内的处理性能,提高芯片的利用率。
本发明提出一种基于芯片的SPI双路通信方法,所述方法包括以下步骤:
初始化阶段
构建应用平台与芯片之间的双路SPI通信链路,并配置通信线程A和通信线程B,使其一一对应于双路SPI通信链路;
配置工作线程K、工作线程G以及异步的SDK数据发送接口和SDK数据接收接口,使所述工作线程K对应所述SDK数据发送接口,使所述工作线程G对应所述SDK数据接收接口;
配置SDK同步接口,基于n个用户APP分别配置出与之相对应的n个工作线程,使n个工作线程对应所述SDK同步接口;
双路通信阶段
实时监测待调用芯片的用户APP数量N,判断待调用芯片的用户APP数量N是否大于预设值;
在待调用芯片的用户APP数量N大于预设值时,执行第一SPI双路通信策略;
所述第一SPI双路通信策略为:由工作线程1至N将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;其中,工作线程1至N均为同步工作模式;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;工作线程1至N主动查询所述接收队列中是否存在与所述用户数据相匹配的芯片处理结果,若是,则将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP,再发送下一个用户数据通过所述SDK同步接口放入发送队列;
在待调用芯片的用户APP数量小于等于预设值时,执行第二SPI双路通信策略;
所述第二SPI双路通信策略为:由所述工作线程K将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;由所述工作线程G执行从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给对应的用户APP;其中,所述工作线程K与所述工作线程G为异步工作模式。
本发明第二方面还提出一种基于芯片的SPI双路通信系统,所述基于芯片的SPI双路通信系统包括:应用平台和芯片,所述应用平台与所述芯片之间建立双路SPI通信链路;所述应用平台置入有SDK软件包,应用平台中的用户APP借助所述SDK软件包来实现调用所述芯片进行运算服务;
所述SDK软件包包括:两个队列和两个通信线程;
两个队列分别为:
发送队列:用于存放待发送的用户数据;
接收队列:用于存放芯片返回的芯片处理结果;
两个通信线程包括通信线程A和通信线程B,且通信线程A和通信线程B与双路SPI通信链路一一对应;通信线程A和通信线程B分别用于执行从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;
所述SDK软件包还配置有工作线程K、工作线程G以及异步的SDK数据发送接口和SDK数据接收接口;所述工作线程K与所述SDK数据发送接口对应,所述工作线程G与所述SDK数据接收接口对应;所述工作线程K与所述工作线程G为异步工作模式;所述工作线程K用于将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;所述工作线程G用于从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给用户APP;
所述SDK软件包还配置有SDK同步接口以及n个工作线程,且n个工作线程与n个用户APP一一对应;每个工作线程为同步工作模式,每个工作线程用于将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;同时等待所述接收队列接收与所述用户数据相匹配的芯片处理结果,并将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP。
本发明提出的基于芯片的SPI双路通信方法和系统,使用芯片的双路SPI外设通信接口,在两路同步SPI条件下,即每一路SPI为同步通信,两路SPI通信并行且互不干扰,相较于传统的单路SPI通信模式,有效提升了应用平台与芯片之间的数据交互速度,有利于充分发挥芯片片内运算性能,提高芯片的利用率;
另外,对于海量APP同一时间段内与同一芯片进行业务交互的场景,本发明根据实时待调用芯片的用户APP数量,来判断执行第一SPI双路通信策略还是第二SPI双路通信策略,从而在满足多用户APP与一个芯片快速、高效率通信交互的同时,避免出现数据错乱的情况。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明一种基于芯片的SPI双路通信方法的流程图;
图2示出了本发明的通信线程A或通信线程B的工作流程图;
图3示出了本发明的SDK同步接口的工作流程图;
图4示出了本发明实施例一的基于芯片的SPI双路通信系统的框图;
图5示出了本发明实施例二的基于芯片的SPI双路通信系统的框图;
图6示出了本发明SPI半双工机制耗时分段示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
实施例1
如图1所示,本发明提出一种基于芯片的SPI双路通信方法,所述方法包括以下步骤:
初始化阶段
构建应用平台与芯片之间的双路SPI通信链路,并配置通信线程A和通信线程B,使其一一对应于双路SPI通信链路;
配置工作线程K、工作线程G以及异步的SDK数据发送接口和SDK数据接收接口,使所述工作线程K对应所述SDK数据发送接口,使所述工作线程G对应所述SDK数据接收接口;
配置SDK同步接口,基于n个用户APP分别配置出与之相对应的n个工作线程,使n个工作线程对应所述SDK同步接口;
双路通信阶段
实时监测待调用芯片的用户APP数量N,判断待调用芯片的用户APP数量N是否大于预设值;
在待调用芯片的用户APP数量N大于预设值时,执行第一SPI双路通信策略;
所述第一SPI双路通信策略为:由工作线程1至N将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;其中,工作线程1至N均为同步工作模式;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;工作线程1至N主动查询所述接收队列中是否存在与所述用户数据相匹配的芯片处理结果,若是,则将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP,再发送下一个用户数据通过所述SDK同步接口放入发送队列;
在待调用芯片的用户APP数量小于等于预设值时,执行第二SPI双路通信策略;
所述第二SPI双路通信策略为:由所述工作线程K将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;由所述工作线程G执行从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给对应的用户APP;其中,所述工作线程K与所述工作线程G为异步工作模式。
具体的,所述芯片为安全芯片,其能够提供基于SM2算法的验签功能。
可以理解,本发明使用芯片的双路SPI外设通信接口,在两路同步SPI条件下,即每一路SPI为同步通信,两路SPI通信互不干扰,相较于传统的单路SPI通信模式,有效提升了应用平台与芯片之间的数据交互速度,有利于充分发挥芯片片内运算性能。
需要说明的是,在双路SPI通信链路的基础上,本发明还实时监测待调用芯片的用户APP数量N,若待调用芯片的用户APP数量大于预设值,则执行第一SPI双路通信策略,否则执行第二SPI双路通信策略,从而于充分发挥芯片片内的处理性能,提高芯片的利用率。
可以理解,所述第一SPI双路通信策略在具备两路同步SPI条件下,不改变固件,通过工作线程K与工作线程G的异步机制,提升了应用平台与芯片之间的数据交互速度,有利于充分发挥芯片的处理性能;所述第二SPI双路通信策略在具备两路同步SPI条件下,每个工作线程为同步工作模式,会主动查询接收队列,判断是否有属于自己的芯片处理结果,如果存在则直接取走,然后再发送该用户APP的下一个用户数据,避免接收队列的挤压而影响芯片的处理性能的最大化利用效率。
如图2所示,由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列时,执行:
步骤001,由通信线程A或通信线程B从所述发送队列取一条用户数据;
步骤002,进行通信线程加锁;
步骤003,由通信线程A或通信线程B通过对应的SPI通信链路将所述用户数据发送给芯片,并同步读取芯片返回的与所述用户数据相匹配的芯片处理结果;
步骤004,判断返回的与所述用户数据相匹配的芯片处理结果是否正常,如果是,则执行步骤005;
如果返回的与所述用户数据相匹配的芯片处理结果不正常,则返回步骤003进行重试,如果重试未超过M次且返回的与所述用户数据相匹配的芯片处理结果正常,则执行步骤005,如果重试超过M次且返回的与所述用户数据相匹配的芯片处理结果仍不正常,则生成异常结果并放入所述接收队列;
步骤005,进行线程解锁,将所述用户数据相匹配的芯片处理结果放入所述接收队列。
可以理解,通信线程A或通信线程B的任务则是分别从发送队列取出用户数据进行同步发送并接收对应的芯片处理结果,将接收的芯片处理结果存入接收队列。在同步收发过程中,如果出现错误,进行M次重试,M次重试都出错,则将异常结果放入接收队列。
优选的,M取值可以为5,但不限于此。
如图3所示,所述第一SPI双路通信策略还包括:
所述SDK同步接口基于用户数据构造发送数据,将发送数据放入发送队列;其中,所述发送数据具有唯一SN标识;
每个工作线程查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果;如果有,则将该芯片处理结果返回给对应的用户APP;如果没有,判断等待次数是否超过预设阈值,如果超过,则返回失败信息,如果未超过,则睡眠预设时长,并返回继续查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果。
优选的,预设阈值可以取值为100000次,预设时长可以取值为10微秒。具体的,SDK同步接口构造发送数据节点后,放入发送队列,等待线程处理数据,每个工作线程主动查询接收队列是否有对应SN的接收结果,有则将结果返回,没有则睡眠10微秒继续查询,直到查询超过100000次返回。可以理解,等待次数即为查询次数。
可以理解,上述实施例在具备两路同步SPI条件下,通过SDK同步接口,不改变上层使用习惯,开启n个工作线程进行并行工作,且每个工作线程采用同步机制调用芯片进行运算,即每个工作线程发送数据的同时则等待芯片处理结果的返回,从而有利于充分发挥芯片的处理性能。
进一步的,所述第二SPI双路通信策略还包括:
配置线程监测器,所述线程监测器记录所述工作线程K放入发送队列的用户数据量DN_k、通信线程A从所述发送队列取出对应的用户数据量DN_A以及通信线程B从所述发送队列取出对应的用户数据量DN_B,并判断用户数据量DN_k-用户数据量DN_A-用户数据量DN_B是否大于等于发送队列缓存阈值,若是,则使所述工作线程K等待预设时间再将下一个用户APP的用户数据通过所述SDK数据发送接口放入发送队列,若否,直接将下一个用户APP的用户数据通过所述SDK数据发送接口放入发送队列。
在一种具体实施方式中,待调用芯片的用户APP数量的预设值为50,如果待调用芯片的用户APP数量N为5个,则执行第一SPI双路通信策略,5个用户APP分别对应发送接口和接收接口;每个用户APP的用户数据均会带有各自的SN标识,工作线程K从发送接口接收到某个用户APP的用户数据时,则存入发送队列(发送队列可能会存放有5用户APP的业务数据),芯片处理完成后,则放入接收队列,工作线程G读取接收队列最顶层的结果数据,并根据SN标识查询对应的用户APP,然后将结果数据返回给对应标识的APP;
如果待调用芯片的用户APP数量N为60个,此时APP数量较多,如果仍采用第一SPI双路通信策略,则会因工作线程G增加的查询时间,降低数据的传输效率,进而造成接收队列的挤压,从而影响芯片的处理性能的最大化利用效率。因此,本发明在这种情况下,采用第二SPI双路通信策略,每个用户APP均启用一个工作线程,每个工作线程均会主动查询接收队列,判断是否有属于自己的结果数据,如果有,则直接取走即可。同时每个工作线程对于本用户APP而言是同步的;同一个用户APP可能有多个待处理的用户数据,工作线程发送一个用户数据后,直到接到该用户数据对应的结果数据,才会发送另一个用户数据,从而避免向发送队列发出过多的用户数据造成数据的挤压,防止丢包。
实施例2
如图4和5所示,本发明还提出一种基于芯片的SPI双路通信系统,所述基于芯片的SPI双路通信系统包括:应用平台和芯片,所述应用平台与所述芯片之间建立双路SPI通信链路;所述应用平台置入有SDK软件包,应用平台中的用户APP借助所述SDK软件包来实现调用所述芯片进行运算服务;
所述SDK软件包包括:两个队列和两个通信线程;
两个队列分别为:
发送队列:用于存放待发送的用户数据;
接收队列:用于存放芯片返回的芯片处理结果;
两个通信线程包括通信线程A和通信线程B,且通信线程A和通信线程B与双路SPI通信链路一一对应;通信线程A和通信线程B分别用于执行从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列。
如图4所示,所述SDK软件包还配置有工作线程K、工作线程G以及异步的SDK数据发送接口和SDK数据接收接口;所述工作线程K与所述SDK数据发送接口对应,所述工作线程G与所述SDK数据接收接口对应;
所述工作线程K与所述工作线程G为异步工作模式;所述工作线程K用于将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;所述工作线程G用于从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给用户APP。
如图5所示,所述SDK软件包还配置有SDK同步接口以及n个工作线程,且n个工作线程与n个用户APP一一对应;
每个工作线程为同步工作模式,每个工作线程用于将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;同时等待所述接收队列接收与所述用户数据相匹配的芯片处理结果,并将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP。
需要说明的是,每一条SPI通信链路采用半双工机制,如图6所述,在SPI半双工通信机制下,数据通信(发送数据和返回数据)和安全芯片(后称SE)端处理数据不能同时进行,且发送数据时不能返回有效数据。即一次调用应用平台(后称主机端)组包(时间段t1)、发送数据(时间段t2)、SE端处理数据(时间段t3)、返回数据(时间段t4)、主机端处理数据(时间段t5)五个步骤串行执行。
进一步的,所述基于芯片的SPI双路通信系统还包括双路通信策略管理模块,其用于:
实时监测待调用芯片的用户APP数量N,判断待调用芯片的用户APP数量N是否大于预设值;
在待调用芯片的用户APP数量N大于预设值时,执行第一SPI双路通信策略;
所述第一SPI双路通信策略为:由工作线程1至N将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;其中,工作线程1至N均为同步工作模式;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;工作线程1至N主动查询所述接收队列中是否存在与所述用户数据相匹配的芯片处理结果,若是,则将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP,再发送下一个用户数据通过所述SDK同步接口放入发送队列;
在待调用芯片的用户APP数量小于等于预设值时,执行第二SPI双路通信策略;
所述第二SPI双路通信策略为:由所述工作线程K将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;由所述工作线程G执行从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给对应的用户APP;其中,所述工作线程K与所述工作线程G为异步工作模式。
进一步的,所述SDK同步接口,还用于基于用户数据构造发送数据,将发送数据放入发送队列,其中,所述发送数据具有唯一SN标识;
工作线程1至n,还用于查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果;如果有,则将该芯片处理结果返回给对应的用户APP;如果没有,判断等待次数是否超过预设阈值,如果超过,则返回失败信息,如果未超过,则睡眠预设时长,并返回继续查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果。
进一步的,所述基于芯片的SPI双路通信系统还包括线程监测器,其用于:
记录所述工作线程K放入发送队列的用户数据量DN_k、通信线程A从所述发送队列取出对应的用户数据量DN_A以及通信线程B从所述发送队列取出对应的用户数据量DN_B,并判断用户数据量DN_k-用户数据量DN_A-用户数据量DN_B是否大于等于发送队列缓存阈值,若是,则使所述工作线程K等待预设时间再将用户APP的用户数据通过所述SDK数据发送接口放入发送队列。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种基于芯片的SPI双路通信方法,其特征在于,包括以下步骤:
初始化阶段
构建应用平台与芯片之间的双路SPI通信链路,并配置通信线程A和通信线程B,使其一一对应于双路SPI通信链路;
配置工作线程K、工作线程G以及异步的SDK数据发送接口和SDK数据接收接口,使所述工作线程K对应所述SDK数据发送接口,使所述工作线程G对应所述SDK数据接收接口;
配置SDK同步接口,基于n个用户APP分别配置出与之相对应的n个工作线程,使n个工作线程对应所述SDK同步接口;
双路通信阶段
实时监测待调用芯片的用户APP数量N,判断待调用芯片的用户APP数量N是否大于预设值;
在待调用芯片的用户APP数量N大于预设值时,执行第一SPI双路通信策略;
所述第一SPI双路通信策略为:由工作线程1至N将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;其中,工作线程1至N均为同步工作模式;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;工作线程1至N主动查询所述接收队列中是否存在与所述用户数据相匹配的芯片处理结果,若是,则将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP,再发送下一个用户数据通过所述SDK同步接口放入发送队列;
在待调用芯片的用户APP数量小于等于预设值时,执行第二SPI双路通信策略;
所述第二SPI双路通信策略为:由所述工作线程K将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;由所述工作线程G执行从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给对应的用户APP;其中,所述工作线程K与所述工作线程G为异步工作模式。
2.根据权利要求1所述的基于芯片的SPI双路通信方法,其特征在于,所述第一SPI双路通信策略还包括:
所述SDK同步接口基于用户数据构造发送数据,将发送数据放入发送队列;其中,所述发送数据具有唯一SN标识;
每个工作线程查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果;如果有,则将该芯片处理结果返回给对应的用户APP;如果没有,判断等待次数是否超过预设阈值,如果超过,则返回失败信息,如果未超过,则睡眠预设时长,并返回继续查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果。
3.根据权利要求1所述的基于芯片的SPI双路通信方法,其特征在于,所述第二SPI双路通信策略还包括:
配置线程监测器,所述线程监测器记录所述工作线程K放入发送队列的用户数据量DN_k、通信线程A从所述发送队列取出对应的用户数据量DN_A以及通信线程B从所述发送队列取出对应的用户数据量DN_B,并判断用户数据量DN_k-用户数据量DN_A-用户数据量DN_B是否大于等于发送队列缓存阈值,若是,则使所述工作线程K等待预设时间再将用户APP的用户数据通过所述SDK数据发送接口放入发送队列。
4.根据权利要求1所述的基于芯片的SPI双路通信方法,其特征在于,由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列时,执行:
步骤001,由通信线程A或通信线程B从所述发送队列取一条用户数据;
步骤002,进行通信线程加锁;
步骤003,由通信线程A或通信线程B通过对应的SPI通信链路将所述用户数据发送给芯片,并同步读取芯片返回的与所述用户数据相匹配的芯片处理结果;
步骤004,判断返回的芯片处理结果是否正常,如果是,则执行步骤005;如果否,则返回步骤003进行重试,如果重试未超过M次且返回的与所述用户数据相匹配的芯片处理结果正常,则执行步骤005,如果重试超过M次且返回的与所述用户数据相匹配的芯片处理结果仍不正常,则生成异常结果并放入所述接收队列;
步骤005,进行线程解锁,将所述用户数据相匹配的芯片处理结果放入所述接收队列。
5.一种基于芯片的SPI双路通信系统,其特征在于,所述基于芯片的SPI双路通信系统包括:应用平台和芯片,所述应用平台与所述芯片之间建立双路SPI通信链路;所述应用平台置入有SDK软件包,应用平台中的用户APP借助所述SDK软件包来实现调用所述芯片进行运算服务;
所述SDK软件包包括:两个队列和两个通信线程;
两个队列分别为:
发送队列:用于存放待发送的用户数据;
接收队列:用于存放芯片返回的芯片处理结果;
两个通信线程包括通信线程A和通信线程B,且通信线程A和通信线程B与双路SPI通信链路一一对应;通信线程A和通信线程B分别用于执行从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;
所述SDK软件包还配置有工作线程K、工作线程G以及异步的SDK数据发送接口和SDK数据接收接口;所述工作线程K与所述SDK数据发送接口对应,所述工作线程G与所述SDK数据接收接口对应;所述工作线程K与所述工作线程G为异步工作模式;所述工作线程K用于将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;所述工作线程G用于从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给用户APP;
所述SDK软件包还配置有SDK同步接口以及n个工作线程,且n个工作线程与n个用户APP一一对应;每个工作线程为同步工作模式,每个工作线程用于将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;同时等待所述接收队列接收与所述用户数据相匹配的芯片处理结果,并将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP。
6.根据权利要求5所述的基于芯片的SPI双路通信系统,其特征在于,还包括双路通信策略管理模块,其用于:
实时监测待调用芯片的用户APP数量N,判断待调用芯片的用户APP数量N是否大于预设值;
在待调用芯片的用户APP数量N大于预设值时,执行第一SPI双路通信策略;
所述第一SPI双路通信策略为:由工作线程1至N将对应用户APP的用户数据通过所述SDK同步接口放入发送队列;其中,工作线程1至N均为同步工作模式;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;工作线程1至N主动查询所述接收队列中是否存在与所述用户数据相匹配的芯片处理结果,若是,则将所述芯片处理结果通过所述SDK同步接口返回给对应用户APP,再发送下一个用户数据通过所述SDK同步接口放入发送队列;
在待调用芯片的用户APP数量小于等于预设值时,执行第二SPI双路通信策略;
所述第二SPI双路通信策略为:由所述工作线程K将用户APP的用户数据通过所述SDK数据发送接口放入发送队列;由通信线程A或通信线程B从所述发送队列取出对应的用户数据,并通过对应的SPI通信链路发送到芯片进行运算处理,再通过相同的SPI通信链路从所述芯片同步接收与对应的用户数据相匹配的芯片处理结果,并放入接收队列;由所述工作线程G执行从所述接收队列读取芯片处理结果并通过所述SDK数据接收接口返回给对应的用户APP;其中,所述工作线程K与所述工作线程G为异步工作模式。
7.根据权利要求6所述的基于芯片的SPI双路通信系统,其特征在于,
所述SDK同步接口,还用于基于用户数据构造发送数据,将发送数据放入发送队列,其中,所述发送数据具有唯一SN标识;
工作线程1至n,还用于查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果;如果有,则将该芯片处理结果返回给对应的用户APP;如果没有,判断等待次数是否超过预设阈值,如果超过,则返回失败信息,如果未超过,则睡眠预设时长,并返回继续查询接收队列是否有与发送数据的SN标识相一致的芯片处理结果。
8.根据权利要求6所述的基于芯片的SPI双路通信系统,其特征在于,还包括线程监测器,其用于:
记录所述工作线程K放入发送队列的用户数据量DN_k、通信线程A从所述发送队列取出对应的用户数据量DN_A以及通信线程B从所述发送队列取出对应的用户数据量DN_B,并判断用户数据量DN_k-用户数据量DN_A-用户数据量DN_B是否大于等于发送队列缓存阈值,若是,则使所述工作线程K等待预设时间再将用户APP的用户数据通过所述SDK数据发送接口放入发送队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111548746.2A CN114356825B (zh) | 2021-12-17 | 2021-12-17 | 一种基于芯片的spi双路通信方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111548746.2A CN114356825B (zh) | 2021-12-17 | 2021-12-17 | 一种基于芯片的spi双路通信方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356825A true CN114356825A (zh) | 2022-04-15 |
CN114356825B CN114356825B (zh) | 2024-02-13 |
Family
ID=81099363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111548746.2A Active CN114356825B (zh) | 2021-12-17 | 2021-12-17 | 一种基于芯片的spi双路通信方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356825B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101325539A (zh) * | 2007-06-15 | 2008-12-17 | 中兴通讯股份有限公司 | 一种局域网内可靠通信的方法 |
WO2014101361A1 (zh) * | 2012-12-29 | 2014-07-03 | 广东志成冠军集团有限公司 | 一种单spi总线控制多can接口的控制方法 |
CN106713175A (zh) * | 2017-02-07 | 2017-05-24 | 北京百卓网络技术有限公司 | Sdtp客户端及其数据发送方法与sdtp数据系统 |
CN107786464A (zh) * | 2017-09-22 | 2018-03-09 | 烽火通信科技股份有限公司 | 一种实现节点间通信的方法及装置 |
CN107945430A (zh) * | 2017-11-24 | 2018-04-20 | 上海动联信息技术股份有限公司 | 一种用于智能pos机的基于串口的双向并发通讯方法 |
CN108132896A (zh) * | 2018-01-17 | 2018-06-08 | 西安闻泰电子科技有限公司 | 数据传输方法和装置 |
CN108319508A (zh) * | 2017-01-18 | 2018-07-24 | 中国移动通信集团公司 | Http同步请求转为异步处理的方法及服务器 |
CN111478839A (zh) * | 2020-04-09 | 2020-07-31 | 中电科航空电子有限公司 | 一种物理总线及操作系统解耦的分布式航空通信系统 |
CN111580995A (zh) * | 2020-05-12 | 2020-08-25 | 南京甄视智能科技有限公司 | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与系统 |
CN111767159A (zh) * | 2020-06-24 | 2020-10-13 | 浙江大学 | 一种基于协程的异步系统调用系统 |
CN112380028A (zh) * | 2020-10-26 | 2021-02-19 | 上汽通用五菱汽车股份有限公司 | 一种异步非阻塞响应式消息处理方法 |
CN112737789A (zh) * | 2020-12-23 | 2021-04-30 | 上海芯钛信息科技有限公司 | 基于双路spi并发实现车载通信网关高速密码运算的方法 |
CN112925485A (zh) * | 2021-05-11 | 2021-06-08 | 湖南博匠信息科技有限公司 | 嵌入式Linux的多通道高速数据传输存储方法及系统 |
-
2021
- 2021-12-17 CN CN202111548746.2A patent/CN114356825B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101325539A (zh) * | 2007-06-15 | 2008-12-17 | 中兴通讯股份有限公司 | 一种局域网内可靠通信的方法 |
WO2014101361A1 (zh) * | 2012-12-29 | 2014-07-03 | 广东志成冠军集团有限公司 | 一种单spi总线控制多can接口的控制方法 |
CN108319508A (zh) * | 2017-01-18 | 2018-07-24 | 中国移动通信集团公司 | Http同步请求转为异步处理的方法及服务器 |
CN106713175A (zh) * | 2017-02-07 | 2017-05-24 | 北京百卓网络技术有限公司 | Sdtp客户端及其数据发送方法与sdtp数据系统 |
CN107786464A (zh) * | 2017-09-22 | 2018-03-09 | 烽火通信科技股份有限公司 | 一种实现节点间通信的方法及装置 |
CN107945430A (zh) * | 2017-11-24 | 2018-04-20 | 上海动联信息技术股份有限公司 | 一种用于智能pos机的基于串口的双向并发通讯方法 |
CN108132896A (zh) * | 2018-01-17 | 2018-06-08 | 西安闻泰电子科技有限公司 | 数据传输方法和装置 |
CN111478839A (zh) * | 2020-04-09 | 2020-07-31 | 中电科航空电子有限公司 | 一种物理总线及操作系统解耦的分布式航空通信系统 |
CN111580995A (zh) * | 2020-05-12 | 2020-08-25 | 南京甄视智能科技有限公司 | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与系统 |
CN111767159A (zh) * | 2020-06-24 | 2020-10-13 | 浙江大学 | 一种基于协程的异步系统调用系统 |
CN112380028A (zh) * | 2020-10-26 | 2021-02-19 | 上汽通用五菱汽车股份有限公司 | 一种异步非阻塞响应式消息处理方法 |
CN112737789A (zh) * | 2020-12-23 | 2021-04-30 | 上海芯钛信息科技有限公司 | 基于双路spi并发实现车载通信网关高速密码运算的方法 |
CN112925485A (zh) * | 2021-05-11 | 2021-06-08 | 湖南博匠信息科技有限公司 | 嵌入式Linux的多通道高速数据传输存储方法及系统 |
Non-Patent Citations (2)
Title |
---|
沈斌;李兴国;钟金宏;沈丽娜;: "基于多队列和多线程的短信实时并发控制算法", 计算机工程, no. 08 * |
沈斌;李兴国;钟金宏;沈丽娜;: "基于多队列和多线程的短信实时并发控制算法", 计算机工程, no. 08, 20 April 2008 (2008-04-20) * |
Also Published As
Publication number | Publication date |
---|---|
CN114356825B (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2419226C2 (ru) | Управление памятью для высокоскоростного управления доступом к среде | |
CN108694087A (zh) | 用于最优系统级性能的网络接口卡中的动态负载均衡 | |
EP2913970B1 (en) | Policy control method and device for terminal peripherals | |
US8428076B2 (en) | System and method for priority scheduling of plurality of message types with serialization constraints and dynamic class switching | |
WO2015141337A1 (ja) | 受信パケット分散方法、キュー選択器、パケット処理装置、および記録媒体 | |
CN111163018B (zh) | 网络设备及其降低传输时延的方法 | |
CN107872396B (zh) | 具有超时控制的通信方法、处理设备、终端设备和服务器 | |
US20090296580A1 (en) | Cooperative Flow Locks Distributed Among Multiple Components | |
CN105635083A (zh) | 基于服务器和客户端架构的业务处理方法及业务处理系统 | |
CN110971591A (zh) | 一种多进程访问可信应用的方法和系统 | |
CN113157465B (zh) | 基于指针链表的消息发送方法及装置 | |
CN110519388A (zh) | 区块链请求的处理方法、装置、电子设备及可读存储介质 | |
CN114356825A (zh) | 一种基于芯片的spi双路通信方法和系统 | |
CN101272334B (zh) | 使用多核CPU处理QoS业务的方法、装置和设备 | |
CN110213178B (zh) | 流量管理方法、集成芯片、及装置 | |
CN105721342B (zh) | 多进程设备的网络连接方法和系统 | |
JP4151330B2 (ja) | ネットワークファイルシステム用i/o制御方法 | |
CN114356826B (zh) | 一种基于芯片的spi单路通信方法和系统 | |
KR100935691B1 (ko) | 패킷 손실양 추정 기반의 패킷 스케줄링 방법 | |
CN117278505B (zh) | 一种raid卡节点之间的消息传输方法、系统、设备以及介质 | |
JP2002325111A (ja) | 通信データ処理装置、通信データ処理プログラム及び記録媒体 | |
EP1220511A2 (en) | Memory management for packet storage | |
WO2024174783A1 (zh) | 带宽测量的方法、装置以及系统 | |
CN115643500A (zh) | 一种电力采集终端虚拟多通道抄表方法及系统 | |
KR100547622B1 (ko) | 작업관리 시스템 및 그 방법과 그 프로그램을 저장한 기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |