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

下載本文檔

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

文檔簡介

1、<p><b>  哈爾濱遠(yuǎn)東理工學(xué)院</b></p><p><b>  學(xué)士學(xué)位論文</b></p><p>  題 目: </p><p>  姓 名: </p><p

2、>  分  院: </p><p>  專  業(yè): </p><p>  學(xué) 號: </p><p>  指導(dǎo)教師: </p>

3、<p>  二0 年 月 日</p><p>  畢業(yè)設(shè)計(jì)(論文)評語及成績</p><p><b>  哈爾濱遠(yuǎn)東理工學(xué)院</b></p><p>  畢業(yè)設(shè)計(jì)(論文)任務(wù)書</p><p><b>  摘 要</b></p><p>

4、;  隨著計(jì)算機(jī)、網(wǎng)絡(luò)通信和Internet 技術(shù)的飛速發(fā)展和不斷進(jìn)步,嵌入式系統(tǒng)在家庭和工業(yè)應(yīng)用越來越廣泛.如何將嵌入式系統(tǒng)和工業(yè)控制系統(tǒng)接入Internet,綜合利用嵌入式系統(tǒng)資源,實(shí)現(xiàn)嵌入式系統(tǒng)的遠(yuǎn)程管理和控制,已成為倍受關(guān)注的研究課題,而實(shí)現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)化則成為嵌入式系統(tǒng)的發(fā)展趨勢.</p><p>  嵌入式Web在網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)、電力系統(tǒng)的遠(yuǎn)程監(jiān)測與故障診斷、工業(yè)自動(dòng)化系統(tǒng)中設(shè)備的保護(hù)和控制、智

5、能小區(qū)及智能家電燈諸多領(lǐng)域都有良好的應(yīng)用,為人們管理、控制和監(jiān)測各種各樣的設(shè)備提供了一個(gè)很好的途徑.因此,對嵌入式Web服務(wù)器的研究具有重大的意義. </p><p>  本文首先介紹了嵌入式Web系統(tǒng)的基本概念、歷史和發(fā)展?fàn)顩r,同時(shí)闡述了設(shè)計(jì)及實(shí)現(xiàn)嵌入式Web服務(wù)器的關(guān)鍵技術(shù)和相關(guān)的理論基礎(chǔ).對嵌入式Web服務(wù)器的相關(guān)理論做了重點(diǎn)分析,最后做出實(shí)驗(yàn),完成了基于ARM平臺的簡單嵌入式Web服務(wù)器的實(shí)現(xiàn),為嵌入式W

6、eb服務(wù)器開發(fā)人員提供了必要了理論和實(shí)踐基礎(chǔ).</p><p>  關(guān)鍵詞:嵌入式;ARM;Web服務(wù)器;Socket;Internet</p><p><b>  Abstract</b></p><p>  With the rapid development and advances of computers, network commu

7、nications and Internet technology, the applications of the embedded systems in the home and industrial are more and more extensive. How to make the embedded systems and industrial control system access to Internet, compr

8、ehensive make use of resources of embedded systems, realization the embedded systems of remote management and control, has become times be subjected to concern of research topic, and the realization of networked e</p&

9、gt;<p>  Embedded Web in the network video monitoring system, remote power system monitoring and fault diagnosis, industrial automation system protection and control devices, smart appliances and smart residential

10、 area of lights have a good number of applications, which for people to manage, control and monitoring of a variety of equipment types provided a good way. Therefore, the study of embedded Web server has the meaning of g

11、reat significance.</p><p>  This article first introduced the embedded Web system’s basic concept, the history and the development condition, simultaneously elaborated design and realizes the embedded Web se

12、rver's key technologies and the correlation theories foundation. Here it makes a selective analysis to the embedded Web server's correlation theories, finally make the experiment done, and complete the realizatio

13、n based on ARM platform simple embedded Web server, which has provided essential theory and practice foundati</p><p>  Keywords:Embedded ;ARM ;Web server ;Socket; Internet</p><p><b>  目 錄

14、</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  目 錄III</b></p><p>  第1章 緒 論1</p><p>  1.1 嵌入式系統(tǒng)1</p>

15、<p>  1.1.1 嵌入式系統(tǒng)簡介1</p><p>  1.1.2 實(shí)時(shí)多任務(wù)操作系統(tǒng)1</p><p>  1.1.3 嵌入式操作系統(tǒng)的發(fā)展?fàn)顩r2</p><p>  1.1.4 嵌入式系統(tǒng)軟件的特點(diǎn)3</p><p>  1.2 嵌入式開發(fā)概述3</p><p>  1.2.1 嵌入式系

16、統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境3</p><p>  1.2.3 嵌入式系統(tǒng)開發(fā)人員以應(yīng)用專家為主4</p><p>  1.3 本章小結(jié)4</p><p>  第2章 ARM處理器結(jié)構(gòu)和ARM指令集5</p><p>  2.1 ARM處理器結(jié)構(gòu)5</p><p>  2.2 寄存器和處理器模式5</p&

17、gt;<p>  2.3 ARM指令集8</p><p>  2.3.1 ARM存貯訪問指令8</p><p>  2.3.2 數(shù)據(jù)處理指令9</p><p>  2.3.3 乘法指令10</p><p>  2.3.4 跳轉(zhuǎn)指令10</p><p>  2.3.5 雜項(xiàng)指令10</p&

18、gt;<p>  2.4 本章小結(jié)11</p><p>  第3章 µC/OS-Ⅱ的移植12</p><p>  3.1 移植的要求和準(zhǔn)備12</p><p>  3.2 移植具體過程12</p><p>  3.2.1 µC/OS-Ⅱ的軟硬件結(jié)構(gòu)體系12</p><p> 

19、 3.2.2 實(shí)時(shí)內(nèi)核μC/OS-II在S3C44B0X上的移植13</p><p>  3.3 本章小結(jié)16</p><p>  第4章 網(wǎng)絡(luò)轉(zhuǎn)串口驅(qū)動(dòng)的開發(fā)17</p><p>  4.1 Lwip在µC/OS-Ⅱ上的移植17</p><p>  4.1.1 開源TCP/IP協(xié)議棧LwIP簡介17</p>

20、<p>  4.1.2 基于uC/0S II的網(wǎng)絡(luò)平臺概述17</p><p>  4.1.3 LwIP在uC/0S II下的實(shí)現(xiàn)18</p><p>  4.2 MAC和IP地址設(shè)置26</p><p>  4.2.1 嵌入式網(wǎng)絡(luò)設(shè)備中MAC及IP地址的特點(diǎn)26</p><p>  4.2.2 MAC及IP地址的設(shè)置2

