技术领域:
本发明属于微控制器与实时操作系统技术领域,涉及一种内嵌微处理器核和完整硬件操作系统的微控制器架构,将硬件实时操作系统与微处理器集成到一个芯片内,构成一片内含处理器和操作系统的单片集成电路,有效地提高微控制器的实时性、灵活性和适应性。
背景技术:
:
嵌入式系统由硬件和软件两部分组成,二者相互独立、相互依存,硬件是软件的载体,软件通过硬件发挥作用,其中,硬件主要包括嵌入式处理器和应用接口电路等;软件主要包括嵌入式操作系统和嵌入式应用软件等。嵌入式系统在工业控制、消费电子、通信设备、汽车电子、医疗电子、机械电子、视频电子和数码电子等领域得到广泛的应用。据市场调查公司idc预测:从2011年到2016年,全球智能系统设备的数量将从230亿台激增至460亿台,行业总体收入将从1.3万亿美元攀升至2.3万亿美元。2016年,智能系统设备的出货量将占所有出货电子系统设备的37.1%以上。
根据评测,用中等性能的处理器运行纯软件操作系统来实现100mbps带宽的tcp/ip应用,只有10%时间用于真正的tcp/ip协议处理,37%用于嵌入式实时操作系统(rtos),32%用于校验和计算,10%用于tcp头重置,10%用于内存复制,因此较好的改进方式,是将rtos、校验和计算等硬件化,这些被硬件化的部分基本很少需要改变。
微控制器和嵌入式操作系统是智能产品的核心,嵌入式操作系统需要运行在微控制器上,针对特定的实时性要求严格的应用场景,比如工业控制、军事武器,更需要嵌入式实时操作系统的支持。常见嵌入式实时操作系统有vxworks、μclinux、μc/os-ii、nucleus、qnx、ecos、rt-thread等,嵌入式操作系统运行的可靠性和实时性,直接决定着智能产品的确定性和稳定性。
随着嵌入式系统对实时性和运行效率要求的提高,人们已经提出了将嵌入式实时操作系统实施软件硬件化,即将嵌入式实时操作系统(软件)分别由软件和硬件两个部分实现,其中,硬件部分主要实现rtos的任务调度、定时器管理、事件管理等工作,软件部分主要实现rtos的任务切换(所谓任务切换就是将当前正在执行任务的堆栈指针寄存器、程序状态字寄存器、通用寄存器组压入堆栈,将当前需要切换执行任务的堆栈指针寄存器、程序状态字寄存器、通用寄存器组弹出堆栈)。任务切换主要是操作微处理器内部的寄存器,由于微处理器内部通常只有一套寄存器(1个堆栈指针寄存器、1个程序状态字寄存器、1组通用寄存器组等),因此任务切换一般只能由软件进行堆栈操作来实现,在现有嵌入式系统应用中,任务切换占用了大量的处理器时间。
微控制器是智能终端、智能设备、智能系统的核心部件,广泛地应用于航空航天、工业控制、武器装备、汽车电子、信息产品、物联网等相关技术领域。根据市场研究公司icinsights研究结果:全球微控制器市场出货量2012年为20亿颗、2015年将达到254亿颗。随着各类应用功能的复杂化和智能化,微控制器的性能得到极大提高,嵌入式操作系统也得以普及应用,从体系结构的角度看,微控制器包含微处理器核(cpu-core)和多种接口功能模块(也称为接口控制器),微控制器的架构是静态的、接口功能模块是固定的,微控制器内部集成各种接口控制器,但是其内部没有集成硬件操作系统。基于功能模块描述的微控制器的基本架构如图1所示,图1中cpu-core为处理器核,ibus为微控制器片内总线,cache为高速缓存,gpioc为通用输入输出io口控制器,nuartc为n个rs-232-c串行总线控制器,nspic为n个spi总线控制器,niicc为n个iic总线控制器,niisc为n个iis总线控制器,nusbc为n个usb总线控制器,nnic为n个以太网口控制器,nlcdc为n个lcd液晶控制器,nintc为n个中断控制器,npciec为n个pcie控制器,ndmac为n个dma控制器,mmc为存储器控制器,ncrcc为n个crc校验控制器,naesc为n个aes加密控制器,nsatac为n个sata硬盘控制器,jtagc为jtag调试控制器等,其模块种类可达百种;图1所示的微控制器架构是以cpu核(cpu-core)为核心通过芯片片内外设互连总线(ibus)集成了多种接口控制器。微控制器的功能是由生产商定义设计的,出厂时就已经完全确定了,所设计的模块都已经静态地存在于微控制器芯片内部,就微控制器所拥有的功能模块而言:生产商无法满足所有应用的需求;而微控制器片内集成的功能模块也是用户不能增加、不能删除的(不用既浪费);同样用户所需要的模块微控制器也可能不具有。嵌入式微控制器的主要发展方向包括不断研发不同的接口控制器和实现接口控制器的可配置、可重构。因此,如果能够将“处理器和完整硬件操作系统”集成在同一个芯片中,实现一个“内嵌实时操作系统的片上计算系统(socos)”,那么操作系统的可靠性和实时性将得到更好的保证,智能产品的性能将得到极大的提高,智能产品的研发周期将极大地缩短。
软件嵌入式实时操作系统内核主要包括任务调度器、任务切换器、定时器、事件管理器(包括信号量、互斥信号量、消息邮箱、消息队列等通信与同步机制)等部件。其中,任务调度器主要从任务就绪表中查找最高优先级的就绪任务并计算其最高优先级;任务切换器主要使cpu停止对当前任务的执行并保存当前任务的现场(主要是寄存器组压栈),然后恢复最高优先级就绪任务的现场(主要是寄存器组出栈)并执行该就绪任务;定时器主要管理系统与定时相关的工作;事件管理器主要管理系统的事件实现系统的同步与通信。在软件嵌入式实时操作系统内核的硬件化过程中,需要对任务调度器、任务切换器、定时器、事件管理器等逐一进行硬件化。其中,任务调度器、定时器、事件管理器等都有相关的研究与实现,目前只有“任务切换器”没能实现。因此,现有的硬件实时操作系统(只对任务调度器、定时器、事件管理器等进行了硬件化)尚不能称之为完整的硬件实时操作系统,我们称之为半硬件操作系统。
在软件嵌入式实时操作系统内核的任务切换中,主要工作包括现场保护、现场恢复、产生中断等。假设:系统时钟周期为clk,微处理器为流水线结构、有m个寄存器(如m=32),压栈与出栈指令执行周期均为1个时钟周期clk,中断响应为12个时钟周期clk。则,一次任务切换所花费的时间为:(2*m+12)个clk时钟周期。
在现有软件嵌入式实时操作系统的完整硬件化中,“任务切换器”是一直没能实现硬件化的部分,主要原因如下:一是现有微处理器的内部寄存器组资源rbank(一般包括1个程序计数器(pc)、1个堆栈指针寄存器(spr)、1个程序状态字寄存器(pswr)、1组通用寄存器组(r0~rn)等)都是唯一的,而且rbank是不能扩充的;二是在现有微处理器中,每个任务的运行都需要且只能是独享使用微处理器内部寄存器组资源rbank的,因此任务切换时就需要通过对寄存器组资源rbank压栈和出栈操作实现任务运行现场的切换(实际上任务切换就是任务运行现场的切换);三是在多任务中,如果每个任务都拥有一组rbank,那么k个任务就需要k组rbank;四是如果要实现k个任务的硬件切换,那么就需要在微处理器内部扩展出k组rbank。
技术实现要素:
:
本发明的目的在于克服现有技术存在的缺点,寻求设计提出了一种内嵌微处理器核和完整硬件操作系统的微控制器架构,首先对“任务切换器”硬件化、实现完整硬件操作系统;然后将微处理器核和完整硬件操作系统集成到同一个芯片内部、实现了内嵌硬件操作系统的微处理器(hcpu);再通过片内外设互连总线ibus把内嵌完整硬件操作系统的微处理器(hcpu)与片内功能模块控制器组连接起来、构成内嵌完整硬件操作系统的微控制器(hmcu)。
为了实现上述目的,本发明所述微控制器架构的主体结构包括内嵌完整硬件操作系统的微处理器(hcpu)、映射寄存器组库(reg-banks)、微处理器核(cpu-core)、半硬件操作系统(h-hrtos)和片内功能模块控制器组;微处理器(hcpu)内包含寄存器组资源(rbank),寄存器组资源(rbank)与映射寄存器组库(reg-banks)之间通过寄存器互连总线(rbus)连接,微处理器核(cpu-core)与半硬件操作系统(h-hrtos)通过高速互联总线(hbus)连接,映射寄存器组库(reg-banks)、微处理器核(cpu-core)和半硬件操作系统(h-hrtos)集成在一个芯片内构成内嵌完整硬件操作系统的微处理器(hcpu),内嵌完整硬件操作系统的微处理器(hcpu)通过片内外设总线(ibus)与片内功能模块控制器组连接构成内嵌微处理器核完整硬件操作系统的微控制器(hmcu)。
本发明所述映射寄存器组库(reg-banks)包含k个映射寄存器组(rbankk,k∈[1,k]),k值根据实际需要确定;寄存器组资源(rbank)和映射寄存器组库中的每个映射寄存器通过多路选择器(mux)和寄存器互连总线(rbus)相对应互连,实现在微处理器内部扩展多组寄存器组的方案,即在不改变现有微处理器的内部寄存器组资源rbank[spr,pswr,r0~rn]的基础上(其中,rn可以用作程序计数器pc),为微处理器内部的寄存器组资源外扩k组映射寄存器组rbankk,k∈[1,k](即rbank1~rbankk),其中,rbankk∈[rbank1,rbankk]称为rbank的一个映射寄存器组,映射寄存器组(rbankk,k∈[1,k])包括1个堆栈指针寄存器(sprk)、1个程序状态字寄存器(pswrk)和1组(n+1个)通用寄存器(rk0~rkn),记为rbankk[sprk,pswrk,rk0~rkn]或简记为rbankk,微处理器(hcpu)中添加设计了一条rbank切换指令,控制多路选择器(mux)的切换操作,当第k个就绪任务需要切换为当前任务运行时,微处理器(hcpu)中运行一条rbank切换指令,实现寄存器组资源(rbank)与映射寄存器组(rbankk)之间的互连与切换。
本发明所述微处理器的rbank切换指令的指令格式为:<opcode>des,src;其中,opcode为操作码,可以参考数据传输mov操作设计;des为目的操作数,即mux切换命令寄存器的地址,使用直接寻址、寄存器间接寻址;src为源操作数,即任务识别码tskid,使用寄存器寻址、立即寻址;rbank切换指令将源操作数传送到任务切换命令寄存器(tskidr),实现任务切换。
本发明所述映射寄存器组库与微处理器内部的寄存器组资源(rbank)之间在任务切换时,微处理器(hcpu)使用任务识别码tskid选择就绪任务切换所使用的映射寄存器(rbankk(k=tskid)),微处理器核将任务识别码tskid写入任务切换命令寄存器(tskidr),微处理器内部的寄存器组资源(rbank)与映射寄存器(rbankk)的映射方法与关系为:使用多路选择器(mux)将现有微处理器的内部寄存器组资源rbank[spr,pswr,r0~rn]连接到外扩的映射寄存器rbankk[sprk,pswrk,rk0~rkn]上,其中spr连接到sprk,pswr连接到pswrk,r0连接到rk0,……,rn连接到rkn,k∈[1,k]。
本发明内嵌完整硬件操作系统的微处理器(hcpu)还包括由任务切换命令寄存器(tskidr)和多路选择器(mux)组成的总线切换控制模块(muxm);寄存器组资源(rbank)、总线切换控制模块(muxm)、映射寄存器组库(reg-banks)组成硬件“任务切换器”;微处理器核(cpucore)和总线切换控制模块(muxm)之间、总线切换控制模块(muxm)和映射寄存器组库(reg-banks)之间分别通过寄存器互连总线(rbus)连接。
本发明所述的任务切换过程为:使用映射寄存器组库(reg-banks)实现保存与恢复寄存器组资源rbank,当半硬件操作系统(h-hrtos)生成最高优先级为hprio的任务后,在进行任务切换时,首先使用任务切换命令寄存器(tskidr)的当前值,建立正在运行任务所使用的映射寄存器组与寄存器组资源(rbank)的互连,并同步保存寄存器组资源(rbank)的数据到正在运行任务所使用的映射寄存器中;然后采用如下两种方式之一实现任务现场恢复:第一种方式是通过任务切换中断信号(intrx-y)向微处理器(hcpu)提出任务切换请求,半硬件操作系统(h-hrtos)通过高速互联总线(hbus)将hprio发送给微处理器(hcpu),微处理器(hcpu)接收到hprio后,执行任务切换指令将任务切换命令tskid(可以使用hprio+1作为tskid)传送给任务切换命令寄存器(tskidr),控制多路选择器(mux)建立新就绪任务所对应的映射寄存器组与寄存器组资源(rbank)的互连,并同步恢复就绪任务所对应的映射寄存器数据到寄存器组资源(rbank)中;第二种方式是半硬件操作系统(h-hrtos)直接将hprio+1发送给任务切换命令寄存器(tskidr),建立新就绪任务所对应的映射寄存器组与寄存器组资源(rbank)的互连,并同步恢复就绪任务所对应的映射寄存器数据到寄存器组资源(rbank)中。
本发明所述半硬件操作系统(h-hrtos)的主体架构包括定时管理器、事件管理器、任务管理器和总线接口管理器,其中,定时管理器由系统硬件定时器实现任务的延时和周期执行,在设定任务执行周期或延时时间后,当设定的时间定时到时便会使对应任务就绪,并触发硬件内核的任务调度器,产生一次任务调度中断,每一个任务需要一个定时器,用于管理一个任务的延时和运行周期,如果系统有n个任务则需要n个定时器;任务管理器实现任务控制块(tcb,taskcontrolblock)队列的操作与管理,所有未执行任务存放在任务等待表和立体任务就绪表中,任务等待表中的任务在条件(如定时到、事件到达等)满足时变为就绪任务,等待任务调度,任务管理器为h-hrtos的核心部件,包括立体就绪表、任务调度器和任务中断控制器三个模块,其中,立体就绪表实现定时管理器、事件管理器与任务管理器之间的信息传递和逻辑运算,实现立体化计算就绪任务,并减少模块之间的耦合、提高系统稳定性;先由任务调度器生成任务就绪表中优先级最高的任务的优先级hprio,再由任务中断控制器生成任务中断请求信号,并向微处理器(hcpu)提出任务中断请求,由微处理器(hcpu)执行任务切换指令实现任务切换;任务调度器在每个调度时钟(clk)内计算出优先级最高的就绪任务,任务调度器采用抢占式调度机制,每个调度时钟输出优先级最高的就绪任务,通过中断方式向处理器提出任务服务,由微处理器(hcpu)执行任务切换指令实现任务切换(1个clk),执行任务代码;事件管理器实现包括信号量控制块、互斥信号量控制块、信号量集控制块、消息邮箱控制块、消息队列控制块的事件控制块(ecb,eventcontrolblock)的操作与管理,每一个事件都能够被n个任务请求使用,每一个事件有一张事件等待表,当事件为真时,事件为优先级最高的等待任务服务,并为任务就绪提供判断依据,使任务就绪,供任务管理器从所有就绪任务中选出优先级最高的就绪任务,再以中断方式向处理器提出任务服务,由微处理器(hcpu)执行任务切换指令实现任务切换;总线接口管理器实现处理器与h-hrtos之间的数据传输与控制,通过接口总线对半硬件操作系统(h-hrtos)进行读写,从功能上分为两类:一是处理器向半硬件操作系统(h-hrtos)发布命令,半硬件操作系统(h-hrtos)收到命令后,解析命令、执行相应操作;二是启动中断服务程序,半硬件操作系统(h-hrtos)进行一次任务调度后,如果新选出的最高优先级就绪任务不是当前正在执行的任务,则由微处理器(hcpu)执行任务切换指令实现任务切换。
本发明所述高速互联总线(hbus)由数据总线、地址总线和控制总线组成。
本发明所述任务就绪表的任务就绪关系为:假设系统有n个任务,第n个任务用taskn表示,就绪表中的第n位用rdyn表示,第n个定时器用tmrn表示,第n个事件用eventn表示,第n个信号量用semn表示,第n个互斥信号量用mutexn表示,第n个信号量集用semfn表示,第n个消息邮箱用mbn表示,第n个消息队列用mqn表示,那么第n个任务就绪与定时器就绪、事件就绪的运算算法为:rdyn=tmrn|semn|mutexn|semfn|mbn|mqn。
本发明对“任务切换器”进行了硬件化,其核心工作是在任务切换时自动实现现场的保存与恢复,主要提出了两类实现方案:第一类方案是在微处理器设计时,设计k组(对应k个任务)寄存器组资源rbank,每一个任务对应一个寄存器组资源rbanki,在任务切换时,自动切换寄存器组资源rbank;第二类方案是为微处理器的寄存器组资源(rbank)扩展包括k组(对应k个任务)映射寄存器组的映射寄存器组库(reg-banks),在任务切换时,使用reg-bank实现自动保存与恢复寄存器组资源rbank,通过引入映射寄存器组库(reg-banks)实现了“任务切换器”的硬件化,最终实现软件嵌入式实时操作系统的完全硬件化(主要包括任务调度器、任务切换器、定时器、事件管理器(包括信号量、互斥信号量、消息邮箱、消息队列等通信与同步机制)等全部实现硬件化),进一步实现内嵌完整硬件操作系统的微处理器(hcpu)和内嵌完整硬件操作系统的微控制器(hmcu)。
本发明的任务切换效率为:假设微处理器的指令周期为单clk时钟周期(这是现有处理器最快的处理器速度),如果微处理器rbank共有m个寄存器,那么在一次任务切换过程中,当前任务切换为等待任务时,需要压栈当前正在执行任务的m个寄存器、耗时m个clk;就绪任务切换为当前任务时,需要出栈就绪任务的m个寄存器、耗时m个clk;合计压栈和出栈耗时共计2*m个clk;采用本发明的第一类方案后,微处理器仅需要向任务切换器发送一条rbank任务切换指令以实现任务切换,发送该命令需要1个clk时钟,因此其任务切换效率提高了2*m倍,例如,当m=32,其切换效率提高了64倍;采用本发明的第二类方案后,需要向任务切换器发送一条rbank切换指令,发送该命令需要1个clk时钟、保存现场需要1个clk时钟、恢复现场需要1个clk时钟、执行切换需要1个clk时钟。因此其任务切换效率提高了m/2倍;例如,当m=32,其任务切换效率提高了约16倍;特别是在半硬件操作系统(h-hrtos)24直接将hprio发送给任务切换命令寄存器tskidr方式中,还节省了中断响应的时间,一般约为12个clk,进一步提高切换效率。特别是在需要频繁任务切换的实时系统中,其效果更加明显。由硬件完成任务切换,不仅仅是提高了实时性,而且有效地提高了可靠性。
本发明与现有技术相比,应用该成果,能够生产出高实时性、高灵活度、高适应性、高可靠性的微控制器,能够有效地提高应用系统的集成度,能够灵活地满足不同应用领域的需求,进而提高系统的可靠性和稳定性。
附图说明:
图1为现有技术中微控制器的架构,其中11是微控制器的微处理器核cpu-core,12是微控制器的片内多个功能模块。
图2为本发明所述内嵌完整硬件操作系统的微控制器的架构,其中21为微处理器hcpu,22为映射寄存器组库reg-banks,23为微处理器核cpu-core,24为半硬件操作系统h-hrtos,25为片内功能模块控制器组。
图3为本发明所述任务切换器(第二类方案)的结构示意框图,其中31为微处理器内部的寄存器组资源rbank,32为第k个映射寄存器rbankk,33为多路选择器mux。
图4为本发明微处理器内部的寄存器组资源与映射寄存器组的互连实例,其中41是用双箭头虚线表示的总线互连示意图,42是任务切换命令寄存器tskidr。
图5为本发明微处理器hcpu的实现架构,其中51为总线切换控制模块muxm。
图6为本发明所述半硬件操作系统h-hrtos的基本架构,其中61为定时管理器,62为事件管理器,63为任务管理器,64为总线接口管理器,65为系统硬件定时器,66为立体就绪表,67为任务调度器,68为任务中断控制器。
图7为本发明实施例内嵌mcs-51处理器核和μc/os-ii硬件实时操作系统的微控制器结构框图,其中71是基于mcs-51的hcpu,72是基于mcs-51的映射寄存器组库reg-banks;73]基于mcs-51的第k个映射寄存器组rbankk,74是mcs-51的cpu核,75是基于μc/os-ii的h-hrtos,76是多路选择器模块muxm,77是基于hcpu-51外扩的功能模块。
具体实施方式:
下面通过实施例并结合附图对本发明作进一步说明。
本实施例所述微控制器架构的主体结构包括内嵌完整硬件操作系统的微处理器(hcpu)21、映射寄存器组库(reg-banks)22、微处理器核(cpu-core)23、半硬件操作系统(h-hrtos)24和片内功能模块控制器组25;微处理器(hcpu)21内包含寄存器组资源(rbank)31,寄存器组资源(rbank)31与映射寄存器组库(reg-banks)22之间通过寄存器互连总线(rbus)连接,微处理器核(cpu-core)23与半硬件操作系统(h-hrtos)24通过高速互联总线(hbus)连接,映射寄存器组库(reg-banks)22、微处理器核(cpu-core)23和半硬件操作系统(h-hrtos)24集成在一个芯片内构成内嵌完整硬件操作系统的微处理器(hcpu)21,内嵌完整硬件操作系统的微处理器(hcpu)21通过片内外设总线(ibus)与片内功能模块控制器组25连接构成内嵌微处理器核完整硬件操作系统的微控制器(hmcu)。
本实施例所述映射寄存器组库(reg-banks)22包含k个映射寄存器组(rbankk,k∈[1,k])32;寄存器组资源(rbank)31和映射寄存器组库22中的每个映射寄存器32通过多路选择器(mux)33和寄存器互连总线(rbus)相对应互连,实现在微处理器内部扩展多组寄存器组的方案,即在不改变现有微处理器的内部寄存器组资源rbank[spr,pswr,r0~rn]的基础上(其中,rn可以用作程序计数器pc),为微处理器内部的寄存器组资源外扩k组映射寄存器组rbankk,k∈[1,k](即rbank1~rbankk),其中,rbankk∈[rbank1,rbankk]称为rbank的一个映射寄存器组,映射寄存器组(rbankk,k∈[1,k])32包括1个堆栈指针寄存器(sprk)、1个程序状态字寄存器(pswrk)和1组(n+1个)通用寄存器(rk0~rkn),记为rbankk[sprk,pswrk,rk0~rkn]或简记为rbankk,微处理器(hcpu)21中添加设计了一条rbank切换指令,控制多路选择器(mux)33的切换操作,当第k个就绪任务需要切换为当前任务运行时,微处理器(hcpu)21中运行一条rbank切换指令,实现寄存器组资源(rbank)31与映射寄存器组(rbankk)32之间的互连与切换。
本实施例所述微处理器的rbank切换指令的指令格式为:<opcode>des,src;其中,opcode为操作码,可以参考数据传输mov操作设计;des为目的操作数,即mux切换命令寄存器的地址,使用直接寻址、寄存器间接寻址;src为源操作数,即任务识别码tskid,使用寄存器寻址、立即寻址;rbank切换指令将源操作数传送到任务切换命令寄存器(tskidr)42,实现任务切换。
本实施例所述映射寄存器组库22与微处理器内部的寄存器组资源(rbank)31之间在任务切换时,微处理器(hcpu)21使用任务识别码tskid选择就绪任务切换所使用的映射寄存器(rbankk(k=tskid))32,微处理器核23将任务识别码tskid写入任务切换命令寄存器(tskidr)42,微处理器内部的寄存器组资源(rbank)31与映射寄存器(rbankk)32的映射方法与关系为:使用多路选择器(mux)33将现有微处理器的内部寄存器组资源rbank[spr,pswr,r0~rn]连接到外扩的映射寄存器rbankk[sprk,pswrk,rk0~rkn]上,其中spr连接到sprk,pswr连接到pswrk,r0连接到rk0,……,rn连接到rkn,k∈[1,k]。图4是以堆栈指针寄存器spr为例,实现多路选择器(mux)33控制着spr与[spr1,……,sprk]的连接的实例,当tskidr=0时,spr与spr1相连如41;……;当tskidr=(k-1)时,spr与sprk相连如41,其它的rbank中的寄存器与rbankk中的映射寄存器之间都有相应的映射设计结构。
本实施例内嵌完整硬件操作系统的微处理器(hcpu)21还包括由任务切换命令寄存器(tskidr)42和多路选择器(mux)33组成的总线切换控制模块(muxm)51;寄存器组资源(rbank)31、总线切换控制模块(muxm)51、映射寄存器组库(reg-banks)22组成了硬件“任务切换器”;微处理器核(cpucore)23和总线切换控制模块(muxm)51之间、总线切换控制模块(muxm)51和映射寄存器组库(reg-banks)22之间分别通过寄存器互连总线(rbus)连接。
本实施例所述的任务切换过程为:使用映射寄存器组库(reg-banks)22实现保存与恢复寄存器组资源rbank,当半硬件操作系统(h-hrtos)24生成最高优先级为hprio的任务后,在进行任务切换时,首先使用任务切换命令寄存器(tskidr)42的当前值,建立正在运行任务所使用的映射寄存器组32与寄存器组资源(rbank)31的互连,并同步保存寄存器组资源(rbank)31的数据到正在运行任务所使用的映射寄存器32中;然后采用如下两种方式之一实现任务现场恢复:第一种方式是通过任务切换中断信号(intrx-y)向微处理器(hcpu)21提出任务切换请求,半硬件操作系统(h-hrtos)24通过高速互联总线(hbus)将hprio发送给微处理器(hcpu)21,微处理器(hcpu)21接收到hprio后,执行任务切换指令将任务切换命令tskid(可以使用hprio+1作为tskid)传送给任务切换命令寄存器(tskidr)42,控制多路选择器(mux)33建立新就绪任务所对应的映射寄存器组32与寄存器组资源(rbank)31的互连,并同步恢复就绪任务所对应的映射寄存器32数据到寄存器组资源(rbank)31中;第二种方式是半硬件操作系统(h-hrtos)24直接将hprio+1发送给任务切换命令寄存器(tskidr)42,建立新就绪任务所对应的映射寄存器组32与寄存器组资源(rbank)31的互连,并同步恢复就绪任务所对应的映射寄存器32数据到寄存器组资源(rbank)31中。
本实施例所述半硬件操作系统(h-hrtos)24的主体架构包括定时管理器61、事件管理器62、任务管理器63和总线接口管理器64,其中,定时管理器61由系统硬件定时器65实现任务的延时和周期执行,在设定任务执行周期或延时时间后,当设定的时间定时到时便会使对应任务就绪,并触发硬件内核的任务调度器67,产生一次任务调度中断,每一个任务需要一个定时器,用于管理一个任务的延时和运行周期,如果系统有n个任务则需要n个定时器;任务管理器64实现任务控制块(tcb,taskcontrolblock)队列的操作与管理,所有未执行任务存放在任务等待表和立体任务就绪表66中,任务等待表中的任务在条件(如定时到、事件到达等)满足时变为就绪任务,等待任务调度,任务管理器63为h-hrtos的核心部件,包括立体就绪表66、任务调度器67和任务中断控制器68三个模块,其中,立体就绪表66实现定时管理器61、事件管理器62与任务管理器63之间的信息传递和逻辑运算,实现立体化计算就绪任务,并减少模块之间的耦合、提高系统稳定性;先由任务调度器67生成任务就绪表中优先级最高的任务的优先级hprio,再由任务中断控制器68生成任务中断请求信号,并向微处理器(hcpu)21提出任务中断请求,由微处理器(hcpu)21执行任务切换指令实现任务切换;任务调度器67在每个调度时钟(clk)内计算出优先级最高的就绪任务,任务调度器67采用抢占式调度机制,每个调度时钟输出优先级最高的就绪任务,通过中断方式向处理器提出任务服务,由微处理器(hcpu)21执行任务切换指令实现任务切换(1个clk),执行任务代码;事件管理器实现包括信号量控制块、互斥信号量控制块、信号量集控制块、消息邮箱控制块、消息队列控制块的事件控制块(ecb,eventcontrolblock)的操作与管理,每一个事件都能够被n个任务请求使用,每一个事件有一张事件等待表,当事件为真时,事件为优先级最高的等待任务服务,并为任务就绪提供判断依据,使任务就绪,供任务管理器从所有就绪任务中选出优先级最高的就绪任务,再以中断方式向处理器提出任务服务,由微处理器(hcpu)21执行任务切换指令实现任务切换;总线接口管理器64实现处理器与h-hrtos之间的数据传输与控制,通过接口总线对半硬件操作系统(h-hrtos)24进行读写,从功能上分为两类:一是处理器向半硬件操作系统(h-hrtos)24发布命令,半硬件操作系统(h-hrtos)24收到命令后,解析命令、执行相应操作;二是启动中断服务程序,半硬件操作系统(h-hrtos)24进行一次任务调度后,如果新选出的最高优先级就绪任务不是当前正在执行的任务,则由微处理器(hcpu)21执行任务切换指令实现任务切换。
本发明实施例高速互联总线(hbus)由数据总线db、地址总线ab和控制总线cb组成。
本发明实施例任务就绪表的任务就绪关系为:假设系统有n个任务,第n个任务用taskn表示,就绪表中的第n位用rdyn表示,第n个定时器用tmrn表示,第n个事件用eventn表示,第n个信号量用semn表示,第n个互斥信号量用mutexn表示,第n个信号量集用semfn表示,第n个消息邮箱用mbn表示,第n个消息队列用mqn表示,那么第n个任务就绪与定时器就绪、事件就绪的运算算法为:rdyn=tmrn|semn|mutexn|semfn|mbn|mqn。
本实施例的任务切换效率为:假设微处理器的指令周期为单clk时钟周期(这是现有处理器最快的处理器速度),如果微处理器rbank共有m个寄存器,那么在一次任务切换过程中,当前任务切换为等待任务时,需要压栈当前正在执行任务的m个寄存器、耗时m个clk;就绪任务切换为当前任务时,需要出栈就绪任务的m个寄存器、耗时m个clk;合计压栈和出栈耗时共计2*m个clk;采用本发明的第一类方案后,微处理器仅需要向任务切换器发送一条rbank任务切换指令以实现任务切换,发送该命令需要1个clk时钟,因此其任务切换效率提高了2*m倍,例如,当m=32,其切换效率提高了64倍;采用本发明的第二类方案后,需要向任务切换器发送一条rbank切换指令,发送该命令需要1个clk时钟、保存现场需要1个clk时钟、恢复现场需要1个clk时钟、执行切换需要1个clk时钟。因此其任务切换效率提高了m/2倍;例如,当m=32,其任务切换效率提高了约16倍;特别是在半硬件操作系统(h-hrtos)24直接将hprio发送给任务切换命令寄存器tskidr方式中,还节省了中断响应的时间,一般约为12个clk,进一步提高切换效率。特别是在需要频繁任务切换的实时系统中,其效果更加明显。由硬件完成任务切换,不仅仅是提高了实时性,而且有效地提高了可靠性。
本实施例对“任务切换器”进行了硬件化,其核心工作是在任务切换时自动实现现场的保存与恢复,主要提出了两类实现方案:第一类方案是在微处理器设计时,设计k组(对应k个任务)寄存器组资源rbank,每一个任务对应一个寄存器组资源rbanki,在任务切换时,自动切换寄存器组资源rbank;第二类方案是为微处理器的寄存器组资源(rbank)扩展包括k组(对应k个任务)映射寄存器组的映射寄存器组库(reg-banks),在任务切换时,使用reg-bank实现自动保存与恢复寄存器组资源rbank。通过引入映射寄存器组库(reg-banks)实现了“任务切换器”的硬件化,最终实现软件嵌入式实时操作系统的完全硬件化(主要包括任务调度器、任务切换器、定时器、事件管理器(包括信号量、互斥信号量、消息邮箱、消息队列等通信与同步机制)等全部实现硬件化),进一步实现内嵌完整硬件操作系统的微处理器(hcpu)和内嵌完整硬件操作系统的微控制器(hmcu)。
实施例1:
本实施例选用mcs-51微处理器核作为微处理器内核cpu-core,对嵌入式实时操作系统μc/os-ii硬件化作为半硬件操作系统h-hrtos,按照mcs-51的寄存器组rbank扩展映射寄存器组库reg-banks;将mcs-51微处理器核、映射寄存器组库reg-banks与硬件化的μc/os-ii半硬件操作系统h-hrtos集成到一个芯片内,构成内嵌完整硬件操作系统的mcs-51单片机(微控制器):hcpu-51,如图7所示,hcpu-51是集成mcs-51处理器核、映射寄存器reg-banks组和μc/os-ii半硬件操作系统h-hrtos的微处理器核。mcs-51是标准的mcs-51核,包含寄存器组rbank=[sp,a,b,psw,dptr,r0~r7];reg-banks是对rbank扩展的64组寄存器组库,rbankk=[spk,ak,bk,pswk,dptrk,r0~r7k],k∈[1,k];mux是多路分配器,rbus是寄存器互连总线,mux与rbus主要实现rbank与rbankk的寄存器之间的映射互连;h-hrtos是对μc/os-ii硬件化后得到的一个半硬件操作系统实例;hbus是h-hrtos与mcs-51之间的互连总线;flash、ram、gpio0~3、uartc、timer0~2、intc、isp都是以hcpu为核心进行功能扩展的接口功能模块,ibus为接口扩展总线。