首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于M D K RTX的COrtex—M3多任务应用设计
来源:本站整理  作者:佚名  2009-01-19 12:08:13




    该文件的目的是避免半主机方式软件中断,因为这时所有中断都由RL—RTX统一管理。半主机是用于ARM目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。它由一组已定义的SWI操作来实现。库函数调用相应的SWI(软件中断),然后调试代理程序处理SWI异常,并提供所需的与主机之间的通信。


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] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:120,589.80000 毫秒