发明名称 一种构件化硬件实时操作系统的实现方法
摘要 本发明公开了一种构件化硬件实时操作系统的实现方法,该方法首先将实时操作系统分为硬件内核和软件接口两部分;然后在硬件内核中以构件化的方式实现实时操作系统内核的任务管理器、中断管理器、计数信号量管理器、互斥信号量管理器、消息队列管理器,硬件内核以寄存器接口模块和软件通信,以控制器锁对各个管理器同步,管理器间使用标准的模块间命令接口总线通信;最后实现处理器间计数信号量管理器和处理器间消息队列管理器,实现多处理器实时操作系统硬件内核。本发明采用构件化方式实现硬件实时操作系统内核,在系统可裁剪性与可扩展性上取得较大提高,使硬件实时操作系统达到了软件的灵活性。
申请公布号 CN103440171B 申请公布日期 2016.08.03
申请号 CN201310396603.3 申请日期 2013.08.25
申请人 浙江大学 发明人 蔡铭;崔亚斌
分类号 G06F9/48(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 周烽
主权项 一种构件化硬件实时操作系统的实现方法,其特征在于,该方法包括如下步骤:(1)将实时操作系统分为硬件内核和软件接口两部分,并确定软硬件通信方式;它包括以下子步骤:(1.1)将硬件内核作为协处理器或者外部设备存在,当作为协处理器时,软硬件通过处理器的通用寄存器进行通信,当作为外部设备时,软硬件通过系统总线进行通信;(1.2)硬件内核将实时操作系统内核功能封装成硬件命令,硬件命令包括命令号、输入数据、返回值、输出数据;软件接口将硬件命令进一步封装为系统调用,提供给应用程序使用;(1.3)除硬件命令通信外,硬件内核还提供两个中断信号给处理器,一个用于任务切换申请,一个用于异常处理申请;软件接口负责进行硬件内核发出中断的处理,在任务切换申请中断信号带来时,进行任务切换,在异常处理申请中断信号到来时,进行异常处理;异常处理申请除了软件处理,还可以直接触发处理器复位;(2)在硬件内核中,确定实时操作系统内核各个功能模块的构件化实现方式,使其根据需要灵活地调整、裁剪和扩展;它包括以下子步骤:(2.1)硬件内核使用寄存器接口模块作为软件接口和实时操作系统内核功能模块间的接口;寄存器接口模块将软件接口传入的硬件命令,转换为相应功能模块的处理器命令接口通信;(2.2)实时操作系统内核功能模块通过标准的模块间命令接口连接到模块间命令接口总线上,每个实例化的内核功能模块分配有一个独立的地址,以进行模块间命令通信;总线上同一时间只允许有一个主设备和一个从设备,主设备发起命令,从设备执行命令;(2.3)实时操作系统功能模块包括以下几部分结构:存储器、控制器、处理器命令接口、模块间命令主设备接口、模块间命令从设备接口;其中,存储器主要由FPGA的片内RAM实现;处理器命令接口、模块间命令主设备接口和模块间命令从设备接口是用于模块和外部的通信;模块内所有部件均在控制器控制下动作,控制器用有限状态机实现;(2.4)硬件内核使用一个控制器锁模块对所有实时操作系统内核功能模块进行同步,当一个处理器命令、时间片滴答、异步唤醒事件或者任务调度请求到来时,会向控制器锁模块发出请求,控制器锁模块每次响应一个请求,实时操作系统功能模块的控制器会根据控制器锁状态来完成相应的请求操作;(2.5)在一个单处理器硬件内核中,实现一个任务管理器、若干个中断管理器、若干个计数信号量管理器、若干个互斥信号量管理器和若干个消息队列管理器;(3)在硬件内核中,实现硬件任务管理器;它包括以下子步骤:(3.1)将硬件任务管理器划分为以下子模块:任务存储器、任务控制器、时钟生成器、看门狗定时器、任务调度器、处理器命令接口、模块间命令主设备接口、模块间命令从设备接口;(3.2)实现任务存储器:任务存储器中存储每个任务的控制块信息,包括任务状态、任务原始优先级、任务继承优先级、任务实际优先级、任务阻塞资源编号、任务延时时间片个数、任务轮转时间片个数、任务堆栈指针下限、任务堆栈指针上限、任务堆栈指针;除此之外,任务存储器还包括基于任务实际优先级的树状优先级比较器,选择特定任务位图中的最高优先级任务位图;当输入为就绪任务位图时,输出为最高优先级的就绪任务位图,实现基于优先级的任务抢占调度;(3.3)实现时钟生成器,时钟生成器根据时间片大小设置,每隔时间片大小的时间发出一个tick_sig上升沿信号,以更新任务的延时数据;在当前任务的轮转时间片用完后,发出任务调度请求,以触发基于时间片的同优先级任务轮转调度;(3.4)实现看门狗定时器;看门狗计数值在每个tick_sig减一,看门狗计数值到零时发出异常处理申请中断信号,看门狗计数值在设置为零时不使能;(3.5)实现任务调度器;任务调度器接收任务存储器输出的最高优先级的就绪任务位图,并存储任务轮转位图,以实现基于优先级的任务抢占调度和基于时间片的同优先级任务轮转调度;任务调度器输出当前任务号和最高优先级就绪任务号,并在当前任务不是最高优先级就绪任务时发出任务切换申请中断信号;(3.6)实现任务控制器;任务控制器控制任务管理器中其余子模块的动作;它通过一个有限状态机实现,完成处理器命令、其它模块传入的命令、任务调度操作、tick_sig触发的任务延时信息调整操作;(3.7)任务管理器实现以下处理器命令:任务创建命令、任务删除命令、任务挂起命令、任务恢复命令、任务延时命令、任务延时取消命令、任务优先级修改命令、任务让出处理器命令、任务轮转时间片个数设置命令、任务控制块查询命令、任务管理器复位命令;(3.8)任务管理器实现以下模块间命令:任务阻塞命令、带超时时间的任务阻塞命令、任务唤醒命令、任务阻塞位图中选择任务唤醒命令、基于互斥信号量的任务阻塞命令、基于互斥信号量的带超时时间任务阻塞命令、基于互斥信号量的任务唤醒命令;(4)在硬件内核中,实现硬件中断管理器;它包括以下子步骤:(4.1)将硬件中断管理器划分为以下子模块:中断存储器、中断控制器、异步事件生成器、处理器命令接口、模块间命令主设备接口、模块间命令从设备接口;(4.2)实现中断存储器;中断存储器中存储每个异步事件的控制块信息,包括阻塞在异步事件上的任务号;(4.3)实现异步事件生成器;异步事件生成器中包含32个外部中断输入信号,设定为上升沿触发或下降沿触发;异步事件标志可以屏蔽、置位和清除;异步事件标志在外部中断输入信号满足触发条件时会置位;当置位的异步事件上有阻塞的任务时,会发出异步事件任务唤醒请求给控制器锁模块,申请相应处理;(4.4)实现中断控制器;中断控制器控制中断管理器中其余子模块的动作;它通过一个有限状态机实现,完成处理器命令、其它模块传入的命令、异步事件任务唤醒操作;(4.5)中断管理器实现以下处理器命令:异步事件上任务阻塞命令、异步事件上带超时时间的任务阻塞命令、异步事件屏蔽命令、异步事件屏蔽读取命令、异步事件触发方式设置命令、异步事件触发方式读取命令、异步事件标志置位命令、异步事件标志清除命令、异步事件标志读取命令、中断控制块查询命令、中断管理器复位命令;(4.6)中断管理器实现以下模块间命令:任务阻塞取消命令;(5)在硬件内核中,实现硬件计数信号量管理器;它包括以下子步骤:(5.1)将硬件计数信号量管理器划分为以下子模块:计数信号量存储器、计数信号量控制器、处理器命令接口、模块间命令主设备接口、模块间命令从设备接口;(5.2)实现计数信号量存储器;计数信号量存储器中存储每个计数信号量的控制块信息,包括信号量计数值、阻塞任务位图;(5.3)实现计数信号量控制器;计数信号量控制器控制计数信号量管理器中其余子模块的动作;它通过一个有限状态机加以实现,完成处理器命令、其它模块传入的命令;(5.4)计数信号量管理器实现以下处理器命令:计数信号量创建命令、计数信号量删除命令、计数信号量上任务阻塞命令、计数信号量上带超时时间的任务阻塞命令、计数信号量释放命令、计数信号量控制块查询命令、计数信号量管理器复位命令;(5.5)计数信号量管理器实现以下模块间命令:任务阻塞取消命令;(6)在硬件内核中,实现硬件互斥信号量管理器;它包括以下子步骤:(6.1)将硬件互斥信号量管理器划分为以下子模块:互斥信号量存储器、任务支持关系存储器、互斥信号量控制器、处理器命令接口、模块间命令主设备接口、模块间命令从设备接口;(6.2)实现互斥信号量存储器;互斥信号量存储器中存储每个互斥信号量的控制块信息,包括互斥信号量拥有者任务号、阻塞任务位图;(6.3)实现任务支持关系存储器;任务支持关系存储器中存储因为互斥信号量占有阻塞导致的任务支持关系,以及推导出的传递的任务支持关系;任务支持关系是指,阻塞在某个互斥信号量上的任务支持占有该互斥信号量的任务;传递的任务支持关系,是指如果任务A支持任务B,任务B支持任务C,则任务A也支持任务C;针对每个任务,记录支持它的任务位图,任务继承支持它的任务的优先级,以实现防止优先级逆转的优先级继承协议;通过任务支持关系推导出传递任务支持关系,如果存在对称的传递任务支持关系,则表示互斥信号量申请死锁,会发出异步处理申请中断信号;(6.4)实现互斥信号量控制器;互斥信号量控制器控制互斥信号量管理器中其余子模块的动作;它通过一个有限状态机实现,完成处理器命令、其它模块传入的命令;(6.5)互斥信号量管理器实现以下处理器命令:互斥信号量创建命令、互斥信号量删除命令、互斥信号量上任务阻塞命令、互斥信号量上带超时时间的任务阻塞命令、互斥信号量释放命令、互斥信号量控制块查询命令、互斥信号量管理器复位命令;(6.6)互斥信号量管理器实现以下模块间命令:任务阻塞取消命令;(7)在硬件内核中,实现硬件消息队列管理器;它包括以下子步骤:(7.1)将硬件消息队列管理器划分为以下子模块:消息队列存储器、消息队列控制器、处理器命令接口、模块间命令主设备接口、模块间命令从设备接口;(7.2)实现消息队列存储器;消息队列存储器中存储每个消息队列的控制块信息,包括消息队列缓冲区、消息队列读指针、消息队列写指针、消息队列的任务阻塞位图;(7.3)实现消息队列控制器;消息队列控制器控制消息队列管理器中其余子模块的动作;它通过一个有限状态机实现,完成处理器命令、其它模块传入的命令;(7.4)消息队列管理器实现以下处理器命令:消息队列创建命令、消息队列删除命令、消息队列上读消息命令、消息队列上带超时时间的读消息命令、消息队列上写消息命令、消息队列控制块查询命令、消息队列管理器复位命令;(7.5)消息队列管理器实现以下模块间命令:任务阻塞取消命令;(8)通过包含多个单处理器硬件内核,实现多处理器的操作系统功能;它包括以下子步骤:(8.1)对单处理器硬件内核进行封装;每个单处理器硬件内核,包括一个寄存器接口模块、一个控制器锁模块、一个任务管理器、若干个中断管理器、若干个计数信号量管理器、若干个互斥信号量管理器和若干个消息队列管理器;(8.2)根据配置,在硬件中实例化一到多个单处理器硬件内核,每个单处理器硬件内核有独立的参数配置,从而实现多处理器实时操作系统硬件内核;(9)在多处理器硬件内核中,实现处理器间计数信号量管理器;它包括以下子步骤:(9.1)将处理器间计数信号量管理器划分为以下子模块:处理器间计数信号量存储器、处理器间计数信号量控制器、处理器命令接口、模块间命令主设备接口;(9.2)实现处理器间计数信号量存储器;处理器间计数信号量存储器中存储每个计数信号量的控制块信息,包括信号量计数值、每个处理器上的阻塞任务位图、每个处理器上阻塞任务的最高优先级;(9.3)实现处理器间计数信号量控制器;处理器间计数信号量控制器控制处理器间计数信号量管理器中其余子模块的动作;它通过一个有限状态机实现,完成处理器命令;(9.4)处理器间计数信号量管理器实现以下处理器命令:处理器间计数信号量创建命令、处理器间计数信号量删除命令、处理器间计数信号量上任务阻塞命令、处理器间计数信号量释放命令、处理器间计数信号量控制块查询命令、处理器间计数信号量管理器复位命令;(10)在多处理器硬件内核中,实现处理器间消息队列管理器;它包括以下子步骤:(10.1)将处理器间消息队列管理器划分为以下子模块:处理器间消息队列存储器、处理器间消息队列控制器、处理器命令接口、模块间命令主设备接口;(10.2)实现处理器间消息队列存储器;处理器间消息队列存储器中存储每个消息队列的控制块信息,包括消息队列缓冲区、消息队列读指针、消息队列写指针、每个处理器上的阻塞任务位图、每个处理器上阻塞任务的最高优先级;(10.3)实现处理器间消息队列控制器;处理器间消息队列控制器控制处理器间消息队列管理器中其余子模块的动作;它通过一个有限状态机实现,完成处理器命令;(10.4)处理器间消息队列管理器实现以下处理器命令:处理器间计数消息队列创建命令、处理器间消息队列删除命令、处理器间消息队列上读消息命令、处理器间消息队列上写消息命令、处理器间消息队列控制块查询命令、处理器间消息队列管理器复位命令;(11)实现完整的多处理器硬件实时操作系统内核;它包括以下子步骤:(11.1)在多处理器内核中,包括一到多个单处理器内核,一个寄存器接口模块、若干个处理器间计数信号量管理器和若干个处理器间消息队列管理器;每个单处理器内核中,包括一个寄存器接口模块、一个控制器锁模块、一个任务管理器、若干个中断管理器、若干个计数信号量管理器、若干个互斥信号量管理器和若干个消息队列管理器;(11.2)在单处理器内核中,出现处理器命令、异步事件任务唤醒、任务调度请求、系统时间片滴答事件时,对单处理器内核中的控制器锁模块发出申请,加锁后由相应控制器完成操作;在处理器间寄存器接口模块接收到处理器命令时,需要对所有处理器的控制器锁模块发出申请,全部加锁成功后,由相应控制器完成被申请的操作。
地址 310058 浙江省杭州市西湖区余杭塘路866号