一种基于FPGA的μC/OS-II系统任务调度器技术方案

技术编号:30170045 阅读:19 留言:0更新日期:2021-09-25 15:27
本发明专利技术公开了一种基于FPGA的μC/OS

【技术实现步骤摘要】
一种基于FPGA的
μ
C/OS

II系统任务调度器


[0001]本专利技术属于嵌入式实时操作系统
,涉及一种基于FPGA的μC/OS

II系统任务调度器。

技术介绍

[0002]μC/OS

II是一个完整的,可移植、固化、裁剪的占先式实时多任务内核,该内核提供最基本的系统服务,包括任务管理、信号量、邮箱、消息队列、内存管理、中断管理等。
[0003]在μC/OS

II内核中任务的调度是基于优先级的,每个任务对应一个优先级,最多仅支持64个优先级,但在许多应用场合中经常出现任务数较大且某些任务的优先程度相同的情况,限制了μC/OS

II操作系统的应用场景,如果既要增加任务的数量又要支持同优先级任务调度,那么可以采用两级调度策略,保留原有的基于优先级调度策略,为每个优先级存放4个任务,形成一个任务组,组内任务调度依据用户给出的优先级阈值划分为实时任务和非实时任务,实时任务采用时间片轮转策略,非实时任务采用先来先服务策略。
[0004]为了提高系统使用的灵活度,为每个任务控制块添加时间片长度和任务等待时间,使得用户可以在调度器运行过程中动态修改优先级阈值和时间片长短,结合以上改进思路基于FPGA对操作系统进行硬件化,有效的提高μC/OS

II系统的实时性。

技术实现思路

[0005]本专利技术的目的在于针对实时操作系统内核μC/OS
/>II中支持任务数量少和缺少同优先级任务调度策略的问题,提供了一种基于FPGA的μC/OS

II系统任务调度器,以提高μC/OS

II系统的适应性、灵活性和实时性。
[0006]本专利技术技术方案如下:为解决上述技术问题,本专利技术提供一种基于FPGA的μC/OS

II系统任务调度器,用于处理操作系统中的多任务同级调度,该调度器在FPGA上对内核中相应函数硬件化,包括软硬件协同设计模块、任务管理模块、任务调度器模块、时间管理模块。
[0007]其中,所述软硬件协同设计模块部分包括对μC/OS

II内核文件和配置文件的修改,删除任务管理、任务调度、中断管理相关函数,这些函数功能由FPGA来实现,软核通过调用PIO接口函数来与FPGA通信。
[0008]其中,所述任务管理模块设计部分包括修改任务控制块结构,将任务控制块划分为优先级控制块和任务组控制块,同优先级任务共同的属性存放在优先级控制块寄存器中,不同属性存放在任务组控制块寄存器中。
[0009]任务的唯一标识修改为任务id号,以优先级为条件索引到任务组,再以组内id号索引到相应任务,由用户发送的任务管理指令统一通过指令译码器,译码结果作为条件来修改相应任务控制块的寄存器。
[0010]其中,所述写任务调度器模块设计部分包括分组任务优先级,每组8个优先级通过优先编码器选出最高优先级,以最高优先级为条件选出进入第二级调度器的任务组,任务
组调度电路通过用户输入的优先级阈值与当前优先级比较结果来选择时间片轮转电路或先来先服务电路。
[0011]其中,所述时间管理模块设计部分包括为每个任务分配就绪等待时间寄存器和时间片长短寄存器,时间片轮转调度电路和先来先服务调度电路均以就绪等待时间为条件挑选最先就绪的任务执行,用户发来修改时间片长度或优先级阈值时触发中断,对相应的时间参数修改。
[0012]本专利技术的有益效果为:增加了μC/OS

II系统的任务数、支持同优先级任务的调度、用户可动态调整调度器相关参数,提高了系统的适应性和灵活性,基于FPGA的实现提高了系统的执行速度。
附图说明
[0013]图1为本专利技术的整体结构框图。
[0014]图2为本专利技术的任务管理电路图。
[0015]图3为本专利技术的任务组调度电路图。
[0016]图4为本专利技术的组内任务调度电路图。
具体实施方式
[0017]硬件部分在Qsys系统上搭建硬件环境,连接任务管理、任务调度器等相关硬件逻辑,软件部分在Nios II上搭建μC/OS

