一种中断设置方法、装置、电子设备及存储介质与流程
未命名
09-13
阅读:99
评论:0

1.本发明涉及计算机技术领域,特别是涉及一种中断设置方法、一种中断设置装置、一种电子设备以及一种可读存储介质。
背景技术:
2.pmon(prom monitor,可编程只读存储器监视器)是一个兼有bios(basic input output system,基本输入输出系统)和boot loader(引导加载程序)部分功能的开放源码软件。pmon具有强大而丰富的功能,包括硬件初始化、操作系统引导和硬件测试、程序调式等功能。
3.pmon支持很多种平台的处理器的启动,设备系统上电后,开始运行pmon,随后pmon会完成初始化处理器、内存、总线等设备及对串口、键盘、鼠标等外设进行基础测试等一系列工作。
4.目前,在pmon工作过程中,采用轮循方式不断的检查设备状态。例如网络、usb2.0(universal serial bus2.0,通用串行总线2.0)、usb3.0(universal serial bus3.0,通用串行总线3.0)等外部设备都是采用这种方式替代中断。
5.首先,对于功能复杂的外部设备,轮循方式给移植开发工作带来困扰。比如在usb3.0接口插入键盘,有些键盘在启动状态下与usb接口控制器适配不好,给研发造成了极大的困扰。
6.其次,轮循方式使得在pmon下大多数外部设备不支持热插拔。例如,u盘、键盘、sd卡等。
7.最后,在pmon下,读取外部设备的时候采用轮循方式去等待设备的响应,造成了等待时间长。
技术实现要素:
8.本发明实施例所要解决的技术问题是提供一种中断设置方法、装置、电子设备及可读存储介质,以便解决pmon采用轮循方式替代中断,给移植开发工作带来困扰,外部设备不支持热插拔,等待设备响应的时间长的问题。
9.为了解决上述问题,本发明提供了一种中断设置方法,应用于启动系统,包括:
10.在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址;
11.针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定;
12.将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号;
13.将所述至少一种外部设备对应的中断号对应的中断使能。
14.可选地,在所述将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号之后,所述方法还包括:
15.接收目标外部设备产生的中断信号;
16.响应于所述中断信号,读取异常原因寄存器,得到异常类型;
17.根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号;
18.从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址;
19.根据所述预设地址和偏移地址,执行对应的所述中断处理程序。
20.可选地,所述根据所述预设地址和偏移地址,执行对应的所述中断处理程序包括:
21.对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;
22.跳转到所述程序入口地址,以执行所述中断处理程序。
23.可选地,所述方法还包括:
24.在所述启动系统的运行过程中,在将所述启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址。
25.可选地,在所述针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中之前,所述方法还包括:
26.针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。
27.本发明还提供了一种中断设置装置,应用于启动系统,包括:
28.地址设置模块,用于在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址;
29.保存模块,用于针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定;
30.中断号设置模块,用于将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号;
31.使能模块,用于将所述至少一种外部设备对应的中断号对应的中断使能。
32.可选地,所述装置还包括:
33.信号接收模块,用于在所述将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号之后,接收目标外部设备产生的中断信号;
34.读取模块,用于响应于所述中断信号,读取异常原因寄存器,得到异常类型;
35.中断号读取模块,用于根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号;
36.地址读取模块,用于从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址;
37.程序执行模块,用于根据所述预设地址和偏移地址,执行对应的所述中断处理程序。
38.可选地,所述程序执行模块包括:
39.地址生成子模块,用于对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;
40.跳转子模块,用于跳转到所述程序入口地址,以执行所述中断处理程序。
41.可选地,所述装置还包括:
42.状态设置模块,用于在所述启动系统的运行过程中,在将所述启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址。
43.可选地,所述装置还包括:
44.中断线设置模块,用于在所述针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中之前,针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。
45.本发明实施例还公开了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
46.存储器,用于存放计算机程序;
47.处理器,用于执行存储器上所存放的程序时,实现如上所述的方法步骤。
48.本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的方法。
49.依据本发明实施例,通过在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号,将所述至少一种外部设备对应的中断号对应的中断使能,使得在启动系统中能够通过中断的方式来响应外部设备,提高了软件适配硬件的效率,给移植开发工作带来便利,继而启动系统也能支持外部设备的热插拔,而且减少了设备响应的等待时间。
附图说明
50.图1示出了本发明的一个实施例提供的一种中断设置方法的步骤流程图;
51.图2示出了本发明的另一个实施例提供的一种中断设置方法的步骤流程图;
52.图3示出了在pmon下添加中断的示意图;
53.图4示出了中断处理的示意图;
54.图5示出了本发明的另一个实施例提供的一种中断设置装置实施例的结构框图;
55.图6示出了根据一示例性实施例示出的一种用于中断设置的电子设备的结构框图。
具体实施方式
56.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
57.参照图1,示出了本发明实施例提供的一种中断设置方法的步骤流程图,应用于启动系统,具体可以包括如下步骤:
58.步骤101,在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址。
59.在本发明实施例中,启动系统可以为pmon、u-boot(universal boot loader,通用启动加载程序)、uefi(unified extensible firmware interface,统一可扩展固件接口)等各种固件中的任意一种,或者其他任意适用的启动系统,本发明实施例对此不做限制。
60.启动系统的运行过程分为两个阶段:第一阶段是在flash(闪存)中运行,主要进行基本硬件初始化,如:桥片、内存控制器、缓存和串口初始化等;第二阶段在内存中执行,主要完成环境变量和基本数据结构的初始化、pci(peripheral component interconnect,外设部件互连标准)总线扫描和设备初始化,显卡初始化、网络协议和设备初始化,并对搜索到的pci总线上的设备进行驱动程序的加载与配置等,最后加载操作系统内核。
61.在本发明实施例中,状态寄存器是计算机系统的核心部件运算器的一部分,状态寄存器可以用来存储处理器的工作状态,包括异常入口控制的状态寄存器,例如,status.bev寄存器。当异常入口控制的状态寄存器设置为启动状态时,发生异常时,异常入口地址是非缓存的固定地址,当异常入口控制的状态寄存器设置为正常状态时,将异常基址寄存器的值作为异常入口地址,从而允许通过编程一起移动所有的异常入口的其他地址。通常在启动系统下,异常入口控制的状态寄存器设置为启动状态。
62.在本发明的一种可选实施例中,还包括:在启动系统的运行过程中,在将启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址,例如,status.bev寄存器的值设置为1。在启动状态时,异常入口地址固定为启动系统的启动地址,例如,0xbfc00000。在启动系统进入内存中执行之前,若发生异常,则跳转到该启动地址运行。
63.在本发明实施例中,在内存初始化完成后,将启动系统从闪存加载到内存后,启动系统可以进入内存中执行。为了在启动系统下实现中断,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址。其中,预设地址可以根据实际需要进行设定,本发明实施例对此不作限制。例如,大多数软件设置处理器的异常入口地址为内存的0地址。
64.步骤102,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定。
65.在本发明实施例中,外部设备是指处理器外的设备,包括dma(direct memory access,直接存储器访问)控制器、sata(serial advanced technology attachment,串行高级技术附件)硬盘、sdio(secure digital input and output,安全数字输入输出)卡、gpio(general-purpose input/output,通用输入输出)口等,或者其他任意适用的设备,本发明实施例对此不做限制。
66.在本发明实施例中,中断是指在cpu运行期间,被cpu外部事件所打断、暂停当前程序的执行而转去执行一段特定的处理外部时间程序的过程。外部设备进行i/o操作时,会随机产生中断请求信号。这个中断请求信号中会有特定的标志,使计算机能够判断是哪个设备提出中断请求,这个信号就叫做中断号。
67.在本发明实施例中,中断处理程序是对各种外部设备对应的中断进行处理的程序。每种外部设备对应的中断的处理方式不同。
68.鉴于启动系统的小型化,本发明实施例中的中断处理程序可以仅包括针对至少一种外部设备的中断处理程序。除此之外,启动系统中也可以添加缓存例外的处理程序、tlb
(translation lookaside buffer,转译后备缓冲区)重填例外的处理程序等。
69.在本发明实施例中,为每种中断单独开发对应的中断处理程序,也就是,中断号和中断处理程序相对应。启动系统从闪存加载到内存时,中断处理程序也加载到内存中,并且中断处理程序的入口是由预设地址和偏移地址确定的。例如,中断处理程序的入口=预设地址+偏移地址。
70.在本发明实施例中,将中断号和对应的中断处理程序的偏移地址保存到内存中,以供需要时能根据中断号,得到对应的偏移地址。例如,内存中创建中断申请链表,用于保存中断号和对应的中断处理程序的偏移地址。
71.在本发明实施例中,在程序运行到任何地方时,若发生中断,则中断当前的程序运行,去响应中断,那么cpu自动取得中断处理程序的入口的地址并转入执行中断处理程序。每种中断的处理方式不同,例如,在异常中断的处理程序中,需要先把现场环境保存起来,主要包括保存各种寄存器等,然后判断中断号,然后进入申请中断时的中断处理程序,中断处理程序处理完成后恢复现场。
72.步骤103,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号。
73.在本发明实施例中,不同的外部设备有专门用于中断控制的寄存器,记为中断控制寄存器。中断控制器寄存器可以存储中断号,以供在外部设备产生中断信号时,从中断控制寄存器中读取到中断号,继而确定中断号对应的中断处理程序。
74.在本发明实施例中,一个或多个外部设备与一个中断控制寄存器对应。将至少一个外部设备对应的中断控制寄存器的值设置为对应的中断号。
75.步骤104,将所述至少一种外部设备对应的中断号对应的中断使能。
76.在本发明实施例中,为了让cpu能够响应中断,需要将中断使能。状态寄存器里有多个单独的中断屏蔽位sr(im),每个中断屏蔽位对应一个或多个中断号。要使能某个中断,其对应的屏蔽位sr(im)必须置为1。此外,全局中断使能位sr(ie)必须置1,否则没有中断响应。
77.在本发明实施例中,将有中断处理程序的中断号对应的中断使能,即将该中断号对应的屏蔽位置为1。
78.依据本发明实施例,通过在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号,将所述至少一种外部设备对应的中断号对应的中断使能,使得在启动系统中能够通过中断的方式来响应外部设备,提高了软件适配硬件的效率,给移植开发工作带来便利,继而启动系统也能支持外部设备的热插拔,而且减少了设备响应的等待时间。
79.参照图2,示出了本发明实施例提供的一种中断设置方法的步骤流程图,应用于启动系统,具体可以包括如下步骤:
80.步骤201,在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址。
81.在本发明实施例中,此步骤的具体实现方式可以参照前述实施例中的描述,此处
不另赘述。
82.步骤202,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定。
83.在本发明实施例中,此步骤的具体实现方式可以参照前述实施例中的描述,此处不另赘述。
84.在本发明的一种可选实施例中,在针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中之前,还包括:针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。
85.中断线是处理器和主板芯片之间的连接总线中的一种,用于处理器和外部设备之间的中断信号的传输。一个中断线可以对应一个或多个外部设备中断源。对于各个中断号,需要设置中断号对应的中断线,也就是设置中断路由。
86.对于有些处理器而言,该处理内部有默认的中断路由分配,可以不用设置。但有些处理器需要设置中断路由,具体为将中断号路由到目标处理器和处理器的目标处理器核,以及将中断号路由到处理器的ht(hyper-transport,总线)的中断线上。
87.步骤203,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号。
88.在本发明实施例中,此步骤的具体实现方式可以参照前述实施例中的描述,此处不另赘述。
89.步骤204,将所述至少一种外部设备对应的中断号对应的中断使能。
90.在本发明实施例中,此步骤的具体实现方式可以参照前述实施例中的描述,此处不另赘述。
91.例如,如图3所示的在pmon下添加中断的示意图。在上电后,pmon开始运行。先对处理器等硬件进行初始化,然后设置异常入口地址固定为启动系统的启动地址,设置status.bev寄存器的值设置为1,即启动状态。然后开始初始化内存,将pmon从flash拷贝到内存中。上述过程可以由汇编语言实现。在将pmon从flash加载到内存后,设置status.bev寄存器的值设置为0,即正常状态。然后重新设置中断入口,将处理器中的异常基址寄存器的值设置为预设地址。之后设置中断路由。设置中断申请链表,也就是将中断号和对应的中断处理程序的偏移地址保存到所述内存中,保证在中断到来时能够找到该中断号的中断处理程序。然后设备注册中断,即将至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号。最后使能中断,将中断号对应的中断使能。
92.步骤205,接收目标外部设备产生的中断信号。
93.在本发明实施例中,在启动系统中,接收到目标外部设备产生的中断信号。
94.步骤206,响应于所述中断信号,读取异常原因寄存器,得到异常类型。
95.在本发明实施例中,异常原因寄存器用于反映当前的异常类型。异常类型包括多种,例如,外部设备中断、地址转译例外、地址读错例外、地址写错例外等,或者其他任意适用的类型,本发明实施例对此不做限制。
96.在本发明实施例中,响应于中断信号,读取异常原因寄存器。根据异常原因寄存器的值,可以确定对应的异常类型。
97.异常类型包括以下至少一种:外部设备中断、地址转译例外、地址读错例外、地址
写错例外。
98.其中,外部设备中断是指由外部设备产生的中断。地址转译例外是指tlb硬件上只存在存储一定数目的地址转换条目,在运行一个虚拟内存的操作系统中,如果程序得以充分的运行,应用程序就会很容易碰到一个虚拟地址在tlb中没有的情况,一个tlb不匹配的例外事件就发生了,也就是tlb需要重填的例外。地址读错例外是指在从指定的地址读取数据时,发生地址越界、地址不存在等例外事件。地址写错例外是指在在指定的地址写入数据时,发生地址越界、地址不存在等例外事件。
99.步骤207,根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号。
100.在本发明实施例中,根据异常类型,确定中断是目标外部设备产生的,则从目标外部设备对应的中断控制寄存器获取中断号。
101.步骤208,从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址。
102.在本发明实施例中,内存中存有中断号和对应的中断处理程序的偏移地址。因此,根据中断号,可以确定对应的偏移地址,从内存中读取对应的偏移地址。并且从异常基址寄存器读取预设地址。
103.步骤209,根据所述预设地址和偏移地址,执行对应的所述中断处理程序。
104.在本发明实施例中,根据预设地址和偏移地址可以确定中断处理程序的入口。例如,中断处理程序的入口=预设地址+偏移地址。暂停当前程序的执行,跳转到中断处理程序的入口,转而执行中断处理程序。
105.例如,如图4所示的中断处理的示意图。在接收到中断信号后,读取cause(异常原因)寄存器,得到异常类型。判断异常类型是否是外部设备中断,如果不是外部设备中断,再判断是否是其他异常(包括tlb重填例外、地址读错例外、地址写错例外等)。如果是外部设备中断,则索引中断号,例如,从目标外部设备对应的中断控制寄存器读取对应的中断号。最后执行对应的中断处理程序。
106.在本发明的一种可选实施例中,根据所述预设地址和偏移地址,执行对应的所述中断处理程序的一种具体实现方式中,包括:对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;跳转到所述程序入口地址,以执行所述中断处理程序。
107.在loongarch(龙芯指令系统)架构下,其中断处理程序的程序入口地址采用“预设地址和偏移地址进行按位逻辑或”的计算方式生成得到。在生成程序入口地址后,跳转到程序入口地址,从而执行程序入口地址存储的中断处理程序。
108.依据本发明实施例,通过在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号,将所述至少一种外部设备对应的中断号对应的中断使能,接收目标外部设备产生的中断信号,响应于所述中断信号,读取异常原因寄存器,得到异常类型,根据所述异常类型,从所述目标外部设备对应的中断控制寄存器读取对应的中断号,从所述内存读取所述中断号对应的偏
移地址,并从所述异常基址寄存器读取预设地址,根据所述预设地址和偏移地址,执行对应的所述中断处理程序,使得在启动系统中能够通过中断的方式来响应外部设备,提高了软件适配硬件的效率,给移植开发工作带来便利,继而启动系统也能支持外部设备的热插拔,而且减少了设备响应的等待时间。
109.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
110.参照图5,示出了本发明另一实施例提供的一种中断设置装置实施例的结构框图,应用于启动系统,具体可以包括如下模块:
111.地址设置模块301,用于在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址;
112.保存模块302,用于针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定;
113.中断号设置模块303,用于将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号;
114.使能模块304,用于将所述至少一种外部设备对应的中断号对应的中断使能。
115.在本发明的一种可选实施例中,所述装置还包括:
116.信号接收模块,用于在所述将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号之后,接收目标外部设备产生的中断信号;
117.读取模块,用于响应于所述中断信号,读取异常原因寄存器,得到异常类型;
118.中断号读取模块,用于根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号;
119.地址读取模块,用于从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址;
120.程序执行模块,用于根据所述预设地址和偏移地址,执行对应的所述中断处理程序。
121.在本发明的一种可选实施例中,所述程序执行模块包括:
122.地址生成子模块,用于对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;
123.跳转子模块,用于跳转到所述程序入口地址,以执行所述中断处理程序。
124.在本发明的一种可选实施例中,所述装置还包括:
125.状态设置模块,用于在所述启动系统的运行过程中,在将所述启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址。
126.在本发明的一种可选实施例中,所述装置还包括:
127.中断线设置模块,用于在所述针对至少一种外部设备,将对应的中断号和对应的
中断处理程序的偏移地址保存到所述内存中之前,针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。
128.依据本发明实施例,通过在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号,将所述至少一种外部设备对应的中断号对应的中断使能,使得在启动系统中能够通过中断的方式来响应外部设备,提高了软件适配硬件的效率,给移植开发工作带来便利,继而启动系统也能支持外部设备的热插拔,而且减少了设备响应的等待时间。
129.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
130.图6是根据一示例性实施例示出的一种用于中断设置的电子设备700的结构框图。例如,电子设备700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
131.参照图6,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及通信组件716。
132.处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理部件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
133.存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
134.电力组件704为电子设备700的各种组件提供电力。电力组件704可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
135.多媒体组件708包括在所述电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
136.音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克
风(mic),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
137.i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
138.传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
139.通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信部件714经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件714还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
140.在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
141.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
142.一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种中断设置方法,所述方法包括:
143.在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址;
144.针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定;
145.将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号;
146.将所述至少一种外部设备对应的中断号对应的中断使能。
147.可选地,在所述将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号之后,所述方法还包括:
148.接收目标外部设备产生的中断信号;
149.响应于所述中断信号,读取异常原因寄存器,得到异常类型;
150.根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号;
151.从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址;
152.根据所述预设地址和偏移地址,执行对应的所述中断处理程序。
153.可选地,所述根据所述预设地址和偏移地址,执行对应的所述中断处理程序包括:
154.对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;
155.跳转到所述程序入口地址,以执行所述中断处理程序。
156.可选地,所述方法还包括:
157.在所述启动系统的运行过程中,在将所述启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址。
158.可选地,在所述针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中之前,所述方法还包括:
159.针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。
160.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
161.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
162.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
163.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
164.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
165.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为
包括优选实施例以及落入本发明实施例范围的所有变更和修改。
166.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
167.以上对本发明所提供的一种中断设置方法、一种中断设置装置、一种电子设备、一种可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:
1.一种中断设置方法,其特征在于,应用于启动系统,包括:在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址;针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定;将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号;将所述至少一种外部设备对应的中断号对应的中断使能。2.根据权利要求1所述的方法,其特征在于,在所述将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号之后,所述方法还包括:接收目标外部设备产生的中断信号;响应于所述中断信号,读取异常原因寄存器,得到异常类型;根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号;从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址;根据所述预设地址和偏移地址,执行对应的所述中断处理程序。3.根据权利要求2所述的方法,其特征在于,所述根据所述预设地址和偏移地址,执行对应的所述中断处理程序包括:对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;跳转到所述程序入口地址,以执行所述中断处理程序。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述启动系统的运行过程中,在将所述启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址。5.根据权利要求1所述的方法,其特征在于,在所述针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中之前,所述方法还包括:针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。6.一种中断设置装置,其特征在于,应用于启动系统,包括:地址设置模块,用于在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址;保存模块,用于针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中;其中,所述中断处理程序的入口由所述预设地址和偏移地址确定;中断号设置模块,用于将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号;使能模块,用于将所述至少一种外部设备对应的中断号对应的中断使能。7.根据权利要求6所述的装置,其特征在于,所述装置还包括:信号接收模块,用于在所述将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号之后,接收目标外部设备产生的中断信号;读取模块,用于响应于所述中断信号,读取异常原因寄存器,得到异常类型;
中断号读取模块,用于根据所述异常类型,从所述目标外部设备对应的中断控制寄存器获取对应的中断号;地址读取模块,用于从所述内存读取所述中断号对应的偏移地址,并从所述异常基址寄存器读取预设地址;程序执行模块,用于根据所述预设地址和偏移地址,执行对应的所述中断处理程序。8.根据权利要求7所述的装置,其特征在于,所述程序执行模块包括:地址生成子模块,用于对所述预设地址和偏移地址进行按位逻辑或,生成所述中断处理程序的程序入口地址;跳转子模块,用于跳转到所述程序入口地址,以执行所述中断处理程序。9.根据权利要求6所述的装置,其特征在于,所述装置还包括:状态设置模块,用于在所述启动系统的运行过程中,在将所述启动系统从闪存加载到内存前,将所述状态寄存器设置为启动状态,以使异常入口地址为所述启动系统的启动地址。10.根据权利要求6所述的装置,其特征在于,所述装置还包括:中断线设置模块,用于在所述针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中之前,针对各个中断号,设置对应的中断路由到的所述处理器中的中断线。11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。12.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-5中一个或多个所述的中断设置方法。
技术总结
本发明实施例提供了一种中断设置方法和装置。该方法包括:在将所述启动系统从闪存加载到内存后,将异常入口控制的状态寄存器设置为正常状态,并将处理器中的异常基址寄存器的值设置为预设地址,针对至少一种外部设备,将对应的中断号和对应的中断处理程序的偏移地址保存到所述内存中,将所述至少一种外部设备对应的中断控制寄存器的值设置为对应的中断号,将所述至少一种外部设备对应的中断号对应的中断使能,使得在启动系统中能够通过中断的方式来响应外部设备,提高了软件适配硬件的效率,给移植开发工作带来便利,继而启动系统也能支持外部设备的热插拔,而且减少了设备响应的等待时间。的等待时间。的等待时间。
技术研发人员:段志伟 李文刚
受保护的技术使用者:龙芯中科(西安)科技有限公司
技术研发日:2022.03.02
技术公布日:2023/9/12
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/