21、7</p><p>  4.3 串口驅(qū)動(dòng)的實(shí)現(xiàn)30</p><p>  4.3.1 串口原理簡介30</p><p>  4.3.2 在µC/OS-Ⅱ操作系統(tǒng)上實(shí)現(xiàn)ARM串口功能31</p><p>  4.4 本章小結(jié)32</p><p><b>  結(jié) 論38</b>&l

22、t;/p><p><b>  致 謝39</b></p><p><b>  參考文獻(xiàn)40</b></p><p><b>  附錄A42</b></p><p><b>  附錄B44</b></p><p><b&g

23、t;  第1章 緒 論</b></p><p><b>  1.1 嵌入式系統(tǒng)</b></p><p>  1.1.1 嵌入式系統(tǒng)簡介</p><p>  隨著計(jì)算機(jī)技術(shù)和微電子技術(shù)的迅速發(fā)展,嵌入式系統(tǒng)應(yīng)用領(lǐng)域越來越廣泛.當(dāng)今,嵌入式系統(tǒng)已成為一個(gè)時(shí)髦的名詞,就像當(dāng)初的計(jì)算機(jī)熱潮,似乎比當(dāng)初的計(jì)算機(jī)熱潮涉及的領(lǐng)域更廣泛,應(yīng)用技術(shù)

24、人員更多,相關(guān)國民經(jīng)濟(jì)產(chǎn)值也更龐大.報(bào)紙、雜志、網(wǎng)絡(luò)都把嵌入式系統(tǒng)當(dāng)作討論的熱門話題.</p><p>  嵌入式系統(tǒng)一般指非PC系統(tǒng),有計(jì)算機(jī)功能但又不稱之為計(jì)算機(jī)的設(shè)備或器材.它是以應(yīng)用為中心,軟硬件可裁減的,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng).嵌入式系統(tǒng)主要由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序等4個(gè)部分組成,它是集軟硬件于一體的可獨(dú)立工作

25、的"器件".嵌入式系統(tǒng)的軟件部分包括操作系統(tǒng)軟件(要求實(shí)時(shí)和多任務(wù)操作)和應(yīng)用程序編程.操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用,而應(yīng)用程序控制著系統(tǒng)的運(yùn)作和行為.</p><p>  嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等Brow

26、ser.嵌入式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點(diǎn),如能夠有效管理越來越復(fù)雜的系統(tǒng)資源;能夠把硬件虛擬化,使得開發(fā)人員從繁忙的驅(qū)動(dòng)程序移植和維護(hù)中解脫出來;能夠提供庫函數(shù)、驅(qū)動(dòng)程序、工具集以及應(yīng)用程序.與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn).</p><p>  1.1.2 實(shí)時(shí)多任務(wù)操作系統(tǒng)</p><p>

27、;  RTOS(Real Time multi-tasking Operation System),即實(shí)時(shí)多任務(wù)操作系統(tǒng)是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺.目前在中國大多數(shù)嵌入式軟件開發(fā)還是基于處理器直接編寫,沒有采用商品化的RTOS,不能將系統(tǒng)軟件和應(yīng)用軟件分開處理.RTOS是一段嵌入在目標(biāo)代碼中的軟件,用戶的其它應(yīng)用程序都建立在RTOS之上.不但如此,RTOS還是一個(gè)可靠性和可信性很高的實(shí)時(shí)內(nèi)核,將CPU時(shí)間、中斷、I/O、定時(shí)器等資

28、源都包裝起來,留給用戶一個(gè)標(biāo)準(zhǔn)的API,并根據(jù)各個(gè)任務(wù)的優(yōu)先級,合理地在不同任務(wù)之間分配CPU時(shí)間. </p><p>  TOS是針對不同處理器優(yōu)化設(shè)計(jì)的高效率實(shí)時(shí)多任務(wù)內(nèi)核,優(yōu)秀商品化的RTOS可以面對幾十個(gè)系列的嵌入式處理器MPU、MCU、DSP、SOC等提供類同的API接口,這是RTOS基于設(shè)備獨(dú)立的應(yīng)用程序開發(fā)基礎(chǔ).因此基于RTOS上的C語言程序具有極大的可移植性.據(jù)專家測算,優(yōu)秀RTOS上跨處理器平臺

29、的程序移植只需要修改1~5%的內(nèi)容.在RTOS基礎(chǔ)上可以編寫出各種硬件驅(qū)動(dòng)程序、專家?guī)旌瘮?shù)、行業(yè)庫函數(shù)、產(chǎn)品庫函數(shù),和通用性的應(yīng)用程序一起,可以作為產(chǎn)品銷售,促進(jìn)行業(yè)內(nèi)的知識產(chǎn)權(quán)交流,因此RTOS又是一個(gè)軟件開發(fā)平臺. </p><p>  RTOS是嵌入式系統(tǒng)的軟件開發(fā)平臺.RTOS最關(guān)鍵的部分是實(shí)時(shí)多任務(wù)內(nèi)核,它的基本功能包括任務(wù)管理、定時(shí)器管理、存儲器管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊(duì)列管理、

30、旗語管理等, </p><p>  這些管理功能是通過內(nèi)核服務(wù)函數(shù)形式交給用戶調(diào)用的,也就是RTOS的API. </p><p>  RTOS的引入,解決了嵌入式軟件開發(fā)標(biāo)準(zhǔn)化的難題.隨著嵌入式系統(tǒng)中軟件比重不斷上升、應(yīng)用程序越來越大,對開發(fā)人員、應(yīng)用程序接口、程序檔案的組織管理成為一個(gè)大的課題.引入RTOS相當(dāng)于引入了一種新的管理模式,對于開發(fā)單位和開發(fā)人員都是一個(gè)提高. </p&

31、gt;<p>  基于RTOS開發(fā)出的程序,具有較高的可移植性,實(shí)現(xiàn)90%以上設(shè)備獨(dú)立,一些成熟的通用程序可以作為專家?guī)旌瘮?shù)產(chǎn)品推向社會.嵌入式軟件的函數(shù)化、產(chǎn)品化能夠促進(jìn)行業(yè)交流以及社會分工專業(yè)化,減少重復(fù)勞動(dòng),提高知識創(chuàng)新的效率. </p><p>  嵌入式工業(yè)的基礎(chǔ)是以應(yīng)用為中心的芯片設(shè)計(jì)和面向應(yīng)用的軟件開發(fā).實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)進(jìn)入嵌入式工業(yè)的意義不亞于歷史上機(jī)械工業(yè)采用三視圖的

