国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于μC/OS的嵌入式系統(tǒng)應(yīng)用開發(fā)平臺的研究

2012-10-08 01:54疏國會
制造業(yè)自動化 2012年7期
關(guān)鍵詞:編譯器源代碼緩沖區(qū)

疏國會,金 鑫

SHU Guo-hui, JIN Xin

(安慶職業(yè)技術(shù)學院,安慶 246008)

1 嵌入式系統(tǒng)概述

嵌入式系統(tǒng)具有很高的先進性,它綜合了多種高新技術(shù),包括計算機技術(shù)和電子技術(shù)以及半導體技術(shù)等,是多種技術(shù)結(jié)合的產(chǎn)物。日常生活的點滴都滲透了嵌入式系統(tǒng),大大方便了人們的生活、豐富了人們的精神世界。它的應(yīng)用領(lǐng)域非常廣闊,大到工業(yè)、服務(wù)業(yè),小到人們的日常娛樂活動,并且隨著經(jīng)濟的發(fā)展,嵌入式系統(tǒng)的應(yīng)用范圍更加擴大。從專業(yè)的角度我們定義嵌入式系統(tǒng)為把計算機作為基礎(chǔ)技術(shù),將應(yīng)用作為中心,可裁減軟硬件的,具備應(yīng)用系統(tǒng)要求的功能、功耗、成本等要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)有三個主要的特征,分別是較強的專用性、精簡的系統(tǒng)和具有較小的內(nèi)核。嵌入式系統(tǒng)對軟件的要求很高,符合要求的軟件必須具有很高的高實時性,另外軟件必須具備高質(zhì)量和可靠性。我們需要專門的工具和環(huán)境對嵌入式系統(tǒng)進行開發(fā)[1]。

嵌入式μC/OS的體系結(jié)構(gòu)比較簡單,所以大部分使用的是C語言進行編程,大部分的友好界面的編譯器都能夠生成編譯的目標代碼,友好的編譯器有Borland C、Keil等。嵌入式μC/OS的體系的內(nèi)核可以很小,小到幾十KB的都有,所以它在移植時支持體系結(jié)構(gòu)多種多樣的微處理器。這樣留給用戶的工作就很少了,由于源代碼是開放的這就方便了學習。μC/OS-II有幾大組成部分,分別是:核心部分(OSCore.c),這是操作系統(tǒng)的處理核心,它又包括了多個組成部分,主要有操作系統(tǒng)初始化、中斷進出的前導、任務(wù)調(diào)度等。任務(wù)處理部分(OSTask.c)的操作是用來完成任務(wù)的,它又包括了建立任務(wù)、刪除任務(wù)、掛起任務(wù)、恢復任務(wù)等。時鐘部分(OSTime.c)主要用來完成延時任務(wù)等。

嵌入式系統(tǒng)包括兩大部分,分別是硬件部分和軟件部分。嵌入式系統(tǒng)的主要特性如下:

1)其系統(tǒng)采用的是公開的源代碼,這也是它最大的特點,在這一點上超越了其它的商業(yè)實時內(nèi)核。源代碼開放的好處是為在不同硬件平臺上移植操作系統(tǒng)提供了很大的便利。

2)嵌入式系統(tǒng)的可移植性能非常好,μC/OS的嵌入式系統(tǒng)源代碼大量采用了ANSI C進行編寫,所以具有很強的可移植性,另外采用匯編語言編寫了和微處理硬件有關(guān)的部分,這樣的目的是方面了μC/OS的嵌入式系統(tǒng)的移植,可以適應(yīng)8、16、32位等。

3)嵌入式應(yīng)用和μC/OS的聯(lián)系十分緊密,因為后者是適應(yīng)前者而設(shè)計的,所以可固化。開發(fā)者需要擁有一些固化手段,包括編譯、下載等就可以使μC/OS嵌入到產(chǎn)品中。

4)可以進行裁減,對于μC/OS的嵌入式系統(tǒng)中不被需要的東西可以進行裁減,只選取有用的應(yīng)用程序,這樣一來μC/OS所需的存儲空間就會得到釋放。

5)μC/OS的嵌入式系統(tǒng)的另一個特色就是占先式和多任務(wù)。級最高的任務(wù)在μC/OS的嵌入式系統(tǒng)中是被優(yōu)先運行的,不過輪轉(zhuǎn)法的任務(wù)調(diào)度還是不被支持的,實時內(nèi)核是完全占先式的[2]。

