<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種提高uc/os-ii操作系統安全性與穩定性的方法

一種提高uc/os-ii操作系統安全性與穩定性的方法

作者: 時(shí)間:2013-11-04 來(lái)源:網(wǎng)絡(luò ) 收藏

3.2.2 修改任務(wù)創(chuàng )建函數

在任務(wù)創(chuàng )建函數的參數中加入mode參數,形式如下:
一種提高uc/os-ii操作系統安全性與穩定性的方法

對OSTaskCreateExt()函數做的修改同上。

3.2.3 修改堆棧初始函數

在堆棧初始化時(shí),把mode值存儲在MSP底部,以便任務(wù)第一次運行時(shí)進(jìn)入相應的運行狀態(tài)(特權級還是用戶(hù)級,使用MSP還是PSP)。系統任務(wù)的mode是OS_Mode_PRIVILEGE | OS_Mode_MSP,任務(wù)創(chuàng )建時(shí)PSP為0;而用戶(hù)任務(wù)為OS_Mode_USER | OS_Mode_PSP。

堆棧初始函數的參數中加入mode參數,形式如下:
一種提高uc/os-ii操作系統安全性與穩定性的方法

OS_TCBInit()函數把堆棧初始化得到的堆棧指針存入OS_TCB中。

3.3 修改OS_CPU_A.ASM文件中的函數

在OS_CPU_A.ASM文件中,只需修改函數PendSV_Handler(PendSV服務(wù)例程),任務(wù)切換是由它來(lái)完成的。
PendSV服務(wù)例程的流程如圖2所示。
一種提高uc/os-ii操作系統安全性與穩定性的方法


3.4 系統函數的使用

系統函數都是在“特權級+MSP”狀態(tài)下執行的,因此,在用戶(hù)任務(wù)調用系統函數前,應先切換到“特權級+MSP”狀態(tài),系統函數執行完畢后再切換到“用戶(hù)級+PSP”狀態(tài)。具體代碼如下。

一種提高uc/os-ii操作系統安全性與穩定性的方法
一種提高uc/os-ii操作系統安全性與穩定性的方法

在特權級下通過(guò)置位CONTRO[0]來(lái)進(jìn)入用戶(hù)級,而用戶(hù)級下是不能直接修改CONTROL[0]回到特權級的,必須通過(guò)一個(gè)異常,在異常例程中修改CONTROL[0],才能在返回到線(xiàn)程模式后拿到特權級。通常的方法是使用軟中斷SVC。

因此,從“用戶(hù)級+PSP”狀態(tài)下切換到“特權級+MSP”狀態(tài)的實(shí)現方法是:在用戶(hù)級下執行SVC指令,在SVC異常服務(wù)函數中清零CONTROL[0]位,再返回到線(xiàn)程模式下清零CONTROL[1]位切換到MSP;而從“特權級+MSP”狀態(tài)下切換到“用戶(hù)級+PSP”狀態(tài)下,只需置位CONTROL[0]與CONTROL[1]。

4 系統測試

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

結語(yǔ)

改進(jìn)后的系統,內存的使用沒(méi)有增加,只是增加了很小的系統開(kāi)銷(xiāo);但配合MPU使用,使系統的安全性和穩定性得到了很大的提高。該方法可廣泛應用于對系統安全性與穩定性要求比較高的場(chǎng)合。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: ucos-ii LPC1786 Cortex-M3

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>