一种应用于窄带物联网的实时化操作系统及其方法与流程

文档序号:14774016发布日期:2018-06-23 02:31阅读:251来源:国知局
一种应用于窄带物联网的实时化操作系统及其方法与流程

本申请涉及物联网技术领域,尤其涉及一种应用于窄带物联网的实时化操作系统及其方法。



背景技术:

窄带物联网(Narrow Band lnternet of Things,NB-IoT)是新一代物联网通信体系,其具有大连接、广覆盖、深穿透、低成本及低功耗等基本技术特点。窄带物联网包括用户终端(人机交互系统)、信息邮局以及与信息邮局通信连接的NB-IoT终端。NB-IoT终端是一种以微控制器为核心的嵌入式平台,具有数据采集、控制、运算等功能,并且带有NB-IoT通信功能,甚至包含机械结构。NB-IoT终端可以作为具备特定功能的软硬件实体,如NB-IoT燃气表、NB-IoT交通灯、NB-IoT智能农业设备等等,即各种各样实际NB-IoT应用产品。随着窄带物联网技术的发展,NB-IoT应用系统将成为许多实体行业的关键技术。

然而,进行NB-IoT应用系统的技术研发具有较高的技术门槛,主要表现在:需要软硬件协同设计,涉及软件、硬件及行业领域知识;一些系统具有较高的实时性要求;许多产品必须具有较强的抗干扰性与稳定性;开发过程中需要不断的软硬联合测试。因此,当基于NB-IoT技术的框架而进行面向各种实际应用功能的NB-IoT终端开发时,在终端软硬件资源的管理、时间分配、终端系统硬件和功能调用等方面,都存在因系统高度复杂化而带来的困难,导致研发周期拉长、产品稳定性差等缺陷。



技术实现要素:

有鉴于此,本申请的目的在于提出一种应用于窄带物联网的实时化操作系统及其方法。

基于上述目的,本申请提出了一种应用于窄带物联网的实时化操作系统,其特征在于,包括:

初始化模块,用于对NB-IoT终端的堆栈、系统时钟、内存变量、硬件模块以及中断响应模块进行初始化,并且启动主循环;

任务管理模块,用于在主循环过程中调度各个任务的执行;

中断响应模块,用于在CPU发生中断时,响应该中断而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环。

优选的是,所述任务管理模块用于为每个任务分配CPU时间以及任务堆栈空间。

优选的是,所述任务管理模块调度任务的执行包括使任务处于以下状态中的一种状态:终止态、阻塞态、就绪态以及激活态;其中,在所述终止态任务完成或者被删除,不需再使用CPU;在所述阻塞态任务不能被激活,保持等待预定的时间或者条件;在所述就绪态任务进入就绪队列,等待获取CPU使用权而被激活;在所述激活态任务被激活而占用CPU。

进一步优选的是,所述任务管理模块为任务维护就绪队列,将就绪队列中优先级最高的任务进入激活态;并且,当就绪队列中具有多个相同优先级的任务时,则按照FIFO规则调度就绪队列中相同优先级的任务。

进一步优选的是,所述任务管理模块为任务维护延时队列,等待预定的时间或者条件的任务被加入所述延时队列,并且在预定的时间或者条件满足后由延时队列加入所述就绪队列。

优选的是,所述任务管理模块在每个任务被创建时为该任务分配唯一的任务描述符,并且根据所述任务描述符查询任务信息并调度任务。

进一步优选的是,所述任务描述符包括:指向前一个任务描述符的指针、指向后一个任务描述符的指针、任务状态、任务优先级、任务堆栈指针、任务函数指针。

进一步优选的是,所述任务管理模块为每个优先级创建一个就绪队列,在就绪队列上链接就绪任务描述符,形成链表;并且在调度任务时通过查找就绪队列的链表获取就绪队列上的任务描述符信息。

优选的是,所述任务包括以下任意一种类型:创建完成后只会被执行一次,执行完成后会被销毁或者阻塞的单次执行任务;按照一定周期执行的周期执行任务;当等待的资源可用时转为就绪态,而当等待的资源不可用时加入该资源等待队列的资源驱动任务。

优选的是,中断响应模块在发生中断时将CPU正在执行的任务加入延时等待队列。

优选的是,中断响应模块根据使CPU发生中断的中断源的中断向量号,确定中断类型以及查找中断服务例程。