32、貢獻(xiàn),對嵌入式軟件的標(biāo)準(zhǔn)化和加速知識創(chuàng)新是一個(gè)里程碑. </p><p>  目前,商品化的RTOS可支持從8BIT的8051到32BIT的PowerPC及DSP等幾十個(gè)系列的嵌入式處理器.提供高質(zhì)量源代碼RTOS的著名公司主要集中在美國.</p><p>  1.1.3 嵌入式操作系統(tǒng)的發(fā)展?fàn)顩r</p><p>  國外嵌入式操作系統(tǒng)已經(jīng)從簡單走向成熟,主要有Vx

33、work、QNX、PalmOS、Windows CE、嵌入式Linux等.國內(nèi)的嵌入式操作系統(tǒng)研究開發(fā)有2種類型,一類是基于國外操作系統(tǒng)2次開發(fā)完成的,如海信的基于Windows CE的機(jī)頂盒系統(tǒng);另一類是中國自主開發(fā)的嵌入式操作系統(tǒng),如凱思集團(tuán)公司自主研制開發(fā)的嵌入式操作系統(tǒng)Hopen OS(“女媧計(jì)劃”)等. </p><p>  Windows CE內(nèi)核較小,能作為一種嵌入式操作系統(tǒng)應(yīng)用到工業(yè)控制等領(lǐng)域.其

34、優(yōu)點(diǎn)在于便攜性、提供對微處理器的選擇以及非強(qiáng)行的電源管理功能.內(nèi)置的標(biāo)準(zhǔn)通信能力使Windows CE能夠訪問Internet并收發(fā)E_mail或?yàn)g覽Web.除此之外,Windows CE特有的與Windows類似的用戶界面使最終用戶易于使用.Windows CE的缺點(diǎn)是速度慢、效率低、價(jià)格偏高、開發(fā)應(yīng)用程序相對較難. </p><p>  3Com公司的Palm OS在掌上電腦和PDA市場上獨(dú)占其霸主地位,它有

35、開放的操作系統(tǒng)應(yīng)用程序接口(API),開發(fā)商可根據(jù)需要自行開發(fā)所需的應(yīng)用程序. </p><p>  Microwave的OS-9是為微處理器的關(guān)鍵實(shí)時(shí)任務(wù)而設(shè)計(jì)的操作系統(tǒng),廣泛應(yīng)用于高科技產(chǎn)品中,包括消費(fèi)電子產(chǎn)品、工業(yè)自動(dòng)化、無線通訊產(chǎn)品、醫(yī)療儀器、數(shù)字電視/多媒體設(shè)備.它提供了很好的安全性和容錯(cuò)性.與其他的嵌入式系統(tǒng)相比,它的靈活性和可升級性非常突出.</p><p>  Lynx R

36、eal-time Systems的LynxOS是一個(gè)分布式、嵌入式、可規(guī)模擴(kuò)展的實(shí)時(shí)操作系統(tǒng),它遵循POSIX.1a、POSIX.1b和POSIX.1c標(biāo)準(zhǔn).LynxOS支持線程概念,提供256個(gè)全局用戶線程優(yōu)先級;提供一些傳統(tǒng)的、非實(shí)時(shí)系統(tǒng)的服務(wù)特征;包括基于調(diào)用需求的虛擬內(nèi)存,一個(gè)基于Motif的用戶圖形界面,與工業(yè)標(biāo)準(zhǔn)兼容的網(wǎng)絡(luò)系統(tǒng)以及應(yīng)用開發(fā)工具.</p><p>  pSOS .ISI公司已經(jīng)被WinR

37、iver公司兼并,現(xiàn)在pSOS屬于WindRiver公司的產(chǎn)品.這個(gè)系統(tǒng)是一個(gè)模塊化、高性能的實(shí)時(shí)操作系統(tǒng),專為嵌入式微處理器設(shè)計(jì),提供一個(gè)完全多任務(wù)環(huán)境,在定制的或是商業(yè)化的硬件上提供高性能和高可靠性.可以讓開發(fā)者根據(jù)操作系統(tǒng)的功能和內(nèi)存需求定制成每一個(gè)應(yīng)用所需的系統(tǒng).開發(fā)者可以利用它來實(shí)現(xiàn)從簡單的單個(gè)獨(dú)立設(shè)備到復(fù)雜的、網(wǎng)絡(luò)化的多處理器系統(tǒng).</p><p>  QNX是由加拿大QSSL公司開發(fā)的分布式、實(shí)時(shí)的

38、、可擴(kuò)充的操作系統(tǒng),它部分遵循POSIX相關(guān)標(biāo)準(zhǔn),如:POSIX.1b實(shí)時(shí)擴(kuò)展.它提供了一個(gè)很小的微內(nèi)核以及一些可選的配合進(jìn)程,具有高度的伸縮性,可靈活地剪裁.其內(nèi)核僅提供4種服務(wù):進(jìn)程調(diào)度、進(jìn)程間通信、底層網(wǎng)絡(luò)通信和中斷處理,其進(jìn)程在獨(dú)立的地址空間運(yùn)行.所有其它OS服務(wù),都實(shí)現(xiàn)為協(xié)作的用戶進(jìn)程,因此QNX內(nèi)核非常小巧(QNX4.x大約為12Kb)而且運(yùn)行速度極快.這個(gè)靈活的結(jié)構(gòu)可以使用戶根據(jù)實(shí)際的需求,將系統(tǒng)配置成微小的嵌入式操作系統(tǒng)

39、或是包括幾百個(gè)處理器的超級虛擬機(jī)操作系統(tǒng).因此,可以廣泛地嵌入到智能機(jī)器、智能儀器儀表、機(jī)頂盒、通訊設(shè)備、PDA等應(yīng)用中去.</p><p>  Hopen OS是凱思集團(tuán)自主研制開發(fā)的嵌入式操作系統(tǒng),由一個(gè)體積很小的內(nèi)核及一些可以根據(jù)需要進(jìn)行定制的系統(tǒng)模塊組成.其核心Hopen Kernel一般為10KB左右大小,占用空間小,并具有實(shí)時(shí)、多任務(wù)、多線程的系統(tǒng)特征.在眾多的實(shí)時(shí)操作系統(tǒng)和嵌入式操作系統(tǒng)產(chǎn)品中,Wi

40、ndRiver公司的VxWorks是較為有特色的一種實(shí)時(shí)操作系統(tǒng).</p><p>  VxWorks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場占有率最高的系統(tǒng).VxWorks 支持各種工業(yè)標(biāo)準(zhǔn),包括POSIX、ANSI C 和TCP/IP網(wǎng)絡(luò)協(xié)議.同時(shí)支持多種處理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC等等.大多數(shù)的VxWorks API是

