关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 一种提高μC/OS-II操作系统安全性与稳定性的方法

一种提高μC/OS-II操作系统安全性与稳定性的方法

作者: 时间:2011-03-22 来源:网络 收藏

3.3 修改OS_CPU_A.ASM文件中的函数
在OS_CPU_A.ASM文件中,只需修改函数PendSV_Handler(PendSV服务例程),任务切换是由它来完成的。
PendSV服务例程的流程如图2所示。

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

f.jpg


3.4 系统函数的使用
系统函数都是在“特权级+MSP”状态下执行的,因此,在用户任务调用系统函数前,应先切换到“特权级+MSP”状态,系统函数执行完毕后再切换到“用户级+PSP”状态。具体代码如下。
g.jpg
h.jpg
在特权级下通过置位CONTRO[0]来进入用户级,而用户级下是不能直接修改CONTROL[0]回到特权级的,必须通过一个异常,在异常例程中修改CONTROL[0],才能在返回到线程模式后拿到特权级。通常的方法是使用软中断SVC。
因此,从“用户级+PSP”状态下切换到“特权级+MSP”状态的实现方法是:在用户级下执行SVC指令,在SVC异常服务函数中清零CONTROL[0]位,再返回到线程模式下清零CONTROL[1]位切换到MSP;而从“特权级+MSP”状态下切换到“用户级+PSP”状态下,只需置位CONTROL[0]与CONTROL[1]。

4 系统测试
在基于第二代Correx-M3内核的LPC1786处理器的语音识别系统上,对修改后的进行测试。具体测试过程为:首先创建3个信号量0、1、2(计数器初始值都为0);ADC按10 kHz的频率对语音信号采样,采样200点(也就是一帧数据)后发送信号量0(发生中断级切换);任务0(优先级0)请求信号量0,并对语音信号预处理并检测语音信号的起始端与结束端;当任务0检测到起始端后,每处理完一帧数据都发送信号量1(产生任务级切换),直到检测到结束端,任务1(优先级1)请求道信号量1后对真正的语言信号进行特征提取;当任务0检测到语音信号结束端时发送信号量2,任务2(优先级2)获得信号量2后利用DWT算法对语音信号进行识别并显示到LCD屏上。
测试结果表明,改进后的系统抗干扰能力、均大大增强,并且系统连续稳定地运行很长时间,没有出现任何问题,可见系统移植成功。

结语
改进后的系统,内存的使用没有增加,只是增加了很小的系统开销;但配合MPU使用,使系统的得到了很大的提高。该方法可广泛应用于对系统要求比较高的场合。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)
电能表相关文章:电能表原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