6)其它特性,包括系統(tǒng)服務(wù)、穩(wěn)定性、可確定性等都是μC/OS的嵌入式系統(tǒng)具有很大吸引力的原因,對于安全要求很高的系統(tǒng)來說μC/OS的嵌入式系統(tǒng)是一個不錯的選擇。另外值得一提的是μC/OS中每個任務(wù)有獨立的棧,對于任務(wù)的獨立??臻g是允許的[3]。

2 基于μC/OS的嵌入式系統(tǒng)的平臺構(gòu)建

在嵌入式系統(tǒng)的開發(fā)之前我們需要構(gòu)建一個平臺進行開發(fā),μC/OS系統(tǒng)并不提供開發(fā)平臺,它提供的只是調(diào)度任務(wù)的內(nèi)核。內(nèi)核的作用是提供軟件系統(tǒng)的基礎(chǔ),如果想開發(fā)一個實用完整的操作系統(tǒng)需要首先進行μC/OS的移植,將其移植到微處理器上之后擴展操作系統(tǒng),然后得到一個符合標準的操作系統(tǒng)之后才能對應(yīng)用程序進行開發(fā)。

2.1 μC/OS的移植

微處理器上移植有μC/OS是內(nèi)核正常運轉(zhuǎn)的前提,只有內(nèi)核正常運行起來才能進一步擴展。μC/OS進行移植的例子不少了,所以可修改現(xiàn)有的這些移植代碼,這需要結(jié)合自己選擇的微處理器。微處理器需要滿足一定條件才能夠進行μC/OS的移植,例如C編譯器可產(chǎn)生重入編碼、允許打開和中斷C編譯器等。

本文中的例子是S a m s u n g公司的ARM7TDMI,通過它來進行μC/OS的移植,其中移植主要是對OS-CPU.H.OS、OS-CPU-A.ASM和OS-CPU-C.C這三個文件的數(shù)據(jù)和參數(shù)進行改寫,目的就是進行移植。

2.1.1 對OS-CPU-C.C進行修改

所有和移植有關(guān)聯(lián)的C函數(shù)都在OS-CPU-C.C中,和操作系統(tǒng)相關(guān)的6個函數(shù)編寫語言為C語言。這6個函數(shù)分別是5個鉤子函數(shù)和一個堆棧初始化,后者是必要的函數(shù),剩下的5個函數(shù)需要聲

明,不過任何代碼可以省略。

2.1.2 對OS-CPU-A.ASM的修改

OS-CPU-A.ASM中的4個關(guān)聯(lián)處理器的函數(shù)由匯編語言編寫,這4個函數(shù)是OSStartHighRdy()、OSCtxSw()、OSTickISR()、OSInitCtxSw()。這4個函數(shù)各有分工,例如可以運行優(yōu)先級別的最高級的任務(wù)的函數(shù)是OSStartHighRdy();當前任務(wù)TCB的地址可以由LDRr4.addr-OSTCBCur.獲得;LDRsp[r5]可以切換到新堆棧。再編寫幾個相關(guān)函數(shù)就完成了OS-CPU-A.ASM的移植工作。

2.1.3 修改OS-CPU.H

設(shè)置OS-CPU.H代碼和ARM具有相關(guān)性,并設(shè)置數(shù)據(jù)類型和編譯器保持相關(guān)性。

對ARM中的數(shù)據(jù)類型進行定義:

#de fi ne unsigned char BOOLEAN;

#de fi ne unsigned char INT8U /*8位無符號整數(shù)*/

#de fi ne signed char INT8S /*8位有符號整數(shù)*/

#de fi ne unsigned char INT16U /*16位無符號整數(shù)*/

#de fi ne signed int INT8S /*16位有符號整數(shù)*/

#de fi ne unsigned long INT32U /*32位無符號整數(shù)*/

#de fi ne signed long INT32S /*32位有符號整數(shù)*/

#de fi ne fl oat FP32 /*單精度浮點數(shù)*/

#de fi ne double FP64 /*雙精度浮點數(shù)*/

定義16位的ARM的數(shù)據(jù)類型為typed unsigned int OS-STK。

μC/OS只有完成了以上三個方面的移植才能夠在ARM的微處理器上運行正常。完成移植工作后需要劃分系統(tǒng)任務(wù)、配置存儲的空間和實現(xiàn)任務(wù)的調(diào)度[4]。

2.2 擴展μC/OS

