侯文宾
摘 要:抢占式实时嵌入式操作系统由于具有较高的实时性,所以应用范围更广。而采用单片机作为系统内核,则能进一步加强系统控制,以提高系统任务调度实现的实时性。基于这种认识,本文在明确系统设计目标的基础上,设计了一种基于单片机的抢占式实时嵌入式操作系统。
关键词:抢占式实时嵌入式操作系统;80C51单片机;中断处理
抢占式实时嵌入式操作系统能够在任务得到CPU时间时第一时间进行CPU的完全霸占,能够更好的把握系统控制权,从而使任务得到迅速完成。所以相较于非抢占式操作系统,该种系统能够更好的满足应用的实时性要求,能够在工业生产等领域得到较好的应用。因此,还应加强抢占式实时嵌入式操作系统设计研究,从而更好的完成该类系统的开发。
1 基于单片机的抢占式实时嵌入式操作系统设计目标
基于单片机的抢占式实时嵌入式操作系统设计,首先还要满足实时性要求。进行这样的系统设计,需要将系统调用设计为可重入,以确保关键数据访问能够在临界区得到实现。而系统的调用不会被别的任务打断,所以想要避免关键任务的执行被延迟,还要采取合理的调度策略。针对任务间耦合度低的系统,可以进行单一速率调度算法的使用,完成静态优先级的设置,根据任务周期确定最高优先级。针对任务耦合度较高的系统,还要采取期限最近优先调度策略,根据最后期限顺序完成优先级的动态设置。
2 基于单片机的抢占式实时嵌入式操作系统设计实施
在实际进行基于单片机的抢占式实时嵌入式操作系统设计时,在完成合适单片机选择后,还要完成系统的模块化设计,即完成中断处理模块、任务调用實现模块和任务通讯等模块的设计。
2.1 系统单片机选择
在设计系统时,考虑到系统任务数在510s范围内,且规模较小,拥有较高的可靠性和安全性要求,并需要保证数据传输的实时性,因此还要选用80C51单片机。该单片机由Intel公司开发,内部拥有乘、除、减、比较等指令,并能实现布尔代数运算等运算,包含5个中断源。此外,单片机拥有128Byte的RAM及4K的ROM,并拥有两个16位定时计数器和4个8位并行输入口,能够满足系统时间精度要求。在各模块设计上,采用该单片机可以直接利用汇编语言完成编程,并且可以利用实地址线程完成任务的管理。
2.2 系统各模块设计
2.2.1 中断处理模块设计
在系统中断处理模块设计上,还要将各中断源设为优先级较低的部分,以确保中断能够得到及时响应。在中断处理方面,首选需进行现场中断响应,然后根据中断源完成例程ISR选择,最后进行任务驱动。利用reenter,可实现嵌套层次的记录。在每次利用reenter时,还要进行加1处理,并在退出中断时进行减1。在reenter=0的情况下,代表所有处理已经结束,可进行任务的调度。利用ISR,可进行中断源分析,并直接完成急迫和简单事件处理。如果遇到复杂事件,则需要交由其他对应任务[1]。在系统任务推出内核时,堆栈指针则会指向current线程,从而完成任务调度。通过中断处理,可以使任务的优先级得到改变。利用current,则能完成最高优先级的设置。
2.2.2 任务调用实现模块设计
在任务调用实现模块设计上,还要采取线程方式实现任务管理。在系统内核中,需完成全局变量区域的设置,以实现线程共享。而从线程组成上来看,则包含可执行代码和任务控制块,需利用TCB标识任务表。该任务表将被存储在内核的相应表格中,能够为数量为n_tasks的任务提供支持,该数值通常在15以下。结合任务的状态及性质,可实现任务表链接。而利用TCB,可以完成任务硬实时和软实时的标识,可以利用rt进行标识。如果需进行中断事件的处理,需利用ISR完成deadline的调用,以实现TASK的充填。在此基础上,需准备好state。并完成就绪队列的插入。利用TASK,也能完成任务说明的存放。而标有p_task的队列拥有被记录的事件,这类事件大多由于发生过快而被延期,以免任务丢失。在中断退出时,需完成变量设置,以完成线程获取。而在这一阶段,可以根据任务最后期限的顺序完成current设置,并确保硬实时优先。值得注意的是,运行的任务数量应在10以下,需通过顺链查找完成任务插入,以确保任务能够得到实时调用。进行任务切换时,需进行定时器计时。而任务启动后,无需将线程删除。在实际调度任务时,需采用EDF,确保系统负载不超过最大承受的数量。如果硬实时超出时限,系统会触发定时终端,完成异常例程启动,需完成安全恢复操作的设定才能实现任务。此时,在系统入口地址位置,将完成do_error的存放,系统则会进行关中断的执行。
2.2.3 其他模块设计
在线程之间,可能存在路径互斥的情况。此时,还要利用关中断完成内核控制,利用软锁进行中断响应的提供[2]。而在线程通讯方面,由于缺少用户地址空间,所以还要实现线程间信息共享。针对这一情况,用户还要加强系统调用,以提高系统运行的安全性。
3 结论
通过研究可以发现,在进行抢占式实施嵌入式操作系统设计时,还要采用80C51单片机作为系统内核,以满足系统运行的实时性要求。在此基础上,还要做好系统中断处理、任务调用实现等模块的设计,以确保系统能够满足实时性的应用要求。因此,相信本文该系统设计问题展开的分析,能够为相关工作的开展提供参考。
参考文献:
[1]黄强,徐伟华,吴一波.基于混合架构的嵌入式实时操作系统设计[J].计算机工程,2011,37(12):1012.
[2]王帅华,杨东升,王允森,等.基于ARM的Linux实时抢占补丁的研究与实现[J].组合机床与自动化加工技术,2015,(09):14.