APP下载

μC/OSIII的中断响应时间分析测量与改善

2016-01-26吕海涛朱岩

单片机与嵌入式系统应用 2015年10期
关键词:嵌入式操作系统

吕海涛,朱岩

(南京理工大学 自动化学院,南京 210094)



吕海涛,朱岩

(南京理工大学 自动化学院,南京 210094)

摘要:在特定的平台下,测量了μC/OS-III的中断响应时间,分析了临界区对μC/OS-III中断响应时间的影响,并提出了改善μC/OS-III实时性的方法。实验结果证明,在系统设计不太复杂的情况下,μC/OS-III的中断响应时间可以控制在4 μs以内。

关键词:嵌入式操作系统;LPC1768;中断响应时间;临界区;μC/OS-III

引言

嵌入式实时操作系统(Embedded Real-time Operating System,RTOS),是指当外界事件或数据产生时,能够接收并以足够快的速度予以处理,处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。通常的操作系统需要完成进程(线程)管理、存储管理、设备管理、作业管理、安全管理等。受到嵌入式系统资源限制以及特定功能的定位,它们通常被设计得非常紧凑有效。嵌入式实时操作系统的主要功能是线程管理。

大多数的RTOS采用了基于优先级的抢占式内核调度算法,并且有以下特点:①每个线程有自己的优先级并且通常不会改变;②活动的线程有运行态、就绪态、等待态等状态;③系统的内核总是运行优先级最高的就绪态线程;④当一个低优先级线程在运行时,一个高优先级线程进入就绪态会发生抢占,高优先级线程会剥夺低优先级线程的CPU控制权,低优先级线程会进入就绪态。

μC/OS系列实时内核于1992年推出,开放源代码,可以自由下载用于教育目的和非商业目的,如用于商业应用及产品,则需要购买其使用许可证。μC/OS-II自1998年推出以来,因其方便移植、代码量小、实时性强、可靠性高、内核可剪裁等,成为我国计算机嵌入式应用领域最受欢迎的实时操作系统之一。经过多年不断发展,已经发展到第三代。μC/OS-III是一个全新的RTOS内核,定位于高端32位CPU,它的功能比μC/OS-II更加强大,比如:支持相同优先级和时间片轮转调度算法;将中断级任务调度交给系统任务处理,大大缩短了中断执行时间;采用哈希散列表机制处理时钟节拍,真正做到了硬实时;直接向任务发信号量,简化了程序,提高了实时性;增强了诸多调试功能、内置式性能测试等等。当然,这些功能也必然占用更多的内存资源。

1μC/OS-III的中断响应时间

评估实时操作系统的最重要指标是响应时间,主要包括中断响应时间、上下文切换时间、线程返回时间等。

中断响应时间是指从检测到中断请求到执行中断服务程序的第一条指令所需要的时间,是衡量嵌入式实时操作系统实时性能的最主要、最具有代表性的性能指标。μC/OS-III从中断消息或信号有直接发布和延迟发布两种方式。μC/OS-II采用的就是直接发布模式,μC/OS-III在保留了直接发布模式的基础上又新增了延迟发布模式。本文只研究μC/OS-III的直接发布模式。

当中断发生时,系统运行状态是不确定的,在μC/OS-III中,中断发生时主要有以下情况:

(1) 线程模式

① 系统运行在正常的任务(非临界区)中,此时,中断会剥夺任务的CPU控制权。

② 系统运行在任务的临界区中,此时中断是关闭的,被挂起,待离开临界区打开后会立即响应中断。

(2) 处理模式

① 异常处理中并且处于非临界区。当优先级比正在运行的中断服务程序高时,高优先级中断会优先响应,即中断嵌套。当比它低或与它相同时,发生的中断会被挂起,待正在运行中断服务程序结束后,立即响应低优先级中断。

② 异常处理中并且处于临界区。发生的中断会被挂起,待中断重新打开后,会根据优先级决定立即响应中断或等待当前异常处理结束后响应。

