《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > μC/OS-II在凌陽單片機SPCE061A上的移植
μC/OS-II在凌陽單片機SPCE061A上的移植
單片機及嵌入式系統應用
張 利 桑 偉 張 立
摘要: 以凌陽單片機為例詳細介紹μC/OS-II的移植方法;重點講解在系統移植過程中一些難以理解的概念,并首次實現了μC/OS-II在凌陽SPCE061A單片機上的移植。
Abstract:
Key words :
</a>摘要:以凌陽單片機" title="單片機">單片機" title="單片機">單片機" title="單片機">單片機為例詳細介紹μC/OS-II的移植方法;重點講解在系統移植過程中一些難以理解的概念,并首次實現了μC/OS-II在凌陽SPCE061A單片機上的移植。

    關鍵詞:μC/OS-II 凌陽單片機 嵌入式系統

  目前,實時操作系統已廣泛應用于工業控制的各個領域。μC/OS-II作為一個實時內核,由于其源碼公開、代碼規范,廣受開發人員的喜愛。SPCE061A是凌陽公司繼μ’nSPTM系列產品SPCE500A等之后新推出的一款16位單片機,內部集成A/D、D/A等多種接口電路,能很方便地嵌入工業控制的各種場合。更重要的是,其內嵌2K字的SRAM和32K的Flash ROM,因此,在不需要擴展外部存儲器的情況下就可以實現μC/OS-II系統的移植。

1 μC/OS-II實時操作系統介紹

  μC/OS-II是一種專門為微控制器設計的搶占式實時多任務操作系統,它以源代碼的形式給出。其內核主要提供進程管理、時間管理、內存管理等服務。系統最多支持56個任務,每個任務均有一個獨有的優先級。由于其內核為搶先式,所以總是處于運行態最高優先級的任務占用CPU。系統提供了豐富的API函數,實現進程之間的通信以及進程狀態的轉化。

2 μC/OS-II系統結構分析與移植

  μC/OS-II的軟件體系結構如圖1所示。從圖1中可以看到,如果要使用μC/OS-II, 必須為其編寫OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM三個文件。這三個文件是與芯片的硬件特性有關的,它們主要提供任務切換與系統時鐘的功能。其它文件用C寫成,它們為系統提供任務管理、任務之間通信、時間管理以及內存管理等功能。

  眾所周知,μC/OS-II是一個多任務操作系統。既然是多任務,就需要解決任務切換的問題。任務切換是在進行系統移植過程需要解決的最主要的問題。由于任務切換涉及到對芯片寄存器的操作,所以它主要用匯編語言寫成,因此,對于不同的單片機,其任務切換的代碼是不同的;但是只要理解其原理,就能舉一反三,以不變應萬變。下文將重點講解任務切換的原理。多任務系統在運行時每個任務好像獨立占用CPU一樣,因此系統必須為每個任務開辟一塊內存空間作為該任務的任務堆棧。該堆棧的作用是保存任務被切換前時CPU各寄存器的值以及系統堆棧的數據。根據以上討論,可總結出在進行任務切換時需要完成的工作,主要步驟如下:

  ① 將當前任務CPU所有的寄存器壓棧;

 ?、?將CPU系統堆棧的數據全部拷貝到當前任務的任務堆棧中;

  ③ 得到下一個處于運行態優先級最高的任務的任務堆棧的指針;

 ?、?恢復下一個任務的CPU寄存器的值;

  ⑤ 恢復下一個任務的系統堆棧中的數據;

 ?、?通過中斷返回指令或函數返回指令,間接修改PC寄存器的值來進行任務切換。

  在為μCOS-II編寫任務切換代碼時需要注意的是:μCOS-II在每次發生中斷后都會產生任務調度,但在中斷結束后進行的任務切換,不能調用普通任務切換函數,這是因為在中斷過程中往往伴隨將CPU的狀態寄存器壓棧操作。以凌陽單片機為例,在中斷后,芯片將PC和SR寄存器的值壓入堆棧,因此,在中斷結束后進行的任務切換中必須對堆棧指針進行調整。

  在系統移植過程中另一個較為重要的部分是系統時鐘。μCOS-II要求系統能產生10~100Hz的時鐘節拍。該時鐘節拍由硬件定時器產生。仍以凌陽單片機為例,可選用時基信號TMB2產生128Hz中斷,作為系統時鐘節拍的產生源。系統時鐘中斷服務子程序用匯編語言寫成,由于其主要功能在用C編寫的子函數中實現,因此,編寫該服務子程序的難度不大。

