999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

讓新人快速實現μc/os II在arm上的移植方法

2016-07-01 09:59:32作者陳若冰蘭州大學
電子制作 2016年9期
關鍵詞:嵌入式用戶系統

作者 / 陳若冰,蘭州大學

?

讓新人快速實現μc/os II在arm上的移植方法

作者 / 陳若冰,蘭州大學

為了應用系統在一個專用計算機系統上對可靠性、功能、功耗的要求,嵌入式系統應運而生。為了充分發揮嵌入式系統的優勢,在嵌入式系統上移植操作系統顯得很必要了。所以我們將本文討論以下問題:1.一個新人如何快速實現μc/os II操作系統在arm處理器上的移植;2.新人常見的障礙及解決方法

新人;移植;ARM;μc/os II

前言

對一個新人來說,在嵌入式系統上移植操作系統最難的是無從下手。本文就是讓新人能快速上手,深入了解。5個步驟,2個常見問題,簡單明了,同時便于學習的深入。

1. 為什么要進行μc/os II在ARM上的移植?

1)嵌入式系統需要操作系統來滿足其越來越高的cpu位數對處理能力以及可靠性的要求,沒有操作系統,發揮不出裸機功能,即便其能跑動,添加應用程序或用戶有什么需求都需要極其熟悉其硬件及編程才行,這就相當于只有開發者能使用了,還很麻煩。2)ARM處理器功耗小,快速并且小型,它本身就具有適合跑操作系統的特性。3)μc/os II是一款實時操作系統,保證在一定時間完成特定功能,易實現多任務處理,它有很強的可移植性。

2.移植的5個步驟

(在IAR開發環境下,讓整個系統工作在管理模式下移植,主要是移植OS_CPU_C.C和OS_CPU_A.S這兩個文件)

■2.1 移植OS_CPU_C.C,主要是初始化堆棧結構:OSTaskStkInit函數

其目的是讓堆棧處于剛剛發生過中斷的狀態,因為任務不會一被創建就被執行,為使后面的調度會一致,先要把改任務指針及返回地址都指向函數入口,被調度時從堆?;謴蛣傞_始的地方走。

■2.2 啟動μc/os II:通過在主程序中調用OSStart()函數

(從這步開始,開始移植OS_CPU_A.S) 真正實現uC/OS-II啟動運行是通過OSStart()函數來調用OSS-tartHighRdy()函數的,是為了讓優先級狀態最高的進入就緒狀態任務運行。OSStart函數原型:

■ 2.3任務級的任務切換函數:OSCtxSw()

其功能是在當觸發了更高的優先級任務以后,要調用OSCtxSw進行任務切換,原理如下:

(1)將當前處理的通用寄存器(RO-R12、R14),PC寄存器和當前的CPSR寄存器值壓入當前任務堆棧中;(2)按下列順序,將馬上要切換任務的SP值,SPSR,RO-R12,R14和PC寄存器的值恢復到各自當前處理器的值中;(3)上述功能全恢復后就續表中最高任務優先級的運行。

■2.4 中斷級的任務切換函數:OSIntCtxSW()

它的功能是在中斷里面觸發了更高的優先級而進行任務切換。由于是中斷,進入時是已經保存了被中斷任務的cpu現場,就不用像上面那樣一個一個地恢復了,只需調整指針值。下面是詳細代碼,任務級的任務切換函數和下面代碼大部分也是一致的。

2.5 OSIntEnter()、OSIntExit():用于對中斷中的任務切換,它們必須在中斷處理函數中成對使用(否則系統可能奔潰)。前者用于判斷中斷發生是否在uC/OS-II整個系統啟動后,否則所有的系統功能均不能提供給用戶使用。后者用于在用戶編寫的中斷服務代碼執行完畢以后調用,以保證“處于就緒狀態下優先級最高的任務始終能得到系統的所有資源”。

3. 注意的2個要點

■3.1 搞清TCB、ECB兩個數據結構

在上面的移植函數的使用和更改中,我們頻繁提到TCB、ECB這兩個數據結構,離開了數據結構,內核什么也完成不了。任務控制塊TCB中包含了每個創建的任務的全部信息,μc/os II會給每個創建的任務分配一個TCB。 事件控制塊ECB的總數由用戶所需要的信號量、郵箱和消息隊列的總數決定。在調用OSInit()時,執行了OS_InitEvent-List()函數,所有ECB被鏈接成一個單向鏈表—空閑ECB鏈表。每當建立一個信號量、郵箱或者消息隊列時,就從該鏈表中取出一個空閑ECB,并對它進行初始化。

