微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于MDK RTX的Cortex-M3多任务应用设计

基于MDK RTX的Cortex-M3多任务应用设计

时间:05-12 来源:互联网 点击:
4 应用设计

4.1 多任务应用设计

根据图1所示的最小系统框图,采用由表及里 (out—side-in approach)分解应用的方法设计多任务。该应用的上下文框图如图3所示,中间的圈表示软件应用,矩形框表示应用的输入和输出设备。箭头标有具体含义名,表示输入和输出通信的流程。



根据上下文框图以及避免“资源冲突”原则,将对同一个外设的访问放在同一个设备中,无论何时切换任务,都不会对任何独立的“外设”造成影响。

将应用分解为4个任务,RL—RTX的第一个任务必须是系统任务Init Task,该任务用来初始化其他3个任务,任务创建完毕后,3个任务都处于READY状态;第2个任务t_phase_ADC Task用来读取A/D采样的数据;第3个任务t_phase_DEA Task用来处理采样的数据;第4个任务t_phase_DIS Task用来将数据送到LCD液晶屏上,显示、控制LED灯闪烁和蜂鸣器高频报警。图4显示了任务触发的流程。

定义任务:





使用os_tsk_create创建任务t_phase_ADC、t_phase_DEA、t_phase_DIS。

os_tsk_delete_self删除自身任务,实现任务切换。任务的创建和初始化是在主函数中定义的:



任务初始化完毕后,3个任务都处于就绪状态。t_phase_ADC任务用来采样,多次采样取平均值,通过给任务t_phase_DEA发信号 signal_func(t_phase_DEA),唤醒t_phase_DEA任务。



os_evt_wait_and进行控制。该任务判断采样的数据是否在警戒温度范围内,如果出现温度异常,置标志位为1。执行完自身任务后,通过 signal_func(t_phase_DIS),将唤醒t_phase_DIS任务。



t_phase_DIS任务用来在LCD液晶屏上显示温度值。如果发现标志位为1,则LED灯闪烁和蜂鸣器高频报警。

4.2 应用设计测试

采用基本RMA可调度性测试。式1用来完成系统的基本RMA可调度性测试。



这里:Ci为与周期性任务i相关的最坏执行时间,Ti为与任务i相关的周期,n为任务的个数。

U(n)是利用系数,式1的右边是理论处理器利用率的上界。如果给定一组任务,其处理器利用率小于理论利用率上界,则这组任务是可调度的。U的值随n的增加而下降;当n的值为无限时,最终收敛于69%。

表4总结了使用RMA进行调度的3个任务的特性。



使用式1,该应用设计处理器利用率计算如下:



应用设计总的利用率是27.42%,低于78%的理论边界。此4个任务的系统是可调度的,该应用设计是成功的。

结语

本文描述了如何在Cortex—M3上使用MDK RL—RTX的方法,并给出了一个简单的多任务应用设计。可以看出多任务的程序设计被大大简化了,它不但满足多个任务的时间要求,降低了开发难度,而且程序的可读性和可维护性也有了很大的提高。利用MDK RL—RTX构建的嵌入式工业控制系统具有成本低、性能高等特点,应用广泛,有着良好的发展前景。

参考文献

   1. 李宁 ARM 开发工具RealView MDK使用入门 2008
   2. 任哲 ARM 体系结构及其嵌入式处理器 2008
   3. Cesar Marquez Chin Identification of arm movements using correlation of electrocorticographic spectral components and kinematic recordings 2007(2)
   4. 查看详情
   5. Li Qing Real-time concepts for Embedded Systems 2003

作者:武汉理工大学 方安平  武永谊
来源:单片机与嵌入式系统应用 2008 (12)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top