用于SPI架构的多任务处理方法及装置转让专利

申请号 : CN202311241240.6

文献号 : CN116980362B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵林林黄钧

申请人 : 北京紫光芯能科技有限公司

摘要 :

本申请涉及数据传输技术领域,公开一种用于SPI架构的多任务处理方法。在接收到外部触发源发送的数据发送指令的情况下,确定待发送序列数据对应的寄存器存储的优先级;按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;将每个待发送任务发送至对应的片选设备。根据外部触发源的数据发送指令,直接读取发送序列数对应的寄存器存储的优先级,并基于优先级进行数据发送,仅通过硬件进行优先级判断及数据发送,避免依靠软件来进行优先级的判断而造成了频繁中断硬件的问题,有效降低了处理器的负载率,提高了数据传输效率。本申请还公开一种用于SPI架构的多任务处理装置。

权利要求 :

1.一种用于SPI架构的多任务处理方法,其特征在于,包括:在接收到外部触发源发送的数据发送指令的情况下,将内存中存储的待发送序列数据搬运至对应的寄存器,并确定待发送序列数据对应的寄存器存储的优先级,其中,外部触发源为周期触发的定时器;

确定当前发送任务是否完成,在当前发送任务完成后,比较新加入寄存器的序列数据与当前序列数据的优先级,其中,当前序列数据为当前时刻发送的序列数据;

按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;

将每个待发送任务发送至对应的片选设备。

2.根据权利要求1所述的方法,其特征在于,根据比较结果确定下一时刻的待发送任务,包括:在比较结果表征新加入序列数据的优先级高于当前序列数据的优先级的情况下,确定下一时刻的待发送任务为将新加入序列数据中的所有待发送任务;

在比较结果表征当前序列数据的优先级高于新加入序列数据的优先级的情况下,确定下一时刻的待发送任务为当前序列数据中未发送的待发送任务。

3.根据权利要求1所述的方法,其特征在于,还包括按照如下方式确定待发送序列数据:获取数据发送指令中包含的地址信息;

根据数据发送指令中包含的地址信息,从内存中读取地址信息对应的数据作为待发送序列数据。

4.根据权利要求1至3任一项所述的方法,其特征在于,还包括:接收片选设备发送的待写入数据;

根据待写入数据的片选信息,将待写入数据写入内存。

5.一种用于SPI架构的多任务处理装置,其特征在于,包括:优先级确定模块,被配置为在接收到外部触发源发送的数据发送指令的情况下,将内存中存储的待发送序列数据搬运至对应的寄存器,并确定待发送序列数据对应的寄存器存储的优先级,其中,外部触发源为周期触发的定时器;

待发送任务确定模块,被配置为确定当前发送任务是否完成,在当前发送任务完成后,比较新加入寄存器的序列数据与当前序列数据的优先级,其中,当前序列数据为当前时刻发送的序列数据;按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;

发送模块,被配置为将每个待发送任务发送至对应的片选设备。

6.一种用于SPI架构的多任务处理装置,其特征在于,包括数据传输通道、数据处理单元和序列数据接口单元,其中:数据传输通道,与数据处理单元连接,被配置为在接收到外部触发源发送的数据发送指令的情况下,将内存中存储的待发送序列数据向数据处理单元发送,其中,外部触发源为周期触发的定时器;

数据处理单元,与序列数据接口单元连接,被配置为:接收待发送序列数据,并确定待发送序列数据对应的寄存器存储的优先级;

确定当前发送任务是否完成,在当前发送任务完成后,比较新接收的待发送序列数据与当前序列数据的优先级,其中,当前序列数据为当前时刻发送的序列数据;

按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;

序列数据接口单元,与多个片选设备连接,被配置为从数据处理单元接收待发送任务,将待发送任务发送至对应的片选设备。

7.根据权利要求6所述的装置,其特征在于,数据处理单元包括:触发控制逻辑模块,被配置为响应触发条件,向数据传输通道下发数据发送指令;

序列发送缓冲区,被配置为接收数据传输通道发送的待发送序列数据;

优先级处理模块,被配置为确定出序列发送缓冲区中优先级最高的待发送序列数据,并将优先级最高的待发送序列数据中的待发送任务依次发送至任务处理模块;

