2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  隨著現(xiàn)代計(jì)算機(jī)技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,從PC時(shí)代過(guò)渡到了以個(gè)人數(shù)字處理、手持個(gè)人電腦和信息家電為代表的3C(計(jì)算機(jī)、通信、消費(fèi)電子)一體的后PC時(shí)代。后PC時(shí)代里,嵌入式系統(tǒng)扮演了越來(lái)越重要的角色,被廣泛應(yīng)用于信息電器、移動(dòng)設(shè)備、網(wǎng)絡(luò)設(shè)備和工控仿真等領(lǐng)域。</p><p>  本文討論了基于

2、ARM微處理器和嵌入式系統(tǒng)的應(yīng)用開(kāi)發(fā),主要以波形采集、LCD顯示和嵌入式系統(tǒng)μC/OS-II為主要研究對(duì)象。描述了三星S3C44B0X微處理器及μC/OS-II實(shí)時(shí)操作系統(tǒng)的特點(diǎn),搭建了一個(gè)以S3C44B0X處理器為核心的通用嵌入式系統(tǒng)平臺(tái),并在此平臺(tái)基礎(chǔ)上實(shí)現(xiàn)了LCD顯示波形、GUI繪圖、多任務(wù)系統(tǒng)等典型應(yīng)用。對(duì)ARM微處理器和嵌入式系統(tǒng)的進(jìn)一步教學(xué)和研究開(kāi)發(fā)有一定的指導(dǎo)價(jià)值。</p><p>  關(guān)鍵詞:AR

3、M微處理器 嵌入式系統(tǒng)μC/OS-II GUI繪圖 多任務(wù)系統(tǒng)</p><p>  Based on ARM Applications Development—LCD Show Waveform</p><p><b>  Abstract</b></p><p>  With the development of the modern

4、computer technology and the widely application of the Internet technology, We transited from the PC time to the latter PC time which is taking individual digital processing,grasping the personal computing and the informa

5、tion electrical appliances as representative's 3C (computer, correspondence, expense electron) a body .In the latter PC time, the inserted type system which acts the more and more important role, is widely applied in

6、 the information electric app</p><p>  This article discussed the application development based on the inserted type system and the ARM microprocessor, mainly by profile gathering, LCD demonstrated and the i

7、nserted type system μC/OS-II is the main research object. Described the Sumsang S3C44B0X microprocessor and The characteristic of the real-time operating system μC/OS-II. build a general inserted system platform take the

8、 S3C44B0X processor as the core, and has realized LCD model application, GUI cartography, multi- duties system a</p><p>  Keywords:ARM microprocessor The inserted type system μC/OS-II GUI cartography Mul

9、ti- duties system</p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p>  AbstractII</p><p><b>  目錄III</b></p><p><b> 

10、 1 前言1</b></p><p>  1.1 研究的目的、意義1 </p><p>  1.2 國(guó)內(nèi)外研究概況1 </p><p>  1.3 研究的主要內(nèi)容3 </p><p>  2 總體方案設(shè)計(jì)4 </p><p>  2.1 嵌入式系統(tǒng)的定義及特點(diǎn)4 </p><

11、p>  2.2 基于A(yíng)RM核的微處理器S3C44B0X簡(jiǎn)介4 </p><p>  2.3 硬件系統(tǒng)的設(shè)計(jì)5 </p><p>  3 硬件單元電路的設(shè)計(jì)實(shí)現(xiàn)6 </p><p>  3.1 CPU核心板的硬件資源6 </p><p>  3.1.1 電源模塊6 </p><p>  3.1.2 JTA

12、G單元6 </p><p>  3.2 存儲(chǔ)器單元7 </p><p>  3.2.1 線(xiàn)形flash存儲(chǔ)器單元7 </p><p>  3.2.2 NAND_FLASH海量存儲(chǔ)器單元7 </p><p>  3.2.3 同步動(dòng)態(tài)存儲(chǔ)器單元。7 </p><p>  3.3 LCD單元8 </p>

13、;<p>  3.4 A/D轉(zhuǎn)換單元9 </p><p>  3.5 信號(hào)調(diào)理單元10 </p><p>  3.6 CPLD擴(kuò)展單元11 </p><p>  3.7 4×4鍵盤(pán)12 </p><p>  4 嵌入式系統(tǒng)μC/OS—II在A(yíng)RM上的移植14 </p><p>  4.

14、1 移植前的準(zhǔn)備工作14 </p><p>  4.2 μC/OS—Ⅱ的移植14 </p><p>  4.3 移植的具體實(shí)現(xiàn)15 </p><p>  4.3.1 設(shè)置OS_ CPU.h中與處理器和編譯器相關(guān)的代碼15 </p><p>  4.3.2 用匯編語(yǔ)言編寫(xiě)4 個(gè)與處理器相關(guān)的函數(shù)16 </p><p

15、>  4.3.3 用C語(yǔ)言編寫(xiě)6個(gè)操作系統(tǒng)相關(guān)的函數(shù)(OS_ CPU_ C.C)18 </p><p>  4.3.4 測(cè)試移植是否成功20 </p><p>  5 嵌入式系統(tǒng)μC/OS-II的具體應(yīng)用實(shí)現(xiàn)21 </p><p>  5.1 多任務(wù)系統(tǒng)21 </p><p>  5.1.1 多任務(wù)21 </p>

16、<p>  5.1.2 任務(wù)21 </p><p>  5.1.4 空閑任務(wù)(Idle Task)22 </p><p>  5.1.4 任務(wù)切換(Context Switch or Task Switch)22 </p><p>  5.1.5 任務(wù)調(diào)度(Task Scheduling)23 </p><p>  5.1

17、.6 任務(wù)優(yōu)先級(jí)及分配23 </p><p>  5.1.7 任務(wù)間的通訊(Intertask Communication)23 </p><p>  5.2 任務(wù)管理24 </p><p>  5.2.1 建立任務(wù)24 </p><p>  5.2.2 任務(wù)堆棧24 </p><p>  5.2.3 刪除任

18、務(wù)24 </p><p>  5.2.5 恢復(fù)任務(wù)24 </p><p>  5.3 時(shí)間管理25 </p><p>  5.3.1 任務(wù)延時(shí)函數(shù)25 </p><p>  5.3.2 任務(wù)延時(shí)函數(shù)25 </p><p>  6 圖形用戶(hù)界面GUI的具體實(shí)現(xiàn)26 </p><p> 

19、 6.1 圖形設(shè)備接口26 </p><p>  6.2 內(nèi)存管理26 </p><p>  6.3 窗體管理27 </p><p>  6.4 事件管理27 </p><p>  7 軟件流程與算法分析28 </p><p>  7.1 主程序流程圖28 </p><p>  7.

20、2 主要算法分析29 </p><p>  7.2.1 算法原理29 </p><p>  7.2.2 畫(huà)圓算法的具體實(shí)現(xiàn)30 </p><p><b>  8 總結(jié)31 </b></p><p><b>  參考文獻(xiàn)32 </b></p><p>  附錄 主電路

21、原理圖34 </p><p><b>  1 前言</b></p><p>  1.1 研究的目的、意義</p><p>  隨著現(xiàn)代計(jì)算機(jī)技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,從PC時(shí)代過(guò)渡到了以個(gè)人數(shù)字處理、手持個(gè)人電腦和信息家電為代表的3C(計(jì)算機(jī)、通信、消費(fèi)電子)一體的后PC時(shí)代。嵌入式系統(tǒng)的快速發(fā)展使之成為當(dāng)前微電子與計(jì)算機(jī)技術(shù)中的