41、專有的.采用GNU的編譯和調(diào)試器.VxWorks 運(yùn)行系統(tǒng)的核心是一個(gè)高效率的微內(nèi)核,該微內(nèi)核支持各種實(shí)時(shí)功能,包括快速多任務(wù)處理、中斷支持、搶占式和輪轉(zhuǎn)式調(diào)度.目前在全世界裝有VxWorks 系統(tǒng)的智能設(shè)備數(shù)以百萬計(jì),其應(yīng)用范圍遍及互聯(lián)網(wǎng)、電信和數(shù)據(jù)通信等眾多領(lǐng)域.</p><p>  開放源代碼的嵌入式Linux操作系統(tǒng)無疑有著很大的優(yōu)勢.嵌入式Linux自身具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境

42、和交叉運(yùn)行環(huán)境,并且可以跨越在嵌入式系統(tǒng)開發(fā)中仿真工具(ICE)的障礙.內(nèi)核的完全開放,使得可以自己設(shè)計(jì)和開發(fā)出真正的硬實(shí)時(shí)系統(tǒng);對于軟實(shí)時(shí)系統(tǒng),在Linux中也容易得到實(shí)現(xiàn).強(qiáng)大的網(wǎng)絡(luò)支持,使得可以利用Linux的網(wǎng)絡(luò)協(xié)議棧將其開發(fā)成為嵌入式的TCP/IP網(wǎng)絡(luò)協(xié)議棧.</p><p>  1.1.4 嵌入式系統(tǒng)軟件的特點(diǎn)</p><p>  嵌入式處理器的應(yīng)用軟件是實(shí)現(xiàn)嵌入式系統(tǒng)功能的關(guān)

43、鍵,對嵌入式處理器系統(tǒng)軟件和應(yīng)用軟件的要求也和通用計(jì)算機(jī)有所不同. </p><p>  1.軟件要求固態(tài)化存儲. 為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲器芯片或單片機(jī)本身中,而不是存貯于磁盤等載體中. </p><p>  2.軟件代碼高質(zhì)量、高可靠性. 盡管半導(dǎo)體技術(shù)的發(fā)展使處理器速度不斷提高、片上存儲器容量不斷增加,但在大多數(shù)應(yīng)用中,存儲空間仍然是寶貴的,還

44、存在實(shí)時(shí)性的要求.為此要求程序編寫和編譯工具的質(zhì)量要高,以減少程序二進(jìn)制代碼長度、提高執(zhí)行速度. </p><p>  3.系統(tǒng)軟件(OS)的高實(shí)時(shí)性是基本要求. 在多任務(wù)嵌入式系統(tǒng)中,對重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每個(gè)任務(wù)及時(shí)執(zhí)行的關(guān)鍵,單純通過提高處理器速度是無法完成和沒有效率的,這種任務(wù)調(diào)度只能由優(yōu)化編寫的系統(tǒng)軟件來完成,因此系統(tǒng)軟件的高實(shí)時(shí)性是基本要求. </p><

45、;p>  4.多任務(wù)操作系統(tǒng)是知識集成的平臺和走向工業(yè)標(biāo)準(zhǔn)化道路的基礎(chǔ)</p><p>  1.2 嵌入式開發(fā)概述</p><p>  1.2.1 嵌入式系統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境</p><p>  通用計(jì)算機(jī)具有完善的人機(jī)接口界面,在上面增加一些開發(fā)應(yīng)用程序和環(huán)境即可進(jìn)行對自身的開發(fā).而嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對其

46、中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā),這些工具和環(huán)境一般是基于通用計(jì)算機(jī)上的軟硬件設(shè)備以及各種邏輯分析儀、混合信號示波器等.</p><p>  1.2.2 嵌入式系統(tǒng)軟件需要RTOS開發(fā)平臺 </p><p>  通用計(jì)算機(jī)具有完善的操作系統(tǒng)和應(yīng)用程序接口(API),是計(jì)算機(jī)基本組成不可分離的一部分,應(yīng)用程序的開發(fā)以及完成后的軟件都在OS平臺上面運(yùn)行,但一般不是實(shí)

47、時(shí)的.嵌入式系統(tǒng)則不同,應(yīng)用程序可以沒有操作系統(tǒng)直接在芯片上運(yùn)行;但是為了合理地調(diào)度多任務(wù)、利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,用戶必須自行選配RTOS開發(fā)平臺,這樣才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開發(fā)時(shí)間,保障軟件質(zhì)量.</p><p>  1.2.3 嵌入式系統(tǒng)開發(fā)人員以應(yīng)用專家為主</p><p>  通用計(jì)算機(jī)的開發(fā)人員一般是計(jì)算機(jī)科學(xué)或計(jì)算機(jī)工程方面的專業(yè)人士,而

48、嵌入式系統(tǒng)則是要和各個(gè)不同行業(yè)的應(yīng)用相結(jié)合的,要求更多的計(jì)算機(jī)以外的專業(yè)知識,其開發(fā)人員往往是各個(gè)應(yīng)用領(lǐng)域的專家.因此開發(fā)工具的易學(xué)、易用、可靠、高效是基本要求.</p><p><b>  1.3 本章小結(jié)</b></p><p>  Ada語言是20世紀(jì)70年代美國國防部開發(fā)并投入使用的功能強(qiáng)大的通用系統(tǒng)開發(fā)語言,最初為Ada83.它支持模塊化、獨(dú)立編譯、協(xié)處理等

49、功能.其可靠性、可維護(hù)性、可讀性都是相當(dāng)好的.后來,為了更好地支持OOP(Object-Oriented Programming),對其進(jìn)行了改進(jìn),形成了目前廣泛使用的Ada95.使用Ada語言可以大大改善系統(tǒng)的清晰性、可靠性、可維護(hù)性等性能指標(biāo)[2,3].它是美國國防部指定的唯一一種可用于軍用系統(tǒng)開發(fā)的語言.</p><p>  C語言是由Dennis Richie于1972年在AT&Bell實(shí)驗(yàn)室研究

50、成功并投入使用的系統(tǒng)編程語言.其設(shè)計(jì)目標(biāo)是使C既具有匯編語言的效率,又具有高級語言的易編程性.其最具代表性的應(yīng)用是UNIX操作系統(tǒng).從20世紀(jì)80年代中期C語言涉足實(shí)時(shí)系統(tǒng)后,受到了普遍歡迎.目前是使用最廣泛的嵌入式系統(tǒng)編程語言.C++是由Bjarne Stroustrup 于1995年在Bell實(shí)驗(yàn)室研制成功并投入使用的.C++在支持現(xiàn)代軟件工程、OOP、結(jié)構(gòu)化等方面對C進(jìn)行了卓有成效的改進(jìn),但在程序代碼容量、執(zhí)行速度、程序復(fù)雜程度等