任务处理模块,被配置为将接收到的待发送任务发送至序列数据接口单元。

8.根据权利要求6所述的装置,其特征在于,序列数据接口单元包括:发送缓冲区,被配置为接收并存储待发送任务;

发送缓冲区包括:

数据内容存储区,被配置为存储待发送任务的数据内容;

配置信息存储区,被配置为存储待发送任务的片选信号、采样边沿、数据位宽、数据大小端。

说明书 :

用于SPI架构的多任务处理方法及装置

技术领域

[0001] 本申请涉及数据通信技术领域,例如涉及一种用于SPI架构的多任务处理方法及装置。

背景技术

[0002] 汽车控制器的软件架构大多基于汽车开放系统架构(Automotive Open System Architecture,AUTOSAR)开发,在经典AUTOSAR架构中,将SPI(Serial Peripheral Interface,串行外设接口)驱动抽象成了序列(Sequence)、任务(Job)和通道(Channel)的数据结构,将SPI一系列操作设置为一个Sequence,一个Sequence内部包含一个或多个Job,一个Job包含一个或者多个Channel。对于一个Sequence可设置成内部Job允许执行完成后插入优先级更高的Sequence的Job。
[0003] 相关技术中,需要软件来对待传输的数据进行优先级的判断,进而发送优先级较高的序列数据。
[0004] 在实现本申请实施例的过程中,发现相关技术中至少存在如下问题:
[0005] 软件进行优先级的判断需要依赖硬件SPI中断来实现,对于实时性高的场景中,频繁的中断和软件调度会增加系统运行负担,从而降低数据传输系统的传输效率。
[0006] 需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

[0007] 为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
[0008] 本申请实施例提供了一种用于SPI架构的多任务处理方法及装置,以提高数据传输效率。
[0009] 在一些实施例中,所述方法包括:在接收到外部触发源发送的数据发送指令的情况下,确定待发送序列数据对应的寄存器存储的优先级;按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;将每个待发送任务发送至对应的片选设备。
[0010] 可选地,还包括:在接收到新加入序列数据的情况下,比较新加入序列数据与当前序列数据的优先级,得到优先级的比较结果;其中,当前序列数据为当前时刻发送的序列数据;根据比较结果确定下一时刻的待发送任务。
[0011] 可选地,根据比较结果确定下一时刻的待发送任务,包括:在比较结果表征新加入序列数据的优先级高于当前序列数据的优先级的情况下,确定下一时刻的待发送任务为将新加入序列数据中的所有待发送任务;在比较结果表征当前序列数据的优先级高于新加入序列数据的优先级的情况下,确定下一时刻的待发送任务为当前序列数据中未发送的待发送任务。
[0012] 可选地,还包括:在比较新加入序列数据与当前序列数据的优先级前,确定当前发送任务是否完成;在当前发送任务完成后,比较新加入序列数据与当前序列数据的优先级。
[0013] 可选地,还包括按照如下方式确定待发送序列数据:获取数据发送指令中包含的地址信息;根据数据发送指令中包含的地址信息,从内存中读取地址信息对应的数据作为待发送序列数据。
[0014] 可选地,还包括:接收片选设备发送的待写入数据;根据待写入数据的片选信息,将待写入数据写入内存。
[0015] 在一些实施例中,所述装置包括:优先级确定模块,被配置为在接收到外部触发源发送的数据发送指令的情况下,确定待发送序列数据对应的寄存器存储的优先级;待发送任务确定模块,被配置为按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;发送模块,被配置为将每个待发送任务发送至对应的片选设备。
[0016] 在一些实施例中,所述装置包括:数据传输通道、数据处理单元和序列数据接口单元,其中:数据传输通道,与数据处理单元连接,被配置为在接收到外部触发源发送的数据发送指令的情况下,向数据处理单元发送待发送序列数据;数据处理单元,与序列数据接口单元连接,被配置为:接收待发送序列数据,并确定待发送序列数据对应的寄存器存储的优先级;按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;序列数据接口单元,与多个片选设备连接,被配置为接收待发送任务,将待发送任务发送至对应的片选设备。
[0017] 在一些实施例中,所述控制器包括:控制器主体;上述用于SPI架构的多任务处理装置,被安装于控制器主体。
[0018] 本申请实施例提供的用于SPI架构的多任务处理方法及装置,可以实现以下技术效果:
[0019] 本申请实施例根据外部触发源的数据发送指令,直接读取发送序列数对应的寄存器存储的优先级,并基于优先级进行数据发送,仅通过硬件进行优先级判断及数据发送,避免依靠软件来进行优先级的判断而造成了频繁中断硬件的问题,有效降低了处理器的负载率,提高了数据传输效率。
[0020] 以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。