3 μC/OS-II BSP代碼的編寫

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

3.1 任務切換

  凌陽SPACE061A單片機有R1~R5 五個通用寄存器,還有1個SR(CPU狀態寄存器),再加上PC,總共有7個CPU內部寄存器在任務切換時需要保存。μCOS-II系統調用OSCtxSw( )來實現任務的切換,下面給出其部分代碼:

_OSCtxSw:

PUSHALL // 將所有寄存器壓棧

OSIntCtxSw_in:

// 求出系統堆棧的長度 ,并將其存入R2

R1=SP

R2=OSStkStart

R1+=1

R2=R2-R1

R1=[_OSTCBCμγ]// R1≤OSTCBStkPtr, R1 為任

//務堆棧的頭指針

R1=[R1] // 首先將系統堆棧長度保存在任

//務堆棧中

[R1]=R2

R3=OSStkStart // 得到堆棧的起始地址

// 保存系統堆棧到任務堆棧

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 μCOS-II系統時鐘

  以凌陽SPCE061A單片機的TMB2時基信號作為系統時鐘,每經歷一個時鐘節拍的時間將產生一次中斷,在中斷服務子程序中會調用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,可以提高產品的可靠性,降低研發周期。μCOS-II具有很好的實時性和很小的代碼量,因此掌握μCOS-II的移植方法是相當重要的。本文移植修改的源代碼請參見本刊網絡補充版(http://www.dpj.com.cn)。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲青涩在线| 久久经典综合| 久久九九99视频| 一区二区三区不卡视频在线观看| 欧美视频不卡中文| 亚洲制服丝袜在线| 亚洲影院色在线观看免费| 亚洲午夜av电影| 午夜国产精品视频免费体验区| 奶水喷射视频一区| 一区二区三区免费观看| 午夜欧美大片免费观看| 红桃av永久久久| 久热国产精品| 美女啪啪无遮挡免费久久网站| 永久91嫩草亚洲精品人人| 国产日韩精品视频一区| 可以看av的网站久久看| 在线一区免费观看| 久久视频精品在线| 国产视频综合在线| 欧美国产日本高清在线| 国产一区观看| 伊人色综合久久天天五月婷| 日韩视频精品在线| 亚洲人午夜精品免费| 欧美人与性动交a欧美精品| 欧美三级小说| 亚洲精品欧美激情| 欧美日韩国产首页| 亚洲国语精品自产拍在线观看| 国产精品久久久久影院亚瑟| 一本久久精品一区二区| 99xxxx成人网| 国产精品国产精品国产专区不蜜| 欧美aaa级| 红桃视频一区| 亚洲国产网站| 亚洲在线中文字幕| 国产一区二区电影在线观看| 久久久久欧美| 国产午夜亚洲精品羞羞网站| 国产伦精品一区二区三区免费迷| 欧美一区二区三区免费看| 欧美怡红院视频一区二区三区| 欧美大片国产精品| 久久综合电影一区| 欧美日韩视频专区在线播放| 国产精品久久久久久久久久尿| 欧美一区二区三区精品| 影音先锋久久资源网| 久久精品人人做人人综合| 在线国产精品播放| 欧美精品在线一区二区三区| 久久国产婷婷国产香蕉| 久久人人爽人人爽| 亚洲午夜精品一区二区三区他趣| 亚洲另类在线视频| 国产精品99久久久久久久久| 欧美理论在线播放| 国产精品欧美日韩一区| 欧美成人a视频| 欧美精品激情在线| 在线一区视频| 国产精品美女主播在线观看纯欲| 一本一本大道香蕉久在线精品| 国产视频一区在线观看| 欧美日韩免费区域视频在线观看| 99精品久久| 国产精品久久久久久久午夜片| 国产日韩精品在线观看| 久久综合网络一区二区| 亚洲午夜高清视频| 国产精品美女久久久久av超清| 国产麻豆日韩| 极品中文字幕一区| 国产精品日韩在线一区| 韩日欧美一区二区三区| 国精产品99永久一区一区| 亚洲性色视频| 久久精品99无色码中文字幕| 国产精品免费看久久久香蕉| 欧美激情中文字幕在线| 狠狠色噜噜狠狠色综合久| 欧美日本一区二区三区| 亚洲国产欧美另类丝袜| 久久人人超碰| 国产精品一区在线播放| 欧美理论电影在线播放| 欧美高清成人| 久久久久久自在自线| 美女视频网站黄色亚洲| 欧美成人免费视频| 国产一区二区三区视频在线观看| 欧美美女bbbb| 国产区精品在线观看| 亚洲免费中文字幕| 亚洲黄网站在线观看| 国产精品视频观看| 亚洲黄色视屏| 欧美色欧美亚洲另类二区| 久热精品视频在线观看一区| 免费的成人av| 久久精品国产第一区二区三区| 在线观看不卡| 激情综合色综合久久| 99xxxx成人网| 欧美日韩一区精品| 欧美在线观看日本一区| 亚洲日本中文字幕免费在线不卡| 国产精品视频大全| 国产美女精品人人做人人爽| 欧美成人精品| 久久在线播放| 亚洲免费福利视频| 欧美日韩www| 小处雏高清一区二区三区| 亚洲精品乱码久久久久久久久| 在线看欧美视频| 久久一区二区三区超碰国产精品| 国产精品成人aaaaa网站| 女女同性女同一区二区三区91| 亚洲一区二区三区四区五区午夜| 国产精品视频九色porn| 国产一区清纯| 欧美日韩黄视频| 亚洲激情网站| 国产精品久久久久久久第一福利| 美日韩精品视频| 欧美在线你懂的| 欧美日韩国产在线观看| 欧美激情一区二区三区全黄| 99精品99久久久久久宅男| 亚洲国产一区二区三区在线播| 黄色成人在线观看| 亚洲国产成人av好男人在线观看| 国产精品成人av性教育| 亚洲肉体裸体xxxx137| 亚洲色无码播放| 一本色道久久综合亚洲精品小说| 国产视频一区在线观看一区免费| 激情成人av在线| 国产一区二区高清视频| 午夜久久一区| 蜜臀av国产精品久久久久| 国产精品久久久久久久久久久久| 国产精品久久看| 久久久久亚洲综合| 国产日韩亚洲欧美精品| 欧美日韩在线电影| 在线成人www免费观看视频| 久久成人精品无人区| 欧美成人情趣视频| 亚洲小说欧美另类社区| 一区二区成人精品| 国产欧美日韩在线播放| 在线欧美影院| 亚洲另类在线视频| 国产网站欧美日韩免费精品在线观看| 艳女tv在线观看国产一区| 中文一区字幕| 久久综合影音| 亚洲自拍偷拍视频| 欧美一区久久| 国产精品护士白丝一区av| 亚洲欧洲日夜超级视频| 国产精品一区一区| 欧美激情第一页xxx| 在线一区二区视频| 久久久久久9| 亚洲无亚洲人成网站77777| 欧美暴力喷水在线| 欧美一级视频免费在线观看| 一区精品在线| 亚洲国内高清视频| 麻豆精品视频在线观看| 曰本成人黄色| 久久综合激情| 永久免费精品影视网站| 亚洲一区三区电影在线观看| 亚洲欧洲视频在线| 亚洲欧美国产制服动漫| 亚洲欧美国产毛片在线| 亚洲欧美日本国产专区一区| 久热精品视频在线免费观看| 国产精品久久久久久久第一福利| 日韩一级网站| 国产日韩欧美综合| 欧美超级免费视 在线| 亚洲一区三区视频在线观看| 久久久久.com| 亚洲二区视频| 久久久国产精彩视频美女艺术照福利| 欧美日韩在线一区二区| 亚洲精品在线视频| 中文精品视频| 国产精品一香蕉国产线看观看| 亚洲第一区中文99精品| 中文欧美在线视频| 欧美日韩在线视频观看| 亚洲人成啪啪网站| 欧美日韩在线免费视频| 久久精品一区二区三区四区| 国产精品一区二区三区成人| 欧美性猛交xxxx乱大交退制版| 毛片一区二区| 亚洲精品久久久久久下一站| 久久人体大胆视频| 亚洲国产经典视频| 1024国产精品| 国产精品区一区| 国产精品视频精品视频| 亚洲国产精品成人综合| 亚洲伦理中文字幕| 午夜在线一区二区| 欧美大片免费久久精品三p| 国产精品久久久久9999高清| 亚洲天堂第二页| 欧美日韩一二三四五区| 亚洲国产高清视频| 久久精品中文字幕免费mv| 亚洲欧美国产毛片在线| 国产美女精品视频免费观看| 欧美在线影院在线视频| 欧美精品一区二区三区一线天视频| 欧美一区二区三区在线观看| 亚洲欧美激情一区| 久久岛国电影| 欧美日韩亚洲一区二区三区在线观看| 久久都是精品| 欧美日韩一区二区在线观看| 一本色道久久精品| 久久成年人视频| 国产精品色午夜在线观看| 亚洲欧美一区二区三区极速播放| 国内成+人亚洲+欧美+综合在线| 蜜臀91精品一区二区三区| 久久综合九色综合欧美就去吻| 免费观看在线综合| 久久精品在线| 久久亚洲图片| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品人成在线观看免费| 国产精品狠色婷| 国产精品草莓在线免费观看| 欧美一区二区三区视频在线| 国产区在线观看成人精品| 国精品一区二区| 亚洲一级免费视频| 一个色综合导航| 久久久午夜电影| 亚洲七七久久综合桃花剧情介绍| 亚洲综合色激情五月| 国产精品久久波多野结衣| 欧美国产精品久久| 亚洲国产精品久久91精品| 欧美大秀在线观看| 欧美日韩国产成人在线| 黄色欧美成人| 在线看日韩av| 理论片一区二区在线| 久久久www成人免费精品| 国产精品黄色| 久久综合九色综合欧美就去吻| 欧美日韩另类字幕中文| 国产精品视频免费在线观看| 欧美激情精品久久久久| 欧美视频在线观看一区二区| 久久久激情视频| 欧美精品九九99久久| 国产精品一区久久久久| 欧美极品影院| 国产日韩亚洲欧美| 欧美高清视频一区二区三区在线观看| 亚洲国产精品高清久久久| 国产亚洲人成a一在线v站| 国产欧美一区二区三区视频| 欧美视频一区二区三区在线观看| 久久爱www.| 国产精品电影观看| 亚洲国产精品悠悠久久琪琪| 亚洲激情视频网站| 国模精品娜娜一二三区| 亚洲人精品午夜| 中文一区字幕| 蜜臀av在线播放一区二区三区| 国产欧美一区二区白浆黑人| 在线观看视频一区二区| 欧美福利一区二区| 99国产精品99久久久久久| 午夜一级在线看亚洲| 午夜精品久久久久影视| 国产裸体写真av一区二区| 黄色成人91| 欧美日韩亚洲另类| 午夜精品视频网站| 中文高清一区| 亚洲免费电影在线观看| 一区三区视频| 一区二区在线观看视频在线观看| 国产精品夜夜夜一区二区三区尤| 欧美精品在线视频观看| 国内外成人免费激情在线视频网站| 欧美性猛交xxxx乱大交蜜桃| 欧美va天堂在线| 狠狠色综合网站久久久久久久| 久久久久久九九九九| 国产精品成人aaaaa网站| 欧美有码在线观看视频| 夜夜嗨av一区二区三区| 一区精品在线播放| 在线观看免费视频综合| 久久综合网色—综合色88| 精品999在线播放| 国产日韩综合| 极品裸体白嫩激情啪啪国产精品| 欧美成人在线免费观看| 久久精品国产亚洲一区二区三区| 国产亚洲人成网站在线观看| 国产精品99久久久久久久久| 亚洲精品综合精品自拍| 国产精品一区=区| 亚洲一区在线免费| 国产精品九九| 亚洲日本欧美天堂| 亚洲欧美经典视频| 日韩午夜一区| 久久天天躁狠狠躁夜夜爽蜜月|