51、方面比C語言程序性能差一些.</p><p>  Modula-2是由Nicklans Wirth在70年代后期根據(jù)Pascal 和Modula開發(fā)的系統(tǒng)設(shè)計(jì)語言.其主要目標(biāo)是在模塊化、系統(tǒng)編程、協(xié)同處理等方面對Pascal 進(jìn)行改進(jìn).Modula-2具有很強(qiáng)的類型檢查能力和豐富的低級功能支持.因此,可用它設(shè)計(jì)一個(gè)完整的實(shí)時(shí)程序而不用匯編語言的支持.Modula-3是1988年由DEC(Digital Equip

52、ment Company)和ORC(Olivetti Research Center)根據(jù)Modula-2開發(fā)研制并投入使用的系統(tǒng)開發(fā)語言.目標(biāo)是設(shè)計(jì)一個(gè)功能強(qiáng)大但結(jié)構(gòu)簡單的通用編程語言.它在協(xié)同處理、OOP、自動(dòng)垃圾收集以及對C語言和UNIX的支持等方面對Modula-2進(jìn)行了改進(jìn)</p><p>  Java是網(wǎng)絡(luò)語言,而嵌入式系統(tǒng)則在功能、價(jià)格、體積、功耗、上市時(shí)間等方面有特殊要求.因此Java語言受速度和

53、代碼容量的限制,本身并不適合于嵌入式系統(tǒng)的應(yīng)用.但Sun公司并不愿意放棄這個(gè)發(fā)展?jié)摿薮蟮膽?yīng)用市場,對Java進(jìn)行改進(jìn)后發(fā)表了J2ME(Java2 Micro Edition).它是Java API的一個(gè)子集,只包含了Java的關(guān)鍵特性,是專門針對對內(nèi)存具有苛刻要求的嵌入式系統(tǒng)而設(shè)計(jì)的.J2ME粗略地將應(yīng)用對象劃分為兩大類:內(nèi)存在128KB~512KB之間的設(shè)備和內(nèi)存大于512KB的設(shè)備,根據(jù)不同的類別提供不同的用戶接口和軟件包.<

54、;/p><p>  第2章 ARM處理器結(jié)構(gòu)和ARM指令集</p><p>  2.1 ARM處理器結(jié)構(gòu)</p><p>  ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC處理器、相關(guān)技術(shù)及軟件.技術(shù)具有性能高、成本低和能耗省,適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多媒體、DSP和移

55、動(dòng)式應(yīng)用等.</p><p>  ARM處理器的框架如圖2-1所示</p><p>  圖2-1 ARM處理器架構(gòu)</p><p>  2.2 寄存器和處理器模式</p><p>  1.ARM 有7個(gè)基本工作模式:</p><p>  User:非特權(quán)模式,大部分任務(wù)執(zhí)行在這種模式.限制你的內(nèi)存訪問并且你不能直接讀取

56、硬件設(shè)備</p><p><b>  正常程序執(zhí)行的模式</b></p><p>  FIQ:當(dāng)一個(gè)高優(yōu)先級(fast)中斷產(chǎn)生時(shí)將會進(jìn)入這種模式</p><p>  高速數(shù)據(jù)傳輸和通道處理</p><p>  IRQ:當(dāng)一個(gè)低優(yōu)先級(normal)中斷產(chǎn)生時(shí)將會進(jìn)入這種模式</p><p>&l

57、t;b>  通常的中斷處理</b></p><p>  Supervisor:當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會進(jìn)入這種模式</p><p>  供操作系統(tǒng)使用的一種保護(hù)模式</p><p>  Abort: 當(dāng)存取異常時(shí)將會進(jìn)入這種模式</p><p><b>  虛擬存儲及存儲保護(hù)</b></p&g

58、t;<p>  Undef: 當(dāng)執(zhí)行未定義指令時(shí)會進(jìn)入這種模式</p><p>  軟件仿真硬件協(xié)處理器</p><p>  System: 使用和User模式相同寄存器集的特權(quán)模式</p><p>  特權(quán)級的操作系統(tǒng)任務(wù)</p><p><b>  2.寄存器組</b></p><p

59、>  在26位體系下,ARM 處理器有二十七個(gè)寄存器,其中一些是在一定條件下使用的,所以一次只能使用十六個(gè).</p><p>  寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的.不象 80x86 處理器那樣要求特定寄存器被用做棧訪問,或者象 6502 那樣把數(shù)學(xué)計(jì)算的結(jié)果放置到一個(gè)累加器中,ARM 處理器在寄存器使用上是高度靈活的. </p><p>  寄存器 8 到 1

60、2 是通用寄存器,但是在切換到 FIQ 模式的時(shí)候,使用它們的影子(shadow)寄存器. </p><p>  寄存器 13 典型的用做 OS 棧指針,但可被用做一個(gè)通用寄存器.這是一個(gè)操作系統(tǒng)問題,不是一個(gè)處理器問題,所以如果你不使用棧,只要你以后恢復(fù)它,你可以在你的代碼中自由的占用(corrupt)它.每個(gè)處理器模式都有這個(gè)寄存器的影子寄存器. </p><p>  寄存器 14 專

61、職持有返回點(diǎn)的地址以便于寫子例程.當(dāng)你執(zhí)行帶連接的分支的時(shí)候,把返回地址存儲到 R14 中.同樣在程序第一次運(yùn)行的時(shí)候,把退出地址保存在 R14 中.R14 的所有實(shí)例必須被保存到其他寄存器中(不是實(shí)際上有效)或一個(gè)棧中.這個(gè)寄存器在各個(gè)處理器模式下都有影子寄存器.一旦已經(jīng)保存了連接地址,這個(gè)寄存器就可以用做通用寄存器了. </p><p>  寄存器 15 是程序計(jì)數(shù)器.它除了持有指示程序當(dāng)前使用的地址的二十六

62、位數(shù)之外,還持有處理器的狀態(tài). </p><p>  為更清晰一些, 提供下列圖表: </p><p>  User 模式 SVC 模式 IRQ 模式 FIQ 模式 APCS</p><p>  R0 ------- R0 ------- R0 ------- R0 a1</p><p>  R1 ------- R

63、1 ------- R1 ------- R1 a2</p><p>  R2 ------- R2 ------- R2 ------- R2 a3</p><p>  R3 ------- R3 ------- R3 ------- R3 a4</p><p>  R4 ------- R4 ------- R4 ---

