關(guān) 閉

新聞中心

EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 一種提高μC/OS-II操作系統(tǒng)安全性與穩(wěn)定性的方法

一種提高μC/OS-II操作系統(tǒng)安全性與穩(wěn)定性的方法

作者: 時(shí)間:2011-03-22 來源:網(wǎng)絡(luò) 收藏

3.3 修改OS_CPU_A.ASM文件中的函數(shù)
在OS_CPU_A.ASM文件中,只需修改函數(shù)PendSV_Handler(PendSV服務(wù)例程),任務(wù)切換是由它來完成的。
PendSV服務(wù)例程的流程如圖2所示。

本文引用地址:http://2s4d.com/article/202468.htm

f.jpg


3.4 系統(tǒng)函數(shù)的使用
系統(tǒng)函數(shù)都是在“特權(quán)級(jí)+MSP”狀態(tài)下執(zhí)行的,因此,在用戶任務(wù)調(diào)用系統(tǒng)函數(shù)前,應(yīng)先切換到“特權(quán)級(jí)+MSP”狀態(tài),系統(tǒng)函數(shù)執(zhí)行完畢后再切換到“用戶級(jí)+PSP”狀態(tài)。具體代碼如下。
g.jpg
h.jpg
在特權(quán)級(jí)下通過置位CONTRO[0]來進(jìn)入用戶級(jí),而用戶級(jí)下是不能直接修改CONTROL[0]回到特權(quán)級(jí)的,必須通過一個(gè)異常,在異常例程中修改CONTROL[0],才能在返回到線程模式后拿到特權(quán)級(jí)。通常的方法是使用軟中斷SVC。
因此,從“用戶級(jí)+PSP”狀態(tài)下切換到“特權(quán)級(jí)+MSP”狀態(tài)的實(shí)現(xiàn)方法是:在用戶級(jí)下執(zhí)行SVC指令,在SVC異常服務(wù)函數(shù)中清零CONTROL[0]位,再返回到線程模式下清零CONTROL[1]位切換到MSP;而從“特權(quán)級(jí)+MSP”狀態(tài)下切換到“用戶級(jí)+PSP”狀態(tài)下,只需置位CONTROL[0]與CONTROL[1]。

4 系統(tǒng)測(cè)試
在基于第二代Correx-M3內(nèi)核的LPC1786處理器的語音識(shí)別系統(tǒng)上,對(duì)修改后的進(jìn)行測(cè)試。具體測(cè)試過程為:首先創(chuàng)建3個(gè)信號(hào)量0、1、2(計(jì)數(shù)器初始值都為0);ADC按10 kHz的頻率對(duì)語音信號(hào)采樣,采樣200點(diǎn)(也就是一幀數(shù)據(jù))后發(fā)送信號(hào)量0(發(fā)生中斷級(jí)切換);任務(wù)0(優(yōu)先級(jí)0)請(qǐng)求信號(hào)量0,并對(duì)語音信號(hào)預(yù)處理并檢測(cè)語音信號(hào)的起始端與結(jié)束端;當(dāng)任務(wù)0檢測(cè)到起始端后,每處理完一幀數(shù)據(jù)都發(fā)送信號(hào)量1(產(chǎn)生任務(wù)級(jí)切換),直到檢測(cè)到結(jié)束端,任務(wù)1(優(yōu)先級(jí)1)請(qǐng)求道信號(hào)量1后對(duì)真正的語言信號(hào)進(jìn)行特征提?。划?dāng)任務(wù)0檢測(cè)到語音信號(hào)結(jié)束端時(shí)發(fā)送信號(hào)量2,任務(wù)2(優(yōu)先級(jí)2)獲得信號(hào)量2后利用DWT算法對(duì)語音信號(hào)進(jìn)行識(shí)別并顯示到LCD屏上。
測(cè)試結(jié)果表明,改進(jìn)后的系統(tǒng)抗干擾能力、均大大增強(qiáng),并且系統(tǒng)連續(xù)穩(wěn)定地運(yùn)行很長時(shí)間,沒有出現(xiàn)任何問題,可見系統(tǒng)移植成功。

結(jié)語
改進(jìn)后的系統(tǒng),內(nèi)存的使用沒有增加,只是增加了很小的系統(tǒng)開銷;但配合MPU使用,使系統(tǒng)的得到了很大的提高。該方法可廣泛應(yīng)用于對(duì)系統(tǒng)要求比較高的場(chǎng)合。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
電能表相關(guān)文章:電能表原理

上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