附图说明

[0021] 一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
[0022] 图1为AUTOSAR架构中传输任务的示意图;
[0023] 图2为相关技术中通过软件进行串行数据传输的方法流程图;
[0024] 图3为本申请实施例提供的一种用于SPI架构的多任务处理方法的流程图;
[0025] 图4为本申请实施例提供的一种用于SPI架构的多任务处理装置的结构示意图;
[0026] 图5为本申请实施例提供的又一种用于SPI架构的多任务处理装置的结构示意图;
[0027] 图6为本申请实施例提供的一种实际应用场景中的用于SPI架构的多任务处理装置的示意图;
[0028] 图7为本申请实施例提供的一种用于SPI架构的多任务处理装置的示意图;
[0029] 图8为本申请实施例提供的另一种用于SPI架构的多任务处理装置的示意图;
[0030] 图9为本申请实施例提供的一种控制器的示意图。

具体实施方式

[0031] 为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。
然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
[0032] 本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
[0033] 除非另有说明,术语“多个”表示两个或两个以上。
[0034] 本申请实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
[0035] 术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
[0036] 串行外设接口(Serial Peripheral Interface,SPI)在汽车控制器中使用广泛,例如控制电源芯片、收发器芯片和高低边驱动芯片等,因此,主流的车规微控制器芯片中普遍实现了SPI控制器。SPI控制器主要实现了SPI协议,即数据的串并转换发送和接收,发送的时候软件或者DMA将数据写入发送移位寄存器,数据被串行输出到数据总线上,接收的时候将数据总线上的串行数据转化成指定位宽的数据存储在接收数据寄存器中,由软件或者DMA读取对应的数据。
[0037] 汽车控制器的软件架构大多基于汽车开放系统架构(Automotive Open System Architecture,AUTOSAR)开发。如图1所示,为AUTOSAR架构中传输任务的示意图。在AUTOSAR架构中,将SPI驱动抽象成了序列(Sequence)、任务(Job)和通道(Channel)的数据结构,将SPI一系列操作设置为一个Sequence,一个Sequence内部包含一个或多个Job,一个Job包含一个或者多个Channel。对于一个Sequence可设置成内部Job允许执行完成后插入优先级更高的Sequence的Job。如图2所示,为相关技术中通过软件处理不同优先级的发送任务的流程示意图,已有的SPI控制器架构在处理不同优先级的发送任务时,需要在每个Job结束之后通过软件判断当前传输任务的优先级,优先级最高的Sequence中的Job会被发送。通过软件判断当前任务优先级需要依赖硬件SPI中断实现,但是在底盘等实时性高的场景中硬件中断的数量被严格限制,而且频繁的软件调度SPI任务会增加系统运行负载。
[0038] 基于此,本申请实施例提出了一种支持硬件传输任务优先级调度的串行数据传输的方法和控制器架构,在支持通用SPI协议的基础上,通过AUTOSAR的Job优先级处理模块,每个Job传输完成后会自动传输当前待传输任务中优先级最高的Sequence的Job。支持硬件触发,串行数据传输控制器(即SPI控制器)可以自动把内存中存储的Sequence搬运到移位寄存器中。以在实现周期性的SPI任务调度的同时,降低软件调度产生的系统负载,提高系统运行效率。
[0039] 结合图3所示,本申请实施例提供了一种用于SPI架构的多任务处理方法,该方法应用于SPI架构的多任务处理控制器,串行数据传输控制器的示意图如图4所示,串行数据传输控制器的一端连接内存,另一端连接有多个片选设备,在数据发送阶段,串行数据传输控制器读取内存中指定位置的待发送数据,经过处理后,确定出发送顺序,并发送给对应的片选设备。在数据接收阶段,串行数据传输控制器接收片选设备发送的待写入数据,并将待写入数据写入内存。如图3所示,该方法具体包括:
[0040] S301:在接收到外部触发源发送的数据发送指令的情况下,确定待发送序列数据对应的寄存器存储的优先级。
[0041] 其中,外部触发源为通过硬件触发相关处理指令的触发源,例如定时器。串行数据传输控制器在每个定时器的设定时间到达时,可以接收到数据发送指令,以此来触发串行数据的发送和/或接收。
[0042] S302:按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务。
[0043] 序列数据Sequence的优先级存储在寄存器中,具体地,可以通过三位二进制数标识每个Sequence的优先级,这三位二进制数来表征0‑6的优先级,数字0对应的优先级最低,数字6对应的优先级最高。当然,优先级的设置也可以根据用户需求采用其他方式,本申请实施例对于优先级的具体形式不进行限定。
[0044] S303:将每个待发送任务发送至对应的片选设备。
[0045] 每个Sequence中包括一个或者多个Job,每个Job存储在缓冲区内。作为一个示例,每个Job对应的数据结构占32位,其中16位是数据本身,另外16位是配置信息,配置信息包括当前发送的Job数据的时序格式,包括对应的片选信号、采样边沿、数据位宽、数据大小端等。
[0046] 具体地,每一个序列数据(Sequence)中包括一个或者多个待发送任务(Job),所有Job的优先级与该Job所属的Sequence的优先级相同,即同一个Sequence中的所有Job的优先级都相同,因此,在确定出优先级最高的Sequence后,依次发送该Sequence中的所有Job。
[0047] 本申请实施例提供的上述方法,根据外部触发源的数据发送指令,直接读取发送序列数对应的寄存器存储的优先级,并基于优先级进行数据发送,仅通过硬件进行优先级判断及数据发送,避免依靠软件来进行优先级的判断而造成了频繁中断硬件的问题,有效降低了处理器的负载率,提高了数据传输效率。
[0048] 可选地,确定待发送序列数据对应的寄存器存储的优先级之前,还包括:根据数据发送指令中包含的地址信息,从内存中读取地址信息对应的数据作为待发送数据。
[0049] 可选地,上述方法还包括:在接收到新加入序列数据的情况下,比较新加入序列数据与当前序列数据的优先级,得到优先级的比较结果;其中,当前序列数据为当前时刻发送的序列数据;根据比较结果确定下一时刻的待发送任务。
[0050] 具体地,在一个周期内,还会接收到新的序列数据,例如,外部触发源为每隔5ms触发的定时器,在5ms到达时,已有的序列数据为S1、S2、S3,其中,S3优先级最高,S1优先级其次,S2优先级最低,则经过比较S1、S2和S3的优先级后,确定出序列数据的发送顺序为优先级由高到低,即S3、S1和S2。首先依次发送S3中的所有Job,再发送S1中的所有Job,最后发送S2中的所有Job。然而,在发送Job过程中,接收到新的Sequence数据S4,由于每个Job在发送的过程中不能被中断,因此,在当前Job发送完毕后,判断新的S4和当前发送的Sequence的优先级,并根据比较结果,重新确定下一个发送的Job是哪个Sequence中的Job。这样,可以保证每一时刻发送待处理任务都是优先级最高的任务,保证了数据传输的准确性。
[0051] 可选地,还包括:在比较新加入序列数据与当前序列数据的优先级前,确定当前发送任务是否完成;在当前发送任务完成后,比较新加入序列数据与当前序列数据的优先级。
[0052] 具体地,由于当前发送中的Job不能被打断,因此,需要在当前Job发送完毕后,才能进行优先级的比较,当前Job的发送时间可以根据数据长度来确定。这样,可以保证不中断发送中的Job而重新判断优先级,避免Job被中断带来的数据传输错误,提升数据传输的准确性。
[0053] 可选地,根据比较结果确定下一时刻的待发送任务,包括:在比较结果表征新加入序列数据的优先级高于当前序列数据的优先级的情况下,确定下一时刻的待发送任务为将新加入序列数据中的所有待发送任务。在比较结果表征当前序列数据的优先级高于新加入序列数据的优先级的情况下,确定下一时刻的待发送任务为当前序列数据中未发送的待发送任务。
[0054] 续接前例,当前发送中的Job所属的Sequence为S2,则当前Job发送完毕后,比较新加入的S4和S2的优先级,如果比较结果说明新加入的S4的优先级高于S2,则不再继续发送S2中剩余的Job,而是发送S4中的所有Job,在S4中的所有Job发送完毕后,再发送S2中剩余的Job。
[0055] 如果比较结果说明S2的优先级高于新加入的S4的优先级,那么继续发送S2中剩余的Job。
[0056] 这样,可以保证当前传输的数据始终是优先级最高的数据,进一步提升了数据传输的准确性。
[0057] 需要注意的是,在一个定时周期内,所有Sequence全部发送完毕后,该定时周期内的数据传输任务完成。
[0058] 可选地,还包括按照如下方式确定待发送序列数据:获取数据发送指令中包含的地址信息;根据数据发送指令中包含的地址信息,从内存中读取地址信息对应的数据作为待发送序列数据。
[0059] 实际工作过程中,软件或者DMA可以将发送数据写入内存,并通过数据发送通道从内存中读取数据并保存在发送缓冲队列中。TxFIFO的数据位宽是32位,为了支持AUTOSAR的应用场景,将TxFIFO数据的高16bit设置成控制位。控制当前发送数据的时序格式,包括对应的片选信号、采样边沿、数据位宽、数据大小端、是否在传输完成后禁能等。其他16位存储数据本身。同时支持Job模式,在该模式下,软件可以配置当前Job的传输数据长度,硬件在判断Job传输完成后可以配置触发中断。
[0060] 可选地,还包括:接收片选设备发送的待写入数据;根据待写入数据的片选信息,将待写入数据写入内存。
[0061] 具体工作时,结合SPI控制器的Job模式,用户通过软件(例如APP)将需要发送的数据存储到系统RAM中,并配置外部触发源,例如配置一个5ms周期触发的定时器,每个定时器会触发一次SPI的Sequence传输,数据传输通道601对应的发送通道会根据配置的地址将RAM中的数据加载到序列发送缓冲区中,优先级处理模块6023判断当前缓存的所有Sequence的优先级,确定出优先级最高的Sequence,则发送该Sequence中的所有Job。例如,设定外部触发源为5ms周期的定时器,到达5ms后,读取配置的地址对应的数据至序列发送缓冲区,即读取S1、S2、S3、S4四个Sequence,经判断当前四个Sequence中优先级最高的是S2,那么依次发送S2里的Job。每一个Job传输完成,会自动检测序列发送缓冲区中,当前发送的Sequence是否最高优先级,如果不是,则发送优先级最高的Sequence的Job,如果当前Sequence是优先级最高的,则继续发送该Sequence中的剩余Job。如果所有Sequence传输完成,则恢复到Idle状态。同理,序列接收缓冲区会根据当前传输数据对应的片选信息选择数据传输通道601中的接收通道将数据存储到对应地址的系统RAM中,整个数据传输过程不需要软件中间参与即可实现周期性的SPI Sequence触发和任务调度。接收sequence和发送Sequence都支持不通过软件,而是定时器周期触发,不依赖硬件中断,从而有效降低了CPU的负载率。
[0062] 结合图5所示,为本申请实施例提供的一种用于SPI架构的多任务处理装置500,包括数据传输通道501、数据处理单元502和序列数据接口单元503,其中:
[0063] 数据传输通道501,与数据处理单元502连接,被配置为在接收到外部触发源发送的数据发送指令的情况下,向数据处理单元502发送待发送序列数据;
[0064] 数据处理单元502,与序列数据接口单元503连接,被配置为:
[0065] 接收待发送序列数据,并确定待发送序列数据对应的寄存器存储的优先级;
[0066] 按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;
[0067] 序列数据接口单元503,与多个片选设备连接,被配置为接收待发送任务,将待发送任务发送至对应的片选设备。
[0068] 本申请实施例提供的上述用于SPI架构的多任务处理装置,根据外部触发源的数据发送指令,直接读取发送序列数对应的寄存器存储的优先级,并基于优先级进行数据发送,仅通过硬件进行优先级判断及数据发送,避免依靠软件来进行优先级的判断而造成了频繁中断硬件的问题,有效降低了处理器的负载率,提高了数据传输效率。
[0069] 结合图6所示,为本申请实施例提供的一种实际应用场景中用于SPI架构的多任务处理装置600。图6的右半部分实现的是通用SPI协议要求的数据串并转换功能。在主模式下支持8个片选设备,每个片选可以独立设置数据通信格式。
[0070] 图6中的用于SPI架构的多任务处理装置600中,包括数据传输通道601、数据处理单元602和序列数据接口单元603,各个模块中包含的二级模块以及每个模块的功能描述如下表1所示。
[0071] 表1
[0072]
[0073] 可选地,数据传输通道601包括数据发送通道;上述从内存从中读取并发送待发送序列数据,包括:数据发送通道根据数据发送指令中包含的地址信息,从内存中读取地址信息对应的数据作为待发送数据;数据发送通道将待发送数据发送至数据处理单元。
[0074] 实际工作过程中,软件或者DMA可以将发送数据写入内存,并通过数据发送通道从内存中读取数据并保存在发送缓冲队列中。TxFIFO的数据位宽是32位,为了支持AUTOSAR的应用场景,将TxFIFO数据的高16bit设置成控制位。控制当前发送数据的时序格式,包括对应的片选信号、采样边沿、数据位宽、数据大小端、是否在传输完成后禁能等。其他16位存储数据本身。同时支持Job模式,在该模式下,软件可以配置当前Job的传输数据长度,硬件在判断Job传输完成后可以配置触发中断。
[0075] 可选地,数据处理单元602包括:
[0076] 触发控制逻辑模块6021,被配置为响应触发条件,向数据传输通道下发数据发送指令;
[0077] 序列发送缓冲区6022,被配置为接收数据传输通道发送的待发送序列数据;
[0078] 优先级处理模块6023,被配置为确定出序列发送缓冲区中优先级最高的待发送序列数据,并将优先级最高的待发送序列数据中的待发送任务依次发送至任务处理模块;
[0079] 任务处理模块6024,被配置为将接收到的待发送任务发送至序列数据接口单元。
[0080] 可选地,优先级处理模块6023进一步被配置为:响应于接收到新进入序列发送缓冲区的新加入序列数据,比较新加入序列数据与当前序列数据的优先级,得到比较结果;其中,当前序列数据为当前时刻发送的序列数据;根据比较结果向任务处理模块发送下一时刻的待发送任务。
[0081] 可选地,响应于接收到新进入序列发送缓冲区的新加入序列数据,比较新加入序列数据与当前序列数据的优先级,得到比较结果,包括:在比较新加入序列数据与当前序列数据的优先级前,确定当前发送任务是否完成;在当前发送任务完成后,比较新加入序列数据与当前序列数据的优先级。
[0082] 可选地,根据比较结果向任务处理模块发送下一时刻的待发送任务,包括:在比较结果表征新加入序列数据的优先级高于当前序列数据的优先级的情况下,依次向任务处理模块发送新加入序列数据中的所有待发送任务。在比较结果表征当前序列数据的优先级高于新加入序列数据的优先级的情况下,继续发送当前序列数据中未发送的待发送任务。
[0083] 可选地,序列数据接口单元603包括:发送缓冲区,被配置为接收并存储待发送任务;
[0084] 发送缓冲区包括:数据内容存储区,被配置为存储待发送任务的数据内容;配置信息存储区,被配置为存储待发送任务的片选信号、采样边沿、数据位宽、数据大小端。
[0085] 可选地,序列数据接口单元还包括:接收缓冲区,被配置为从片选设备接收待写入数据,并发送至数据处理单元;数据处理单元还包括:序列数据接收缓冲区,被配置为根据待写入数据的片选信息,通过数据传输通道中的数据接收通道将待写入数据写入内存。
[0086] 具体工作时,结合SPI控制器的Job模式,用户通过软件(例如APP)将需要发送的数据存储到系统RAM中,并配置外部触发源,例如配置一个5ms周期触发的定时器,每个定时器会触发一次SPI的Sequence传输,数据传输通道601对应的发送通道会根据配置的地址将RAM中的数据加载到序列发送缓冲区中,优先级处理模块6023判断当前缓存的所有Sequence的优先级,确定出优先级最高的Sequence,则发送该Sequence中的所有Job。例如,设定外部触发源为5ms周期的定时器,到达5ms后,读取配置的地址对应的数据至序列发送缓冲区,即读取S1、S2、S3、S4四个Sequence,经判断当前四个Sequence中优先级最高的是S2,那么依次发送S2里的Job。每一个Job传输完成,会自动检测序列发送缓冲区中,当前发送的Sequence是否最高优先级,如果不是,则发送优先级最高的Sequence的Job,如果当前Sequence是优先级最高的,则继续发送该Sequence中的剩余Job。如果所有Sequence传输完成,则恢复到Idle状态。同理,序列接收缓冲区会根据当前传输数据对应的片选信息选择数据传输通道601中的接收通道将数据存储到对应地址的系统RAM中,整个数据传输过程不需要软件中间参与即可实现周期性的SPI Sequence触发和任务调度。接收sequence和发送Sequence都支持不通过软件,而是定时器周期触发,不依赖硬件中断,从而有效降低了CPU的负载率。
[0087] 结合图7所示,为本申请实施例提供的一种用于SPI架构的多任务处理装置700,包括:
[0088] 优先级确定模块701,被配置为在接收到外部触发源发送的数据发送指令的情况下,确定待发送序列数据对应的寄存器存储的优先级;
[0089] 待发送任务确定模块702,被配置为按照待发送序列数据对应的寄存器存储的优先级由高到低的顺序,确定每个待发送序列数据中的待发送任务;
[0090] 发送模块703,被配置为将每个待发送任务发送至对应的片选设备。
[0091] 本申请实施例提供的上述装置,根据外部触发源的数据发送指令,直接读取发送序列数对应的寄存器存储的优先级,并基于优先级进行数据发送,仅通过硬件进行优先级判断及数据发送,避免依靠软件来进行优先级的判断而造成了频繁中断硬件的问题,有效降低了处理器的负载率,提高了数据传输效率。
[0092] 结合图8所示,本申请实施例提供一种用于SPI架构的多任务处理装置800,包括处理器(processor)100和存储器(memory)101。可选地,该装置还可以包括通信接口(Communication Interface)102和总线103。其中,处理器100、通信接口102、存储器101可以通过总线103完成相互间的通信。通信接口102可以用于信息传输。处理器100可以调用存储器101中的逻辑指令,以执行上述实施例的用于SPI架构的多任务处理方法。
[0093] 此外,上述的存储器101中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0094] 存储器101作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器100通过运行存储在存储器101中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例的用于SPI架构的多任务处理方法。
[0095] 存储器101可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器101可以包括高速随机存取存储器,还可以包括非易失性存储器。
[0096] 结合图9所示,本申请实施例提供了一种控制器900,包括:控制器主体,以及上述的用于SPI架构的多任务处理700(800)。用于SPI架构的多任务处理装置700(800)被安装于控制器主体。这里所表述的安装关系,并不仅限于在控制器内部放置,还包括了与控制器的其他元器件的安装连接,包括但不限于物理连接、电性连接或者信号传输连接等。本领域技术人员可以理解的是,用于SPI架构的多任务处理装置700(800)可以适配于可行的控制器主体,进而实现其他可行的实施例。
[0097] 本申请实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述实施例的用于SPI架构的多任务处理方法。
[0098] 本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述实施例的用于SPI架构的多任务处理方法。
[0099] 上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
[0100] 本申请实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
[0101] 以上描述和附图充分地示出了本申请的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
[0102] 本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0103] 本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0104] 附图中的流程图和框图显示了根据本申请实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。