64、---- R4 v1</p><p>  R5 ------- R5 ------- R5 ------- R5 v2</p><p>  R6 ------- R6 ------- R6 ------- R6 v3</p><p>  R7 ------- R7 ------- R7 ------- R7 v

65、4</p><p>  R8 ------- R8 ------- R8 R8_fiq v5</p><p>  R9 ------- R9 ------- R9 R9_fiq v6</p><p>  R10 ------ R10 ------ R10 R10_fiq sl</p><

66、;p>  R11 ------ R11 ------ R11 R11_fiq fp</p><p>  R12 ------ R12 ------ R12 R12_fiq ip</p><p>  R13 R13_svc R13_irq R13_fiq sp</p><p>  R14

67、 R14_svc R14_irq R14_fiq lr</p><p>  ------------- R15 / PC ------------- pc</p><p>  最右側(cè)的列是 APCS 代碼使用的名字.APCS,ARM 過程調(diào)用標(biāo)準(zhǔn)(ARM Procedure Call Standard),提供了緊湊的編寫例程的一種機(jī)制,定義的例程可以與其他例

68、程交織在一起.最顯著的一點(diǎn)是對這些例程來自哪里沒有明確的限制.它們可以編譯自 C、 Pascal、也可以是用匯編語言寫成的. </p><p>  APCS 定義了: </p><p>  對寄存器使用的限制. </p><p><b>  使用棧的慣例. </b></p><p>  在函數(shù)調(diào)用之間傳遞/返回參數(shù). &

69、lt;/p><p>  可以被‘回溯’的基于棧的結(jié)構(gòu)的格式,用來提供從失敗點(diǎn)到程序入口的函數(shù)(和給予的參數(shù))的列表.程序計(jì)數(shù)器構(gòu)造如下圖2-2: </p><p>  圖2-2 程序計(jì)數(shù)器構(gòu)造</p><p><b>  條件位:</b></p><p>  N = 1-結(jié)果為負(fù),0-結(jié)果為正或0</p>&

70、lt;p>  Z = 1-結(jié)果為0,0-結(jié)果不為0</p><p>  C =1-進(jìn)位,0-借位</p><p>  V =1-結(jié)果溢出,0結(jié)果沒溢出</p><p><b>  Q 位:</b></p><p>  僅ARM 5TE/J架構(gòu)支持</p><p>  指示增強(qiáng)型DSP指令是否

71、溢出</p><p><b>  J 位</b></p><p>  僅ARM 5TE/J架構(gòu)支持</p><p>  J = 1: 處理器處于Jazelle狀態(tài)</p><p><b>  中斷禁止位:</b></p><p>  I = 1: 禁止 IRQ.<

72、/p><p>  F = 1: 禁止 FIQ.</p><p><b>  T Bit</b></p><p>  僅ARM xT架構(gòu)支持</p><p>  T = 0: 處理器處于 ARM 狀態(tài)</p><p>  T = 1: 處理器處于 Thumb 狀態(tài)</p><p&

73、gt;  Mode位(處理器模式位):</p><p>  0b10000User</p><p>  0b10001FIQ</p><p>  0b10010IRQ</p><p>  0b10011Supervisor</p><p>  0b10111Abort</p><p>

74、  0b11011Undefined</p><p>  0b11111System</p><p>  當(dāng)處理器執(zhí)行在ARM狀態(tài):</p><p>  所有指令 32 bits 寬</p><p>  所有指令必須 word 對齊</p><p>  所以 pc值由bits [31:2]決定, bits [1:0

75、] 未定義 (所以指令不能halfword / byte對齊).</p><p>  當(dāng)處理器執(zhí)行在Thumb狀態(tài):</p><p>  所有指令 16 bits 寬</p><p>  所有指令必須 halfword 對齊</p><p>  所以 pc值由bits [31:1]決定, bits [0] 未定義 (所以指令不能 byte對齊

76、).</p><p>  當(dāng)處理器執(zhí)行在Jazelle狀態(tài):</p><p>  所有指令 8 bits 寬</p><p>  處理器執(zhí)行 word 存取一次取4條指令</p><p>  2.3 ARM指令集</p><p>  2.3.1 ARM存貯訪問指令</p><p>  ARM存貯

77、訪問指令如下表2-1:</p><p>  表2-1 ARM存貯訪問指令</p><p>  2.3.2 數(shù)據(jù)處理指令</p><p>  數(shù)據(jù)處理指令如下表2-2</p><p>  表2-2 數(shù)據(jù)處理指令</p><p>  2.3.3 乘法指令</p><p>  乘法指令如下表2-3

78、:</p><p><b>  表2-3 乘法指令</b></p><p>  2.3.4 跳轉(zhuǎn)指令</p><p>  跳轉(zhuǎn)指令如下表2-4:</p><p>  表2-4 跳轉(zhuǎn)指令</p><p>  2.3.5 雜項(xiàng)指令</p><p>  雜項(xiàng)指令如下表2-5:&

79、lt;/p><p>  表2-5 雜項(xiàng)指令</p><p><b>  2.4 本章小結(jié)</b></p><p>  Thumb指令可以作是ARM指令壓縮形式的子集,是針對代碼密度的問題而提出的,它具有16位的代碼密度.Thumb不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理只執(zhí)行Thumb指令而不支持ARM指令集.Thumb指令集沒有協(xié)處理器指令.ARM

80、和Thumb之間切換使用BX 指令.</p><p>  Thumb指令與ARM指令在實(shí)現(xiàn)上差別不大,在此就不再對Thumb指令集進(jìn)行詳細(xì)的介紹了.</p><p>  第3章 µC/OS-Ⅱ的移植</p><p>  3.1 移植的要求和準(zhǔn)備</p><p>  這一章介紹如何將µC/OS-Ⅱ移植到不同的處理器上.所謂移

81、植,就是使一個(gè)實(shí)時(shí)內(nèi)核能在某個(gè)微處理器或微控制器上運(yùn)行.為了方便移植,大部分的µC/OS-Ⅱ代碼是用C語言寫的;但仍需要用C和匯編語言寫一些與處理器相關(guān)的代碼,這是因?yàn)?#181;C/OS-Ⅱ在讀寫處理器寄存器時(shí)只能通過匯編語言來實(shí)現(xiàn).由于µC/OS-Ⅱ在設(shè)計(jì)時(shí)就已經(jīng)充分考慮了可移植性,所以µC/OS-Ⅱ的移植相對來說是比較容易的.</p><p>  μC/OS-II功能強(qiáng)大,支持