优选的是,中断响应模块确定中断源的优先级,并且最先响应优先级最高的中断。

优选的是,所述中断包括可屏蔽中断和不可屏蔽中断;可屏蔽中断是能够通过程序设置的方式决定不响应的中断;不可屏蔽中断是不能通过程序设置的方式不响应的中断。

优选的是,所述任务管理模块利用以下信息中的任意一种进行任务间通信:事件、信号量、消息队列;所述事件通过1位二进制信息传递某个任务完成的操作,以便实现任务间同步;所述信号量为非负整数,表示共享资源的可用量,当信号量为0时任务进入与该信号量相关联的延时队列;所述消息队列接收并保存由任务发送的消息,以及将消息从本消息队列传送给任务。

本申请提出了一种应用于窄带物联网的实时化任务管理方法,其特征在于,包括:

初始化步骤,用于对NB-IoT终端的堆栈、系统时钟、内存变量、硬件模块以及中断响应模块进行初始化,并且启动主循环;

任务管理步骤,用于在主循环过程中调度各个任务的执行;

中断响应步骤,用于在CPU发生中断时,响应该中断而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环。

优选的是,所述任务管理步骤为每个任务分配CPU时间以及任务堆栈空间。

优选的是,所述任务管理步骤当中,调度任务的执行包括使任务处于以下状态中的一种状态:终止态、阻塞态、就绪态以及激活态;其中,在所述终止态任务完成或者被删除,不需再使用CPU;在所述阻塞态任务不能被激活,保持等待预定的时间或者条件;在所述就绪态任务进入就绪队列,等待获取CPU使用权而被激活;在所述激活态任务被激活而占用CPU。

进一步优选的是,所述任务管理步骤中,为任务维护就绪队列,将就绪队列中优先级最高的任务进入激活态;并且,当就绪队列中具有多个相同优先级的任务时,则按照FIFO规则调度就绪队列中相同优先级的任务。

进一步优选的是,所述任务管理步骤中,为任务维护延时队列,等待预定的时间或者条件的任务被加入所述延时队列,并且在预定的时间或者条件满足后由延时队列加入所述就绪队列。

优选的是,所述任务管理步骤中,在每个任务被创建时为该任务分配唯一的任务描述符,并且根据所述任务描述符查询任务信息并调度任务。

进一步优选的是,所述任务描述符包括:指向前一个任务描述符的指针、指向后一个任务描述符的指针、任务状态、任务优先级、任务堆栈指针、任务函数指针。

进一步优选的是,所述任务管理步骤中,为每个优先级创建一个就绪队列,在就绪队列上链接就绪任务描述符,形成链表;并且在调度任务时通过查找就绪队列的链表获取就绪队列上的任务描述符信息。

优选的是,所述任务包括以下任意一种类型:创建完成后只会被执行一次,执行完成后会被销毁或者阻塞的单次执行任务;按照一定周期执行的周期执行任务;当等待的资源可用时转为就绪态,而当等待的资源不可用时加入该资源等待队列的资源驱动任务。

优选的是,中断响应步骤中,在发生中断时将CPU正在执行的任务加入延时等待队列。

优选的是,中断响应步骤中,根据使CPU发生中断的中断源的中断向量号,确定中断类型以及查找中断服务例程。

优选的是,中断响应步骤中,确定中断源的优先级,并且最先响应优先级最高的中断。

优选的是,所述中断包括可屏蔽中断和不可屏蔽中断;可屏蔽中断是能够通过程序设置的方式决定不响应的中断;不可屏蔽中断是不能通过程序设置的方式不响应的中断。

优选的是,所述任务管理步骤中,利用以下信息中的任意一种进行任务间通信:事件、信号量、消息队列;所述事件通过1位二进制信息传递某个任务完成的操作,以便实现任务间同步;所述信号量为非负整数,表示共享资源的可用量,当信号量为0时任务进入与该信号量相关联的延时队列;所述消息队列接收并保存由任务发送的消息,以及将消息从本消息队列传送给任务。

本发明提供的实时操作系统(Real Time Operating System,RTOS)作为NB-IoT终端的一个标准内核,实现芯片初始化、设备驱动及数据结构的格式化,使应用层可以不直接对硬件设备和资源进行操作,而是通过标准调用方法实现对硬件的操作,所有的任务由RTOS内核负责调度,应用层任务和功能都建立在RTOS之上。不仅如此,RTOS将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的应用程序编程接口(Application Programming lnterface,API),并根据各个任务的优先级,合理地在不同任务之间分配CPU时间片。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是NB-IoT系统的整体架构示意图;