II操作系统,在μC/OS

II系统内核上将任务管理中创建任务、删除任务、挂起任务、恢复任务、任务调度、就绪表等相关函数删除,这部分由硬件来实现,软件与硬件之间通过AVALON总线上的PIO接口进行通信。
[0018]任务管理部分通过指令译码器接受软件部分发送过来的任务管理指令以及其他模块对任务控制块中数据的修改指令,由于改进后的每个优先级包含4个任务,原内核的任务控制块结构不足以存放这么多任务,这里将任务控制块的结构划分为优先级控制块寄存器组和任务组控制块寄存器组,优先级控制块寄存器组存放通同优先级任务的通用的属性,包括优先级、优先级就绪转态、栈底地址、栈空间大小等,任务组寄存器存放每个任务的id号、组内就绪状态、组内任务控制块只用情况等属性。
[0019]通过上面这种任务控制块结构,在创建任务时,通过软件部分发送过来的prio(优先级)索引到相应的优先级控制块寄存器,此时组内任务控制块使用情况通过优先编码器选出每组第一个空闲任务控制块编号,以优先级为条件选出相应编号,再以该编号作为条件将软件部分发送的Cre_data_in(创建任务相关数据)分配给对应任务控制块,删除、挂起和恢复等操作都是对任务控制块寄存器内容的更改,直接通过task_id(任务id号)索引到相应寄存器进行更改。
[0020]第一级任务调度保留原内核的基于优先级的机制,将任务优先级分为8组每组就绪状态通过OSRdyGrp寄存器存储,每组优先级都通过优先编码器来选出最高就绪的优先级。再以OSRdyGrp中最高就绪优先级为条件选出所有就绪任务中的最高优先级,以该优先级为条件选取任务组进入任务组内调度电路。
[0021]第二级任务调度中,组内每个任务的就绪状态经过或门输出到priostat(任务组就绪状态),每个任务的就绪等待时间和时间片时间都被分配到RR(时间片轮转电路)和
FCFS(先来先服务电路)中,RR电路和FCFS电路均以任务的等待时间为条件选择最先进入就绪态的任务运行或执行一个时间片,两个电路的执行结果作为选择器的输入,以由用户输入的优先级阈值和当前任务组优先级的比较结果作为选择器的条件,最终输出下一个要执行任务的id号。
[0022]为了使优先级阈值与时间片的长短可以在调度器执行后动态的更改,这里将RR电路和FCFS电路的判断条件均改为任务的就绪等待时间,并且只有在任务被挂起、执行完毕或执行完一个时间片时才将任务就绪等待时间清零,这样在修改优先级阈值和时间片长度时触发中断,保存当前任务信息,中断结束后,如果调度策略改变了,那么原本处于RR电路的任务控制块信息被输入到FCFS电路中继续执行,直到执行完毕,原本处于FCFS电路的任务控制本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的μC/OS

II系统任务调度器,用于增加μC/OS

II操作系统的支持任务数和同优先级任务调度策略,提高系统的灵活性和实时性,其特征在于:包括任务管理模块、任务调度器模块、时间管理模块。2.如权利要求1所述的一种基于FPGA的μC/OS

II系统任务调度器,其特征在于,将原内核中任务管理、任务调度、中断控制等相关函数功能用硬件实现,软核部分通过调用PIO接口向硬核部分发送和读取相关的指令和数据。3.如权利要求1所述的一种基于FPGA的μC/OS

II系统任务调度器,其特征在于,用两个寄存器组存放任务控制块相关数据,分别为优先级寄存器组和任务组控制块寄存器组;优先级寄存器组存放优先级、优先级就绪状态、栈底地址、栈空间大小等信息;每个任务组控制块寄存器组存放4个任务id号、组内任务控制块占用情况、组内任务就绪情况、就绪等待时间、时间片长度等信息。4.如权利要求1所述的一种基于FPGA的μC/OS

II系统任务调度器,其特征在于,任务的唯一标识为任务id号,对任务进行创建、删除、挂起、恢复等操作时,将软核部分发送的指令通过指令译码器译码成相...

【专利技术属性】
技术研发人员:丁宇涛李岩韩文双
申请(专利权)人:哈尔滨理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1