μC/OS―II实时操作系统中任务延时的研究与改进
对于任务删除函数OSTCBDlyDel(),首先判断任务控制块中的任务延时值是否为0,如果不等于0,调用函数OSTCBDlyDel(ptcb,OS_Dly_ OPT_DEL),把任务从任务延时链表中删除;如果等于0,把任务从任务链表中删除。最后,把任务控制块回收到空闲任务链表中。
3 实验测试
3.1 测试环境
本次实验使用软件开发环境Keil4,把μC/OS—II操作系统移植到基于Cortex—M3内核的LPC1768处理器上。对实时操作系统μC/OS—II 2.86进行改进,并对改进后的操作系统进行软件仿真测试。
ARM Cortex—M3内核采用3级流水线和哈佛结构,带独立的本地指令和数据总线以及用于外设的稍微低性能的第三条总线,还包含一个支持随机跳转的内部预取指单元。LPC1700系列微控制器主要用于处理要求高度集成和低功耗的嵌入式应用,最高工作频率可达100 MHz。内部有高达512 KB的Flash存储器、64KB的数据存储器,片内外设包括以太网MAC、USB主机/从机/OTG接口、8通道的通用DMA控制器、4个UART、2条CAN通道、2个SSP控制器、SPI接口、3个I2C接口、2输入和2输出的I2S接口、8通道的12位ADC、10位DAC、电机控制PWM、正交编码器接口、4个通用定时器、6输出的通用PWM、带独立电池供电的超低功耗RTC等众多功能,方便系统的开发,节约成本。
本次测试为:在μC/OS—II中创建25个用户任务,其中的10个任务延时一段时间(for循环延时),并发送信号量,已激活等待此信号量的任务,而后调用函数OSTimeDly(),任务延时。而另外15个任务无限期等待另外几个任务的信号量。Keil4的软件仿真中,LPC1768的外部时钟设定为22.1184 MHz。
3.2 实验结果
下面通过Keil4软件仿真中的Performance Analyzer功能,观察μC/OS—II原操作系统与改进后的操作中函数OSTime Tick()的运行时间。性能测评图如图2、图3所示。本文引用地址:http://www.eepw.com.cn/article/161941.htm
可以看出,改进后OSTimeTick()函数的系统占用率只有原先的50%,当然在实际使用环境中,改进后OSTimeTick()函数的系统占用率与系统中延时任务的多少、系统的运行速度等因素有关,不可能降低这么多,至少从理论上与仿真测试中可以验证此方法可以降低系统的额外开销,提高系统的实时性。
结语
随着技术的进步,处理器芯片的内存不断增大,运行速度不断提高,而且应用系统设计越来越复杂,系统需要运行越来越多的任务,时钟节拍处理函数将占用大量的处理器时间,影响系统的实时性。通过本文对原操作系统中任务延时机制的改进与优化,使时钟节拍处理函数的运行时间仅与同时延时的任务数有关。通过Keil4开发环境下的软件仿真可以看出,改进后系统开销大大降低。
评论