图2是本发明应用于窄带物联网的实时化操作系统的结构示意图;

图3是任务的四种状态的切换过程示意图;

图4是中断响应模块响应中断而通过延时等待队列执行任务调度的示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1是NB-IoT系统的整体架构示意图。该系统包括NB-IoT终端、NB-IoT信息邮局(MPO)和人机交互系统(HCI)。

NB-IoT终端是具有各类型的基础功能以及NB-IoT通信能力的系统前端终端。NB-IoT终端的基础功能可以包括信号传感、数据计量、设施控制、监控报警等等。基于NB-IoT通信能力,NB-IoT终端可以实现前端数据的上传,以及接收和执行下行的指令。NB-IoT信息邮局(Message Post Office,MPO)由运营商设立,是基于NB-IoT协议的信息传送系统,在NB-IoT终端与人机交互系统(HCI)之间起到信息传输的桥梁作用。NB-IoT信息邮局包括NB-IoT基站和NB-IoT管理服务器。NB-IoT基站面向小区提供无线信号覆盖,供NB-IoT终端按照NB-IoT协议实现网络接入。NB-IoT管理服务器是实现后台管理与网上业务的远程平台以及数据中心。人机交互系统(Human-computer interaction,HCI)是实现人与NB-IoT信息邮局中的NB-IoT管理服务器之间信息交互、信息处理与信息服务的软硬件系统。目标是使用户或管理人员能够利用通用计算机(PC)、平板电脑、手机等设备,通过NB-IoT信息邮局MPO,实现获取数据,并可实现对终端的控制等功能。

NB-IoT终端是NB-IoT系统前端的嵌入式设备。现有嵌入式设备往往不配置操作系统,而是基于内部控制程序实现简单的功能与内部控制。本发明根据NB-IoT系统实际需求,为了实现NB-IoT终端各种实际功能应用的高效管理与执行,设置了实时化操作系统(Real Time Operating System,RTOS)。

本发明提供的实时操作系统(Real Time Operating System,RTOS)作为NB-IoT终端的一个标准内核,实现芯片初始化、设备驱动及数据结构的格式化,使应用层可以不直接对硬件设备和资源进行操作,而是通过标准调用方法实现对硬件的操作,所有的任务由RTOS内核负责调度,应用层任务和功能都建立在RTOS之上。不仅如此,RTOS将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的应用程序编程接口(Application Programming lnterface,API),并根据各个任务的优先级,合理地在不同任务之间分配CPU时间片。

图2是本发明应用于窄带物联网的实时化操作系统的结构示意图。包括初始化模块、任务管理模块以及中断响应模块。

初始化模块在NB-IoT终端上电之后,先用于对NB-IoT终端的堆栈、系统时钟、内存变量、硬件模块以及中断响应模块进行初始化,并且启动主循环。在这个主循环的无限次循环中,中央处理器(Central Processing Unit,CPU)一般执行各种功能(也就是任务)。若发生中断,将响应中断,执行中断服务例程(Interrupt Service Routines,ISR)。

