操作系統在之前對于我自己還說一直是一個很陌生的東西,不知道該如何的理解和定義。終于當完成某些比較繁瑣的項目時,發現多任務的操作系統是一個很好的東西。
之前總是在看著別人怎么去實現一個操作系統,最終有了自己去寫一個的想法。按照ucOS的作者說的一樣,操作系統最終就是一個保護寄存器和恢復寄存器的動作。
手上只有一個MCU飛思卡爾DG128的開發板,然后就開始寫代碼吧。當然要先練習一下自己的C 語言啦。
1、理解一下函數指針先。
我們知道每一個函數都有自己的一個指針
void ProcFun1(void)
那么ProcFun1就是一個指針。
如下面一個我測試的程序:
typedef void(*VOID_FUN_PTR)(void); 定義一個void*的類型
void DelayTime(int duty)
{
while(duty--)
{
_FEED_COP(); /* feeds the dog */
};
}
void FunTask1(void) {
int i;
for(i = 0;i < 8;i++)
{
PTP = 1<<i; //這個實在LED上顯示個流水燈。
DelayTime(50000);
}
}
void main(void) {
/* put your own code here */
VOID_FUN_PTR pFun; 創建一個局部函數指針
InitSystem();
EnableInterrupts;
pFun = FunTask1; 對指針進行一個賦值
for(;;) {
_FEED_COP(); /* feeds the dog */
(pFun)(); 執行funtask1,取地址,然后通過()執行函數。就可以執行到制定位置的一個函數了。
} /* loop forever */
/* please make sure that you never leave main */
}
到這里就知道函數指針一個怎么去用了。下一步就是棧是怎么保護和恢復的的。
編輯原因--修改函數指針的理解