首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的UCOS-II任务管理硬件设计 01

基于FPGA的UCOS-II任务管理硬件设计 01

实时操作系统RTOS(Real Time Operating System)由于具有调度的实时性、响应时间的可确定性、系统高度的可靠性等特点,被越来越多地应用在嵌入式系统中,如:航空航天、工业控制、汽车电子和核电站建设等众多领域。

  传统上,RTOS内核是加在应用程序中的软件,它不仅增加了ROM(代码空间)和RAM(数据空间)的开销,而且增加了应用程序的额外负荷,即使在设计较好的应用系统中内核仍占用2%~5%的CPU负荷[1]。在实时性较强的场合,若无法得到及时的响应,将会引起严重后果。因此,降低RTOS内核的系统开销及提高其实时性非常重要。

  对于降低RTOS占用应用程序处理器开销的研究,大多数集中在改进调度算法[2]和提高处理器的处理能力[3],但是依靠改进调度算法已不能使其实时性有更大的提高,通过提高处理器速度也达不到理想的效果。随着EDA技术的发展及硬件芯片造价的降低,“软件硬件化”的趋势正在成为一个研究的新热点。采用硬件芯片实现RTOS的功能模块极大地发挥了系统处理的并行特性,使硬件RTOS的处理速度达到了传统软件RTOS的6~50倍[4]。然而,RTOS的硬件化非常复杂、繁琐,大多由软件实现的数据结构不适合硬件的并行实现,需要重新修改、设计。

  本文就具体的实时操作系统μC/OS-II的任务管理进行了硬件设计,实现了任务管理模块系统调用的硬件电路和基于组合电路的硬件任务调度器。

  1 硬件RTOS总体设计

  硬件RTOS由软件和硬件两部分组成,如图1所示。软件部分负责应用程序与硬件RTOS的交互,主要实现2点功能:向应用程序提供访问硬件函数的接口;向硬件逻辑提供返回处理结果的中断处理函数和任务切换的中断处理函数。硬件部分将以往由底层软件函数完成的工作,采用硬件函数完成。

  硬件RTOS仍然是以系统调用的形式为应用程序服务,所不同的是由调用硬件函数替代了以往的软件函数。软件函数和硬件函数的区别[5]在于:它们被处理时所在的器件不同,软件函数编译成一条条指令在处理器上执行,硬件函数把参数通过数据总线发送到了指定硬件单元电路的寄存器中,再由硬件逻辑电路进行相应的处理。硬件电路与处理器可以并行工作,节省的处理器时间用于执行别的任务,提高了系统的可调度性。

  图1中,硬件部分由输入输出寄存器、中断控制器、控制器和RTOS主要功能模块等组成。
  
  (1)输入输出寄存器。输入寄存器接收由接口函数传递的功能代码和参数,输出寄存器将执行结果返回给接口函数。

  (2)中断控制器。接收外部事件中断,中断控制器  使用FPGA的I/O(输入/输出)管脚,每个管脚对应一个外部中断,一个或者多个外部中断对应一个中断处理任务[6]。当外部中断到来时,相应的事件标志位被置位,中断任务被置为就绪态。

  (3)控制器。从事件控制块和信号量控制块获知任务的状态,结合系统调用的功能代码和参数信息,确定将要执行的操作并发出控制信号。每个硬件单元都通过CPU发出的控制信号进行工作。

  RTOS主要功能模块包括:事件标志组管理、信号量管理、任务管理及时钟管理。

  (1)事件标志组管理。事件标志组是一个数据结构,采用FPGA的片内寄存器实现,每

个事件占1 bit。任务或中断服务可以将某一位置位或复位。当任务所需要的事件发生时,则将相应的事件位置位;当任务所等待的事件都发生时,则应向控制器提出改变任务状态的相应申请,同时将任务的ID号送给任务管理模块。

  (2)信号量管理。信号量由2部分组成:16 bit的无符号整型的计数值(0~65535);等待该信号量的任务组成的等待任务表。采用可预置的双向计数器(up/down)实现计数值部分,采用FPGA片内的寄存器实现该信号量的等待任务表。寄存器的位数对应系统中的任务数,每个任务占1 bit,且初始值为0(表示没有任务等待该信号量)。等待该信号量的任务将寄存器的相应位置1,释放该信号量的任务唤醒优先级较高的等待任务,将寄存器的相应位置0。每发生一次置位或复位操作,也必须向控制器提出改变任务状态的相应申请,同时将相应任务的ID号送给任务管理模块。

 

返回列表