22、一個(gè)重要分支。嵌入式系統(tǒng)的應(yīng)用遍及航天、電信、網(wǎng)絡(luò)、信息家電、醫(yī)療、工業(yè)控制等各個(gè)領(lǐng)域。</p><p>  嵌入式系統(tǒng)由硬件和軟件兩大部分組成。從硬件方面來(lái)講,嵌入式系統(tǒng)的核心部件是各類(lèi)嵌入式微處理器;對(duì)軟件而言,嵌入式系統(tǒng)的軟件一般由嵌入式操作系統(tǒng)和應(yīng)用軟件組成,而嵌入式系統(tǒng)的功能軟件則集成于硬件系統(tǒng)中,系統(tǒng)的應(yīng)用軟件與硬件一體化。就目前的嵌入式微處理器而言,主要有PowerPC、X86、MIPS、ARM/S

23、trong、ARM等系列,其中ARM處理器以其低成本、低功耗、高性能成為嵌入式系統(tǒng)設(shè)計(jì)的首選。一般地,一個(gè)嵌入式系統(tǒng)可能同時(shí)控制/監(jiān)視很多外設(shè),要求實(shí)時(shí)響應(yīng),有很多任務(wù)要處理,各任務(wù)之間有很多消息傳遞,采用原有的程序設(shè)計(jì)不能滿(mǎn)足要求。因此,實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)就成為嵌入式系統(tǒng)的一個(gè)基本要求。在諸如pSOS、Linux、Windows CE、VxWorks、EPOC、μC/OS-II等眾多知名RTOS中,μC/OS-II以其源碼

24、公開(kāi)、可移植性好、簡(jiǎn)單易學(xué)等優(yōu)點(diǎn)可作為高校指導(dǎo)教學(xué)和初學(xué)者的首選。</p><p>  1.2 國(guó)內(nèi)外研究概況</p><p>  國(guó)外實(shí)時(shí)操作系統(tǒng)已經(jīng)從簡(jiǎn)單走向成熟,有代表性的產(chǎn)品主要有VxWorks,ONX,Palm OS,Windows CE等,它占據(jù)了機(jī)頂盒、PDA等絕大部分市場(chǎng)。</p><p>  20世紀(jì)80年代,商業(yè)化的嵌入式操作系統(tǒng)開(kāi)始得到蓬勃發(fā)展

25、。目前國(guó)內(nèi)外已有幾十種商業(yè)操作系統(tǒng)可供選擇,如VxWorks、pSOS、Palm OS、Neculeus、WindowsCE 和“女?huà)zHopen”等。在中國(guó),嵌入式操作系統(tǒng)可分為兩大類(lèi)型:一類(lèi)是自主版權(quán)的操作系統(tǒng),另一類(lèi)是基于Linux 的操作系統(tǒng)。自主版權(quán)的操作系統(tǒng)方面,國(guó)內(nèi)有“女?huà)zHopen”操作系統(tǒng)、桑夏2000 操作系統(tǒng)和DeltaOS 操作系統(tǒng)等?!芭?huà)zHopen”是凱思集團(tuán)推出的產(chǎn)品,目前已進(jìn)入產(chǎn)業(yè)化階段,它能支持所有主流的

26、嵌入式芯片。凱思與聯(lián)想、TCL、Motorola、Winbond、上海貝爾等國(guó)內(nèi)外知名廠(chǎng)商合作開(kāi)發(fā)出了多種產(chǎn)品:聯(lián)想“天璣810”、天璣e卡通、“天璣911”、TCL 集團(tuán)家庭信息顯示器HiD、天億股票機(jī)頂盒、VOD 視頻點(diǎn)播機(jī)頂盒等。桑夏2000操作系統(tǒng)是深圳桑夏公司推出的產(chǎn)品,是一個(gè)面向嵌入式應(yīng)用的實(shí)時(shí)操作系統(tǒng),具備文件系統(tǒng)和嵌入式數(shù)據(jù)庫(kù)引擎,提供了基本的圖形用戶(hù)接口,支持層次化、模塊化的軟件模型,可運(yùn)行在“龍珠‘等三種系列的CPU

27、上,支持包括TCP/IP 協(xié)議在內(nèi)的網(wǎng)絡(luò)通訊協(xié)議。DeltaOS</p><p>  近年來(lái),嵌入式Linux 進(jìn)展較快。在中國(guó),以L(fǎng)inux為基礎(chǔ)的嵌入式操作系統(tǒng)比較活躍,其中,中軟Linux、紅旗Linux、東方Linux 是業(yè)界的代表。中軟總公司以數(shù)控平臺(tái)為背景, 推出了中軟Linux3.0。中軟嵌入式Linux是實(shí)時(shí)系統(tǒng),這套基于Linux的嵌入式系統(tǒng)不僅滿(mǎn)足了數(shù)控機(jī)床的需求,同時(shí)也可以應(yīng)用于其他工業(yè)控制

28、領(lǐng)域。紅旗Linux 把工控和信息家電作為主要的發(fā)展領(lǐng)域。紅旗Linux 為用戶(hù)提供了Windows 風(fēng)格的控件集、圖形中文環(huán)境和嵌入式數(shù)據(jù)庫(kù)的開(kāi)發(fā)工具。中科紅旗公司開(kāi)發(fā)出了針對(duì)工控領(lǐng)域的嵌入式Linux 系統(tǒng)。東方Linux 是凱思集團(tuán)推出的產(chǎn)品。凱思通過(guò)與中芯微合作,已經(jīng)推出了網(wǎng)絡(luò)計(jì)算機(jī)(NC)。采用東方Linux的NC 系列產(chǎn)品除具有傳統(tǒng)終端的功能之外,還具有本地計(jì)算能力,用戶(hù)可以通過(guò)NC 使用安裝在服務(wù)器上的應(yīng)用程序,并可以使用

29、多種本地軟件。該產(chǎn)品工作方式基于集中與開(kāi)放網(wǎng)絡(luò)服務(wù)的運(yùn)算模式,兼容多種網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn),用戶(hù)可以在任意地點(diǎn)通過(guò)網(wǎng)絡(luò)連接設(shè)備,實(shí)時(shí)訪(fǎng)問(wèn)服務(wù)器端的應(yīng)用程序。該產(chǎn)品可應(yīng)用于政府、國(guó)防、教育、商業(yè)、金融等領(lǐng)域。</p><p>  在國(guó)內(nèi)的嵌入式產(chǎn)品的市場(chǎng),嵌入式系統(tǒng)也逐漸地嶄露頭角。</p><p>  智能手機(jī):2004 年中國(guó)手機(jī)產(chǎn)量為1. 7 億部,出口上升到1. 05 億部。據(jù)測(cè)算,智能手機(jī)

30、市場(chǎng)每年以300 %的速度快速增長(zhǎng),預(yù)計(jì)到2006 年,智能手機(jī)的保有量將達(dá)到2500 萬(wàn)臺(tái)。2006 年之后,由于3G網(wǎng)絡(luò)商用的推動(dòng)作用,智能手機(jī)仍將快速增長(zhǎng)。</p><p>  數(shù)碼相機(jī):2004 年中國(guó)數(shù)碼相機(jī)市場(chǎng)也開(kāi)始呈現(xiàn)強(qiáng)勁的增長(zhǎng)勢(shì)頭,并且需求開(kāi)始集中到320 萬(wàn)像素以上數(shù)碼相機(jī)。根據(jù)CCID 的市場(chǎng)調(diào)查報(bào)告,2004 年全年中國(guó)數(shù)碼相機(jī)市場(chǎng)銷(xiāo)量達(dá)到了264. 7 萬(wàn)臺(tái),銷(xiāo)售額達(dá)到了49. 52 億元

