本技术涉及汽车电子,尤其涉及一种中断的管理方法及装置。
背景技术:
1、在汽车电子系统中,单片机平台通常被广泛应用于各种控制单元和模块中。其中,中断管理是单片机平台中的一个重要功能,在汽车电子系统中,中断管理通常用于处理来自各种传感器和控制单元的输入信号,同时,在单片机平台中,中断管理也需要考虑系统的稳定性和安全性,避免中断服务程序对系统的正常运行造成负面影响。为此,开发人员需要编写高效、稳定和可靠的中断服务程序。
2、由于单片机平台上的中断管理方法没有明确规定,软件开发工具包通常采用最简单经典的中断管理方法,即基于硬件中断的中断序列号(irqn),索引到静态中断向量表中对应的中断服务函数(isr)地址,并将该地址装载到cpu程序计数器(pc)中,然后通过非易失性存储器闪存flash,保存静态中断向量表,以实现中断管理。
3、然而静态中断向量表的缺点是不易更改以及维护等开发问题,甚至可能还会涉及到中断向量表被篡改风险的安全风险。
技术实现思路
1、基于上述现有技术的不足,本技术提供了一种中断的管理方法及装置,以解决现有技术所带来的中断向量表容易被篡改的问题。
2、为了实现上述目的,本技术提供了以下技术方案:
3、本技术第一方面提供了一种中断的管理方法,包括:
4、获取硬件产生的中断信号;
5、基于所述中断信号,利用偏移量寄存器从预先构建的中断向量表中获取中间软件层函数的指针,并将所述中间软件层函数的指针加载到中断活跃状态寄存器中;
6、调用下层软件层函数在所述中断活跃状态寄存器和预先构建的子中断向量表中,确定中断服务函数的指针;
7、对所述中断服务函数的指针进行有效性检查;
8、若所述中断服务函数的指针通过有效性检查,则通过所述中断服务函数的指针,调用所述中断服务函数执行中断操作。
9、可选地,在上述的中断的管理方法中,所述中断向量表的构建方法,包括:
10、获取非内核事件对应的指针和中断序列号,以及内核事件对应的指针和中断序列号;
11、构建数组;
12、利用默认内核事件处理函数的指针对所述内核事件对应的指针进行填充,并利用中间软件层函数的指针对所述非内核事件对应的指针进行填充;
13、将填充后的内核事件以及非内核事件存储至所述数组中;
14、按照非内核事件对应的中断序列号,对所述数组中填充后的非内核事件进行排序,并按照内核事件对应的中断序列号,对所述数组中填充后的内核事件进行排序,得到内存数组;
15、将所述内存数组作为中断向量表。
16、可选地,在上述的中断的管理方法中,所述子中断向量表的构建方法,包括:
17、获取硬件的多个中断序列号及其对应的中断服务函数的指针;
18、按照各个所述中断序列号,对各个所述中断服务函数的指针进行排序,得到目标序列,并将所述目标序列作为向量表;
19、将多个中断序列号及其对应的中断服务函数的指针输入接口函数中,构建所述向量表的元素;
20、将所述向量表的元素存储至所述向量表中,得到子中断向量表。
21、可选地,在上述的中断的管理方法中,所述调用下层软件层函数在所述中断活跃状态寄存器和预先构建的子中断向量表中,确定中断服务函数的指针,包括:
22、调用下层软件层函数在所述中断活跃状态寄存器中查询当前活跃的目标中断序列号;
23、从预先构建的子中断向量表中确定出与所述目标中断序列号对应的中断服务函数的指针。
24、可选地,在上述的中断的管理方法中,所述对所述中断服务函数的指针进行有效性检查,包括:
25、检测所述中断服务函数的指针是否为空指针;
26、若所述中断服务函数的指针为非空指针,则检测所述中断服务函数的指针是否处于有效范围;
27、若所述中断服务函数的指针处于所述有效范围,则确定所述中断服务函数的指针通过有效性检查;
28、若所述中断服务函数的指针为空指针,或者所述中断服务函数的指针未处于所述有效范围,则确定所述中断服务函数的指针未通过有效性检查。
29、可选地,在上述的中断的管理方法中,还包括:
30、检查所有的mcal软件是否均已初始化;
31、若所有的所述mcal软件均未初始化,则利用接口函数调用配置集执行中断注册功能;其中,所述配置集预先通过platform模块调用生成工具对配置文件进行配置得到;
32、若所有的所述mcal软件均已初始化,则确定所有所述mcal软件初始化完成。
33、本技术第二方面提供了一种中断的管理装置,包括:
34、信号获取单元,用于获取硬件产生的中断信号;
35、加载单元,用于基于所述中断信号,利用偏移量寄存器从预先构建的中断向量表中获取中间软件层函数的指针,并将所述中间软件层函数的指针加载到中断活跃状态寄存器中;
36、指针确定单元,用于调用下层软件层函数在所述中断活跃状态寄存器和预先构建的子中断向量表中,确定中断服务函数的指针;
37、指针检查单元,用于对所述中断服务函数的指针进行有效性检查;
38、函数调用单元,用于若所述中断服务函数的指针通过有效性检查,则通过所述中断服务函数的指针,调用所述中断服务函数执行中断操作。
39、可选地,在上述的中断的管理装置中,还包括:
40、第一获取单元,用于获取非内核事件对应的指针和中断序列号,以及内核事件对应的指针和中断序列号;
41、构建单元,用于构建数组;
42、填充单元,用于利用默认内核事件处理函数的指针对所述内核事件对应的指针进行填充,并利用中间软件层函数的指针对所述非内核事件对应的指针进行填充;
43、第一存储单元,用于将填充后的内核事件以及非内核事件存储至所述数组中;
44、第一排序单元,用于按照非内核事件对应的中断序列号,对所述数组中填充后的非内核事件进行排序,并按照内核事件对应的中断序列号,对所述数组中填充后的内核事件进行排序,得到内存数组;
45、作为单元,用于将所述内存数组作为中断向量表。
46、可选地,在上述的中断的管理装置中,还包括:
47、第二获取单元,用于获取硬件的多个中断序列号及其对应的中断服务函数的指针;
48、第二排序单元,用于按照各个所述中断序列号,对各个所述中断服务函数的指针进行排序,得到目标序列,并将所述目标序列作为向量表;
49、输入单元,用于将多个中断序列号及其对应的中断服务函数的指针输入接口函数中,构建所述向量表的元素;
50、第二存储单元,用于将所述向量表的元素存储至所述向量表中,得到子中断向量表。
51、可选地,在上述的中断的管理装置中,所述指针确定单元,包括:
52、查询单元,用于调用下层软件层函数在所述中断活跃状态寄存器中查询当前活跃的目标中断序列号;
53、第一确定单元,用于从预先构建的子中断向量表中确定出与所述目标中断序列号对应的中断服务函数的指针。
54、可选地,在上述的中断的管理装置中,所述指针检查单元,包括:
55、第一检测单元,用于检测所述中断服务函数的指针是否为空指针;
56、第二检测单元,用于若所述中断服务函数的指针为非空指针,则检测所述中断服务函数的指针是否处于有效范围;
57、第二确定单元,用于若所述中断服务函数的指针处于所述有效范围,则确定所述中断服务函数的指针通过有效性检查;
58、第三确定单元,用于若所述中断服务函数的指针为空指针,或者所述中断服务函数的指针未处于所述有效范围,则确定所述中断服务函数的指针未通过有效性检查。
59、可选地,在上述的中断的管理装置中,还包括:
60、检查单元,用于检查所有的mcal软件是否均已初始化;
61、执行单元,用于若所有的所述mcal软件均未初始化,则利用接口函数调用配置集执行中断注册功能;其中,所述配置集预先通过platform模块调用生成工具对配置文件进行配置得到;
62、第四确定单元,用于若所有的所述mcal软件均已初始化,则确定所有所述mcal软件初始化完成。
63、本技术提供的一种中断的管理方法,通过获取硬件产生的中断信号,其次基于中断信号利用偏移量寄存器从预先构建的中断向量表中获取中间软件层函数的指针,并将中间软件层函数的指针加载到中断活跃状态寄存器中,然后调用下层软件层函数在中断活跃状态寄存器和预先构建的子中断向量表中,确定中断服务函数的指针,最后对中断服务函数的指针进行有效性检查,若中断服务函数的指针通过有效性检查,则通过中断服务函数的指针,调用中断服务函数执行中断操作。由于本技术是基于ram框架,因此会将中断向量表以及子中断向量表存储在ram中,而且ram的存储相较于现有技术的flash的存储更加安全,因此中断向量表在ram中不易发生被篡改的可能性。
1.一种中断的管理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述中断向量表的构建方法,包括:
3.根据权利要求1所述的方法,其特征在于,所述子中断向量表的构建方法,包括:
4.根据权利要求1所述的方法,其特征在于,所述调用下层软件层函数在所述中断活跃状态寄存器和预先构建的子中断向量表中,确定中断服务函数的指针,包括:
5.根据权利要求1所述的方法,其特征在于,所述对所述中断服务函数的指针进行有效性检查,包括:
6.根据权利要求1所述的方法,其特征在于,还包括:
7.一种中断的管理装置,其特征在于,包括:
8.根据权利要求7所述的装置,其特征在于,还包括:
9.根据权利要求7所述的装置,其特征在于,还包括:
10.根据权利要求7所述的装置,其特征在于,所述指针确定单元,包括:
