日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > uC/OS-II在凌陽單片機SPCE061A上的移植

          uC/OS-II在凌陽單片機SPCE061A上的移植

          作者: 時間:2013-10-16 來源:網絡 收藏

          3 uC/OS-II BSP代碼的編寫

            BSP(板級支持包)是介于底層硬件和操作系統(tǒng)之間的軟件層,它對底層硬件進行封裝,使得操作系統(tǒng)不再面對具體的硬件。我們以凌陽SPACE061A單片機為例介紹BSP代碼的編寫。

          3.1 任務切換

            凌陽SPACE061A單片機有R1~R5 五個通用寄存器,還有1個SR(CPU狀態(tài)寄存器),再加上PC,總共有7個CPU內部寄存器在任務切換時需要保存。系統(tǒng)調用OSCtxSw( )來實現任務的切換,下面給出其部分代碼:
          _OSCtxSw:
          PUSHALL // 將所有寄存器壓棧
          OSIntCtxSw_in:
          // 求出系統(tǒng)堆棧的長度 ,并將其存入R2
          R1=SP
          R2=OSStkStart
          R1+=1
          R2=R2-R1
          R1=[_OSTCBCuγ]// R1≤OSTCBStkPtr, R1 為任
          //務堆棧的頭指針
          R1=[R1] // 首先將系統(tǒng)堆棧長度保存在任
          //務堆棧中
          [R1]=R2
          R3=OSStkStart // 得到堆棧的起始地址
          // 保存系統(tǒng)堆棧到任務堆棧
          save_stack:
          R3-=1
          R1+=1
          R4=[R3]
          [R1]=R4
          R2-=1
          JNZ save_stack
          CALL _OSTaskSwHook
          R1=[_OSTCBHighRdy]
          [_OSTCBCur]=R1
          R1=[_OSPrioHighRdy]
          [_OSPrioCur]=R1
          JMP OSCtxSw_in

          3.2 系統(tǒng)時鐘

            以凌陽單片機的TMB2時基信號作為系統(tǒng)時鐘,每經歷一個時鐘節(jié)拍的時間將產生一次中斷,在中斷服務子程序中會調用OSTickISR()函數,匯編代碼如下:
          _OSTickISR:
          PUSHALL
          R1=0x0001
          test R1,[P_INT_Ctrl]
          JZ OUT
          R1=0x0001
          [P_INT_Clear]=R1
          CALL _OSIntEnter
          CALL _OSTimeTick
          CALL _OSIntExit
          OUT:
          R1=0x0001
          [P_INT_Clear]=R1
          POPALL
          RETI

          結 語

            RTOS是當今嵌入式應用的熱點。應用RTOS,可以提高產品的可靠性,降低研發(fā)周期。具有很好的實時性和很小的代碼量,因此掌握uCOS-II的移植方法是相當重要的。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