从以上的分析可以看出,中断相对于CPU是一个异步事件。当发生中断时,有优先级更高或相同的中断在处理时,相同或高优先级中断服务程序时间难以确定。所以本文研究的是最高优先级中断的中断响应时间,也就是中断发生时,没有比它优先级更高或相同的中断或异常在处理。定义中断响应时间为:

中断响应时间=中断延迟时间+保存CPU状态的时间+该内核ISR进入函数的时间[2]

其中,中断延迟时间指最大中断关闭时间。

当中断采用直接发布时,会采用关中断的方法来保护临界区。临界区的大小取决于不同的环境,比如多个任务具有相同的优先级,多个任务等待多个事件,同时等待多个内核对象,以广播方式发送消息或信号量都会导致临界段代码变长。

当有以上因素导致系统的临界段代码比较长时,可以使用延迟发布模式。在延迟发布模式下,发布信号或消息时,不会直接发布,而是将这个发布函数调用和相应的参数写到专用队列中(中断队列),然后使中断队列处理任务进入就绪态。这个任务是μC/OS-III中的内部任务,具有最高的任务优先级,所以可以锁定任务调度器,禁止任务调度,这样就保护了临界区。

保存CPU状态时间和该内核ISR进入函数的时间取决于具体的硬件,比如本文所使用的是基于Cortex-M3处理器,这个时间相对是固定的,可以通过测量得出。

2测量原理和方法

在μC/OS-III中,进入和离开临界区分别调用OS_CRITICAL_ENTER()和OS_CRITICAL_EXIT()。在OS_CRITICAL_ENTER()后记录时间戳T1,在OS_CRITICAL_EXIT()前记录时间戳T2,那么T2-T1为此临界区的中断关闭时间。临界区长度的测量如图1所示。

图1 临界区长度的测量

在具体的实现方式方面,μC/OS-III提供了测量中断关闭时间的功能。它用CPU_IntDisMeasStart( )和CPU_IntDisMeasStop( )两个函数来分别记录T1和T2。要注意,在临界区中加入了测量中断关闭时间函数,必然会增加额外的开销,导致临界区变长。通过调用CPU_IntDisMeasInit ( )初始化中断关闭时间测量功能,连续调用以上两个函数,记录的时间戳差TOH为测量中断关闭时间的开销,最后实际的中断关闭时间T=T2-T1-TOH。打开测量中断关闭时间功能后,每次进入临界区,系统自动测量中断关闭时间,并保存最大中断关闭时间。

中断响应时间主要通过系统的定时器来测量。给定时器一个匹配值TM,当定时器的计数值达到匹配值时,产生中断,在中断程序的第一条读取计数器的值TC,则中断响应时间为T=TC-TM。由前述所知,中断响应时间由于中断关闭时间不同是不确定的,因此可以通过大量重复中断来得出一系列中断响应时间,进而可以得出中断响应时间的最小值、最大值、平均值等。

本文测量使用的硬件平台是苏州鼎尚信息科技的鼎尚LPC1768嵌入式开发板,LPC1768是恩智浦公司生产的基于Cortex-M3的微控制器,主频高达100 MHz,μC/OS-III已移植到开发板中。LPC1768内部有4个定时器/计数器,定时器可以对外设时钟(PCLK)进行计数。系统默认的PCLK为主频的四分频,将定时器外设设置成主频的一分频,即跟主频一致为100 MHz,也就是计数器一个计数代表一个机器周期。

本文用到了两个计数器,计数器0用来测量最大关中断时间,计数器1用来测量中断响应时间。编写3个任务:一个单次任务初始化系统外设功能(定时器、串口、中断等);创建两个应用任务,完成后删除自己,两个应用任务是循环任务,分别向对方发送信号量和消息。μC/OS-III中建立的任务如图2所示。

图2 μC/OS-III中建立的任务