μC/OS是一個內(nèi)核,它可以執(zhí)行實時多任務(wù),但是僅僅有μC/OS還是不夠的,不能實現(xiàn)完整的嵌入式系統(tǒng),如果想擁有完整實用的操作系統(tǒng)還需要進行除了移植以外的擴展工作。擴展指的是文件系統(tǒng)的建立和建立外部設(shè)備驅(qū)動、對有關(guān)的API函數(shù)進行規(guī)范化、GUI函數(shù)的創(chuàng)建等等。

表1 用戶程序結(jié)構(gòu)

μC/OS系統(tǒng)是沒有文件系統(tǒng)的,而嵌入式系統(tǒng)是需要使用文件系統(tǒng)的,這就意味著我們要建立一個文件系統(tǒng)。文件系統(tǒng)的建立過程是首先對文件系統(tǒng)進行初始化,接下來打開一個系統(tǒng)的指定文件,然后對文件進行讀取和寫入,最后關(guān)閉文件,將緩沖釋放,這就是實現(xiàn)文件系統(tǒng)的過程。實現(xiàn)文件系統(tǒng)的過程中必須要首先用intOSFile()函數(shù)來對系統(tǒng)文件進行初始化,這樣做的目的是分配合理的文件結(jié)構(gòu)空間。系統(tǒng)的文件打開采用OpenOSFile()來打開,對打開模式進行指定然后進行FILE結(jié)構(gòu)的創(chuàng)建,分配文件讀取的緩沖區(qū)。文件的緩沖區(qū)數(shù)據(jù)由ReadOSFile()來直接進行讀取,如果數(shù)據(jù)為空那么就對FAT進行訪問,在文件緩沖區(qū)進行下一個簇的讀取。WriteOSFile()負責在指定的文件中寫入緩沖區(qū)[5]。

3 結(jié)束語

μC/OS是目前流行的、十分優(yōu)秀的嵌入式操作系統(tǒng),它有眾多的優(yōu)點,比如實時性好并且內(nèi)存的需求很小、具有較好的移植性等。這些優(yōu)點都能夠使開發(fā)的周期減少,對于開發(fā)嵌入式系統(tǒng)的應(yīng)用程序是十分有利的。在新世紀嵌入式系統(tǒng)的發(fā)展尤為迅速,隨著嵌入式系統(tǒng)的快速發(fā)展μC/OS的應(yīng)用前景也會越來越廣闊[6]。

[1] 陳渝,李明,楊曄.源碼開放的嵌入式系統(tǒng)軟件分析與實踐—基于SkyEye和ARM開發(fā)平臺[M].中國電力出版社.2004.

[2] Bruce Powel Douglass,柳翔.嵌入式與實時系統(tǒng)開發(fā)[M].中國電力出版社.2005.

[3] 毛德操,胡希明.嵌入式系統(tǒng)—采用公開源代碼和Strong ARM/Xscale處理器[M].清華大學出版社,2003.

[4] 王田苗.嵌入式系統(tǒng)設(shè)計與實例開發(fā)[M].清華大學出版社,2002.

[5] 楊柳,盧清萍.嵌入式系統(tǒng)與Nios[J].安徽工程科技學院學報(自然科學版);2005,(02).

[6] 白智國,王芳,馮丹.嵌入式系統(tǒng)移植問題的研究[J].計算機工程與科學.2005,(06).

猜你喜歡
編譯器源代碼緩沖區(qū)
基于TXL的源代碼插樁技術(shù)研究
面向理想性能空間的跨架構(gòu)編譯分析方法
基于相異編譯器的安全計算機平臺交叉編譯環(huán)境設(shè)計
運行速度大突破華為《方舟編譯器》詳解
串行連續(xù)生產(chǎn)線的可用度與緩沖庫存控制研究*
基于ARC的閃存數(shù)據(jù)庫緩沖區(qū)算法①
基于語法和語義結(jié)合的源代碼精確搜索方法
解密別克安全“源代碼”
初涉緩沖區(qū)
多目標緩沖區(qū)生成算法
青冈县| 射阳县| 西平县| 荥经县| 霍山县| 民和| 桃园市| 广元市| 抚州市| 呼玛县| 墨竹工卡县| 莱芜市| 谢通门县| 衡东县| 府谷县| 焉耆| 桐庐县| 桂平市| 屯门区| 扎兰屯市| 常宁市| 栾川县| 安义县| 安平县| 专栏| 南川市| 安达市| 深水埗区| 永兴县| 清徐县| 松潘县| 江源县| 南投市| 长汀县| 琼结县| 育儿| 多伦县| 炎陵县| 贵州省| 渭南市| 久治县|