82、56個(gè)用戶任務(wù),其內(nèi)核為占先式,支持信號量、郵箱、消息隊(duì)列等多種常用的進(jìn)程間通信機(jī)制,現(xiàn)已成功應(yīng)用到眾多商業(yè)嵌入式系統(tǒng)中,是一個(gè)成熟穩(wěn)定的實(shí)時(shí)內(nèi)核.與大多商用RTOS不同的是,μC/OS-II公開所有的源代碼,90%的代碼使用標(biāo)準(zhǔn)的ANSI C語言書寫,程序可讀性強(qiáng)、移植性好;同時(shí)它可免費(fèi)獲得,即使商業(yè)應(yīng)用也只收取少量的許可費(fèi)用.因此,對μC/OS-II實(shí)時(shí)操作系統(tǒng)的學(xué)習(xí)研究、開發(fā)、應(yīng)用具有重要意義.</p><p&

83、gt;  要使µC/OS-Ⅱ正常運(yùn)行,處理器必須滿足以下要求:</p><p>  ■ 處理器的C編譯器能產(chǎn)生可重入代碼.</p><p>  ■ 用C語言就可以打開和關(guān)閉中斷.</p><p>  ■ 處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在10至100Hz之間).</p><p>  ■ 處理器支持能夠容納一定量數(shù)據(jù)(可能是幾

84、千字節(jié))的硬件堆棧.</p><p>  ■ 處理器有將堆棧指針和其它CPU寄存器讀出和存儲到堆?;騼?nèi)存中的指令</p><p>  如果用戶理解了處理器和C編譯器的技術(shù)細(xì)節(jié),移植µC/OS-Ⅱ的工作實(shí)際上是非常簡單的.前提是您的處理器和編譯器滿足了µC/OS-Ⅱ的要求,并且已經(jīng)有了必要工具.移植工作包括以下幾個(gè)內(nèi)容:</p><p>  ■ 用

85、#define設(shè)置一些常量的值(OS_CPU.H)</p><p>  ■ 聲明10個(gè)數(shù)據(jù)類型(OS_CPU.H)</p><p>  ■ 用#define聲明三個(gè)宏(OS_CPU.H)</p><p>  ■ 用C語言編寫六個(gè)簡單的函數(shù)(OS_CPU_C.C)</p><p>  ■ 編寫四個(gè)匯編語言函數(shù)(OS_CPU_A.ASM)<

86、/p><p>  3.2 移植具體過程</p><p>  3.2.1 µC/OS-Ⅱ的軟硬件結(jié)構(gòu)體系</p><p>  Samsung S3C44B0X微處理器是三星公司專為手持設(shè)備和其它嵌入式應(yīng)用提供的高性價(jià)比的微控制器解決方案.它使用ARM公司的16位/32位RISC結(jié)構(gòu),內(nèi)核是ARM7TDMI,工作在66MHz,片上集成了以下部件:8K Cache、

87、外部存儲器控制器、LCD控制器、4個(gè)DMA通道、2個(gè)UART、1個(gè)多主I2C總線控制器、1個(gè)I2C總線控制器,以及5通道PWM定時(shí)器和1個(gè)內(nèi)部定時(shí)器、8通道12位ADC等,能夠與常用的外圍設(shè)備實(shí)現(xiàn)無縫連接,功能強(qiáng)大.目前,國內(nèi)應(yīng)用較為廣泛.</p><p>  圖3-1 µC/OS-Ⅱ軟硬件體系結(jié)構(gòu)</p><p>  圖3.1說明了μC/OS-II的軟硬件體系結(jié)

88、構(gòu).應(yīng)用程序處于整個(gè)系統(tǒng)的頂層,每個(gè)任務(wù)都可以認(rèn)為自已獨(dú)占了CPU,因而可以設(shè)計(jì)成為一個(gè)無限循環(huán).μC/OS-II處理器無關(guān)的代碼提供了μC/OS-II的系統(tǒng)服務(wù),應(yīng)用程序可以使用這些API函數(shù)進(jìn)行內(nèi)存管理、任務(wù)間通信及創(chuàng)建、刪除任務(wù)等.</p><p>  大部分的μC/OS-II代碼是使用ANSI C語言書寫的,因此μC/OS-II的可移植性好,然而仍需要使用C和匯編語言寫一些處理器相關(guān)代碼.μC/OS-II

89、的移植需要滿足以下要求</p><p>  1.處理器的C編譯器可以產(chǎn)生可重入代碼;</p><p>  2.可以使用C調(diào)用進(jìn)入和退出臨界區(qū)代碼;</p><p>  3.處理器必須支持硬件中斷,并且需要一個(gè)定時(shí)中斷源;</p><p>  4.處理器需要能夠容納一定數(shù)據(jù)的硬件堆棧;</p><p>  5.處理器需要

90、有能夠在CPU寄存器與內(nèi)核和堆棧交換數(shù)據(jù)的指令.</p><p>  S3C44B0X處理器完全滿足上述要求.</p><p>  3.2.2 實(shí)時(shí)內(nèi)核μC/OS-II在S3C44B0X上的移植</p><p>  我們使用ARM SDT編譯器,移植μC/OS-II主要包括以下幾個(gè)步驟.</p><p>  1.設(shè)置OS_CPU.H中與處理器

91、和編譯器相關(guān)的代碼</p><p>  *************************************************</p><p>  與編譯器相關(guān)的數(shù)據(jù)類型</p><p>  *************************************************</p><p>  typedef un

92、signed char BOOLEAN;</p><p>  typedef unsigned char INT8U; </p><p>  typedef signed char INT8S; </p><p>  typedef unsigned short INT16U; </p><p>  typede

93、f signed short INT16S; </p><p>  typedef unsigned long INT32U; </p><p>  typedef signed long INT32S; </p><p>  typedef float FP32; </p><p>  

94、typedef double FP64; </p><p>  typedef unsigned int OS_STK; </p><p>  #define OS_ENTER_CRITICAL () ARMEnableInt() </p><p>  #define OS_STK_GROWTH 1 </p>