31、,同比增長(zhǎng)95. 49 %和69. 0 %。</p><p>  數(shù)字電視:2004 年中國(guó)數(shù)字電視用戶(hù)達(dá)到了120 多萬(wàn)戶(hù)。CCID 的預(yù)測(cè)數(shù)據(jù)顯示,2008 年中國(guó)數(shù)字有線(xiàn)電視用戶(hù)為3373 萬(wàn),普及率將達(dá)到24 %。近期來(lái), IPTV 備受關(guān)注。IPTV 是一種集互聯(lián)網(wǎng)、多媒體、通訊等多種技術(shù)于一體,向用戶(hù)提供包括數(shù)字電視在內(nèi)的多種交互式服務(wù)的新技術(shù)。來(lái)自IDC(中國(guó)) 的數(shù)字顯示,近年我國(guó)的IPTV ST

32、B 用戶(hù)年復(fù)合增長(zhǎng)率將達(dá)到245 % ,到2008 年將達(dá)到855 萬(wàn)。目前,國(guó)內(nèi)已有十八個(gè)城市試點(diǎn)IPTV。</p><p>  汽車(chē)電子:隨著汽車(chē)電子化程度的不斷提高,汽車(chē)電子產(chǎn)值增長(zhǎng)迅速。2004 年全球汽車(chē)電子總產(chǎn)值為1240 億美元,預(yù)計(jì)2005 年將達(dá)到1340 億美元。中國(guó)的汽車(chē)產(chǎn)值正以每年30 %的速度增長(zhǎng),2004 年全國(guó)汽車(chē)產(chǎn)量超過(guò)500 萬(wàn)輛。據(jù)CCID - MRD 統(tǒng)計(jì),汽車(chē)電子的增長(zhǎng)率將

33、達(dá)到20 % ,到2005年,中國(guó)汽車(chē)電子市場(chǎng)的規(guī)模將突破2500 億元。聯(lián)想控股、康佳集團(tuán)、創(chuàng)維、新科電子、TCL、長(zhǎng)虹都開(kāi)始或已經(jīng)進(jìn)入汽車(chē)電子領(lǐng)域??梢?jiàn),隨著汽車(chē)產(chǎn)業(yè)的快速發(fā)展,汽車(chē)電子產(chǎn)業(yè)將成為支持制造業(yè)發(fā)展的大產(chǎn)業(yè)。</p><p>  1.3 研究的主要內(nèi)容</p><p>  本文基于S3C44B0X微處理器和嵌入式實(shí)時(shí)操作系統(tǒng)建立的平臺(tái)實(shí)現(xiàn)如下應(yīng)用設(shè)計(jì):</p>

34、<p>  建立圖形化界面,實(shí)現(xiàn)嵌入式多任務(wù)系統(tǒng);</p><p>  采集模擬信號(hào)并通過(guò)LCD實(shí)時(shí)顯示波形,信號(hào)頻率范圍:10Hz~10kHz;</p><p>  在LCD實(shí)現(xiàn)GUI繪圖;</p><p><b>  2 總體方案設(shè)計(jì)</b></p><p>  2.1 嵌入式系統(tǒng)的定義及特點(diǎn)</p

35、><p>  嵌入式系統(tǒng)是嵌入到對(duì)象體系中的專(zhuān)用計(jì)算機(jī)系統(tǒng)。以嵌入式計(jì)算機(jī)為核心的嵌入式系統(tǒng)是繼IT網(wǎng)絡(luò)技術(shù)之后,又一個(gè)新的發(fā)展方向。IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))對(duì)嵌入式系統(tǒng)的定義為:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”(原文為Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or

36、 Plants)。這主要是從應(yīng)用對(duì)象上加以定義,涵蓋了軟硬件及輔助機(jī)械設(shè)備。國(guó)內(nèi)普遍認(rèn)同的嵌入式系統(tǒng)定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。</p><p>  嵌入式系統(tǒng)有如下顯著特點(diǎn):(1)嵌入式系統(tǒng)是面向特定任務(wù)的,不同于一般通用PC計(jì)算平臺(tái),是“專(zhuān)用”的計(jì)算機(jī)系統(tǒng);(2)嵌入式系統(tǒng)運(yùn)行環(huán)境差異很大;(3)嵌入式系統(tǒng)比通

37、用PC系統(tǒng)資源少;(4)嵌入式系統(tǒng)功耗低、體積小、集成度高、成本低;(5)嵌入式系統(tǒng)具有系統(tǒng)測(cè)試和可靠性評(píng)估體系;(6)嵌入式系統(tǒng)具有較長(zhǎng)的生命周期;(7)嵌入式系統(tǒng)具有固化在非易失性存儲(chǔ)器中的代碼;(8)嵌入式系統(tǒng)使用的操作系統(tǒng)一般是實(shí)時(shí)操作系統(tǒng)RTOS;(9)嵌入式系統(tǒng)需要專(zhuān)用開(kāi)發(fā)工具和方法進(jìn)行設(shè)計(jì)。</p><p>  μC/OS—Ⅱ是一種源碼公開(kāi)的實(shí)時(shí)嵌入式操作系統(tǒng)。它完全是占先式的實(shí)時(shí)內(nèi)核,是基于優(yōu)先級(jí)

38、的,即總是讓就緒態(tài)中優(yōu)先級(jí)最高的任務(wù)先運(yùn)行,因此實(shí)時(shí)性比非占先式的內(nèi)核要好。它包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量、郵箱、消息隊(duì)列)和內(nèi)存管理等功能;它的絕大部分代碼是用C語(yǔ)言編寫(xiě)的,可移植性強(qiáng)。目前,μC/OS—II絕大多數(shù)可以在8位、16位、32位以至64位微處理器、微控制器、數(shù)字信號(hào)處理器DSP上運(yùn)行。</p><p>  2.2 基于A(yíng)RM核的微處理器S3C44B0X簡(jiǎn)介</p

39、><p>  S3C44B0X微處理器是三星公司專(zhuān)門(mén)為手持設(shè)備和一般應(yīng)用提供的高性?xún)r(jià)比和高性能的微處理器解決方案,它使用ARM公司的16/32位ARM7TDMI RISC核,采用0.25μm CMOS工藝制造,最大工作頻率為66MHz。這款芯片內(nèi)部集成了8KB Cache、內(nèi)部SRAM、LCD控制器、帶自動(dòng)握手的2通道UART、4通道DMA、系統(tǒng)管理器(片選邏輯,F(xiàn)P/EDO/SDRAM控制器)、帶PWM功能的5通道

40、定時(shí)器和一個(gè)內(nèi)部定時(shí)器,I/O端口,RTC,8通道10位ADC,IIC總線(xiàn)接口,IIS總線(xiàn)接口,同步SIO接口和PLL倍頻器。這些都起到了降低系統(tǒng)總成本和減少外圍器件的作用。ARM7TDMI RISC處理器(66MHz),包括了Thumb代碼壓縮器、片上ICE斷點(diǎn)調(diào)試支持和32位的硬件乘法器。</p><p>  2.3 硬件系統(tǒng)的設(shè)計(jì)</p><p>  整體系統(tǒng)的硬件框圖如圖2-1所示

41、,系統(tǒng)主要包括以下幾個(gè)模塊:</p><p><b>  圖2-1 系統(tǒng)結(jié)構(gòu)</b></p><p>  Fig.2-1 Configuration of the system</p><p>  整個(gè)硬件系統(tǒng)主要分為CPU單元、存儲(chǔ)器單元、LCD單元、A/D轉(zhuǎn)換單元、信號(hào)調(diào)理單元、CPLD擴(kuò)展單元、鍵盤(pán)等七個(gè)單元。</p>&l

