基于基于ARM+ FPGA平台的硬件实时操作系统平台的硬件实时操作系统
目前嵌入式操作系统的应用越来越广泛,不仅增强了系统的可靠性,而且提高了开发效率。但是,在对实时性
要求较高的应用中,对于基于软件实现的RTOS,单纯依靠改进算法已不能使其实时性得到更大的提高。
引言
从20世纪80年代,国际已经有一些IT组织和公司开始进行商用嵌入式实时操作系统和专业实时操作系统的研究。软件实现的
实时操作系统,国外有VxWorks、LynxOS、嵌入式Linux、TRON和μC/OSII。
国外的研究目前主要集中在硬件操作系统的局部模块,基于整体的硬件实时操作系统设计和实现方面的研究比较少,而实时操
作系统的各个模块之间有着复杂的信息交互和联系。因此,实时操作系统的最优软硬件划分以及实现一个硬件实时操作系统IP
核值得深入研究。
国内的软件实时操作系统主要有两类:一类是中国自主研发的实时操作系统,比如开源的RTThread、电子科大和科银公司开
发的Delta OS等;另一类是基于国外操作系统二次开发,比如中科红旗Linux、深圳蓝点Linux。
但是国内目前的研究集中在任务调度和中断处理的硬件化上面,任务间的通信和同步还有待研究。
鉴于国内和国外的研究现状,硬件实时操作系统只是实现了实时操作系统的一部分,这里设计的硬件实时操作系统,可以替代
传统的小型嵌入式实时操作系统,比如μC/OS、RTX、FreeRTOS等。
1 技术方案
硬件实时操作系统是在ARM+FPGA的平台上实现的,利用ARM的FSMC总线接口实现ARM和FPGA的连接,可以认为FPGA
就是挂在总线上的一个外设,用寄存器的方式配置硬件实时操作系统:在FPGA上实现抢占式调度器,以及基于此调度器的任务
管理、信号量、消息邮箱、消息队列、互斥信号量、事件标志组。在ARM上配置寄存器,执行任务以及实现任务的上下文切
换。这样基本已经完成一个小型嵌入式实时操作系统所需的所有组件。
硬件实时操作系统的基本配置是:同时支持创建8个任务、8个信号量、8个消息邮箱、8个消息队列、8个互斥信号量、8个事
件标志组,而想要支持更多的组件和任务,只需在FPGA上做扩展。图1是硬件实时操作系统的状态切换图,图2是硬件实时操
作系统的主体框图。
图1 硬件实时操作系统状态切换图
图2 硬件实时操作系统主体框图
1.1 抢占式调度器
实现抢占式调度器要抓住3个关键点:
① 当一个任务提交信号量,发送消息给一个高优先级的任务时,当前的任务就会被停止,去执行高优先级的任务;
② 每个时钟节拍中断,如果有高优先级的任务就绪,则高优先级任务会抢占低优先级的任务;
③ 当ISR提交信号量或发送消息给一个更高优先级的任务,中断返回时,不会返回到当前任务,而是返回到高优先级任务。
FPGA实现抢占式调度器的一个核心工作就是快速从任务就绪列表里查找到需要执行的最高优先级任务,这里采用优先级编码
器来实现,方法略——编者注。
这里要特别注意一点,空闲任务是永远就绪的,其优先级最低,没有其他任务执行时,就执行空闲任务。
针对此硬件实时操作系统,ARM上只需做好以下两点:
① 任务级任务切换,主要是实现高优先级向低优先级的任务切换;
② 中断级任务切换,在中断退出的时候判断是否有更高优先级的任务就绪,如果有,就切换到高优先级任务。
1.2 任务管理
任务管理部分主要实现任务的延时时间设置、任务挂起、任务恢复3个功能。对寄存器的描述略——编者注。
在FPGA部分通过设置Task_REG8 = 1可启动任务管理,这里每个任务在FPGA上的实现都是一个单独的进程,有助于充分发
挥硬件实时操作系统的性能,而不是将所有的任务放到一个进程里实现。
ARM部分只需简单地设置寄存器,就可完成对任务的设置。配置了任务寄存器以后,FPGA上相应的任务管理就会按照配置方
式执行,ARM端读取HW_REG3寄存器就可以得到当前需要执行的最高优先级任务。
① 任务挂起,也就是将任务从就绪列表中删除
评论0