

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 哈爾濱遠(yuǎn)東理工學(xué)院</b></p><p><b> 學(xué)士學(xué)位論文</b></p><p> 題 目: </p><p> 姓 名: </p><p
2、> 分 院: </p><p> ?! I(yè): </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p>
3、<p> 二0 年 月 日</p><p> 畢業(yè)設(shè)計(jì)(論文)評(píng)語(yǔ)及成績(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)用越來(lái)越廣泛.如何將嵌入式系統(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ā)展趨勢(shì).</p><p> 嵌入式Web在網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)、電力系統(tǒng)的遠(yuǎn)程監(jiān)測(cè)與故障診斷、工業(yè)自動(dòng)化系統(tǒng)中設(shè)備的保護(hù)和控制、智
5、能小區(qū)及智能家電燈諸多領(lǐng)域都有良好的應(yīng)用,為人們管理、控制和監(jiān)測(cè)各種各樣的設(shè)備提供了一個(gè)很好的途徑.因此,對(duì)嵌入式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ǔ).對(duì)嵌入式Web服務(wù)器的相關(guān)理論做了重點(diǎn)分析,最后做出實(shí)驗(yàn),完成了基于ARM平臺(tái)的簡(jiǎn)單嵌入式Web服務(wù)器的實(shí)現(xiàn),為嵌入式W
6、eb服務(wù)器開(kāi)發(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)簡(jiǎn)介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 嵌入式開(kāi)發(fā)概述3</p><p> 1.2.1 嵌入式系
16、統(tǒng)開(kāi)發(fā)需要開(kāi)發(fā)工具和環(huán)境3</p><p> 1.2.3 嵌入式系統(tǒng)開(kāi)發(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存貯訪問(wèn)指令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 移植具體過(guò)程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)的開(kāi)發(fā)17</p><p> 4.1 Lwip在µC/OS-Ⅱ上的移植17</p><p> 4.1.1 開(kāi)源TCP/IP協(xié)議棧LwIP簡(jiǎn)介17</p>
20、<p> 4.1.2 基于uC/0S II的網(wǎng)絡(luò)平臺(tái)概述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 串口原理簡(jiǎn)介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)簡(jiǎn)介</p><p> 隨著計(jì)算機(jī)技術(shù)和微電子技術(shù)的迅速發(fā)展,嵌入式系統(tǒng)應(yīng)用領(lǐng)域越來(lái)越廣泛.當(dāng)今,嵌入式系統(tǒng)已成為一個(gè)時(shí)髦的名詞,就像當(dāng)初的計(jì)算機(jī)熱潮,似乎比當(dāng)初的計(jì)算機(jī)熱潮涉及的領(lǐng)域更廣泛,應(yīng)用技術(shù)
24、人員更多,相關(guān)國(guó)民經(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)對(duì)功能、可靠性、成本、體積、功耗等綜合性嚴(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),如能夠有效管理越來(lái)越復(fù)雜的系統(tǒng)資源;能夠把硬件虛擬化,使得開(kāi)發(fā)人員從繁忙的驅(qū)動(dòng)程序移植和維護(hù)中解脫出來(lái);能夠提供庫(kù)函數(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ǔ)和開(kāi)發(fā)平臺(tái).目前在中國(guó)大多數(shù)嵌入式軟件開(kāi)發(fā)還是基于處理器直接編寫,沒(méi)有采用商品化的RTOS,不能將系統(tǒng)軟件和應(yīng)用軟件分開(kāi)處理.RTOS是一段嵌入在目標(biāo)代碼中的軟件,用戶的其它應(yīng)用程序都建立在RTOS之上.不但如此,RTOS還是一個(gè)可靠性和可信性很高的實(shí)時(shí)內(nèi)核,將CPU時(shí)間、中斷、I/O、定時(shí)器等資
28、源都包裝起來(lái),留給用戶一個(gè)標(biāo)準(zhǔn)的API,并根據(jù)各個(gè)任務(wù)的優(yōu)先級(jí),合理地在不同任務(wù)之間分配CPU時(shí)間. </p><p> TOS是針對(duì)不同處理器優(yōu)化設(shè)計(jì)的高效率實(shí)時(shí)多任務(wù)內(nèi)核,優(yōu)秀商品化的RTOS可以面對(duì)幾十個(gè)系列的嵌入式處理器MPU、MCU、DSP、SOC等提供類同的API接口,這是RTOS基于設(shè)備獨(dú)立的應(yīng)用程序開(kāi)發(fā)基礎(chǔ).因此基于RTOS上的C語(yǔ)言程序具有極大的可移植性.據(jù)專家測(cè)算,優(yōu)秀RTOS上跨處理器平臺(tái)
29、的程序移植只需要修改1~5%的內(nèi)容.在RTOS基礎(chǔ)上可以編寫出各種硬件驅(qū)動(dòng)程序、專家?guī)旌瘮?shù)、行業(yè)庫(kù)函數(shù)、產(chǎn)品庫(kù)函數(shù),和通用性的應(yīng)用程序一起,可以作為產(chǎn)品銷售,促進(jìn)行業(yè)內(nèi)的知識(shí)產(chǎn)權(quán)交流,因此RTOS又是一個(gè)軟件開(kāi)發(fā)平臺(tái). </p><p> RTOS是嵌入式系統(tǒng)的軟件開(kāi)發(fā)平臺(tái).RTOS最關(guān)鍵的部分是實(shí)時(shí)多任務(wù)內(nèi)核,它的基本功能包括任務(wù)管理、定時(shí)器管理、存儲(chǔ)器管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊(duì)列管理、
30、旗語(yǔ)管理等, </p><p> 這些管理功能是通過(guò)內(nèi)核服務(wù)函數(shù)形式交給用戶調(diào)用的,也就是RTOS的API. </p><p> RTOS的引入,解決了嵌入式軟件開(kāi)發(fā)標(biāo)準(zhǔn)化的難題.隨著嵌入式系統(tǒng)中軟件比重不斷上升、應(yīng)用程序越來(lái)越大,對(duì)開(kāi)發(fā)人員、應(yīng)用程序接口、程序檔案的組織管理成為一個(gè)大的課題.引入RTOS相當(dāng)于引入了一種新的管理模式,對(duì)于開(kāi)發(fā)單位和開(kāi)發(fā)人員都是一個(gè)提高. </p&
31、gt;<p> 基于RTOS開(kāi)發(fā)出的程序,具有較高的可移植性,實(shí)現(xiàn)90%以上設(shè)備獨(dú)立,一些成熟的通用程序可以作為專家?guī)旌瘮?shù)產(chǎn)品推向社會(huì).嵌入式軟件的函數(shù)化、產(chǎn)品化能夠促進(jìn)行業(yè)交流以及社會(huì)分工專業(yè)化,減少重復(fù)勞動(dòng),提高知識(shí)創(chuàng)新的效率. </p><p> 嵌入式工業(yè)的基礎(chǔ)是以應(yīng)用為中心的芯片設(shè)計(jì)和面向應(yīng)用的軟件開(kāi)發(fā).實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)進(jìn)入嵌入式工業(yè)的意義不亞于歷史上機(jī)械工業(yè)采用三視圖的
32、貢獻(xiàn),對(duì)嵌入式軟件的標(biāo)準(zhǔn)化和加速知識(shí)創(chuàng)新是一個(gè)里程碑. </p><p> 目前,商品化的RTOS可支持從8BIT的8051到32BIT的PowerPC及DSP等幾十個(gè)系列的嵌入式處理器.提供高質(zhì)量源代碼RTOS的著名公司主要集中在美國(guó).</p><p> 1.1.3 嵌入式操作系統(tǒng)的發(fā)展?fàn)顩r</p><p> 國(guó)外嵌入式操作系統(tǒng)已經(jīng)從簡(jiǎn)單走向成熟,主要有Vx
33、work、QNX、PalmOS、Windows CE、嵌入式Linux等.國(guó)內(nèi)的嵌入式操作系統(tǒng)研究開(kāi)發(fā)有2種類型,一類是基于國(guó)外操作系統(tǒng)2次開(kāi)發(fā)完成的,如海信的基于Windows CE的機(jī)頂盒系統(tǒng);另一類是中國(guó)自主開(kāi)發(fā)的嵌入式操作系統(tǒng),如凱思集團(tuán)公司自主研制開(kāi)發(fā)的嵌入式操作系統(tǒng)Hopen OS(“女媧計(jì)劃”)等. </p><p> Windows CE內(nèi)核較小,能作為一種嵌入式操作系統(tǒng)應(yīng)用到工業(yè)控制等領(lǐng)域.其
34、優(yōu)點(diǎn)在于便攜性、提供對(duì)微處理器的選擇以及非強(qiáng)行的電源管理功能.內(nèi)置的標(biāo)準(zhǔn)通信能力使Windows CE能夠訪問(wèn)Internet并收發(fā)E_mail或?yàn)g覽Web.除此之外,Windows CE特有的與Windows類似的用戶界面使最終用戶易于使用.Windows CE的缺點(diǎn)是速度慢、效率低、價(jià)格偏高、開(kāi)發(fā)應(yīng)用程序相對(duì)較難. </p><p> 3Com公司的Palm OS在掌上電腦和PDA市場(chǎng)上獨(dú)占其霸主地位,它有
35、開(kāi)放的操作系統(tǒng)應(yīng)用程序接口(API),開(kāi)發(fā)商可根據(jù)需要自行開(kāi)發(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)化、無(wú)線通訊產(chǎn)品、醫(yī)療儀器、數(shù)字電視/多媒體設(shè)備.它提供了很好的安全性和容錯(cuò)性.與其他的嵌入式系統(tǒng)相比,它的靈活性和可升級(jí)性非常突出.</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)先級(jí);提供一些傳統(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)用開(kāi)發(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è)化的硬件上提供高性能和高可靠性.可以讓開(kāi)發(fā)者根據(jù)操作系統(tǒng)的功能和內(nèi)存需求定制成每一個(gè)應(yīng)用所需的系統(tǒng).開(kāi)發(fā)者可以利用它來(lái)實(shí)現(xiàn)從簡(jiǎn)單的單個(gè)獨(dú)立設(shè)備到復(fù)雜的、網(wǎng)絡(luò)化的多處理器系統(tǒng).</p><p> QNX是由加拿大QSSL公司開(kāi)發(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í)虛擬機(jī)操作系統(tǒng).因此,可以廣泛地嵌入到智能機(jī)器、智能儀器儀表、機(jī)頂盒、通訊設(shè)備、PDA等應(yīng)用中去.</p><p> Hopen OS是凱思集團(tuán)自主研制開(kāi)發(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)域中使用最廣泛、市場(chǎ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ù)以百萬(wàn)計(jì),其應(yīng)用范圍遍及互聯(lián)網(wǎng)、電信和數(shù)據(jù)通信等眾多領(lǐng)域.</p><p> 開(kāi)放源代碼的嵌入式Linux操作系統(tǒng)無(wú)疑有著很大的優(yōu)勢(shì).嵌入式Linux自身具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境
42、和交叉運(yùn)行環(huán)境,并且可以跨越在嵌入式系統(tǒng)開(kāi)發(fā)中仿真工具(ICE)的障礙.內(nèi)核的完全開(kāi)放,使得可以自己設(shè)計(jì)和開(kāi)發(fā)出真正的硬實(shí)時(shí)系統(tǒng);對(duì)于軟實(shí)時(shí)系統(tǒng),在Linux中也容易得到實(shí)現(xiàn).強(qiáng)大的網(wǎng)絡(luò)支持,使得可以利用Linux的網(wǎng)絡(luò)協(xié)議棧將其開(kāi)發(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、鍵,對(duì)嵌入式處理器系統(tǒng)軟件和應(yīng)用軟件的要求也和通用計(jì)算機(jī)有所不同. </p><p> 1.軟件要求固態(tài)化存儲(chǔ). 為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不是存貯于磁盤等載體中. </p><p> 2.軟件代碼高質(zhì)量、高可靠性. 盡管半導(dǎo)體技術(shù)的發(fā)展使處理器速度不斷提高、片上存儲(chǔ)器容量不斷增加,但在大多數(shù)應(yīng)用中,存儲(chǔ)空間仍然是寶貴的,還
44、存在實(shí)時(shí)性的要求.為此要求程序編寫和編譯工具的質(zhì)量要高,以減少程序二進(jìn)制代碼長(zhǎng)度、提高執(zhí)行速度. </p><p> 3.系統(tǒng)軟件(OS)的高實(shí)時(shí)性是基本要求. 在多任務(wù)嵌入式系統(tǒng)中,對(duì)重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每個(gè)任務(wù)及時(shí)執(zhí)行的關(guān)鍵,單純通過(guò)提高處理器速度是無(wú)法完成和沒(méi)有效率的,這種任務(wù)調(diào)度只能由優(yōu)化編寫的系統(tǒng)軟件來(lái)完成,因此系統(tǒng)軟件的高實(shí)時(shí)性是基本要求. </p><
45、;p> 4.多任務(wù)操作系統(tǒng)是知識(shí)集成的平臺(tái)和走向工業(yè)標(biāo)準(zhǔn)化道路的基礎(chǔ)</p><p> 1.2 嵌入式開(kāi)發(fā)概述</p><p> 1.2.1 嵌入式系統(tǒng)開(kāi)發(fā)需要開(kāi)發(fā)工具和環(huán)境</p><p> 通用計(jì)算機(jī)具有完善的人機(jī)接口界面,在上面增加一些開(kāi)發(fā)應(yīng)用程序和環(huán)境即可進(jìn)行對(duì)自身的開(kāi)發(fā).而嵌入式系統(tǒng)本身不具備自舉開(kāi)發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對(duì)其
46、中的程序功能進(jìn)行修改的,必須有一套開(kāi)發(fā)工具和環(huán)境才能進(jìn)行開(kāi)發(fā),這些工具和環(huán)境一般是基于通用計(jì)算機(jī)上的軟硬件設(shè)備以及各種邏輯分析儀、混合信號(hào)示波器等.</p><p> 1.2.2 嵌入式系統(tǒng)軟件需要RTOS開(kāi)發(fā)平臺(tái) </p><p> 通用計(jì)算機(jī)具有完善的操作系統(tǒng)和應(yīng)用程序接口(API),是計(jì)算機(jī)基本組成不可分離的一部分,應(yīng)用程序的開(kāi)發(fā)以及完成后的軟件都在OS平臺(tái)上面運(yùn)行,但一般不是實(shí)
47、時(shí)的.嵌入式系統(tǒng)則不同,應(yīng)用程序可以沒(méi)有操作系統(tǒng)直接在芯片上運(yùn)行;但是為了合理地調(diào)度多任務(wù)、利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,用戶必須自行選配RTOS開(kāi)發(fā)平臺(tái),這樣才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開(kāi)發(fā)時(shí)間,保障軟件質(zhì)量.</p><p> 1.2.3 嵌入式系統(tǒng)開(kāi)發(fā)人員以應(yīng)用專家為主</p><p> 通用計(jì)算機(jī)的開(kāi)發(fā)人員一般是計(jì)算機(jī)科學(xué)或計(jì)算機(jī)工程方面的專業(yè)人士,而
48、嵌入式系統(tǒng)則是要和各個(gè)不同行業(yè)的應(yīng)用相結(jié)合的,要求更多的計(jì)算機(jī)以外的專業(yè)知識(shí),其開(kāi)發(fā)人員往往是各個(gè)應(yīng)用領(lǐng)域的專家.因此開(kāi)發(fā)工具的易學(xué)、易用、可靠、高效是基本要求.</p><p><b> 1.3 本章小結(jié)</b></p><p> Ada語(yǔ)言是20世紀(jì)70年代美國(guó)國(guó)防部開(kāi)發(fā)并投入使用的功能強(qiáng)大的通用系統(tǒng)開(kāi)發(fā)語(yǔ)言,最初為Ada83.它支持模塊化、獨(dú)立編譯、協(xié)處理等
49、功能.其可靠性、可維護(hù)性、可讀性都是相當(dāng)好的.后來(lái),為了更好地支持OOP(Object-Oriented Programming),對(duì)其進(jìn)行了改進(jìn),形成了目前廣泛使用的Ada95.使用Ada語(yǔ)言可以大大改善系統(tǒng)的清晰性、可靠性、可維護(hù)性等性能指標(biāo)[2,3].它是美國(guó)國(guó)防部指定的唯一一種可用于軍用系統(tǒng)開(kāi)發(fā)的語(yǔ)言.</p><p> C語(yǔ)言是由Dennis Richie于1972年在AT&Bell實(shí)驗(yàn)室研究
50、成功并投入使用的系統(tǒng)編程語(yǔ)言.其設(shè)計(jì)目標(biāo)是使C既具有匯編語(yǔ)言的效率,又具有高級(jí)語(yǔ)言的易編程性.其最具代表性的應(yīng)用是UNIX操作系統(tǒng).從20世紀(jì)80年代中期C語(yǔ)言涉足實(shí)時(shí)系統(tǒng)后,受到了普遍歡迎.目前是使用最廣泛的嵌入式系統(tǒng)編程語(yǔ)言.C++是由Bjarne Stroustrup 于1995年在Bell實(shí)驗(yàn)室研制成功并投入使用的.C++在支持現(xiàn)代軟件工程、OOP、結(jié)構(gòu)化等方面對(duì)C進(jìn)行了卓有成效的改進(jìn),但在程序代碼容量、執(zhí)行速度、程序復(fù)雜程度等
51、方面比C語(yǔ)言程序性能差一些.</p><p> Modula-2是由Nicklans Wirth在70年代后期根據(jù)Pascal 和Modula開(kāi)發(fā)的系統(tǒng)設(shè)計(jì)語(yǔ)言.其主要目標(biāo)是在模塊化、系統(tǒng)編程、協(xié)同處理等方面對(duì)Pascal 進(jìn)行改進(jìn).Modula-2具有很強(qiáng)的類型檢查能力和豐富的低級(jí)功能支持.因此,可用它設(shè)計(jì)一個(gè)完整的實(shí)時(shí)程序而不用匯編語(yǔ)言的支持.Modula-3是1988年由DEC(Digital Equip
52、ment Company)和ORC(Olivetti Research Center)根據(jù)Modula-2開(kāi)發(fā)研制并投入使用的系統(tǒng)開(kāi)發(fā)語(yǔ)言.目標(biāo)是設(shè)計(jì)一個(gè)功能強(qiáng)大但結(jié)構(gòu)簡(jiǎn)單的通用編程語(yǔ)言.它在協(xié)同處理、OOP、自動(dòng)垃圾收集以及對(duì)C語(yǔ)言和UNIX的支持等方面對(duì)Modula-2進(jìn)行了改進(jìn)</p><p> Java是網(wǎng)絡(luò)語(yǔ)言,而嵌入式系統(tǒng)則在功能、價(jià)格、體積、功耗、上市時(shí)間等方面有特殊要求.因此Java語(yǔ)言受速度和
53、代碼容量的限制,本身并不適合于嵌入式系統(tǒng)的應(yīng)用.但Sun公司并不愿意放棄這個(gè)發(fā)展?jié)摿薮蟮膽?yīng)用市場(chǎng),對(duì)Java進(jìn)行改進(jìn)后發(fā)表了J2ME(Java2 Micro Edition).它是Java API的一個(gè)子集,只包含了Java的關(guān)鍵特性,是專門針對(duì)對(duì)內(nèi)存具有苛刻要求的嵌入式系統(tǒng)而設(shè)計(jì)的.J2ME粗略地將應(yīng)用對(duì)象劃分為兩大類:內(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)存訪問(wèn)并且你不能直接讀取
56、硬件設(shè)備</p><p><b> 正常程序執(zhí)行的模式</b></p><p> FIQ:當(dāng)一個(gè)高優(yōu)先級(jí)(fast)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式</p><p> 高速數(shù)據(jù)傳輸和通道處理</p><p> IRQ:當(dāng)一個(gè)低優(yōu)先級(jí)(normal)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式</p><p>&l
57、t;b> 通常的中斷處理</b></p><p> Supervisor:當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式</p><p> 供操作系統(tǒng)使用的一種保護(hù)模式</p><p> Abort: 當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式</p><p><b> 虛擬存儲(chǔ)及存儲(chǔ)保護(hù)</b></p&g
58、t;<p> Undef: 當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式</p><p> 軟件仿真硬件協(xié)處理器</p><p> System: 使用和User模式相同寄存器集的特權(quán)模式</p><p> 特權(quán)級(jí)的操作系統(tǒng)任務(wù)</p><p><b> 2.寄存器組</b></p><p
59、> 在26位體系下,ARM 處理器有二十七個(gè)寄存器,其中一些是在一定條件下使用的,所以一次只能使用十六個(gè).</p><p> 寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的.不象 80x86 處理器那樣要求特定寄存器被用做棧訪問(wèn),或者象 6502 那樣把數(shù)學(xué)計(jì)算的結(jié)果放置到一個(gè)累加器中,ARM 處理器在寄存器使用上是高度靈活的. </p><p> 寄存器 8 到 1
60、2 是通用寄存器,但是在切換到 FIQ 模式的時(shí)候,使用它們的影子(shadow)寄存器. </p><p> 寄存器 13 典型的用做 OS 棧指針,但可被用做一個(gè)通用寄存器.這是一個(gè)操作系統(tǒng)問(wèn)題,不是一個(gè)處理器問(wèn)題,所以如果你不使用棧,只要你以后恢復(fù)它,你可以在你的代碼中自由的占用(corrupt)它.每個(gè)處理器模式都有這個(gè)寄存器的影子寄存器. </p><p> 寄存器 14 專
61、職持有返回點(diǎn)的地址以便于寫子例程.當(dāng)你執(zhí)行帶連接的分支的時(shí)候,把返回地址存儲(chǔ)到 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 過(guò)程調(diào)用標(biāo)準(zhǔn)(ARM Procedure Call Standard),提供了緊湊的編寫例程的一種機(jī)制,定義的例程可以與其他例
68、程交織在一起.最顯著的一點(diǎn)是對(duì)這些例程來(lái)自哪里沒(méi)有明確的限制.它們可以編譯自 C、 Pascal、也可以是用匯編語(yǔ)言寫成的. </p><p> APCS 定義了: </p><p> 對(duì)寄存器使用的限制. </p><p><b> 使用棧的慣例. </b></p><p> 在函數(shù)調(diào)用之間傳遞/返回參數(shù). &
69、lt;/p><p> 可以被‘回溯’的基于棧的結(jié)構(gòu)的格式,用來(lái)提供從失敗點(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é)果沒(méi)溢出</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 對(duì)齊</p><p> 所以 pc值由bits [31:2]決定, bits [1:0
75、] 未定義 (所以指令不能halfword / byte對(duì)齊).</p><p> 當(dāng)處理器執(zhí)行在Thumb狀態(tài):</p><p> 所有指令 16 bits 寬</p><p> 所有指令必須 halfword 對(duì)齊</p><p> 所以 pc值由bits [31:1]決定, bits [0] 未定義 (所以指令不能 byte對(duì)齊
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存貯訪問(wèn)指令</p><p> ARM存貯
77、訪問(wèn)指令如下表2-1:</p><p> 表2-1 ARM存貯訪問(wèn)指令</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指令壓縮形式的子集,是針對(duì)代碼密度的問(wèn)題而提出的,它具有16位的代碼密度.Thumb不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理只執(zhí)行Thumb指令而不支持ARM指令集.Thumb指令集沒(méi)有協(xié)處理器指令.ARM
80、和Thumb之間切換使用BX 指令.</p><p> Thumb指令與ARM指令在實(shí)現(xiàn)上差別不大,在此就不再對(duì)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語(yǔ)言寫的;但仍需要用C和匯編語(yǔ)言寫一些與處理器相關(guān)的代碼,這是因?yàn)?#181;C/OS-Ⅱ在讀寫處理器寄存器時(shí)只能通過(guò)匯編語(yǔ)言來(lái)實(shí)現(xiàn).由于µC/OS-Ⅱ在設(shè)計(jì)時(shí)就已經(jīng)充分考慮了可移植性,所以µC/OS-Ⅱ的移植相對(duì)來(lái)說(shuō)是比較容易的.</p><p> μC/OS-II功能強(qiáng)大,支持
82、56個(gè)用戶任務(wù),其內(nèi)核為占先式,支持信號(hào)量、郵箱、消息隊(duì)列等多種常用的進(jìn)程間通信機(jī)制,現(xiàn)已成功應(yīng)用到眾多商業(yè)嵌入式系統(tǒng)中,是一個(gè)成熟穩(wěn)定的實(shí)時(shí)內(nèi)核.與大多商用RTOS不同的是,μC/OS-II公開(kāi)所有的源代碼,90%的代碼使用標(biāo)準(zhǔn)的ANSI C語(yǔ)言書寫,程序可讀性強(qiáng)、移植性好;同時(shí)它可免費(fèi)獲得,即使商業(yè)應(yīng)用也只收取少量的許可費(fèi)用.因此,對(duì)μC/OS-II實(shí)時(shí)操作系統(tǒng)的學(xué)習(xí)研究、開(kāi)發(fā)、應(yīng)用具有重要意義.</p><p&
83、gt; 要使µC/OS-Ⅱ正常運(yùn)行,處理器必須滿足以下要求:</p><p> ■ 處理器的C編譯器能產(chǎn)生可重入代碼.</p><p> ■ 用C語(yǔ)言就可以打開(kāi)和關(guān)閉中斷.</p><p> ■ 處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在10至100Hz之間).</p><p> ■ 處理器支持能夠容納一定量數(shù)據(jù)(可能是幾
84、千字節(jié))的硬件堆棧.</p><p> ■ 處理器有將堆棧指針和其它CPU寄存器讀出和存儲(chǔ)到堆?;騼?nèi)存中的指令</p><p> 如果用戶理解了處理器和C編譯器的技術(shù)細(xì)節(jié),移植µC/OS-Ⅱ的工作實(shí)際上是非常簡(jiǎn)單的.前提是您的處理器和編譯器滿足了µ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語(yǔ)言編寫六個(gè)簡(jiǎn)單的函數(shù)(OS_CPU_C.C)</p><p> ■ 編寫四個(gè)匯編語(yǔ)言函數(shù)(OS_CPU_A.ASM)<
86、/p><p> 3.2 移植具體過(guò)程</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、外部存儲(chǔ)器控制器、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)無(wú)縫連接,功能強(qiáng)大.目前,國(guó)內(nèi)應(yīng)用較為廣泛.</p><p> 圖3-1 µC/OS-Ⅱ軟硬件體系結(jié)構(gòu)</p><p> 圖3.1說(shuō)明了μC/OS-II的軟硬件體系結(jié)
88、構(gòu).應(yīng)用程序處于整個(gè)系統(tǒng)的頂層,每個(gè)任務(wù)都可以認(rèn)為自已獨(dú)占了CPU,因而可以設(shè)計(jì)成為一個(gè)無(wú)限循環(huán).μC/OS-II處理器無(wú)關(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語(yǔ)言書寫的,因此μC/OS-II的可移植性好,然而仍需要使用C和匯編語(yǔ)言寫一些處理器相關(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語(yǔ)言編寫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> ?。?)用匯編語(yǔ)言編寫4個(gè)與處理器相關(guān)的函數(shù)(OS_CPU.ASM)</p><p> OSStartHighRdy() ;運(yùn)行優(yōu)先級(jí)最高的就緒任務(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)先級(jí)的實(shí)
114、時(shí)操作系統(tǒng).每一個(gè)任務(wù)的優(yōu)先級(jí)必須不同(分析它的源碼會(huì)發(fā)現(xiàn),μC/OS-II把任務(wù)的優(yōu)先級(jí)當(dāng)作任務(wù)在標(biāo)識(shí)來(lái)使用,如果優(yōu)先級(jí)相同,任務(wù)將無(wú)法區(qū)分).進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)首先得到CPU的使用權(quán),只有等它交出CPU的使用權(quán)后,其它任務(wù)才可以被執(zhí)行.所以,它只能就是多任務(wù),不能就是多進(jìn)程,至少不是我們所熟悉的那種多進(jìn)程.</p><p> 2.μC/OS-II對(duì)共享資源提供了保護(hù)的機(jī)制.μC/OS-II是一個(gè)支
115、持多任務(wù)的操作系統(tǒng).我們可以把一個(gè)完整的程序劃分成幾個(gè)任務(wù),不同的任務(wù)執(zhí)行不同的功能.對(duì)于共享資源(比如串口),μC/OS-II也提供了很好的解決辦法,一般情況下使用的是信號(hào)量方法.我們創(chuàng)建一個(gè)信號(hào)量并對(duì)它進(jìn)行初始化,當(dāng)一個(gè)任務(wù)需要使用一個(gè)共享資源時(shí),它必須先申請(qǐng)得到這個(gè)信號(hào)量.在這個(gè)過(guò)程中即使有優(yōu)先權(quán)更高的任務(wù)進(jìn)入了就緒態(tài),因?yàn)闊o(wú)法得到信號(hào)量,也不能使用該資源.在μC/OS-II中稱為優(yōu)先級(jí)反轉(zhuǎn).簡(jiǎn)單地說(shuō),就是高優(yōu)先級(jí)任務(wù)必須等待低優(yōu)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式系統(tǒng)開(kāi)發(fā)設(shè)計(jì)課程設(shè)計(jì)
- 嵌入式系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)畢業(yè)論文
- 嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)題庫(kù)
- 嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程
- 嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)課程設(shè)計(jì)-嵌入式溫濕度采集系統(tǒng)設(shè)計(jì)
- 嵌入式畢業(yè)設(shè)計(jì)論文基于arm的嵌入式gui點(diǎn)菜系統(tǒng)
- 嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)題庫(kù)資料
- 嵌入式系統(tǒng)開(kāi)發(fā)調(diào)試環(huán)境的設(shè)計(jì).pdf
- 嵌入式開(kāi)發(fā)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)基于qt的嵌入式終端界面開(kāi)發(fā)
- 嵌入式系統(tǒng)開(kāi)發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)題庫(kù)2剖析
- 嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)試題庫(kù)
- 嵌入式系統(tǒng)開(kāi)發(fā)要素的選擇分析
- 嵌入式系統(tǒng)開(kāi)發(fā)要素的選擇分析
- 畢業(yè)設(shè)計(jì)論文---基于嵌入式系統(tǒng)的圖像采集系統(tǒng)
- 嵌入式系統(tǒng)開(kāi)發(fā)要素的選擇分析
- 嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)題庫(kù)3(doc)
- 嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用4
- 嵌入式系統(tǒng)開(kāi)發(fā)課程-多路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論