42、t;p>  3 硬件單元電路的設(shè)計(jì)實(shí)現(xiàn)</p><p>  3.1 CPU核心板的硬件資源</p><p>  核心CPU板上主要包括以下單元和芯片,32位ARM7TDMI的處理器,即三星的S3C44B0X芯片,一個(gè)UART接口,完成串口通信,最高波特率為115200bps,一個(gè)RTC實(shí)時(shí)時(shí)鐘,一個(gè)5V轉(zhuǎn)3.3V和2.5V的電源管理模塊,一個(gè)20針的JTAG調(diào)試接口。</p&g

43、t;<p>  3.1.1 電源模塊</p><p>  在S3C44B0X CPU板上由于其內(nèi)核采用2.5V,I/O接口采用采用3.3V供電,因此需要將通用的5V轉(zhuǎn)換成2.5V和3.3V。下圖為使用LM117電源轉(zhuǎn)換芯片把5V轉(zhuǎn)換成3.3V和2.5V的轉(zhuǎn)換電路。</p><p>  圖3-1 電源轉(zhuǎn)換電路</p><p>  Fig.3-1 Powe

44、r conversion circuits</p><p>  3.1.2 JTAG單元</p><p>  JTAG(Joint Test Action Group,聯(lián)合測(cè)試行動(dòng)小組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及對(duì)系統(tǒng)進(jìn)行仿真、調(diào)試,JTAG技術(shù)是一種嵌入式調(diào)試技術(shù),它在芯片內(nèi)部封裝了專(zhuān)門(mén)的測(cè)試電路TAP(Test Access Port,測(cè)試訪(fǎng)問(wèn)口),通過(guò)專(zhuān)用的JTA

45、G測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。目前大多數(shù)比較復(fù)雜的器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線(xiàn):TMS、TCK、TDI、TDO,分別為測(cè)試模式選擇、測(cè)試時(shí)鐘、測(cè)試數(shù)據(jù)輸入和測(cè)試數(shù)據(jù)輸出。</p><p>  表3-1 JTAG接口定義</p><p>  Tab3-1 The JTAG of Interface definition</p>

46、<p><b>  3.2 存儲(chǔ)器單元</b></p><p>  存儲(chǔ)器單元主要由三部分組成:線(xiàn)形flash存儲(chǔ)器單元、NAND_FLASH海量存儲(chǔ)器單元和同步動(dòng)態(tài)存儲(chǔ)器單元。</p><p>  3.2.1 線(xiàn)形flash存儲(chǔ)器單元</p><p>  該存儲(chǔ)器單元選用2MB字節(jié)的SST39VF160,16位數(shù)據(jù)總線(xiàn),片連接N

47、GCS0,CPU分配給它的地址空間為0x00000000—0x001fffff,也就是S3C44B0CPU的bank0區(qū)。啟動(dòng)代碼部分則放在從0x00000000開(kāi)始的地址空間內(nèi)。程序代碼可以在里面執(zhí)行。</p><p>  3.2.2 NAND_FLASH海量存儲(chǔ)器單元</p><p>  該存儲(chǔ)單元選用16MB芯片K9F2808。8位數(shù)據(jù)總線(xiàn)傳輸,GPC9接其片選信號(hào),CPU分配給它的

48、地址空間為0x04000000—0x005fffff,也就是S3C44B0CPU的bank2區(qū)。GPE0接NAND_FLASH的狀態(tài)監(jiān)測(cè)腳,GPC14接ALE地址鎖存器使能,GPC15接CLE命令鎖存使能。NECS2也接入該單元。</p><p>  3.2.3 同步動(dòng)態(tài)存儲(chǔ)器單元。</p><p>  該存儲(chǔ)單元選用兩片8MB字節(jié)的HY57V641620,16位數(shù)據(jù)總線(xiàn)。片選NSCS0和

49、NSCS1分別接U10和U11兩個(gè)單元,CPU分配給U10單元的地址空間為0x0C000000—0x0C7fffff,也就是S3C44B0CPU的bank6區(qū)。CPU分配給U11單元的地址空間為0x0E000000—0x0E7fffff,也就是S3C44B0CPU的bank7區(qū)。</p><p><b>  3.3 LCD單元</b></p><p>  LCD液晶屏

50、選用的是5.7寸,320×240像素,256色的彩屏,其電源范圍寬(2.7V to 5.5V),低功耗可滿(mǎn)足產(chǎn)品的省電要求。由于S3C44B0X上的LCD控制器可以支持這種類(lèi)型的LCD顯示屏,所以可以大大節(jié)省外圍電路,直接通過(guò)VFRAME、VLINE、VCLK、VM、VD等信號(hào)線(xiàn)與LCD相接進(jìn)行視頻數(shù)據(jù)的傳輸和產(chǎn)生必要的控制信號(hào)。硬件結(jié)構(gòu)圖如下:</p><p>  圖3-2 LCD硬件結(jié)構(gòu)圖<

51、;/p><p>  Fig.3-2 The Hardware chart of LCD</p><p>  關(guān)于S3C44B0X的LCD控制器的幾點(diǎn)說(shuō)明:</p><p>  1、S3C44B0X的外部接口信號(hào)VFRAME是LCD控制器和LCD驅(qū)動(dòng)器之間的幀同步信號(hào)端;VLINE是控制LCD控制器和LCD驅(qū)動(dòng)器之間的行同步信號(hào)端;VCLK是LCD控制器和LCD驅(qū)動(dòng)器之間

52、的像素時(shí)鐘信號(hào)端;VM是LCD驅(qū)動(dòng)器所使用的交流信號(hào);VD[7:0]是LCD像素?cái)?shù)據(jù)輸入端口。</p><p>  2、LCDCON1/2控制寄存器主要配置VFRAME、VCLK、VLINE和VM控制信號(hào),LCDCON3控制LCD刷新模式。</p><p>  3、LCDADDR1/2/3為幀緩沖區(qū)起始地址寄存器,主要是用來(lái)選擇黑白、灰度、彩色模式,指定視頻緩沖區(qū)在系統(tǒng)存儲(chǔ)器內(nèi)的Bank地

53、址和指示幀緩沖區(qū)或在掃描LCD時(shí)的上幀緩沖區(qū)的開(kāi)始地址。</p><p>  4、紅綠藍(lán)查找表寄存器分別為REDVAL、GREENVAL、BLUEVAL,分別可以定義8種紅色,8種綠色和4種藍(lán)色;</p><p>  5、除此之外,不同紅色的差異,是通過(guò)時(shí)間抖動(dòng)的算法及幀率控制的方法實(shí)現(xiàn)的。因此在LCD初始化的程序中還要對(duì)抖動(dòng)模式控制寄存器進(jìn)行設(shè)置。</p><p>

54、;  3.4 A/D轉(zhuǎn)換單元</p><p>  A/D轉(zhuǎn)換單元選用芯片AD7822,單極性輸入,采樣分辨率8BIT,并行輸出;內(nèi)涵取樣保持電路,以及可選擇使用內(nèi)部或外部參考電壓源,具有轉(zhuǎn)換后自動(dòng)Power-Down的模式,電流消耗可降低至5μA以下。轉(zhuǎn)換時(shí)間最大為420ns, SNR可達(dá)48dB,INL及DNL都在±0.75 LSB以?xún)?nèi)。參考電壓源 + 2.5V,偏置電壓輸入引腳Vmid = + 2.

55、5V。</p><p>  AD7822的控制時(shí)序圖如下圖3-3所示:</p><p>  圖3-3 AD7822控制時(shí)序圖</p><p>  Fig.3-3 The control time series chart of AD7822</p><p>  AD7822與ARM連接的電路原理圖如下圖3-4所示</p><