第一步,测量最大关中断时间,使能关中断的时间测量功能。配置一个外部中断,程序运行一段时间后,按键按下产生中断,中断服务程序会将当前实际关中断的最大值通过串口发送到计算机上。中断延迟时间测试程序流程图如图3所示。

图3 中断延迟时间测试程序流程图

第二步,测量中断响应时间,将关中断时间的测量功能关闭,设置匹配值为500 000,当计数器值与匹配值相同时产生中断。中断服务程序的第一条读取计数器值,将读到的值减去匹配值得差值,通过串口发送到计算机,清零计数器,重复中断1000次。中断响应时间测试流程图如图4所示。

图4 中断响应时间测试流程图

3实验结果与分析

在第一步实验中,测量最大关中断时间,得到的结果是325个机器周期,也就是3.25 μs。这是系统稳定运行了一段时间后,测得的最大中断延迟时间。

在第二步实验中,TASK1和TASK2内部第一次无延时,第二次有延时,得到的中断响应时间分布如图5和图6所示。

图5 无延时中断响应时间分布

图6 有延时中断响应时间分布

从图中可以看出,无延时时,有较多的点分布在中间部分,有延时时,在32处点分布十分密集。最底端的点意味着中断发生时,程序没有运行在临界区,响应时间较快。

表1是本次实验数据的一些统计指标。最小值相同,是指当运行在非临界区发生中断时的响应时间,这个时间是最好情况下的时间。在第一步实验中测得的中断关闭时间是325个机器周期,所以,可以认为系统在最坏情况下的中断响应时间是325+32=357个机器周期(3.57 μs)。实验测得的数据均在32~357之间,符合最大中断响应时间。因此,任务中有延时时,系统的中断响应时间会变快,这是因为延迟会减少发送信号量、消息的频率,因而降低了任务调度和任务切换的频率,进入临界区的时间变少,系统平均中断响应时间会变短。

表1 中断响应时间统计指标(单位:机器周期)

结语

参考文献

[1] 赵立业,张激,游夏.实时操作系统的性能分析和评估[J].计算机工程,2008(8).

[2] Labrosse J J.嵌入式实时操作系统μC/OS-III[M].邵贝贝,译.北京:北京航空航天大学出版社,2012.

[3] 尹旭峰,苑士华,胡纪滨.ARM微处理器中断响应时间的实验研究[J].计算机工程,2011(4).

[4] 戴亮,戴胜华.μC/OS-II实时性能测试与研究[J].单片机与嵌入式系统应用,2007(7).

吕海涛(硕士研究生),研究方向为嵌入式软硬件设计。

Interrupt Response Time Analysis and Improvement of μC/OS-III

Lü Haitao,Zhu Yan

(College of Automation,Nanjing University of Science and Technology,Nanjing 210094,China)

Abstract:In a specific platform,the interrupt response time of μC/OS -III is measured and the critical region effect on interrupt response time is analyzed.Finally,the method of improving the real-time property of μC/OS -III is proposed.The experiment results show that the interrupt response time of μC/OS -III can be controlled under 4 μs.

Key words:embedded operating system;LPC1788;interrupt response time;critical region;μC/OS-III

收稿日期:(责任编辑:薛士然2015-05-14)

中图分类号:TP316

文献标识码:A

猜你喜欢

嵌入式操作系统
计算机嵌入式操作系统分析
基于工程教育认证的嵌入式操作系统教学探究
基于ARM 920T S3C2440AL—40的EOS移植研究
FATFS在嵌入式操作系统FreeRTOS中的移植与应用
双离合器自动变速器控制系统的软件开发
关于高校嵌入式操作系统课程教学的探索与思考
基于嵌入式操作系统的工业采集板设计
基于高职学生特点的《嵌入式操作系统》课程教学改革
应用服务型人才培养体系下的嵌入式操作系统教学改革探索
兼容多种通信方式的智能网关软件设计