任务管理模块,用于在主循环过程中调度各个任务的执行。在RTOS下,把一个复杂的嵌入式应用按一定规则分解成一个个功能清晰的小工程,然后设定各个小工程的运行规则,交给RTOS管理,这就是基于RTOS编程的基本思想。这一个个小工程被称之为“任务(Task)”。RTOS管理这些任务,被称之为“调度(Scheduling)”。从任务调度角度理解,可以认为,RTOS中的任务是一个功能清晰的小过程,是RTOS调度的基本单元;从RTOS的软件设计角度来理解,就是在软件设计时,需要根据具体应用,划分出独立的、相互作用的功能单元集合,这样,每个功能单元集合就被称之为任务,每个任务都被赋予一定的优先级;从CPU角度理解,在单CPU下,某一时刻,CPU只会处理(执行)一个任务,或说只有一个任务占用CPU。RTOS内核的关键功能就是以合理的方式(即调度),为系统中的每个任务分配时间,使之得以运行。任务的三要素包括任务函数、任务堆栈、任务描述符。任务函数就是某个任务要完成具体功能的执行过程。每个任务拥有自己独立的任务栈空间,用于保存任务在调度时的上下文信息及任务内部使用的局部变量。任务描述符关联了程序控制块,记录任务的各个属性。下面进行具体说明:(1)任务函数:一个任务,对应一段函数,完成一定功能,可被称之为任务函数。任务函数与一般函数并无区别,被编译链接生成机器码之后,一般存储在Flash区。但是从任务自身角度来看,它认为CPU就是属于它自己的,并不知道有其他任务存在。一般情况下,任务函数不会被其他函数直接调用,而是由RTOS的内核调度执行。要使任务函数能够被RTOS内核调度而运行,必须将任务函数进行“登记”,要设置该任务的任务堆栈大小,给个任务编号,定个优先级等等。不然若有几个任务同时都要运行,RTOS内核如何知道哪个该先运行呢?在单核CPU系统下,由于任何时刻只能有一个任务在占用CPU(任务处于激活态),当RTOS内核使一个任务新调用一个任务时,之前的运行任务就会退出激活态。CPU被处于激活态的任务所独占,从这个角度看,任务函数与无操作系统(NOS)中的“main”函数性质相近,一般被设计为“永久循环”,认为任务一直在执行,永远独占处理器。(2)任务堆栈:任务堆栈是独立于任务函数之外的RAM,按照“先进后出”策略组织的一段连续存储空间,是RTOS中任务概念的重要组成部分。在RTOS中被创建的每个任务都有自己私有的堆栈空间,在任务的运行过程中,堆栈用于保存任务程序运行过程中的的局部变量、任务调用普通函数时会为任务保存返回地址等参数变量、保存任务的上下文等等。任务的上下文(context),即CPU寄存器(包括程序计数器PC)。当多任务内核决定运行另外的任务时,它保存正在运行任务的当前上下文(context),这些内容保存在RAM中的任务当前状况保存区(task’s context storage area),也就是任务自己的堆栈之中。入栈工作完成以后,就把下一个将要运行任务的当前状况从其任务栈中重新装入CPU的寄存器,开始下一个任务的运行,这一过程叫做任务切换或上下文切换。在多任务系统中,每个任务都认为CPU寄存器是自己的,一个任务正在运行时,当RTOS内核决定不让当前任务运行,而转去运行别的任务,就要把CPU的当前状态保存在属于该任务的任务堆栈中,当RTOS内核再次决定让其运行时,就从该任务的任务堆栈中恢复原来的CPU状态,就像未被暂停过一样。在系统资源充裕的情况下,可分配尽量多的栈空间,可以是K数量级的(例如常用1000字节),但若是系统资源受限,就得精打细算了,具体的数值要根据任务的执行内容才能确定。对任务栈的组织及使用由系统维护,对于用户而言,只要在创建任务模板时指定其大小即可。(3)任务描述符:任务被创建时系统会为每个任务创建唯一的任务描述符(Task Descriptor),简称“TD”。这个概念在μ COS中被称作任务控制块,在Linux中被称为进程控制块。任务函数只有配备了相应的任务描述符才能被RTOS调度。未被配备任务描述符且驻留在Flash区的任务函数代码是不会被RTOS内核调度系统执行到的。任务描述符相当于任务在系统中的一个“身份证”,RTOS就是通过这些“身份证”来查询任务的信息和管理任务。多个任务的任务描述符被组成链表,存储于RAM中。任务描述符中含有指向前一个TD的指针、指向后一个TD的指针、任务状态、任务优先级、任务堆栈指针、任务函数指针(指向任务函数)等字段,RTOS内核通过它来执行任务。在RTOS中,一个任务就绪队列维护一个任务描述符链表。例如,在FIFO调度策略下,一般会为每个优先级创建一个就绪队列,在该就绪队列上链接多个就绪任务描述符,这些任务描述符“串联”成一个链表。RTOS内核在调度任务时,可以通过就绪队列的头节点查找链表,获取就绪队列上所有任务描述符的信息。

