基于C-SKY架构芯片降低GPIO中断响应时间的方法、芯片和装置与流程
未命名
10-18
阅读:115
评论:0
基于c-sky架构芯片降低gpio中断响应时间的方法、芯片和装置
技术领域
1.本技术涉及计算机技术领域,特别是涉及一种基于c-sky架构芯片降低gpio中断响应时间的方法、降低gpio中断响应时间的芯片、基于c-sky架构芯片降低gpio中断响应时间的装置、服务器、存储介质和计算机程序产品。
背景技术:
2.gpio引脚(general-purpose input/output)是通用芯片中输入输出端口上的功能引脚,它具有输入、输出、中断检测等功能。其中中断检测功能是gpio引脚最重要的一项功能,芯片可以通过gpio引脚的交互中断而感知外部的变化,从而做出相应的动作。
3.在当gpio引脚产生中断时,状态寄存器会将对应引脚的中断状态进行保存,从而操作系统可以通过轮询状态寄存器的方式来检测gpio引脚的中断状态,并在发现某gpio引脚产生中断时,调用该gpio引脚的中断服务程序对其进行中断处理。但是目前通过轮询状态寄存器的方式,存在检测时间较长,效率不高的问题,从而增加了芯片应用的不稳定性。
技术实现要素:
4.基于此,有必要针对上述技术问题,提供一种基于c-sky架构芯片降低gpio中断响应时间的方法、降低gpio中断响应时间的芯片、基于c-sky架构芯片降低gpio中断响应时间的装置、服务器、存储介质和计算机程序产品。
5.根据本公开实施例的第一方面,提供一种基于c-sky架构芯片降低gpio中断响应时间的方法,包括:
6.获取芯片发送的中断请求;所述芯片为基于c-sky架构开发的嵌入式芯片,所述中断请求用于指示对所述芯片中的gpio引脚执行中断处理,所述gpio引脚为所述芯片中的输入输出端口上设置的外部引脚;
7.基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;
8.调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;
9.基于预设的中断服务程序对所述目标gpio引脚执行中断处理。
10.在一示例性实施例中,在所述状态寄存器中缓存有关于各个所述gpio引脚对应中断状态的状态值,且处于所述第一状态的gpio引脚的状态值为1;
11.所述调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚,包括:
12.调用预设的ff1指令访问所述状态寄存器地址,以在所述状态寄存器中,从引脚编
号的最高位次向最低位次顺序查找所述状态值为1的gpio引脚;所述ff1指令为快速查找状态值1的指令,所述引脚编号为各所述gpio引脚之间唯一的数字编号;
13.响应于查找到第一个所述状态值为1的第一gpio引脚,将所述第一gpio引脚作为目标gpio引脚。
14.在一示例性实施例中,所述中断状态包括用于表征所述gpio引脚未处于中断响应的第二状态;在所述状态寄存器中缓存有关于各个所述gpio引脚对应中断状态的状态值,且处于所述第二状态的gpio引脚的状态值为0;
15.所述调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚,包括:
16.调用预设的ff0指令访问所述状态寄存器地址,以在所述状态寄存器中,从引脚编号的最高位次向最低位次顺序查找所述状态值为0的gpio引脚;所述ff0指令为快速查找状态值0的指令,所述引脚编号为各所述gpio引脚之间唯一的数字编号;
17.响应于查找到第一个所述状态值不为0的第二gpio引脚,将所述第二gpio引脚作为目标gpio引脚。
18.在一示例性实施例中,所述基于预设的中断服务程序对所述目标gpio引脚执行中断处理,包括:
19.确定对应于所述目标gpio引脚的引脚编号的目标中断服务程序;
20.调用所述目标中断服务程序基于所述引脚编号访问所述状态寄存器,以确定所述目标gpio引脚的中断类型,以及根据所述中断类型对进行中断处理。
21.在一示例性实施例中,所述基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址,包括:
22.对所述中断请求进行数据解析,以确定所述中断信号所在中断源的中断号;所述中断源表征所述中断信号发生的电路区域;
23.确定与所述中断号相绑定的输入输出端口的端口号;
24.确定与所述端口号相绑定的状态寄存器地址。
25.根据本公开实施例的第二方面,提供一种降低gpio中断响应时间的芯片,包括:检测电路、输入输出端口、中断控制器和处理器;所述输入输出端口上配置有多个gpio引脚;其中,
26.所述检测电路,用于在检测到存在gpio引脚的电平异常的情况下,生成中断信号,并将所述中断信号发送至所述中断控制器;
27.所述中断控制器,用于响应所述中断信号,以根据所述中断信号所在的中断源的中断号生成中断请求,并将所述中断请求发送给处理器;
28.所述处理器,用于响应所述中断请求,以在预存的中断向量表中查询与所述中断号相对应的中断向量,并基于所述中断向量调用对应于所述中断请求的中断处理程序以执行如上述所述的基于c-sky架构芯片降低gpio中断响应时间的方法;其中,所述中断向量为所述中断处理程序的调用地址。
29.在一示例性实施例中,所述检测电路,还用于对所述gpio引脚执行电平边沿检测或者电平翻转检测,以在检测到所述gpio引脚存在边沿跳变或者电平翻转的情况下,确定所述gpio引脚的电平异常;
30.其中,所述边沿跳变包括所述gpio引脚的电平发生上升沿跳变、下降沿跳变或者上升沿和下降沿同时跳变三种中的一种;
31.所述电平翻转包括所述gpio引脚的电平发生由低电平到高电平的翻转,或者由高电平到低电平的翻转。
32.根据本公开实施例的第三方面,提供一种基于c-sky架构芯片降低gpio中断响应时间的装置,包括:
33.请求获取单元,被配置为执行获取芯片发送的中断请求;所述芯片为基于c-sky架构开发的嵌入式芯片,所述中断请求用于指示对所述芯片中的gpio引脚执行中断处理,所述gpio引脚为所述芯片中的输入输出端口上设置的外部引脚;
34.地址确定单元,被配置为执行基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;
35.引脚确定单元,被配置为执行调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;
36.中断处理单元,被配置为执行基于预设的中断服务程序对所述目标gpio引脚执行中断处理。
37.根据本公开实施例的第四方面,提供一种服务器,包括:
38.处理器;
39.用于存储所述处理器的可执行指令的存储器;
40.其中,所述处理器被配置为执行所述可执行指令,以实现如上述任一项所述的基于c-sky架构芯片降低gpio中断响应时间的方法。
41.根据本公开实施例的第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质中包括计算机程序,当所述计算机程序由服务器的处理器执行时,使得所述服务器能够执行如上述任一项所述的基于c-sky架构芯片降低gpio中断响应时间的方法。
42.根据本公开实施例的第六方面,提供一种计算机程序产品,所述计算机程序产品中包括程序指令,所述程序指令被服务器的处理器执行时,使得所述服务器能够执行如上述任一项所述的基于c-sky架构芯片降低gpio中断响应时间的方法。
43.本公开的实施例提供的技术方案至少带来以下有益效果:
44.该方法先通过获取芯片发送的中断请求;其中,芯片为基于c-sky架构开发的嵌入式芯片,中断请求用于指示对芯片中的gpio引脚执行中断处理,gpio引脚为芯片中的输入输出端口上设置的外部引脚;基于中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;基于预设的中断服务程序对目标gpio引脚执行中断处理。这样,在一方面,先利用中断请求确定状态寄存器地址,再利用状态寄存器地址确定处于中断响应的目标gpio引脚,最后对目标gpio引脚执行中断处理,从而优化了对gpio引脚执行中断处理的流程,降低了
人力和物力的消化;在另一方面,通过区别于现有技术中轮询状态寄存器的方式,调用预设的状态索引指令来访问状态寄存器,以确定处于中断响应的目标gpio引脚,能够有效缩短对异常引脚的索引时间,提升确定处于中断响应的目标gpio引脚的效率,进而减小了处理异常引脚的中断响应时间和提升对芯片应用的稳定性。
45.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
46.图1是根据一示例性实施例示出的一种基于c-sky架构芯片降低gpio中断响应时间的方法的应用环境图;
47.图2是根据一示例性实施例示出的一种基于c-sky架构芯片降低gpio中断响应时间的方法的流程示意图;
48.图3是根据一示例性实施例示出的一种确定目标gpio引脚的模块示意图;
49.图4是根据一示例性实施例示出的另一种确定目标gpio引脚的模块示意图;
50.图5是根据一示例性实施例示出的一种用于降低gpio中断响应时间的芯片框图;
51.图6是根据一示例性实施例示出的一种基于c-sky架构芯片降低gpio中断响应时间的装置框图;
52.图7是根据一示例性实施例示出的一种用于降低gpio中断响应时间的服务器框图。
具体实施方式
53.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
54.本技术中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,尽管多次采用术语“第一”、“第二”等来描述各种操作(或各种阈值或各种应用或各种指令或各种元件)等,不过这些操作(或阈值或应用或指令或元件)不应受这些术语的限制。这些术语只是用于区分一个操作(或阈值或应用或指令或元件)和另一个操作(或阈值或应用或指令或元件)。
55.本技术实施例提供的基于c-sky架构芯片降低gpio中断响应时间的方法,可以应用于如图1所示的应用环境中。其中,终端102通过通信网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。
56.在一些实施例中,参考图1,服务器104首先获取芯片发送的中断请求;其中,所述芯片为基于c-sky架构开发的嵌入式芯片,所述中断请求用于指示对所述芯片中的gpio引脚执行中断处理,所述gpio引脚为所述芯片中的输入输出端口上设置的外部引脚;然后,服务器104基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;其中,所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;然后,服务器104调用预设的状态索引指令访
问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;其中,所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;最后,服务器104基于预设的中断服务程序对所述目标gpio引脚执行中断处理。
57.在一些实施例中,终端102(如移动终端、固定终端)可以以各种形式来实施。其中,终端102可为包括诸如移动电话、智能电话、笔记本电脑、便携式手持式设备、个人数字助理(pda,personal digital assistant)、平板电脑(pad)等等的移动终端,终端102也可以是自动柜员机(automated teller machine,atm)、自动一体机、数字tv、台式计算机、固式计算机等等的固定终端。
58.下面,假设终端102是固定终端。然而,本领域技术人员将理解的是,若有特别用于移动目的的操作或者元件,根据本技术公开的实施方式的构造也能够应用于移动类型的终端102。
59.在一些实施例中,服务器104运行的数据处理组件可以加载正在被执行的可以包括各种附加服务器应用和/或中间层应用中的任何一种,如包括http(超文本传输协议)、ftp(文件传输协议)、cgi(通用网关界面)、rdbms(关系型数据库管理系统)等。
60.在一些实施例中,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器104可以适于运行提供前述公开中描述的终端102的一个或多个应用服务或软件组件。
61.在一些实施例中,app或者客户端运行的操作系统可以包括各种版本的microsoftapple和/或linux操作系统、各种商用或类操作系统(包括但不限于各种gnu/linux操作系统、google等)和/或移动操作系统,诸如如操作系统,以及其它在线操作系统或者离线操作系统,在这里不做具体的限制。
62.在一些实施例中,如图2所示,提供了一种基于c-sky架构芯片降低gpio中断响应时间的方法,以该方法应用于图1中的服务器104为例进行说明,该方法包括以下步骤:
63.步骤s11,获取芯片发送的中断请求。
64.其中,该芯片为基于c-sky架构开发的嵌入式芯片。
65.在一实施例中,中断请求用于指示对芯片中的gpio引脚执行中断处理。
66.其中,gpio引脚为芯片中的输入输出端口上设置的外部引脚。
67.在一实施例中,在c-sky架构芯片中,服务器检测gpio端口上各个gpio引脚的电平跳变或者电平翻转情况,并在gpio引脚的电平跳变或者电平翻转幅度超过预设幅度时,则服务器判断gpio引脚产生异常状态,生成中断信号,并将中断信号发送给c-sky架构芯片中的状态寄存器进行状态修改。
68.其中,状态寄存器根据中断信号存储对应gpio引脚的引脚状态。
69.其中,gpio引脚的引脚状态包括异常状态或者正常状态,其在状态寄存器中,被记录为由“0”翻转为“1”的第一状态或者由“1”翻转为“0”的第二状态。
70.其中,电平跳变包括上升沿跳变、下降沿跳变或者上升沿和下降沿同时跳变三种情况。电平翻转包括由低电平到高电平的翻转,由高电平到低电平的翻转两种情况。
71.步骤s12:基于中断请求,确定用于存储gpio引脚的中断状态的状态寄存器地址。
72.其中,状态寄存器地址为芯片中的状态寄存器的访问地址。
73.在一实施例中,服务器响应中断请求,在预存的中断向量表中查询与中断源的中断号相对应的中断向量。其中,中断向量为中断处理程序的调用地址。然后,服务器调用中断向量所对应的中断处理程序,以执行中断处理程序的处理逻辑。
74.在一实施例中,中断状态包括用于表征gpio引脚处于中断响应的第一状态,以及包括用于表征gpio引脚未处于中断响应的第二状态。
75.在一实施例中,在状态寄存器中缓存有关于各个gpio引脚对应中断状态的状态值,其中,处于第一状态的gpio引脚的状态值为1,处于第二状态的gpio引脚的状态值为0。
76.在一实施例中,服务器基于中断请求,确定用于存储gpio引脚的中断状态的状态寄存器地址的过程,可以通过以下方式实现:
77.步骤一,对中断请求进行数据解析,以确定中断信号所在中断源的中断号。
78.其中,中断源表征中断信号发生的电路区域。
79.步骤二,确定与中断号相绑定的输入输出端口的端口号。
80.步骤三,确定与端口号相绑定的状态寄存器地址。
81.步骤s13:调用预设的状态索引指令访问状态寄存器地址,以确定芯片中中断状态为第一状态的目标gpio引脚。
82.在一实施例中,状态索引指令为单周期的查找指令,且状态索引指令用于降低gpio引脚的中断响应时间。
83.在一实施例中,状态索引指令为ff1指令。其中,ff1指令为快速查找状态值1的指令。
84.其中,ff1指令可查找所给参数(这里为状态寄存器中寄存的gpio引脚的状态值)中第一个为1的bit,并返回查找结果,其查找顺序是从状态寄存器的最高位次扫描到最低位次。
85.其中,ff1指令对查找到状态值为1的数据其返回值为对应次数的减一,ff1指令对查找到状态值为0的数据其返回值为对应最高寄存器位次的加一。
86.作为示例,若状态寄存器的最高位次(第32位)所寄存的gpio引脚的状态值为1,则其向服务器返回值为0。若状态寄存器的最高位次(第32位)所寄存的gpio引脚的状态值为0,则其向服务器返回值为32。
87.在一实施例中,状态索引指令为ff0指令。其中,ff0指令为快速查找状态值0的指令。
88.其中,ff0指令可查找所给参数(这里为状态寄存器中寄存的gpio引脚的状态值)中第一个为0的bit,并返回查找结果,其查找顺序是从状态寄存器的最高位次扫描到最低位次。
89.其中,ff0指令对查找到状态值为0的数据其返回值为对应次数的减一,ff0指令对查找到状态值为1的数据其返回值为对应最高寄存器位次的加一。
90.作为示例,若状态寄存器的最高位次(第32位)所寄存的gpio引脚的状态值为1,则其向服务器返回值为32。若状态寄存器的最高位次(第32位)所寄存的gpio引脚的状态值为0,则其向服务器返回值为0。
91.步骤s14:基于预设的中断服务程序对目标gpio引脚执行中断处理。
92.在一实施例中,服务器基于预设的中断服务程序对所述目标gpio引脚执行中断处理的过程,可以通过以下方式实现:
93.步骤一,确定对应于目标gpio引脚的引脚编号的目标中断服务程序。
94.其中,目标gpio引脚的引脚编号与状态寄存器的寄存该目标gpio引脚的中断状态所在的位次相同。
95.步骤二,调用目标中断服务程序,以通过目标中断服务程序基于引脚编号访问状态寄存器,确定目标gpio引脚的中断类型,以及根据中断类型对进行中断处理。
96.在一实施例中,在服务器根据中断类型对目标gpio引脚进行中断处理后,还可以进一步地对目标gpio引脚进行中断恢复处理与中断返回处理,以将目标gpio引脚的异常状态恢复正常运行。
97.上述的基于c-sky架构芯片降低gpio中断响应时间的过程中,服务器首先获取芯片发送的中断请求;其中,芯片为基于c-sky架构开发的嵌入式芯片,中断请求用于指示对芯片中的gpio引脚执行中断处理,gpio引脚为芯片中的输入输出端口上设置的外部引脚;然后,再基于中断请求,确定用于存储gpio引脚的中断状态的状态寄存器地址;中断状态包括用于表征gpio引脚处于中断响应的第一状态,状态寄存器地址为所述芯片中的状态寄存器的访问地址;然后,再调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;最后,基于预设的中断服务程序对目标gpio引脚执行中断处理。这样,在一方面,先利用中断请求确定状态寄存器地址,再利用状态寄存器地址确定处于中断响应的目标gpio引脚,最后对目标gpio引脚执行中断处理,从而优化了对gpio引脚执行中断处理的流程,降低了人力和物力的消化;在另一方面,通过区别于现有技术中轮询状态寄存器的方式,调用预设的状态索引指令来访问状态寄存器,以确定处于中断响应的目标gpio引脚,能够有效缩短对异常引脚的索引时间,提升确定处于中断响应的目标gpio引脚的效率,进而减小了处理异常引脚的中断响应时间和提升对芯片应用的稳定性。
98.在一示例性实施例中,参阅图3,图3为本技术中确定目标gpio引脚一实施例的模块示意图。在步骤s13中,服务器调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚的过程,可以通过以下方式实现:
99.步骤一,调用预设的ff1指令访问状态寄存器地址,以在状态寄存器中,从引脚编号的最高位次向最低位次顺序查找状态值为1的gpio引脚。
100.其中,引脚编号为各gpio引脚之间唯一的数字编号,且gpio引脚的引脚编号与状态寄存器中寄存该gpio引脚的状态值所在的寄存区的位次相绑定。例如,在状态寄存器中,用于寄存gpio引脚a的状态值的寄存区a1的位次为1,寄存gpio引脚b的状态值的寄存区b1的位次为2,寄存gpio引脚c的状态值的寄存区c1的位次为3,则寄存gpio引脚a的引脚编号“a”与寄存区a1的位次“1”相绑定,寄存gpio引脚b的引脚编号“b”与寄存区b1的位次“2”相绑定,寄存gpio引脚c的引脚编号“c”与寄存区c1的位次“1”相绑定。
101.步骤二,响应于查找到第一个状态值为1的第一gpio引脚,将第一gpio引脚作为目标gpio引脚。
102.作为示例,如图3所示,ff1指令访问状态寄存器地址,以获得状态寄存器中各个寄
存区存储的关于对应各gpio引脚的中断状态的状态值。其中,寄存区表征状态寄存器的寄存位次,图3中共有32个寄存区(即图中从左至右的位次31-位次0),在每一个寄存区中寄存有对应的一个gpio引脚的中断状态的状态值。其中,状态值包括“0”或者“1”。服务器执行ff1指令,以从左至右依次读取寄存区中的状态值。其中,当服务器读取到第一个状态值为“1”的寄存区时,表征对应于该寄存区的gpio引脚发生中断异常,从而服务器生成与该寄存区所在位次相倒的返回值(如,若第31位次的寄存区的状态值为“1”,则服务器生成“0”来作为返回值;若第0位次的寄存区的状态值为“1”,则服务器生成“31”来作为返回值)。其中,当服务器读取到的寄存区的状态值为“0”时,表征对应于该寄存区的gpio引脚未发生中断异常,从而继续读取下一位次的寄存区中的状态值。其中,当服务器读取到最后一个寄存区时,其状态值仍然为“0”,则表征该gpio端口的各个gpio引脚均未发生中断异常,从而生成数值“32”来作为返回值。最后,在服务器执行完毕ff1指令后,若其生成的返回值为0-31之间,则根据返回值对应寄存区的所在位次,确定引脚编号,从而将对应于该引脚编号的gpio引脚作为目标gpio引脚。若其生成的返回值为32,则表征在这些gpio引脚中不存在目标gpio引脚。
103.在一示例性实施例中,参阅图4,图4为本技术中确定目标gpio引脚另一实施例的模块示意图。在步骤s13中,服务器调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚的过程,可以通过以下方式实现:
104.步骤一,调用预设的ff0指令访问状态寄存器地址,以在状态寄存器中,从引脚编号的最高位次向最低位次顺序查找状态值为0的gpio引脚。
105.步骤二,响应于查找到第一个状态值不为0的第二gpio引脚,将第二gpio引脚作为目标gpio引脚。
106.作为示例,如图4所示,ff0指令访问状态寄存器地址,以获得状态寄存器中各个寄存区存储的关于对应各gpio引脚的中断状态的状态值。其中,寄存区表征状态寄存器的寄存位次,图4中共有32个寄存区(即图中从左至右的位次31-位次0),在每一个寄存区中寄存有对应的一个gpio引脚的中断状态的状态值。其中,状态值包括“0”或者“1”。服务器执行ff0指令,以从左至右依次读取寄存区中的状态值。其中,当服务器读取到第一个状态值为“0”的寄存区时,表征对应于该寄存区的gpio引脚发生中断异常,从而服务器生成与该寄存区所在位次相倒的返回值(如,若第31位次的寄存区的状态值为“0”,则服务器生成“0”来作为返回值;若第0位次的寄存区的状态值为“0”,则服务器生成“31”来作为返回值)。其中,当服务器读取到的寄存区的状态值为“1”时,表征对应于该寄存区的gpio引脚未发生中断异常,从而继续读取下一位次的寄存区中的状态值。其中,当服务器读取到最后一个寄存区时,其状态值仍然为“1”,则表征该gpio端口的各个gpio引脚均未发生中断异常,从而生成数值“32”来作为返回值。最后,在服务器执行完毕ff1指令后,若其生成的返回值为32,则根据对应寄存的状态值为“1”的寄存区的所在位次,确定引脚编号,从而将对应于该引脚编号的gpio引脚作为目标gpio引脚。若其生成的返回值为0-31之间,则表征在这些gpio引脚中不存在目标gpio引脚。
107.这样,在一方面,先利用中断请求确定状态寄存器地址,再利用状态寄存器地址确定处于中断响应的目标gpio引脚,最后对目标gpio引脚执行中断处理,从而优化了对gpio
引脚执行中断处理的流程,降低了人力和物力的消化;在另一方面,通过区别于现有技术中轮询状态寄存器的方式,调用预设的状态索引指令来访问状态寄存器,以确定处于中断响应的目标gpio引脚,能够有效缩短对异常引脚的索引时间,提升确定处于中断响应的目标gpio引脚的效率,进而减小了处理异常引脚的中断响应时间和提升对芯片应用的稳定性。
108.图5是本技术实施例提供的一种用于降低gpio中断响应时间的芯片框图。参照图5,该芯片20包括:检测电路21、中断控制器22、处理器23。
109.其中,检测电路21,用于在检测到存在gpio引脚的电平异常的情况下,生成中断信号,并将中断信号发送至中断控制器。
110.在一实施例中,检测电路21检测gpio引脚包括:对gpio引脚执行电平边沿检测或者电平翻转检测,以在检测到gpio引脚存在边沿跳变或者电平翻转的情况下,确定gpio引脚的电平异常。
111.其中,边沿跳变包括gpio引脚的电平发生上升沿跳变、下降沿跳变或者上升沿和下降沿同时跳变三种中的一种。
112.其中,电平翻转包括gpio引脚的电平发生由低电平到高电平的翻转,或者由高电平到低电平的翻转。
113.在一实施例中,检测电路21包括边沿检测电路,该边沿检测电路用于对gpio引脚执行电平边沿检测,并在gpio引脚的电平跳变幅度超过预设幅度时,边沿检测电路判断gpio引脚产生电平异常,生成中断信号,并将中断信号发送给c-sky架构的芯片20中的状态寄存器和中断控制器22。
114.在另一实施例中,检测电路21包括电平检测电路,该电平检测电路用于对gpio引脚执行电平翻转检测,并在gpio引脚的电平翻转幅度超过预设幅度时,电平检测电路判断gpio引脚产生电平异常,生成中断信号,并将中断信号发送给c-sky架构的芯片20中的状态寄存器和中断控制器22。
115.其中,状态寄存器根据中断信号存储对应gpio引脚的引脚状态。
116.其中,gpio引脚的引脚状态包括异常状态或者正常状态,其在状态寄存器中,被记录为由“0”翻转为“1”的第一状态或者由“1”翻转为“0”的第二状态。
117.其中,中断控制器22,用于响应中断信号,以根据中断信号所在的中断源的中断号生成中断请求,并将中断请求发送给处理器。
118.其中,处理器23,用于响应中断请求,以在预存的中断向量表中查询与中断号相对应的中断向量,并基于中断向量调用对应于中断请求的中断处理程序以执行如上述所述的基于c-sky架构芯片降低gpio中断响应时间的方法;其中,中断向量为中断处理程序的调用地址。
119.作为示例,处理器23具体运行中断处理程序包括步骤:
120.①
:根据中断源的中断号,确定与中断号相绑定的gpio端口的端口号。
121.②
:根据gpio端口的端口号,确定与端口号相绑定的状态寄存器的地址。
122.③
:根据状态寄存器的地址,确定状态寄存器中用于缓存gpio端口各个引脚状态的寄存位次。
123.④
:调用ff1指令或者ff0指令在各个引脚状态的寄存位次中,从高位次到低位次查询第一个引脚状态为异常的寄存位次。
124.⑤
:根据第一个引脚状态为异常的寄存位次,确定对应引脚异常的引脚编号。
125.⑥
:调用引脚编号所对应的中断服务程序,以对该引脚进行中断处理。
126.其中,中断服务程序根据引脚编号,访问状态寄存器,以确定引脚是何种类型的中断,进而根据中断类型进行中断处理。
127.⑦
:在中断服务程序完成中断处理后,对引脚进行中断恢复与返回。
128.应该理解的是,虽然图2-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
129.可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。
130.图6是本技术实施例提供的一种基于c-sky架构芯片降低gpio中断响应时间的装置框图。参照图6,该基于c-sky架构芯片降低gpio中断响应时间的装置30包括:请求获取单元31、地址确定单元32、引脚确定单元33和中断处理单元34。
131.其中,请求获取单元31,被配置为执行获取芯片发送的中断请求;所述芯片为基于c-sky架构开发的嵌入式芯片,所述中断请求用于指示对所述芯片中的gpio引脚执行中断处理,所述gpio引脚为所述芯片中的输入输出端口上设置的外部引脚;
132.其中,地址确定单元32,被配置为执行基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;
133.其中,引脚确定单元33,被配置为执行调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;
134.其中,中断处理单元34,被配置为执行基于预设的中断服务程序对所述目标gpio引脚执行中断处理。
135.在一示例性实施例中,在所述状态寄存器中缓存有关于各个所述gpio引脚对应中断状态的状态值,且处于所述第一状态的gpio引脚的状态值为1;所述调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚的方面,所述装置30还包括:
136.调用预设的ff1指令访问所述状态寄存器地址,以在所述状态寄存器中,从引脚编号的最高位次向最低位次顺序查找所述状态值为1的gpio引脚;所述ff1指令为快速查找状态值1的指令,所述引脚编号为各所述gpio引脚之间唯一的数字编号;
137.响应于查找到第一个所述状态值为1的第一gpio引脚,将所述第一gpio引脚作为目标gpio引脚。
138.在一示例性实施例中,所述中断状态包括用于表征所述gpio引脚未处于中断响应
unit,中央处理单元)。处理器组件可能是一种电子芯片,具有信号的处理能力。处理器还可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器组件等。另外,处理器组件可以由集成电路芯片共同实现。
152.在一些实施例中,存储器42被配置为存储各种类型的数据以支持在服务器40的操作。这些数据的示例包括用于在服务器40上操作的任何应用程序或方法的指令、采集数据、消息、图片、视频等。存储器42可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、快闪存储器、磁盘、光盘或石墨烯存储器。
153.在一些实施例中,存储器42可以为内存条、tf卡等,可以存储服务器40中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器42中。在一些实施例中,它根据处理器指定的位置存入和取出信息。在一些实施例中,有了存储器42,服务器40才有记忆功能,才能保证正常工作。在一些实施例中,服务器40的存储器42按用途可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。
154.在一些实施例中,服务器40还可以包括:电源组件43被配置为执行服务器40的电源管理,有线或无线网络接口44被配置为将服务器40连接到网络,和输入输出(i/o)接口45。服务器40可以操作基于存储在存储器42的操作系统,例如windows server,mac os x,unix,linux,freebsd或类似。
155.在一些实施例中,电源组件43为服务器40的各种组件提供电力。电源组件43可以包括电源管理系统,一个或多个电源,及其他与为服务器40生成、管理和分配电力相关联的组件。
156.在一些实施例中,有线或无线网络接口44被配置为便于服务器40和其他设备之间有线或无线方式的通信。服务器40可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。
157.在一些实施例中,有线或无线网络接口44经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,有线或无线网络接口44还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
158.在一些实施例中,输入输出(i/o)接口45为处理器41和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
159.本技术实施例提供的一种计算机可读存储介质的框图。该计算机可读存储介质上
存储有计算机程序,其中,计算机程序被处理器执行时实现如上述的基于c-sky架构芯片降低gpio中断响应时间的方法。
160.在本技术各个实施例中的各功能单元集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机可读存储介质在一个计算机程序中,包括若干指令用以使得一台服务器(可以是个人计算机,系统服务器,或者网络设备等)、电子设备(例如mp3、mp4等,也可以是手机、平板电脑、可穿戴设备等智能终端,也可以是台式电脑等)或者处理器(processor)以执行本技术各个实施方式方法的全部或部分步骤。
161.本技术实施例提供的一种计算机程序产品的框图。该计算机程序产品中包括程序指令,该程序指令可由服务器的处理器执行以实现如上述的基于yolo改进的深度学习目标检测方法。
162.本领域内的技术人员应明白,本技术的实施例可提供有基于c-sky架构芯片降低gpio中断响应时间的方法、用于降低gpio中断响应时间的芯片20、基于c-sky架构芯片降低gpio中断响应时间的装置30、服务器40、计算机可读存储介质或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机程序指令(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
163.本技术是参照根据本技术实施例中基于c-sky架构芯片降低gpio中断响应时间的方法、用于降低gpio中断响应时间的芯片20、基于c-sky架构芯片降低gpio中断响应时间的装置30、服务器40、计算机可读存储介质或计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序产品实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序产品到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的程序指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
164.这些计算机程序产品也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机程序产品中的程序指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
165.这些程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的程序指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
166.需要说明的,上述的各种方法、装置、电子设备、计算机可读存储介质、计算机程序产品等根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
167.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或
者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
168.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
技术特征:
1.一种基于c-sky架构芯片降低gpio中断响应时间的方法,其特征在于,所述方法包括:获取芯片发送的中断请求;所述芯片为基于c-sky架构开发的嵌入式芯片,所述中断请求用于指示对所述芯片中的gpio引脚执行中断处理,所述gpio引脚为所述芯片中的输入输出端口上设置的外部引脚;基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;基于预设的中断服务程序对所述目标gpio引脚执行中断处理。2.根据权利要求1所述的方法,其特征在于,在所述状态寄存器中缓存有关于各个所述gpio引脚对应中断状态的状态值,且处于所述第一状态的gpio引脚的状态值为1;所述调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚,包括:调用预设的ff1指令访问所述状态寄存器地址,以在所述状态寄存器中,从引脚编号的最高位次向最低位次顺序查找所述状态值为1的gpio引脚;所述ff1指令为快速查找状态值1的指令,所述引脚编号为各所述gpio引脚之间唯一的数字编号;响应于查找到第一个所述状态值为1的第一gpio引脚,将所述第一gpio引脚作为目标gpio引脚。3.根据权利要求1所述的方法,其特征在于,所述中断状态包括用于表征所述gpio引脚未处于中断响应的第二状态;在所述状态寄存器中缓存有关于各个所述gpio引脚对应中断状态的状态值,且处于所述第二状态的gpio引脚的状态值为0;所述调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚,包括:调用预设的ff0指令访问所述状态寄存器地址,以在所述状态寄存器中,从引脚编号的最高位次向最低位次顺序查找所述状态值为0的gpio引脚;所述ff0指令为快速查找状态值0的指令,所述引脚编号为各所述gpio引脚之间唯一的数字编号;响应于查找到第一个所述状态值不为0的第二gpio引脚,将所述第二gpio引脚作为目标gpio引脚。4.根据权利要求1所述的方法,其特征在于,所述基于预设的中断服务程序对所述目标gpio引脚执行中断处理,包括:确定对应于所述目标gpio引脚的引脚编号的目标中断服务程序;调用所述目标中断服务程序基于所述引脚编号访问所述状态寄存器,以确定所述目标gpio引脚的中断类型,以及根据所述中断类型对进行中断处理。5.根据权利要求1所述的方法,其特征在于,所述基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址,包括:对所述中断请求进行数据解析,以确定所述中断信号所在中断源的中断号;所述中断
源表征所述中断信号发生的电路区域;确定与所述中断号相绑定的输入输出端口的端口号;确定与所述端口号相绑定的状态寄存器地址。6.一种降低gpio中断响应时间的芯片,其特征在于,所述芯片包括:检测电路、输入输出端口、中断控制器和处理器;所述输入输出端口上配置有多个gpio引脚;其中,所述检测电路,用于在检测到存在gpio引脚的电平异常的情况下,生成中断信号,并将所述中断信号发送至所述中断控制器;所述中断控制器,用于响应所述中断信号,以根据所述中断信号所在的中断源的中断号生成中断请求,并将所述中断请求发送给处理器;所述处理器,用于响应所述中断请求,以在预存的中断向量表中查询与所述中断号相对应的中断向量,并基于所述中断向量调用对应于所述中断请求的中断处理程序以执行如上述权利要求1-5中任一项所述的基于c-sky架构芯片降低gpio中断响应时间的方法;其中,所述中断向量为所述中断处理程序的调用地址。7.根据权利要求6所述的芯片,其特征在于,所述检测电路,还用于对所述gpio引脚执行电平边沿检测或者电平翻转检测,以在检测到所述gpio引脚存在边沿跳变或者电平翻转的情况下,确定所述gpio引脚的电平异常;其中,所述边沿跳变包括所述gpio引脚的电平发生上升沿跳变、下降沿跳变或者上升沿和下降沿同时跳变三种中的一种;所述电平翻转包括所述gpio引脚的电平发生由低电平到高电平的翻转,或者由高电平到低电平的翻转。8.一种基于c-sky架构芯片降低gpio中断响应时间的装置,其特征在于,所述装置包括:请求获取单元,被配置为执行获取芯片发送的中断请求;所述芯片为基于c-sky架构开发的嵌入式芯片,所述中断请求用于指示对所述芯片中的gpio引脚执行中断处理,所述gpio引脚为所述芯片中的输入输出端口上设置的外部引脚;地址确定单元,被配置为执行基于所述中断请求,确定用于存储所述gpio引脚的中断状态的状态寄存器地址;所述中断状态包括用于表征所述gpio引脚处于中断响应的第一状态,所述状态寄存器地址为所述芯片中的状态寄存器的访问地址;引脚确定单元,被配置为执行调用预设的状态索引指令访问所述状态寄存器地址,以确定所述芯片中所述中断状态为第一状态的目标gpio引脚;所述状态索引指令为单周期的查找指令,且所述状态索引指令用于降低所述gpio引脚的中断响应时间;中断处理单元,被配置为执行基于预设的中断服务程序对所述目标gpio引脚执行中断处理。9.一种服务器,其特征在于,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为执行所述可执行指令,以实现如权利要求1至5中任一项所述的基于c-sky架构芯片降低gpio中断响应时间的方法。10.一种计算机可读存储介质,所述计算机可读存储介质中包括程序数据,其特征在
于,当所述程序数据由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至5中任一项所述的基于c-sky架构芯片降低gpio中断响应时间的方法。
技术总结
本申请涉及一种基于C-SKY架构芯片降低GPIO中断响应时间的方法、芯片、装置、服务器、存储介质和计算机程序产品。该方法包括:获取芯片发送的中断请求;中断请求用于指示对芯片中的GPIO引脚执行中断处理;基于中断请求,确定用于存储GPIO引脚的中断状态的状态寄存器地址;中断状态包括用于表征GPIO引脚处于中断响应的第一状态;调用预设的状态索引指令访问状态寄存器地址,以确定芯片中中断状态为第一状态的目标GPIO引脚;状态索引指令为单周期的查找指令,且状态索引指令用于降低GPIO引脚的中断响应时间;基于预设的中断服务程序对目标GPIO引脚执行中断处理。采用本方法能够缩短对异常引脚的索引时间,减小处理异常引脚的中断响应时间和提升对芯片应用的稳定性。响应时间和提升对芯片应用的稳定性。响应时间和提升对芯片应用的稳定性。
技术研发人员:陶伟 董飞龙 姚浩 陈军健 蔡田田 关志华 邓清唐 邝野
受保护的技术使用者:南方电网数字电网研究院有限公司
技术研发日:2023.06.27
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种导尿管固定装置 下一篇:一种降解烟碱的芽孢杆菌及其应用的制作方法