56、;p>  圖3-4 AD7822與ARM連接的電路原理圖</p><p>  Fig.3-4 The circuit theory of ARM links with AD7822</p><p>  3.5 信號(hào)調(diào)理單元</p><p>  信號(hào)調(diào)理單元主要是由LF356組成的二級(jí)運(yùn)算放大電路,其主要作用是使信號(hào)符合A/D輸入的要求,模擬輸入信號(hào)經(jīng)過(guò)運(yùn)放處理

57、后輸入到AD7822,輸入電壓范圍-12V~+12V。電路原理圖如下圖3-5所示:</p><p>  圖3-5 信號(hào)調(diào)理單元電路原理圖</p><p>  Fig.3-5 The circuit theory of the signal conditioning modules</p><p>  3.6 CPLD擴(kuò)展單元</p><p>

58、  由于實(shí)驗(yàn)箱上的資源眾多,幾乎每一個(gè)設(shè)備資源都要使用片選信號(hào)或中斷信號(hào)或一些串口的信號(hào),以及一些寄存器的地址等等,所以實(shí)驗(yàn)箱通過(guò)加入了一片CPLD芯片,用來(lái)完成各資源所需的地址譯碼,片選信號(hào),以及一些高低電平的模擬。</p><p>  本設(shè)計(jì)主要在應(yīng)用鍵盤(pán)電路上應(yīng)用到CPLD擴(kuò)展單元,用來(lái)控制HD7279A。CPLD單元使用S3C44B0X的片選NGCS4,地址是0x08000000—0x0a000000;我

59、們通過(guò)給CPLD地址里寫(xiě)入相應(yīng)的數(shù)據(jù)以產(chǎn)生相應(yīng)的信號(hào)。例如:</p><p>  #define clrcs1 (*(volatile unsigned *)0x08200004) = 0x01;</p><p>  #define setcs1 (*(volatile unsigned *)0x08200004) = 0x02;</p>

60、<p>  利用宏定義來(lái)代替置高、置低;給相應(yīng)得地址里寫(xiě)1,表示該CPLD的相應(yīng)引腳輸出低電平,給相應(yīng)得地址里寫(xiě)2,表示該CPLD的相應(yīng)引腳輸出高電平。有的地址需要寫(xiě)入8位數(shù)據(jù)。</p><p>  在這里設(shè)置標(biāo)號(hào)s_clr來(lái)實(shí)現(xiàn)HD7279向CPLD發(fā)數(shù)據(jù),其地址為0x08800000,實(shí)現(xiàn)方法是在地址里寫(xiě)0x01;設(shè)置標(biāo)號(hào)s_set來(lái)實(shí)現(xiàn)CPLD向HD7279發(fā)數(shù)據(jù),其地址為0x08800000,實(shí)

61、現(xiàn)方法是在地址里寫(xiě)0x02。</p><p>  3.7 4×4鍵盤(pán) </p><p>  鍵盤(pán)接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管或(64只獨(dú)立LED)的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可以連接64鍵的鍵盤(pán)矩陣,單片即可完成LED顯示,鍵盤(pán)接口的全部功能。HD7279A內(nèi)含有譯碼器,可直接接受BCD碼或16進(jìn)制碼,并同時(shí)

62、具有兩種譯碼方式。此外,還具有多種控制指令如消隱、閃爍、左移、右移、段尋址等,具有片選信號(hào)可方便地實(shí)現(xiàn)多于8位的顯示或多于64鍵的鍵盤(pán)接口。</p><p>  鍵盤(pán)的連接示意圖如下圖3-6所示</p><p>  圖3-6 鍵盤(pán)接口連接圖</p><p>  Fig.3-6 Keyboard interface Figure</p><p>

63、;  讀鍵盤(pán)數(shù)據(jù)指令15H從HD7279A讀出當(dāng)前的按鍵代碼。與其他代碼不同,此命令的前一個(gè)字節(jié)00010101B為微控制器傳送給HD7279A的指令,而后一個(gè)字節(jié)d0-d7則為HD7279A返回的按鍵代碼,其范圍是0-3FH(0xFF)。此指令的前半段,HD7279A的DATA引腳處于輸入狀態(tài),以接受來(lái)自微處理器的指令;在指令的后半段,DATA引腳從輸入狀態(tài)轉(zhuǎn)為輸出狀態(tài),輸出鍵盤(pán)代碼的值。</p><p>  

64、串行接口在讀鍵盤(pán)指令的時(shí)序圖如下圖3-7所示:</p><p>  圖3-7 HD7279A讀鍵盤(pán)指令時(shí)序圖</p><p>  Fig.3-7 The reading keyboard commands time series chart of HD7279</p><p>  4 嵌入式系統(tǒng)μC/OS—Ⅱ在A(yíng)RM上的移植</p><p>

65、  4.1 移植前的準(zhǔn)備工作</p><p>  S3C44B0X的0x00 ~0x1c 地址是ARM7TDMI的7種異常中斷的入口, 上電復(fù)位的時(shí)候PC指針是指向地址0x00處, 通常在這里放置一條跳轉(zhuǎn)指令, 讓PC指向復(fù)位初始化子程序。它首先完成目標(biāo)板上的硬件初始化, 一般包括: CPU 時(shí)鐘、SDRAM存儲(chǔ)器、堆棧、中斷等。</p><p>  以下介紹初始化程序的具體編寫(xiě)。<

66、/p><p>  目標(biāo)板上電, 首先要禁止看門(mén)狗、禁止所有中斷、設(shè)置時(shí)鐘控制寄存器、設(shè)置鎖相環(huán)倍頻、設(shè)置存儲(chǔ)器控制器、堆棧、中斷處理和數(shù)據(jù)段初始化等, 具體程序如下所示:</p><p>  ResetHandler;</p><p><b>  禁止看門(mén)狗;</b></p><p><b>  禁止所有中斷;&l

67、t;/b></p><p>  設(shè)置時(shí)鐘控制寄存器;</p><p><b>  設(shè)置鎖相環(huán)倍頻;</b></p><p>  設(shè)置存儲(chǔ)器控制寄存器;</p><p><b>  堆棧初始化;</b></p><p><b>  設(shè)置中斷處理;</b&g

68、t;</p><p>  初始化完畢就從匯編進(jìn)入C語(yǔ)言代碼空間,在這里, 繼續(xù)完成I/O端口設(shè)置、串口甚至網(wǎng)口等的初始化, 并定義一個(gè)自動(dòng)裝載定時(shí)器中斷(通常選擇在毫秒級(jí)) , 在它的中斷處理程序里面調(diào)用μC /OS-Ⅱ的OSTimeTick函數(shù)。這樣它的時(shí)鐘節(jié)拍就成為了系統(tǒng)的“脈搏”, 在每一個(gè)定時(shí)中斷到來(lái)的時(shí)候, 完成任務(wù)切換。</p><p>  4.2 μC/OS—Ⅱ的移植<

69、/p><p>  μC/OS-Ⅱ的大部分源代碼是用C語(yǔ)言寫(xiě)成的, 仍需要C語(yǔ)言和匯編語(yǔ)言完成一些與處理器相關(guān)的代碼。</p><p>  μC/OS-Ⅱ的結(jié)構(gòu)以及它與硬件的關(guān)系如圖4-1所示。</p><p>  圖4-1 μC/OS-Ⅱ的結(jié)構(gòu)與硬件的關(guān)系</p><p>  Fig.4-1 The structure and the relat

70、ionship between hardware of μC/OS-Ⅱ</p><p>  移植工作包括以下幾個(gè)內(nèi)容:</p><p>  1、用#define設(shè)置一些常量的值OS_CPU.h</p><p>  2、聲明10個(gè)數(shù)據(jù)類(lèi)型(OS_CPU.H)</p><p>  3、用#define聲明三個(gè)宏(OS_CPU.H)</p&g

