新闻中心

EEPW首页>嵌入式系统>设计应用> 基于M D K RTX的COrtex―M3多任务应用设计

基于M D K RTX的COrtex―M3多任务应用设计

作者: 时间:2009-01-19 来源:网络 收藏

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

本文引用地址://m.amcfsurvey.com/article/152649.htm


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

根据上下文框图以及避免“资源冲突”原则,将对同一个外设的访问放在同一个设备中,无论何时切换,都不会对任何独立的“外设”造成影响。
将应用分解为4个任务,RL―的第一个任务必须是系统任务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―上使用MDK RL―的方法,并给出了一个简单的多任务应用设计。可以看出多任务的程序设计被大大简化了,它不但满足多个任务的时间要求,降低了开发难度,而且程序的可读性和可维护性也有了很大的提高。利用MDK RL―RTX构建的嵌入式工业控制系统具有成本低、性能高等特点,应用广泛,有着良好的发展前景。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