本发明所述任务包括以下任意一种类型:创建完成后只会被执行一次,执行完成后会被销毁或者阻塞的单次执行任务;按照一定周期执行的周期执行任务;当等待的资源可用时转为就绪态,而当等待的资源不可用时加入该资源等待队列的资源驱动任务。单次执行任务是指在创建完之后只会被执行一次,执行完成后就会被销毁或阻塞的任务,单次执行任务由三部分组成:任务函数初始化、任务函数执行以及任务函数销毁。初始化部分包括对变量的定义和赋值,打开需要使用的设备等等;第二部分任务函数的执行是该任务的基本功能实现;第三部分任务函数的销毁或阻塞,即调用任务销毁或者阻塞函数将自己从任务队列中删除,销毁与阻塞的区别在于:销毁任务,除了停止任务的运行,还将回收该任务所占用的所有资源,如堆栈空间等;而阻塞只是将任务描述符中的状态设置为阻塞而已。系统需要在某一时刻进行复位重启时,定时运行复位重启任务就是一个典型的单次执行任务。周期执行的任务是指需要按照一定周期执行的任务。初始化部分同上面一样实现包括对变量的定义和赋值,打开需要使用的设备等等;与单次执行任务不一样的地方在于任务函数的执行是放在永久循环体中执行的,由于该任务需要按照一定周期执行,所以执行完该任务之后可能需要调用延时函数_time_delay将自己放入延时队列中(下面会讲到),等到延时的时间到了之后重新进入就绪态。该过程需要永久执行,所以任务函数执行和延时函数需要放在永久循环中。举例来说,在水质监测系统中,我们需要得到被监测水域的酸碱度和各种离子的浓度,并不需要时时刻刻都在检测数据,因为这些物理量的变化比较缓慢,所以使用传感器采集数据时我们只需要每隔半个小时采集一次数据,之后调用_time_delay函数延时半个小时,此时的物理量采集任务就是典型的周期执行的任务。资源驱动任务,这里的资源主要指信号量,事件等任务通信与同步中的方法。这种类型的任务比较特殊,它是操作系统特有的任务类型,因为只有在操作系统下才导致资源的共享使用问题,同时也引出了操作系统中另一个主要的问题,那就是任务同步与通信。该任务与周期驱动任务的不同在于它的执行时间不是确定的,只有在它所要等待的资源可用时它才会转入就绪态,否则就会被加入到等待该资源的等待队列中去。初始化部分和任务体部分与之前两类的任务类似,主要区别就是在任务体执行之前会调用等待资源函数以等待资源实现任务体部分的功能。以刚才的水质监测系统为例,数据处理在物理量采集完成后才能进行操作,所以我们在系统中使用一个信号量用于两个任务之间的同步,当物理量采集任务完成时就会释放这个信号量,而数据处理任务一直在等待这个信号量,当等待到这个信号量时,就可以进行下一步的操作了。系统中的数据处理任务就是一个典型的资源驱动任务。

所述任务管理模块为每个任务分配CPU时间以及任务堆栈空间,并且,该模块调度任务的执行包括使任务处于以下状态中的一种状态:终止态、阻塞态、就绪态以及激活态。图3示出了任务的以上四种状态的切换过程。结合图3对任务的状态及其切换进行如下具体说明:(1)终止态(Terminated):任务已经完成,或被删除,不再需要使用CPU。(2)阻塞态(Blocked):又可称为“挂起态”。任务未准备好,不能被激活,因为该任务需要等待一段时间或符合某些条件的情况下才能正常运行;当等待时间到或符合运行条件时,该任务变为就绪状态。(3)就绪态(Ready):任务已经准备好可以被激活,但未进入激活态,因为其优先级等于或低于当前的激活任务,一旦获取CPU的使用权就可以进入激活态。在一个系统中处于就绪状态的任务可能有多个,通常将他们排成一个队列,称为就绪队列。(4)激活态(Active):又称“运行态”,该任务在运行中,任务独占CPU。在单处理机系统中,只有一个任务处于激活状态,在多处理机系统中,则有多个任务处于激活状态。

如果一个激活态的任务变为阻塞态,则任务管理模块将执行切换操作,此时将从就绪队列中选择合适的处于就绪态的任务使之进入激活态。任务管理模块将选择就绪态任务队列中优先级最高的任务进入激活态。如果多个具有相同优先级的任务处于就绪态,则就绪队列中的首个任务先被激活。也就是说,每个就绪队列中相同优先级的任务是按执行先来先服务(FIFO)的规则进行调度的。任务管理模块还可以把任务进一步分为“中断态和休眠态”,对于被中断的任务把它归为就绪态;休眠态是指该任务的相关资源虽然仍驻留在内存中,但并不被操纵系统所调度的状态,其实它就是一种终止的状态。

