一步步寫STM32 OS【一】 序言
一直想寫個類似uCOS的OS,近段時間考研復(fù)習(xí)之余忙里偷閑,總算有點成果了。言歸正傳,我覺得OS最難的部分首先便是上下文切換的問題,他和MCU的架構(gòu)有關(guān),所以對于不同的MCU,這部分需要移植。一旦這個問題解決了,整個OS算是成功了一半了,當(dāng)然,是對于簡單的OS。
本文引用地址:http://cafeforensic.com/article/201701/342561.htm好了,要寫一個OS,首先需要一個開發(fā)板和仿真器。我的開發(fā)板是STM32F4DISCOVERY,自帶ST-LINK V2仿真器,板載MCU為STM32F407VGT6,支持FPU,32位ARM Cortex-M4F核,1024KB FLASH,192 KB RAM,總之很強大。對STM32其他系列,本OS幾乎不需修改修改就可使用。開發(fā)環(huán)境為IAR for ARM 6.5,如果是MDK的話,也是大同小異,匯編部分需要修改。
研究了一下UCOS-II的Cortex-M4的Port部分,覺得很好,就直接拿來用了,修改的很少。首先我們來看一下這一部分幾個比較重要的函數(shù),打開os_cpu_a.asm文件,定位到下面的地方,注釋我改成中文了。當(dāng)OS初始化完畢后,執(zhí)行OSStart,OSStart最后調(diào)用OSStartHighRdy函數(shù),注意在此之前的線程模式和異常模式的堆棧都是MSP,在此之后線程模式的堆棧是PSP,異常模式的堆棧仍是MSP。
之后我們在此基礎(chǔ)上構(gòu)建自己的OS,首先完成兩個任務(wù)互相調(diào)用,然后是加入SysTick的任務(wù)調(diào)度,最后加入信號量,郵箱等功能。
評論