95、<p>  2.用C語言編寫6個(gè)操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)</p><p>  void OSTaskStkInit(void(task)(void *pd),void *pdata,void *ptos,INT16U opt)</p><p>  { unsigned int *stk;</p><p>  opt =opt;

96、 </p><p>  stk =(unsigned int *)ptos; </p><p>  /*為新任務(wù)創(chuàng)建上下文*/</p><p>  *--stk=(unsigned int)task; /*lr*/</p><p>  *--stk=(unsigned int)task /*pc*/</p>

97、<p>  *--stk=0; /*r12*/</p><p>  *--stk=0; /*r11*/</p><p>  *--stk=0; /*r10*/</p><p>  *--stk=0; /*r9*/</p><p>  *--stk=0; /*r8*/</p><p>  *--stk=0; /

98、*r7*/</p><p>  *--stk=0; /*r6*/</p><p>  *--stk=0; /*r5*/</p><p>  *--stk=0; /*r4*/</p><p>  *--stk=0; /*r3*/</p><p>  *--stk=0; /*r2*/</p><p>

99、;  *--stk=0; /*r1*/</p><p>  *--stk=(unsigned int)pdata; /*r0*/</p><p>  *--stk=(SVC32MODE|0x0|); /*cpsr IRQ,</p><p>  *--stk=(SVC32MODE|0x0); /*spsr IRQ,關(guān)閉FIQ*/</p><p>

100、;  return((void*)stk);</p><p><b>  }</b></p><p>  后5個(gè)函數(shù)是鉤子函數(shù),可以不加代碼:</p><p>  void OSTaskCreateHook(OS_TCB *ptcb)</p><p>  void OSTaksDelHool (OS_TCB *ptcb)

101、</p><p>  void OSTaskSwHook(void)</p><p>  void OSTaskStatHook(void)</p><p>  (3)用匯編語言編寫4個(gè)與處理器相關(guān)的函數(shù)(OS_CPU.ASM)</p><p>  OSStartHighRdy() ;運(yùn)行優(yōu)先級最高的就緒任務(wù)</p><p

102、>  LDR r4,addr_OSTCBCur </p><p>  LDR r5,addr_OSTCBHighRdy </p><p>  LDR r5,addr_OSTCBHighRdy </p><p>  LDR r5,[r5] </p><p>  LDR sp,[r5]

103、 </p><p>  STR r5,[r4]         </p><p>  LDMFD sp!,{r4}</p><p>  MSR CPSR_cxsf,r4</p><p>  LDMFD sp!,{r0-r12,lr,pc}  </p><p><b>  END<

104、;/b></p><p>  OSCtxsw()           </p><p>  STMFD sp!,{lr}        </p><p>  STMFD sp!,{lr}        </p><p>  STMFD sp!,{r0-r12}     </p><p>  MRS r4,CPSR

105、</p><p>  STMFD sp!,{r4}        </p><p>  MRS r4,SPSR</p><p>  STMFD sp!,{r4}</p><p>  ;OSPrioCur=OSPrioHighRdy</p><p>  LDR r4,addr_OSPrioCur</p>&

106、lt;p>  LDR r5,addr_OSPrioHighRdy</p><p>  LDRB r6,[r5]</p><p>  STRB r6,[r4]</p><p>  LDR r4,addr_OSTCBCur</p><p>  LDR r5,[r4]</p><p>  STR sp,[r5]    

107、      </p><p>  LDR r6,addr_OSTCBHighRdy</p><p>  LDR r6,[r6]</p><p>  LDR sp,[r6]          </p><p> ??;OSTCBCur=OSTCBHighRdy</p><p>  STR r6,[r4]</p>

108、<p>  LDMFD sp!,{r4}</p><p>  MSR SPSR_cxsf,r4</p><p>  LDMFD sp!,{r4}</p><p>  MSR SPSR_cxsf,r4</p><p>  LDMFD sp!,{r0-r12,lr pc}</p><p>  OSIntCtx

109、Sw()         </p><p>  LDMIA sp!,{al-vl,lr}</p><p>  SUBS pc,lr,#4</p><p>  SUB lr,lr,#4</p><p>  MOV r12,lr</p><p>  MRS lr,SPSR</p><p>  AND

110、 lr,lr,#0XFFFFFE0</p><p>  ORR lr,lr,#0XD3</p><p>  MSR CPSR_CXSF,lr</p><p>  OSTickISR()            </p><p>  STMDB sp!,{r0-r11,lr}</p><p>  MRS r0,CPSR&l

111、t;/p><p>  ORR r0,r0,#0x80          </p><p>  MSR CPSR_cxsf,r0         </p><p>  LDR r0,I_ISPC</p><p>  LDR r1,=BIT_TIMER0</p><p>  STR r1,{r0}</p><

112、;p>  BL IrqStart</p><p>  BL osTimeTick</p><p>  BL IrqFinish</p><p>  LDR r0,=need_to_swap_context</p><p>  LDR R2,[R0]</p><p><b>  CMP r2,#1<

113、/b></p><p>  LDREQ pc,=_CON_SW</p><p>  完成上述工作后,μC/OS-II就可以運(yùn)行在ARM處理器上了.</p><p><b>  3.3 本章小結(jié)</b></p><p>  1.μC/OS-II和Linux等分時(shí)操作系統(tǒng)不同,不支持時(shí)間片輪轉(zhuǎn)法.它是一個(gè)基于優(yōu)先級的實(shí)

114、時(shí)操作系統(tǒng).每一個(gè)任務(wù)的優(yōu)先級必須不同(分析它的源碼會發(fā)現(xiàn),μC/OS-II把任務(wù)的優(yōu)先級當(dāng)作任務(wù)在標(biāo)識來使用,如果優(yōu)先級相同,任務(wù)將無法區(qū)分).進(jìn)入就緒態(tài)的優(yōu)先級最高的任務(wù)首先得到CPU的使用權(quán),只有等它交出CPU的使用權(quán)后,其它任務(wù)才可以被執(zhí)行.所以,它只能就是多任務(wù),不能就是多進(jìn)程,至少不是我們所熟悉的那種多進(jìn)程.</p><p>  2.μC/OS-II對共享資源提供了保護(hù)的機(jī)制.μC/OS-II是一個(gè)支

115、持多任務(wù)的操作系統(tǒng).我們可以把一個(gè)完整的程序劃分成幾個(gè)任務(wù),不同的任務(wù)執(zhí)行不同的功能.對于共享資源(比如串口),μC/OS-II也提供了很好的解決辦法,一般情況下使用的是信號量方法.我們創(chuàng)建一個(gè)信號量并對它進(jìn)行初始化,當(dāng)一個(gè)任務(wù)需要使用一個(gè)共享資源時(shí),它必須先申請得到這個(gè)信號量.在這個(gè)過程中即使有優(yōu)先權(quán)更高的任務(wù)進(jìn)入了就緒態(tài),因?yàn)闊o法得到信號量,也不能使用該資源.在μC/OS-II中稱為優(yōu)先級反轉(zhuǎn).簡單地說,就是高優(yōu)先級任務(wù)必須等待低優(yōu)

溫馨提示

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

評論

0/150

提交評論