任务执行过程中,需要相互通信以实现同步以及协作完成某个目标。所述任务管理模块利用以下信息中的任意一种进行任务间通信:事件、信号量、消息队列;所述事件通过1位二进制信息传递某个任务完成的操作,以便实现任务间同步;所述信号量为非负整数,表示共享资源的可用量,当信号量为0时任务进入与该信号量相关联的延时队列;所述消息队列接收并保存由任务发送的消息,以及将消息从本消息队列传送给任务。

中断响应模块,用于在CPU发生中断时,响应该中断将CPU正在执行的任务加入延时等待队列,进而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环。图4是中断响应模块响应中断而通过延时等待队列执行任务调度的示意图。

触发中断的原因包括:异常、复位以及来自外围设备的中断。异常(exception)是CPU强行从正常的程序执行切换到由某些内部或外部条件所要求的处理任务上去,这些任务的紧急程度是优先于CPU正在执行的任务。引起异常的外部条件通常来自外围设备、硬件断点请求、访问错误和复位等;引起异常的内部条件通常为指令、地址未对界错误、违反特权级和跟踪等。硬件复位看作是一种具有最高优先级的异常,而把来自CPU外围设备的强行任务切换请求称为中断(interrupt),软件上表现为将程序计数器(PC)指针强制转到中断服务程序入口地址执行。CPU在指令流水线的译码或者执行阶段识别异常。若检测到一个异常,则强行中止后面尚未达到该阶段的指令。对于在指令译码阶段检测到的异常,以及对于与执行阶段有关的指令异常来说,由于引起的异常与该指令本身无关,指令并没有得到正确执行,所以为该类异常保存的程序计数器PC的值指向引起该异常的指令,以便异常返回后重新执行。对于中断和跟踪异常(异常与指令本身有关),CPU在执行完当前指令后才识别和检测这类异常,故为该类异常保存的PC值是指向要执行的下一条指令。CPU对复位、中断、异常具有同样的处理过程,因此随后在谈及这个处理过程时统称为中断。根据中断是否可以通过程序设置的方式被屏蔽,可将中断划分为可屏蔽中断和不可屏蔽中断两种。可屏蔽中断是指可通过程序设置的方式决定不响应该中断,即该中断被屏蔽了。不可屏蔽中断是指不能通过程序方式关闭的中断。

可以引起CPU产生中断的外部器件被称为中断源。一个CPU通常可以识别多个中断源,每个中断源产生中断后,分别要执行相应的中断服务例程(Interrupt Service Routine,ISR),这些中断服务例程ISR的起始地址(叫做中断向量地址)放在一段连续的存储区域内,这个存储区被称之为中断向量表。实际上,中断向量表是一个指针数组,内容是中断服务例程ISR的首地址。给CPU能够识别的每个中断源编个号,就叫中断向量号。中断提供了一种机制,来打断当前正在执行的程序,并且保存当前CPU状态(CPU内部寄存器),转而去执行一个中断处理程序,然后恢复CPU状态,以便恢复CPU到执行中断之前的状态,同时使得中断前的程序得以继续执行。中断时打断当前正在执行的程序,而转去执行的一个中断处理程序,通常也被称为中断处理函数,也称之为中断服务例程(Interrupt Service Routine),简称ISR。中断响应模块根据使CPU发生中断的中断源的中断向量号,确定中断类型以及查找中断服务例程。

在进行CPU设计时,一般定义了中断源的优先级。若CPU在程序执行过程中,有两个以上中断同时发生,则优先级最高的中断得到最先响应。中断响应模块确定中断源的优先级,并且最先响应优先级最高的中断。

从而,本发明提供的实时操作系统(Real Time Operating System,RTOS)作为NB-IoT终端的一个标准内核,实现芯片初始化、设备驱动及数据结构的格式化,使应用层可以不直接对硬件设备和资源进行操作,而是通过标准调用方法实现对硬件的操作,所有的任务由RTOS内核负责调度,应用层任务和功能都建立在RTOS之上。不仅如此,RTOS将CPU时间、中断、I/0、定时器等资源都包装起来,留给用户一个标准的应用程序编程接口(Application Programming Interface,API),并根据各个任务的优先级,合理地在不同任务之间分配CPU时间片。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1