71、t;<p>  4、用C語(yǔ)言編寫(xiě)六個(gè)簡(jiǎn)單的函數(shù)(OS_CPU_C.H)</p><p>  5、編寫(xiě)四個(gè)匯編語(yǔ)言函數(shù)(OS_CPU_A.ASM)</p><p>  4.3 移植的具體實(shí)現(xiàn)</p><p>  4.3.1 設(shè)置OS_ CPU.h中與處理器和編譯器相關(guān)的代碼</p><p> ?。?) 定義與編譯器相關(guān)的數(shù)據(jù)類(lèi)型&

72、lt;/p><p>  不同的處理器有不同的字長(zhǎng), 所以μC/OS-Ⅱ的移植包括了一系列的數(shù)據(jù)類(lèi)型定義以確保其可移植性。μC/OS-Ⅱ代碼從不采用C的short, int和long等數(shù)據(jù)類(lèi)型, 因?yàn)樗鼈兪桥c編譯器相關(guān)的,不可移植。</p><p>  用戶(hù)必須將任務(wù)堆棧的數(shù)據(jù)類(lèi)型告訴給μC/OS-Ⅱ。這個(gè)過(guò)程是通過(guò)聲明OS_ STK為正確的C數(shù)據(jù)類(lèi)型來(lái)完成的。S3C44B0Ⅹ的堆棧成員是16位

73、, 所以將OS_ STK聲明為無(wú)符號(hào)整形數(shù)。所有的任務(wù)堆棧都必須用OS_ STK聲明數(shù)據(jù)類(lèi)型。</p><p>  同時(shí)要添加CPU 狀態(tài)寄存器數(shù)據(jù)寬度的定義為32位。</p><p> ?。?)定義OS_ ENTER_ CRITICAL ( ) 和OS_ EXIT_ CRITICAL ( )</p><p>  μC/OS-II需要先禁止中斷再訪(fǎng)問(wèn)代碼的臨界區(qū),

74、并且在訪(fǎng)問(wèn)完畢后重新允許中斷。μC/OS-Ⅱ能夠保護(hù)臨界區(qū)代碼免受多任務(wù)或中斷服務(wù)例程(ISR)的破壞。S3C44B0X是通過(guò)兩個(gè)函數(shù)(OS_CPU_A.S) 實(shí)現(xiàn)開(kāi)關(guān)中斷的。</p><p> ?。?)OS_STK_GROWTH </p><p>  堆棧結(jié)構(gòu)有兩種, 一種是至上而下的堆棧, 一種是至下而上的。μC/OS-II被設(shè)計(jì)成兩種情況都可以處理。只要在結(jié)構(gòu)常量OS_ STK_ G

75、ROWTH中指定堆棧的增長(zhǎng)方式就可以了。</p><p>  置OS_ STK_ GROWTH為0表示堆棧從下往上增長(zhǎng)。</p><p>  置OS_ STK_ GROWTH為1表示堆棧從上往下增長(zhǎng)。</p><p>  我們這里定義堆棧是從上往下增長(zhǎng)的。</p><p>  4.3.2 用匯編語(yǔ)言編寫(xiě)4 個(gè)與處理器相關(guān)的函數(shù)</p&g

76、t;<p> ?。?)OSStartHighRdy ( ) 函數(shù)</p><p>  由OSStart函數(shù)調(diào)用, 程序結(jié)構(gòu)如下:</p><p>  BL OSTaskSwHook;</p><p>  調(diào)用用戶(hù)自定義的任務(wù)切換鉤子函數(shù)</p><p>  OSRunning = TRUE;</p><p&g

77、t;  表明多任務(wù)環(huán)境已經(jīng)建立</p><p>  R4 = addr_ OSTCBHighRdy</p><p>  取得優(yōu)先級(jí)最高任務(wù)的任務(wù)控制塊的地址</p><p>  SP = [R4 ]: OSTCBHighRdy -> OSTCBStkPtr</p><p>  將優(yōu)先級(jí)最高的任務(wù)的堆棧指針保存到SP</p>

78、<p>  SP -> SPSR, CPSR, R0 - R12, LR, PC</p><p>  從新任務(wù)堆棧中恢復(fù)出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> ?。?)OS_ TASK_ SW ( ) 函數(shù)</p><p>  由OS_ TASK_ SW 宏調(diào)用, 該宏被OSSched任務(wù)間的切換函數(shù)調(diào)用, 程序結(jié)構(gòu)如下:<

79、;/p><p>  LR ( PC) , LR, R0 - R12, CPSR, SPSR - >{SP}</p><p>  保存當(dāng)前的處理器寄存器到堆棧中</p><p>  OSTCBCur -> OSTCBStkPtr = SP</p><p>  保存當(dāng)前任務(wù)的堆棧指針到當(dāng)前任務(wù)TCB的0偏址內(nèi)存</p>&l

80、t;p>  BL OSTaskSwHook</p><p>  調(diào)用任務(wù)切換的功能擴(kuò)展的函數(shù)</p><p>  OSTCBCur = OSTCBHighRdy</p><p>  OSPrioCur = OSPrioHighRdy</p><p>  SP = OSPTCBCur -> OSTCBStkPtr</p>

81、<p>  SP指向當(dāng)前新任務(wù)的堆棧指針</p><p>  SP -> SPSR, CPSR, R0 - R12, LR, PC</p><p>  從新任務(wù)堆棧中恢復(fù)出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> ?。?)OSTick ISR ( ) 時(shí)鐘節(jié)拍中斷處理函數(shù)</p><p>  LR ( PC

82、) , LR, R0 - R12, CPSR, SPSR -> {SP}</p><p>  保存當(dāng)前的處理器寄存器到堆棧中</p><p>  BL OSIntEnter ( )</p><p>  BL Timer0 interrup t ( )</p><p>  BL OSIntExit ( )</p><p

83、>  SP - > SPSR, CPSR, R0 - R12, LR, PC</p><p>  從新任務(wù)堆棧中恢復(fù)出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p> ?。?)OSIntCtxSw ( ) 中斷級(jí)任務(wù)切換函數(shù)</p><p>  由OSIntExit函數(shù)調(diào)用, OSIntExit函數(shù)由OSTick ISR調(diào)用, 程序結(jié)構(gòu)如下:&l

84、t;/p><p>  BL OSTaskSwHook</p><p>  OSTCBCur = OSTCBHighRdy</p><p>  OSPrioCur = OSPrioHighRdy</p><p>  SP = OSPTCBCur - >OSTCBStkPtr</p><p>  SP -> SPS

85、R, CPSR, R0 - R12, LR, PC</p><p>  從新任務(wù)堆棧中恢復(fù)出所有處理器的寄存器,執(zhí)行中斷返回指令。</p><p>  4.3.3 用C語(yǔ)言編寫(xiě)6個(gè)操作系統(tǒng)相關(guān)的函數(shù)(OS_ CPU_ C.C)</p><p>  (1)OSTaskStk Init ( )</p><p>  OSTaskCreate ( )

86、 和OSTaskCreateExt ( ) 通過(guò)調(diào)用OSTaskStk Init ( ) 來(lái)初始化任務(wù)的堆棧結(jié)構(gòu)。</p><p>  在用戶(hù)建立任務(wù)的時(shí)候, 用戶(hù)傳遞任務(wù)的地址, pdata指針, 任務(wù)的堆棧棧頂和任務(wù)的優(yōu)先級(jí)給OSTaskCreate ( ) 和OSTaskCreateExt ( ) 。一旦用戶(hù)初始化了堆棧, OSTaskStk Init ( ) 就需要返回堆棧指針?biāo)傅牡刂?。OSTaskCr

