CN103440171B - 一种构件化硬件实时操作***的实现方法 - Google Patents
一种构件化硬件实时操作***的实现方法 Download PDFInfo
- Publication number
- CN103440171B CN103440171B CN201310396603.3A CN201310396603A CN103440171B CN 103440171 B CN103440171 B CN 103440171B CN 201310396603 A CN201310396603 A CN 201310396603A CN 103440171 B CN103440171 B CN 103440171B
- Authority
- CN
- China
- Prior art keywords
- task
- processor
- command
- hardware
- manager
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种构件化硬件实时操作***的实现方法,该方法首先将实时操作***分为硬件内核和软件接口两部分;然后在硬件内核中以构件化的方式实现实时操作***内核的任务管理器、中断管理器、计数信号量管理器、互斥信号量管理器、消息队列管理器,硬件内核以寄存器接口模块和软件通信,以控制器锁对各个管理器同步,管理器间使用标准的模块间命令接口总线通信;最后实现处理器间计数信号量管理器和处理器间消息队列管理器,实现多处理器实时操作***硬件内核。本发明采用构件化方式实现硬件实时操作***内核,在***可裁剪性与可扩展性上取得较大提高,使硬件实时操作***达到了软件的灵活性。
Description
技术领域
本发明属于实时操作***硬件化实现领域,涉及一种构件化硬件实时操作***的实现方法。
背景技术
随着嵌入式***行业的不断发展,实时操作***RTOS(RealTimeOperatingSystem)在工业控制、医疗器械、航空航天、汽车电子、家用电器等领域均得到了广泛应用,并在嵌入式***中占有了较大份额。实时操作***是指能在确定的时间内对外部触发事件及时做出响应并执行相应任务的一类操作***。RTOS之所以能在计算机嵌入式应用中广泛使用,是因为RTOS能够将任务分解成多任务,简化了应用***软件的设计。RTOS使控制***的实时性得以保证,良好的多任务设计,可以提高嵌入式***的可靠性和安全性。
随着应用领域的不断深化和细化,各种复杂的应用场景对RTOS的性能和稳定性要求也在逐渐加强。通用的桌面操作***在可靠性方面有较全面的考虑,以满足复杂应用场景,来避免死锁、恶意攻击等。然而多数RTOS为了保证实时性等性能要求下,对***的可靠性进行简化处理,对应用程序的编写者提出更高的技术要求,从而留下安全隐患。传统的RTOS已无法同时满足更高的实时性和可靠性要求。采用软硬件协同手段,对RTOS功能模块进行硬化处理及功能重构,是一种兼顾***实时性及可靠性的有效手段。这也是当前RTOS研究的热点之一。
20世纪90年代,国外有人提出了实时操作***硬件化的概念,使用硬件逻辑电路或者时序电路实现传统实时操作***中的任务调度、中断处理、资源管理等功能。之后成型的研究成果开始出现。2003年PaulKohout将实时任务管理器硬件化,进行基于优先级和时间片的调度。2008年,解放军信息工程学院的崔建华,基于“外部处理器+FPGA”的框架结构,设计了支持任务调度、中断管理、定时器管理等功能的硬件RTOS。2011年,南丹麦大学的AndersBlaabjergLange设计并实现了较为完整的硬件实时操作***HartOS,HartOS中包括了任务管理器、中断管理器、资源管理器,并使用APIProcessor实现CPU与管理器之间的通信。2012年,国内哈尔滨理工大学的谷萍萍使用遗传算法NSGA-II作为软硬件划分算法,根据应用需要对UCOSII实时操作***进行部分硬件化,在硬件资源消耗与性能提升之间取得平衡。
从应用角度来说,对一个实时操作***的评价体现在五个方面:(1)***性能,即***实时性和完成各项内核操作的速度;(2)***资源消耗,即***所占软件内存空间和硬件资源量;(3)***可靠性,即***查错能力和异常恢复能力;(4)***可扩展性与可裁剪性,即***根据应用需要进行裁剪或扩充的能力;(5)***可复用性,即***适用于不同运行环境的能力。但现有的大部分硬件实时操作***,虽然有各自的优点,但都在一项或多项评价方面存在缺陷。或者是因为过多的总线通信导致性能降低,或者是因为***耦合度过高而难于裁剪和扩展,或者是只能在特定硬件上实现,或者是对软件操作检查不足而存在可靠性上的缺陷,或者是在功能上与软件实时操作***存在较大差距。
发明内容
本发明的目的在于针对现有技术的不足,提供一种构件化硬件实时操作***的实现方法。
本发明解决其技术问题所采用的技术方案是:一种构件化硬件实时操作***的实现方法,该方法包括以下步骤:
(1)将实时操作***分为硬件内核和软件接口两部分,并确定软硬件通信方式;
(2)在硬件内核中,确定实时操作***内核各个功能模块的构件化实现方式,使其可以根据需要灵活地调整、裁剪和扩展;
(3)在硬件内核中,实现硬件任务管理器;
(4)在硬件内核中,实现硬件中断管理器;
(5)在硬件内核中,实现硬件计数信号量管理器;
(6)在硬件内核中,实现硬件互斥信号量管理器;
(7)在硬件内核中,实现硬件消息队列管理器;
(8)通过包含多个单处理器硬件内核,实现多处理器的操作***功能;
(9)在多处理器硬件内核中,实现处理器间计数信号量管理器;
(10)在多处理器硬件内核中,实现处理器间消息队列管理器;
(11)实现完整的多处理器硬件实时操作***内核。
本发明具有的有益效果是:
1、从***性能上来说,本发明是全实时操作***内核硬件化,最大程度减少了软硬件通信开销,比部分硬件化的实时操作***在性能上有很大提高;
2、从***资源消耗上,本发明使用构件化方式实现硬件实时操作***内核,可以根据需要进行裁剪和调整大小,最大程度减少不必要的资源开销,同时实时操作***内核功能模块的存储器,全部使用FPGA片内RAM实现,与其它硬件实时操作***相比,最大程度减少了硬件逻辑单元的消耗;
3、从***可靠性上,本发明使用多种方式保证***可靠性,包括在任务管理器中添加看门狗模块、在任务管理器中添加堆栈指针检查逻辑、在互斥信号量管理器中添加死锁检测、在硬件命令执行时进行各种状态检查和参数检查,以充分利用硬件的可靠性来保证实时操作***的可靠性;
4、从***可扩展性与可裁剪性上,本发明使用构件化方式实现硬件实时操作***内核,模块间通过自定义总线通信,耦合度非常低,很适于扩展和裁剪;
5、从***可复用性上,硬件内核完全使用硬件逻辑单元和片内RAM实现,不需要特殊的硬件支持,而且软硬件通信方式被封装在功能模块之外,可以灵活地替换,不需要特殊的总线支持,因此可以达到很高的复用度。
6、本发明以少量硬件资源巧妙地实现了基于时间片的同优先级任务调度、各类资源基于优先级的任务阻塞队列、互斥信号量的优先级继承协议,突破了硬件实时操作***复杂度低、难于与软件实时操作***相媲美的问题;
7、本发明使用构件化方式实现的硬件实时操作***,可以方便地用于支持当前业界逐渐流行的多处理器与多核处理器***,这对现有硬件实时操作***来说是一种突破。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。
图1是在AlteraFPGA芯片上的单处理器构件化实时操作***架构图。
图2是在XilinxFPGA芯片上的多处理器构件化实时操作***架构图。
具体实施方式
以下将结合附图及实施例来详细说明本说明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。
本发明用于实现构件化的硬件实时操作***,具体包括如下步骤:
1、将实时操作***分为硬件内核和软件接口两部分,并确定软硬件通信方式。它包括以下子步骤:
(1.1)将硬件内核作为协处理器或者外部设备存在,当作为协处理器时,软硬件通过处理器的通用寄存器进行通信,当作为外部设备时,软硬件通过***总线进行通信。
(1.2)硬件内核将实时操作***内核功能封装成硬件命令,硬件命令包括命令号、输入数据、返回值、输出数据。软件接口将硬件命令进一步封装为***调用,提供给应用程序使用。
(1.3)除硬件命令通信外,硬件内核还提供两个中断信号给处理器,一个用于任务切换申请,一个用于异常处理申请;软件接口负责进行硬件内核发出中断的处理,在任务切换申请中断信号带来时,进行任务切换,在异常处理申请中断信号到来时,进行异常处理;异常处理申请除了软件处理,还可以直接触发处理器复位
2、在硬件内核中,确定实时操作***内核各个功能模块的构件化实现方式,使其可以根据需要灵活地调整、裁剪和扩展。它包括以下子步骤:
(2.1)硬件内核使用寄存器接口模块作为软件接口和实时操作***内核功能模块间的接口。寄存器接口模块将软件接口传入的硬件命令,转换为相应功能模块的处理器命令接口通信。实时操作***内核功能模块的处理器命令接口总线信号如下:
cpu_target[7:0],处理器命令对应的功能模块地址;
cpu_input_wr,输入数据写信号;
cpu_input_data[31:0],输入数据,在cpu_input_wr为1时有效,可写入最多16个输入数据;
cpu_cmd_data[31:0],命令编号;
cpu_cmd_req,命令发起请求,在输入数据和命令编号就位后,可发起命令请求;
cpu_cmd_ack,命令完成标志;
cpu_cmd_ret[7:0],命令返回值;
cpu_cmd_output_num[3:0],命令输出数据个数,最多有15个输出数据;
cpu_output_rd,输出数据读信号;
cpu_output_data[31:0],数据数据,在cpu_output_rd为1时切换到下一输出数据。
(2.2)实时操作***内核功能模块通过标准的模块间命令接口连接到模块间命令接口总线上,每个实例化的内核功能模块分配有一个独立的地址,以进行模块间命令通信;总线上同一时间只允许一个有一个主设备和一个从设备,主设备发起命令,从设备执行命令。模块间命令接口总线信号如下:
slave_target[7:0],从设备地址;
input_wr,输入数据写信号;
input_data[31:0],输入数据,在input_wr为1时有效,可写入最多16个输入数据;
cmd_data[31:0],命令编号;
cmd_req,命令发起请求,在输入数据和命令编号就位后,可发起命令请求;
cmd_ack,命令完成标志;
cmd_ret[7:0],命令返回值;
cmd_output_num[3:0],命令输出数据个数,最多有15个输出数据;
output_rd,输出数据读信号;
output_data[31:0],数据数据,在output_rd为1时切换到下一输出数据。
(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)在单处理器内核中,出现处理器命令、异步事件任务唤醒、任务调度请求、***时间片滴答事件时,对单处理器内核中的控制器锁模块发出申请,加锁后由相应控制器完成操作。在处理器间寄存器接口模块接收到处理器命令时,需要对所有处理器的控制器锁模块发出申请,全部加锁成功后,才能由相应控制器完成操作。
下面举出两个本发明实现的构件化硬件实时操作***的具体实例。如图1所示,实例***在Altera公司的型号为CycloneIVEP4CE115F29C7的FPGA芯片上实现。软件接口运行在NIOSII软核处理器上,硬件内核以外部设备的方式存在,通过Avalon***总线和处理器交互。如图2所示,实例***在Xilinx公司的型号为Spartan6XC6SLX16的FPGA芯片上实现。软件接口运行在两个Microblaze软核处理器上,硬件内核以外部设备的方式存在,通过两条AXI-Stream串行流总线、一条AXI总线和处理器交互。
表1为本发明实现的构件化硬件实时操作***与一些已有硬件实时操作***的特性对比。其中SierraKernel是唯一的商用化硬件实时操作***,HartOS是2011年南丹麦大学实现的开源硬件实时操作***,UCOSII实时操作***硬件化是国内较流行的硬件实时操作***实现方式。
表1:
由表1可见,使用本发明的益处在于:(1)从***性能上,比纯软件实时操作***和部分硬件化实时操作***的性能更高,***实时性可以得到更好地保障;(2)从***资源消耗上,由于采用构件化方式,可以灵活裁剪,可以比其它硬件实时操作***消耗更少的硬件资源;(3)从***可靠性上,带有堆栈指针检查、看门狗超时复位、互斥信号量死锁检测、以及严格的处理器命令参数检查,可以很好地保证***的可靠性;(4)从***可扩展性和可裁剪性上,由于采用构件化方式,***功能模块间耦合度很低,故可以根据需要对功能模块进行扩展和裁剪,对资源数进行灵活地配置;(5)从***可复用性上,由于采用构件化方式,故可以灵活地改动寄存器接口模块,使其适用于不同的软硬件接口方式,具有较高地复用性;(6)由于采用构件化方式,***可配置性和可扩展性远高于其它硬件实时操作***,甚至可以与纯软件实时操作***相媲美;(7)***可用于多处理器环境,适应业界今后发展需要。
Claims (1)
1.一种构件化硬件实时操作***的实现方法,其特征在于,该方法包括如下步骤:
(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)在单处理器内核中,出现处理器命令、异步事件任务唤醒、任务调度请求、***时间片滴答事件时,对单处理器内核中的控制器锁模块发出申请,加锁后由相应控制器完成操作;在处理器间寄存器接口模块接收到处理器命令时,需要对所有处理器的控制器锁模块发出申请,全部加锁成功后,由相应控制器完成被申请的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310396603.3A CN103440171B (zh) | 2013-08-25 | 2013-08-25 | 一种构件化硬件实时操作***的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310396603.3A CN103440171B (zh) | 2013-08-25 | 2013-08-25 | 一种构件化硬件实时操作***的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103440171A CN103440171A (zh) | 2013-12-11 |
CN103440171B true CN103440171B (zh) | 2016-08-03 |
Family
ID=49693861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310396603.3A Expired - Fee Related CN103440171B (zh) | 2013-08-25 | 2013-08-25 | 一种构件化硬件实时操作***的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103440171B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598208B (zh) * | 2015-02-11 | 2016-01-27 | 四川天邑康和通信股份有限公司 | 一种基于消息队列的单片机操作***实现方法 |
CN105260331B (zh) * | 2015-10-09 | 2018-08-28 | 天津国芯科技有限公司 | 一种双总线内存控制器 |
CN105354381B (zh) * | 2015-11-05 | 2018-07-13 | 天津津航计算技术研究所 | 基于重构的fpga多余度实现方法 |
CN105335237B (zh) * | 2015-11-09 | 2018-09-21 | 浪潮电子信息产业股份有限公司 | 一种操作***的死锁预防方法 |
WO2017091963A1 (zh) * | 2015-11-30 | 2017-06-08 | 华为技术有限公司 | 一种信息处理方法及装置 |
US10732634B2 (en) * | 2017-07-03 | 2020-08-04 | Baidu Us Llc | Centralized scheduling system using event loop for operating autonomous driving vehicles |
CN108280519B (zh) * | 2018-01-30 | 2020-07-31 | 湖南工学院 | 一种大数据遗传算法数据建模处理装置 |
CN111596962B (zh) * | 2019-02-20 | 2023-05-30 | 中标软件有限公司 | 一种基于高速协议通道的实时微内核***及其初始化方法 |
CN110262905A (zh) * | 2019-05-31 | 2019-09-20 | 四川长虹电器股份有限公司 | 基于高性能可伸缩的优先级队列的消息中间件的推送方法 |
CN111158875B (zh) * | 2019-12-25 | 2023-05-02 | 眸芯科技(上海)有限公司 | 基于多模块的多任务处理方法、装置及*** |
CN112511537B (zh) * | 2020-11-30 | 2023-01-24 | 深圳国微晶锐技术有限公司 | 一种sce-mi协议桥及仿真*** |
CN112380025A (zh) * | 2020-12-03 | 2021-02-19 | 王志平 | 一种基于hsc的进程同步实现方法 |
CN112559210B (zh) * | 2020-12-16 | 2024-05-07 | 北京仿真中心 | 一种基于rtx实时***的共享资源读写互斥方法 |
CN113867988A (zh) * | 2021-09-29 | 2021-12-31 | 展讯通信(深圳)有限公司 | 通用远程通信调用架构及方法 |
CN114168365B (zh) * | 2021-12-07 | 2023-06-20 | 中国船舶重工集团公司第七0七研究所 | 一种基于stm32f450处理器的实时数据录取方法 |
CN114035970B (zh) * | 2022-01-10 | 2022-04-22 | 南京云信达科技有限公司 | 一种数据并发竞争冲突检测分析方法及*** |
CN115061736A (zh) * | 2022-05-19 | 2022-09-16 | 北京控制工程研究所 | 一种基于服务注册机制的动态任务管理方法及*** |
CN117806709B (zh) * | 2024-02-29 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | ***级芯片的性能优化方法、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6957432B2 (en) * | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
US7386853B2 (en) * | 2001-07-12 | 2008-06-10 | Denso Corporation | Multitasking operating system capable of reducing power consumption and vehicle electronic control unit using same |
CN100465857C (zh) * | 2006-10-12 | 2009-03-04 | 浙江大学 | 一种面向嵌入式***低功耗实时任务调度的简化方法 |
CN100470485C (zh) * | 2007-05-09 | 2009-03-18 | 浙江大学 | 多操作***协同工作实现方法 |
-
2013
- 2013-08-25 CN CN201310396603.3A patent/CN103440171B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6957432B2 (en) * | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
US7386853B2 (en) * | 2001-07-12 | 2008-06-10 | Denso Corporation | Multitasking operating system capable of reducing power consumption and vehicle electronic control unit using same |
CN100465857C (zh) * | 2006-10-12 | 2009-03-04 | 浙江大学 | 一种面向嵌入式***低功耗实时任务调度的简化方法 |
CN100470485C (zh) * | 2007-05-09 | 2009-03-18 | 浙江大学 | 多操作***协同工作实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103440171A (zh) | 2013-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103440171B (zh) | 一种构件化硬件实时操作***的实现方法 | |
EP2075696A2 (en) | Interrupt- related circuits, systems and processes | |
US20160004647A1 (en) | Method and circuit arrangement for accessing slave units in a system on chip in a controlled manner | |
CN106681949B (zh) | 基于一致性加速接口的直接内存操作实现方法 | |
CN102077181A (zh) | 用于在多核处理器中和在某些共享存储器多处理器***中产生并输送处理器间中断的方法和*** | |
JPS5841538B2 (ja) | マルチプロセツサシステム ノ ユウセンセイギヨホウシキ | |
WO2012016439A1 (zh) | 业务管理方法和装置、以及设备 | |
CN103377081A (zh) | 嵌入式数控***双核芯片和外设间中断机制的实现方法 | |
CN107918557A (zh) | 一种运行多核***的装置和方法及多核*** | |
US20210334228A1 (en) | Managing network interface controller-generated interrupts | |
JP2018512662A (ja) | 複数の独立マイクロコントローラを伴うマイクロコントローラデバイス | |
JP2011175625A (ja) | インターラプトプロキシ機能を具備したシステムオンチップ及びそのインターラプトプロキシ処理方法 | |
JPS61265661A (ja) | 多重処理システム | |
GB2538754A (en) | Single-chip multi-processor communication | |
CN110399034A (zh) | 一种SoC***的功耗优化方法及终端 | |
KR20230164152A (ko) | 심리스하게 집적된 마이크로컨트롤러 칩 | |
CN109933549B (zh) | 一种适用于risc-v处理器的中断控制器 | |
Abellán et al. | A g-line-based network for fast and efficient barrier synchronization in many-core cmps | |
CN112306652A (zh) | 带有上下文提示的功能的唤醒和调度 | |
CN114328350A (zh) | 一种基于axi总线的通讯方法、装置以及介质 | |
CN113946445A (zh) | 一种基于asic的多线程模块及多线程控制方法 | |
US7516311B2 (en) | Deterministic microcontroller context arrangement | |
JP2017526072A (ja) | サブシステム電力管理制御 | |
CN110737616B (zh) | 处理中断优先级的电路*** | |
US7562207B2 (en) | Deterministic microcontroller with context manager |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20190825 |