一種提高μC/OS-II操作系統(tǒng)安全性與穩(wěn)定性的方法
3.2 修改系統(tǒng)函數(shù)
為了任務(wù)首次運(yùn)行時,可以進(jìn)入相應(yīng)的訪問等級和使用相應(yīng)的堆棧指針,在任務(wù)創(chuàng)建時,加入工作狀態(tài)參數(shù)mode。在ucos_ii.h中定義訪問等級與堆棧選擇的常量:
3.2.1 修改任務(wù)控制塊OS_TCB
在任務(wù)控制塊中加入MSP指針,形式如下:
3.2.2 修改任務(wù)創(chuàng)建函數(shù)
在任務(wù)創(chuàng)建函數(shù)的參數(shù)中加入mode參數(shù),形式如下:
對OSTaskCreateExt()函數(shù)做的修改同上。
3.2.3 修改堆棧初始函數(shù)
在堆棧初始化時,把mode值存儲在MSP底部,以便任務(wù)第一次運(yùn)行時進(jìn)入相應(yīng)的運(yùn)行狀態(tài)(特權(quán)級還是用戶級,使用MSP還是PSP)。系統(tǒng)任務(wù)的mode是OS_Mode_PRIVILEGE | OS_Mode_MSP,任務(wù)創(chuàng)建時PSP為0;而用戶任務(wù)為OS_Mode_USER | OS_Mode_PSP。
堆棧初始函數(shù)的參數(shù)中加入mode參數(shù),形式如下:
OS_TCBInit()函數(shù)把堆棧初始化得到的堆棧指針存入OS_TCB中。本文引用地址:http://www.ex-cimer.com/article/202468.htm linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂) 電能表相關(guān)文章:電能表原理
評論