新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > 一步步寫(xiě)STM32 OS【一】 序言

        一步步寫(xiě)STM32 OS【一】 序言

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

          一直想寫(xiě)個(gè)類似uC,近段時(shí)間考研復(fù)習(xí)之余忙里偷閑,總算有點(diǎn)成果了。言歸正傳,我覺(jué)得最難的部分首先便是上下文切換的問(wèn)題,他和MCU的架構(gòu)有關(guān),所以對(duì)于不同的MCU,這部分需要移植。一旦這個(gè)問(wèn)題解決了,整個(gè)OS算是成功了一半了,當(dāng)然,是對(duì)于簡(jiǎn)單的OS。

        本文引用地址:http://www.104case.com/article/201701/342561.htm

          好了,要寫(xiě)一個(gè)OS,首先需要一個(gè)開(kāi)發(fā)板和仿真器。我的開(kāi)發(fā)板是F4DISCOVERY,自帶ST-LINK V2仿真器,板載MCU為F407VGT6,支持FPU,32位ARM Cortex-M4F核,1024KB FLASH,192 KB RAM,總之很強(qiáng)大。對(duì)其他系列,本OS幾乎不需修改修改就可使用。開(kāi)發(fā)環(huán)境為IAR for ARM 6.5,如果是MDK的話,也是大同小異,匯編部分需要修改。

          研究了一下UCOS-II的Cortex-M4的Port部分,覺(jué)得很好,就直接拿來(lái)用了,修改的很少。首先我們來(lái)看一下這一部分幾個(gè)比較重要的函數(shù),打開(kāi)os_cpu_a.asm文件,定位到下面的地方,注釋我改成中文了。當(dāng)OS初始化完畢后,執(zhí)行OSStart,OSStart最后調(diào)用OSStartHighRdy函數(shù),注意在此之前的線程模式和異常模式的堆棧都是MSP,在此之后線程模式的堆棧是PSP,異常模式的堆棧仍是MSP。

          之后我們?cè)诖嘶A(chǔ)上構(gòu)建自己的OS,首先完成兩個(gè)任務(wù)互相調(diào)用,然后是加入SysTick的任務(wù)調(diào)度,最后加入信號(hào)量,郵箱等功能。



        關(guān)鍵詞: STM32 OS

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鄂尔多斯市| 沙雅县| 伊宁县| 江西省| 武汉市| 武清区| 仪征市| 澄迈县| 赞皇县| 库伦旗| 民县| 攀枝花市| 凌源市| 孝义市| 任丘市| 竹北市| 赤城县| 镇坪县| 色达县| 兰坪| 荣昌县| 佛冈县| 响水县| 隆德县| 远安县| 扶余县| 台南县| 莱州市| 巧家县| 金堂县| 顺义区| 湘潭县| 五寨县| 临清市| 永德县| 贡嘎县| 镇坪县| 定西市| 搜索| 福州市| 平昌县|