■3.2 對ARM體系的發生的異常的分析

異常就是由內部或外部資源產生并且引起處理器去處理的事件。在執行所有異常程序之前,處理器狀態寄存器必須被保存下來,以便當異常處理程序完成時處理器狀態寄存器

能被恢復。由于異常模式對應各自的異常類型,系統模式由于其不受限制地訪問系統內部所有資源的特性最適合作為操作系統正常運行的模式,而用戶模式適用于用戶運行進程時用,它通過限制用戶對處理器模式的更改權限(比如中斷)以保護系統的運行正常。然而中斷任務的開始就是要將現場保護到堆棧中去,它大大占用了ARM的開銷。在不需要任務切換時,中斷開始執行時產生的開銷明顯浪費處理器寶貴的時間。所以要在中斷開始執行的階段將寄存器暫時保存在中斷模式的堆棧中,在調用函數時,μc/os II判斷是否要任務切換。注意,建議在移植的過程中把工作模式切換在管理模式,因為在用戶和系統模式下,使用LDM指令時,會導致對不可預知的錯誤。

4. 結論

上述步驟便于μc/os II在arm上的移植,且對于新人起到快速入門的作用,對于其深入了解和日后操作起到良好奠基與引導作用。

* [1]Jean J.Labrosse. MicroC/OS-II The Real-Time Kernal[M].北京:北京航天航空大學出版社,2002

* [2]開發人員. IAR Embedded Workbench IDE User Gui[M].IAR開發公司,2001

* [3]任哲.嵌入式實時操作系統μc/os II原理及應用[M]北京:北京航天航空大學出版社,2004

* [4]杜春蕾.ARM體系結構與編程[M].北京.清華大學出版社.2003

猜你喜歡
嵌入式用戶系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 91麻豆精品国产91久久久久| 国产小视频a在线观看| 4虎影视国产在线观看精品| 91麻豆精品国产高清在线| 99人妻碰碰碰久久久久禁片| 亚洲中久无码永久在线观看软件 | 18禁高潮出水呻吟娇喘蜜芽| 亚洲人成人无码www| 最新国产麻豆aⅴ精品无| 欧美翘臀一区二区三区| 人人91人人澡人人妻人人爽| 国产爽妇精品| 欧美三级不卡在线观看视频| 国产成人精品视频一区二区电影| 国产AV毛片| 人妻无码AⅤ中文字| 精品乱码久久久久久久| 91丝袜乱伦| 91欧美亚洲国产五月天| 在线日韩日本国产亚洲| 欧美国产视频| 欧美激情视频一区二区三区免费| 亚洲男人天堂网址| 欧美黄色网站在线看| 亚洲欧美成aⅴ人在线观看| 曰韩免费无码AV一区二区| 亚洲妓女综合网995久久| 中文字幕在线观| 九色国产在线| 中国丰满人妻无码束缚啪啪| 日韩成人高清无码| 青草视频免费在线观看| 精品国产一区91在线| 91伊人国产| 免费jjzz在在线播放国产| 福利在线不卡一区| 乱系列中文字幕在线视频| 成人精品亚洲| 久久狠狠色噜噜狠狠狠狠97视色 | 一级在线毛片| 热热久久狠狠偷偷色男同| 日韩精品久久无码中文字幕色欲| 久久成人国产精品免费软件| 丁香综合在线| 国产在线91在线电影| 91成人试看福利体验区| 国产在线第二页| 欧美成人精品一区二区| 一级毛片在线免费视频| 精品国产成人三级在线观看| 精品天海翼一区二区| 亚洲无码四虎黄色网站| 色婷婷啪啪| 97人妻精品专区久久久久| 国产成人高精品免费视频| 91久久精品国产| 欧美三级视频网站| 国内熟女少妇一线天| 亚洲一区二区约美女探花| 色婷婷成人| 国产免费久久精品99re不卡 | 男女男免费视频网站国产| 激情无码字幕综合| 亚洲综合九九| 伊人狠狠丁香婷婷综合色| 最新加勒比隔壁人妻| 欧美丝袜高跟鞋一区二区| 亚洲AⅤ波多系列中文字幕| 国产99精品久久| 伊人网址在线| 熟女视频91| 色综合久久久久8天国| 亚洲精品无码抽插日韩| 欧美色99| 国产一级毛片yw| 免费一极毛片| 伊人福利视频| 97色伦色在线综合视频| 91人妻日韩人妻无码专区精品| 国产91导航| 日韩无码视频播放| 精品一区二区三区四区五区|