87、eate ( ) 和OSTaskCreateExt ( ) 會(huì)獲得該地址并將它保存到任務(wù)控制塊(OS_TCB) 中。</p><p>  OS_STK* OSTaskStk Init(void(*task)(void*pd),void *pdata,OS_STK *ptos,INT16U opt)</p><p>  { unsigned int *stk;</p><

88、p>  stk = ( unsigned int * ) ptos; /* 裝載堆棧指針 */</p><p>  opt ++ ; /* 為新任務(wù)建立堆棧 */</p><p>  * - - stk = ( unsigned int ) task; /* pc */</p><p>  * - - stk = ( unsigned int ) task

89、; /* lr */</p><p>  * - - stk = 12; /* r12 */</p><p>  ??save ARM’s R0 - R12 into stk</p><p>  * - - stk = 1; /* r1 */</p><p>  * - - stk = ( unsigned int ) pdata; /* r

90、0 */</p><p>  * - - stk = ( SUPMODE);</p><p>  * - - stk = ( SUPMODE);</p><p>  return ( (OS_STK *) stk);}</p><p>  (2)OSTaskCreateHook ( )</p><p>  OSTask

91、Create ( ) 和OSTaskCreateExt ( ) 創(chuàng)建任務(wù)的時(shí)就調(diào)用OSTaskCreateHook ( )。該函數(shù)允許用戶(hù)擴(kuò)展μC/OS-II功能。當(dāng)μC/OS-II設(shè)置完內(nèi)部結(jié)構(gòu), 在調(diào)用任務(wù)調(diào)度程序之前調(diào)用OSTaskCreateHook ( ) 。調(diào)用該函數(shù)時(shí)候是禁止中斷,用戶(hù)應(yīng)盡量減少函數(shù)執(zhí)行時(shí)間。</p><p>  當(dāng)OSTaskCreateHook ( ) 被調(diào)用的時(shí)候, 它會(huì)收到指

92、向已建立任務(wù)的OS_ TCB的指針, 它能訪(fǎng)問(wèn)所有的結(jié)構(gòu)成員。</p><p>  (3)OSTaskDelHook ( )</p><p>  任務(wù)刪除時(shí)會(huì)調(diào)用OSTaskDelHook ( ) 它在任務(wù)從μC/OS-II的內(nèi)部任務(wù)鏈表中刪除前調(diào)用。當(dāng)調(diào)用OSTaskDelHook ( ) 時(shí), 它會(huì)收到指向正被刪除任務(wù)的OS_ TCB的指針, 訪(fǎng)問(wèn)所有的結(jié)構(gòu)成員。OSTaskDelHo

93、ok ( ) 可以來(lái)檢驗(yàn)TCB 擴(kuò)展是否被建立(一個(gè)非空指針) 并進(jìn)行一些清除操作。</p><p> ?。?)OSTaskSwHook ( )</p><p>  當(dāng)發(fā)生任務(wù)切換的時(shí)候就會(huì)調(diào)用OSTaskSwHook ( ) 。OSTaskSwHook ( ) 可以直接訪(fǎng)問(wèn)OSTCBCur和OSTCBHighRdy , 因?yàn)樗鼈兪侨肿兞?。OSTCBCur指向被切換出去的任務(wù)OS_ TC

94、B, 而OSTCBHighRdy指向新任務(wù)OS_ TCB。注意在調(diào)用OSTaskSwHook ( ) 期間中斷一直是被禁止的。因此用戶(hù)應(yīng)盡量減少該函數(shù)中的代碼以縮短中斷的響應(yīng)時(shí)間。</p><p> ?。?)OSTaskStatHook ( )</p><p>  OSTaskStatHook ( ) 每秒鐘都會(huì)被OSTaskStat( ) 調(diào)用一次。用戶(hù)可以用OSTaskStatHook

95、 ( ) 來(lái)擴(kuò)展統(tǒng)計(jì)功能。例如, 用戶(hù)可以保持并顯示每個(gè)任務(wù)的執(zhí)行時(shí)間, 每個(gè)任務(wù)所用的CPU 份額, 以及每個(gè)任務(wù)執(zhí)行的頻率等。</p><p> ?。?)OSTimeTickHook ( )</p><p>  OSTimeTickHook ( ) 在每個(gè)時(shí)鐘節(jié)拍都會(huì)被OSTaskTick ( ) 調(diào)用。實(shí)際上, OSTimeTickHook( ) 是在節(jié)拍被μC/OS-Ⅱ真正處理,

96、并通知用戶(hù)的移植實(shí)例或應(yīng)用程序之前被調(diào)用的。</p><p>  后5個(gè)函數(shù)為鉤子函數(shù), 可以不加代碼。只有當(dāng)OS_ CFG1H 中的OS_ CPU_ HOOKS_ EN 被置為1 時(shí)才會(huì)產(chǎn)生這些函數(shù)的代碼。</p><p>  完成了上述工作以后, μC/OS-Ⅱ就可以運(yùn)行在S3C44B0X處理器上了。</p><p>  4.3.4 測(cè)試移植是否成功</p

97、><p>  為了使μC/OS-Ⅱ可以正常運(yùn)行, 除了上述必須的移植工作外, 硬件初始化和配置文件也是必須的。STARTUP 目錄下的文件還包括中斷處理,時(shí)鐘, 串口通信等基本功能函數(shù)。在文件main.c中包括初始化和多任務(wù)的創(chuàng)建、啟動(dòng)等, 概要如下:</p><p>  ARMTargetInit ( ); //目標(biāo)板初始化</p>&l

98、t;p>  OSInit( ); //μC/OS-Ⅱ初始化</p><p>  OSTimeSet(0); //設(shè)置系統(tǒng)時(shí)鐘</p><p>  OSTaskCreate…… //創(chuàng)建任務(wù)1</p><p>  OST

99、askCreate…… //創(chuàng)建任務(wù)2</p><p>  OSStatInit( ); //μC/OS-Ⅱ狀態(tài)初始化</p><p>  uHAL r_ InstallSystemTimer ( ); //啟動(dòng)定時(shí)器時(shí)鐘節(jié)拍</p><p>  OSStart

100、( ); //啟動(dòng)μC /OS - Ⅱ</p><p>  在上面的代碼中, 創(chuàng)建兩個(gè)簡(jiǎn)單的任務(wù), 分別通過(guò)串口在超級(jí)終端上輸出run task1 和run task2。系統(tǒng)時(shí)鐘啟動(dòng)和多任務(wù)切換是由函數(shù)uHALr_InstallSystemTimer ( ) 來(lái)完成的。將程序目標(biāo)代碼燒寫(xiě)入Flash的0地址運(yùn)行即可驗(yàn)證移植是否成功。</p><

101、p>  5 嵌入式系統(tǒng)μC/OS-Ⅱ的具體應(yīng)用實(shí)現(xiàn)</p><p><b>  5.1 多任務(wù)系統(tǒng)</b></p><p><b>  5.1.1 多任務(wù)</b></p><p>  多任務(wù)運(yùn)行的實(shí)現(xiàn)實(shí)際上是靠CPU(中央處理單元)在許多任務(wù)之間轉(zhuǎn)換、調(diào)度。CPU只有一個(gè),輪番服務(wù)于一系列任務(wù)中的某一個(gè)。多任務(wù)運(yùn)行很

