<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          uC/OSII移植步驟

          作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏
          1.μC/OS-Ⅱ概述
          μC/OS-Ⅱ在特定處理器上的移植大部分工作集中在多任務(wù)切換的實現(xiàn)上,這部分代碼主要用來保存和恢復(fù)處理器的現(xiàn)場。但許多操作如讀/寫寄存器不能用C語言而只能用匯編來實現(xiàn)。
          將μC/OS-Ⅱ移植到ARM處理器上,只需要修改與處理器相關(guān)的3個文件: OS_CPU.H, OS_CPU_C.C, OS_CPU_A.ASM 。
          2.OS_CPU.H的移植
          1)數(shù)據(jù)類型的定義
          typedefunsignedcharBOOLEAN;
          typedefunsignedcharINT8U;
          typedefsignedcharINT8S;
          typedefunsignedshortINT16U;
          typedefsignedshortINT16S;
          typedefunsignedintINT32U;
          typedefsignedintINT32S;
          typedeffloatFP32;
          typedefdoubleFP64;
          typedefunsignedintOS_STK;
          typedefunsignedintOS_CPU_SR;
          2)ARM處理器相關(guān)的宏定義
          #defineOS_ENTER_CRITICAL()ARMDisableINT
          #defineOS_EXIT_CRITICAL()ARMEnableINT
          3)堆棧增長方向的定義
          #defineOS_STK_GROWTH1
          3.OS_CPU_C.C的移植
          1)任務(wù)椎棧初始化
          任務(wù)椎棧初始化函數(shù)由OSTaskCreat()或OSTaskCreatEXT()調(diào)用,用來初始化任務(wù)并返回新的堆棧指針STK.初始狀態(tài)的堆棧模擬發(fā)生一次中斷后的堆棧結(jié)構(gòu),在ARM體系結(jié)構(gòu)下,任務(wù)堆??臻g由高到低將依次保存著PC,LR,R12…R0,CPSR,SPSR。堆棧初始化結(jié)束后,OSTaskSTKInit()返回新的堆棧棧頂指針OSTaskCreat()或OSTaskCreatEXT()將新的指針保存的OS_TCB中。
          OS_STK *OSTaskStkInit (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT16U opt)
          {
          OS_STK *stk;
          opt= opt;
          上一頁 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 下一頁

          關(guān)鍵詞:

          評論


          相關(guān)推薦

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

          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();