Step 1:學會使用開發(fā)板跑簡單程序
熟讀對應開發(fā)板上的ARM芯片的datasheet,之后就盡可能的在開發(fā)板上逐個實現(xiàn)芯片對應的每個功能褐望,像GPIO實驗姐赡,UART通訊厚柳,I2C,ADC熊杨,DAC曙旭,PWM,RTC,SPI等等晶府。當每個功能模塊都實現(xiàn)以后桂躏,再實現(xiàn)多個功能復合的編程,比如用UART打印出ADC的值什么的川陆。
Step 2:搞懂uCOS等簡單OS
建議購買《嵌入式實時操作系統(tǒng)μCOS-II(第二版)》,
1.重點搞清楚什么是任務剂习,什么是前后臺,為什么要在系統(tǒng)中加入嵌入式操作系統(tǒng);
2.詳細了解他的TCB(Task Control Block)和ECB(Event Control Block)的數(shù)據(jù)結構鳞绕,搞清楚整個uCOS的實現(xiàn)機制失仁;
3.詳細了解信號量,互斥信號量们何、消息隊列萄焦、郵箱和時間標志組。
Step 3:建立對uCOS的初步認識
下載對應你的開發(fā)板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H冤竹,OS_CPU_A.asm(當然有的開發(fā)板已經提供了這樣的基礎實驗)
在你的開發(fā)板上跑跑uCOS拂封,建立起自己對于uCOS在開發(fā)板上的認識。在你的開發(fā)板上編寫一個自己跑uCOS的簡單任務鹦蠕。
Step 4:熟悉ARM體系結構
可參考《ARM體系結構與編程》或《ARM+Architecture+Reference+Manual(2nd+Edition)》
了解以下幾個方面的知識:
1烘苹、ARM模式下的指令集
2、Thumd模式下的指令集
3片部、異常模式及進入異常時ARM如何處理
4镣衡、一定能熟悉ARM中的匯編指令
5、熟悉CPSR档悠,R0-R7,R8-R14,R15及在各個模式下廊鸥,這些寄存器的映射。
熟悉以后辖所,再來自己做uCOS的移植了惰说。
Step 5:自己動手移植uCOS
對于uCOS的移植,我們只需要編寫關鍵的三個文件缘回,文件如下:
1吆视、OS_CPU_C.c(堆棧初始化操作OSTaskStkInit函數(shù))
2、OS_CPU.H:完成在該芯片下的數(shù)據(jù)定義酥宴,比如什么unsigned char 之類的啦吧,注意一下OS_STK和OS_CPU_SR的定義,定義下關中斷和開中斷的方式拙寡,有三個只能選擇1個授滓,ARM芯片一般是定義為第三種方式
3、OS_CPU_A.asm(這個是MDK環(huán)境下的匯編文件)或OS_CPU_A.a(這個是IAR開發(fā)環(huán)境下的匯編)肆糕,這個文件的內容就多了般堆,要做以下幾個函數(shù)的重寫:
a、OSStartHighRdy函數(shù)
b诚啃、任務級的任務切換函數(shù)OSCtxSw淮摔,
c、中斷級的任務切換OSIntCtxSw始赎,其實只要寫好了OSCtxSw和橙,OSIntCtxSw自然就copy一下就完了(copy的時候記者要把保存當前任務的寄存器去掉就可以了仔燕。