102、像前后臺(tái)系統(tǒng),但后臺(tái)任務(wù)有多個(gè)。多任務(wù)運(yùn)行使CPU的利用率得到最大的發(fā)揮,并使應(yīng)用程序模塊化。在實(shí)時(shí)應(yīng)用中,多任務(wù)化的最大特點(diǎn)是,開(kāi)發(fā)人員可以將很復(fù)雜的應(yīng)用程序?qū)哟位J褂枚嗳蝿?wù),應(yīng)用程序?qū)⒏菀自O(shè)計(jì)與維護(hù)。</p><p><b>  5.1.2 任務(wù)</b></p><p>  一個(gè)任務(wù),也稱(chēng)作一個(gè)線(xiàn)程,是一個(gè)簡(jiǎn)單的程序,該程序可以認(rèn)為CPU完全只屬該程序自己。實(shí)

103、時(shí)應(yīng)用程序的設(shè)計(jì)過(guò)程,包括如何把問(wèn)題分割成多個(gè)任務(wù),每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分,每個(gè)任務(wù)被賦予一定的優(yōu)先級(jí),有它自己的一套CPU寄存器和棧空間。</p><p>  典型地、每個(gè)任務(wù)都是一個(gè)無(wú)限的循環(huán)。每個(gè)任務(wù)都處在以下5種狀態(tài)之一的狀態(tài)下,這5種狀態(tài)是休眠態(tài),就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)(等待某一事件發(fā)生)和被中斷態(tài)(參見(jiàn)圖2.3)休眠態(tài)相當(dāng)于該任務(wù)駐留在內(nèi)存中,但并不被多任務(wù)內(nèi)核所調(diào)度。就緒意味著該任務(wù)已經(jīng)準(zhǔn)備

104、好,可以運(yùn)行了,但由于該任務(wù)的優(yōu)先級(jí)比正在運(yùn)行的任務(wù)的優(yōu)先級(jí)低,還暫時(shí)不能運(yùn)行。運(yùn)行態(tài)的任務(wù)是指該任務(wù)掌握了CPU的控制權(quán),正在運(yùn)行中。掛起狀態(tài)也可以叫做等待事件態(tài)WAITING,指該任務(wù)在等待,等待某一事件的發(fā)生,(例如等待某外設(shè)的I/O操作,等待某共享資源由暫不能使用變成能使用狀態(tài),等待定時(shí)脈沖的到來(lái)或等待超時(shí)信號(hào)的到來(lái)以結(jié)束目前的等待,等等)。最后,發(fā)生中斷時(shí),CPU提供相應(yīng)的中斷服務(wù),原來(lái)正在運(yùn)行的任務(wù)暫不能運(yùn)行,就進(jìn)入了被中斷

105、狀態(tài)。圖5-1表示μC/OS-Ⅱ中一些函數(shù)提供的服務(wù),這些函數(shù)使任務(wù)從一種狀態(tài)變到另一種狀態(tài)。</p><p>  圖5-1 任務(wù)的狀態(tài)</p><p>  Fig.5-1 State mandate</p><p>  5.1.4 空閑任務(wù)(Idle Task)</p><p>  μC/OS-Ⅱ總是建立一個(gè)空閑任務(wù),這個(gè)任務(wù)在沒(méi)有其它任務(wù)

106、進(jìn)入就緒態(tài)時(shí)投入運(yùn)行。這個(gè)空閑任務(wù)[OSTaskIdle()]永遠(yuǎn)設(shè)為最低優(yōu)先級(jí),即OS_LOWEST_PRI0??臻e任務(wù)OSTaskIdle()什么也不做,只是在不停地給一個(gè)32位的名叫OSIdleCtr的計(jì)數(shù)器加1,統(tǒng)計(jì)任務(wù)使用這個(gè)計(jì)數(shù)器以確定現(xiàn)行應(yīng)用軟件實(shí)際消耗的CPU時(shí)間。程序清單L3.11是空閑任務(wù)的代碼。在計(jì)數(shù)器加1前后,中斷是先關(guān)掉再開(kāi)啟的,因?yàn)?位以及大多數(shù)16位微處理器的32位加1需要多條指令,要防止高優(yōu)先級(jí)的任務(wù)或中

107、斷服務(wù)子程序從中打入??臻e任務(wù)不可能被應(yīng)用軟件刪除。</p><p>  5.1.4 任務(wù)切換(Context Switch or Task Switch)</p><p>  Context Switch的含義是任務(wù)切換,或CPU寄存器內(nèi)容切換。當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài)(Context),即CPU寄存器中的全部?jī)?nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀況保存區(qū)

108、(Task’s Context Storage area),也就是任務(wù)自己的棧區(qū)之中。入棧工作完成以后,就是把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀況從該任務(wù)的棧中重新裝入CPU的寄存器,并開(kāi)始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過(guò)程叫做任務(wù)切換。任務(wù)切換過(guò)程增加了應(yīng)用程序的額外負(fù)荷。CPU的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時(shí)間取決于CPU有多少寄存器要入棧。實(shí)時(shí)內(nèi)核的性能不應(yīng)該以每秒鐘能做多少次任務(wù)切換來(lái)評(píng)價(jià)。</p><

109、;p>  5.1.5 任務(wù)調(diào)度(Task Scheduling)</p><p>  μC/OS-Ⅱ總是運(yùn)行進(jìn)入就緒態(tài)任務(wù)中優(yōu)先級(jí)最高的那一個(gè)。確定哪個(gè)任務(wù)優(yōu)先級(jí)最高,下面該哪個(gè)任務(wù)運(yùn)行了的工作是由調(diào)度器(Scheduler)完成的。任務(wù)級(jí)的調(diào)度是由函數(shù)OSSched()完成的。任務(wù)切換主要由兩步完成,首先將被掛起任務(wù)的微處理器寄存器推入堆棧,然后將較高優(yōu)先級(jí)的任務(wù)的寄存器值從棧中恢復(fù)到寄存器中。μC/OS

110、-Ⅱ運(yùn)行就緒態(tài)的任務(wù)所要做的一切,只是恢復(fù)所有的CPU寄存器并運(yùn)行中斷返回指令。為了做任務(wù)切換,運(yùn)行OS_TASK_SW(),人為模仿了一次中斷。多數(shù)微處理器有軟中斷指令或者陷阱指令TRAP來(lái)實(shí)現(xiàn)上述操作。</p><p>  5.1.6 任務(wù)優(yōu)先級(jí)及分配</p><p>  每個(gè)任務(wù)都有其優(yōu)先級(jí)。任務(wù)越重要,賦予的優(yōu)先級(jí)應(yīng)越高。任務(wù)優(yōu)先級(jí)根據(jù)應(yīng)用程序執(zhí)行過(guò)程中是否可變分為靜態(tài)優(yōu)先級(jí)和動(dòng)態(tài)

111、優(yōu)先級(jí)。在靜態(tài)優(yōu)先級(jí)系統(tǒng)中,諸任務(wù)以及它們的時(shí)間約束在程序編譯時(shí)是已知的。而在動(dòng)態(tài)優(yōu)先級(jí)系統(tǒng)中,實(shí)時(shí)內(nèi)核則應(yīng)當(dāng)避免出現(xiàn)優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題。</p><p>  給任務(wù)定優(yōu)先級(jí)可不是件小事,因?yàn)閷?shí)時(shí)系統(tǒng)相當(dāng)復(fù)雜。許多系統(tǒng)中,并非所有的任務(wù)都至關(guān)重要。不重要的任務(wù)自然優(yōu)先級(jí)可以低一些。實(shí)時(shí)系統(tǒng)大多綜合了軟實(shí)時(shí)和硬實(shí)時(shí)這兩種需求。軟實(shí)時(shí)系統(tǒng)只是要求任務(wù)執(zhí)行得盡量快,并不要求在某一特定時(shí)間內(nèi)完成。硬實(shí)時(shí)系統(tǒng)中,任務(wù)不但要執(zhí)行

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論