基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用_第1頁(yè)
基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用_第2頁(yè)
基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用_第3頁(yè)
基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用_第4頁(yè)
基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩81頁(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緒論1.1選題背景及意義目前嵌入式技術(shù)作為數(shù)字系統(tǒng)市場(chǎng)的主要部分,已經(jīng)成為消費(fèi)電子,航天應(yīng)用,辦公自動(dòng)化,電信以及數(shù)字通信等領(lǐng)域的關(guān)鍵技術(shù)⑴。與通用計(jì)算機(jī)相比嵌入式處理器更具有針對(duì)性的特點(diǎn),支持特殊專(zhuān)用的功能,嵌入式設(shè)備通常應(yīng)用于特定的場(chǎng)所[2]。嵌入式系統(tǒng)的軟、硬件設(shè)計(jì)具有靈活性,依據(jù)設(shè)計(jì)需要,在嵌入式研發(fā)過(guò)程中,可根據(jù)實(shí)際需要添加軟硬件相應(yīng)模塊,實(shí)現(xiàn)相應(yīng)功能[3]。傳統(tǒng)的嵌入式系統(tǒng)軟件編程過(guò)程中,主要釆用主函數(shù)循環(huán),中斷分支響應(yīng)設(shè)計(jì),往往導(dǎo)致設(shè)計(jì)程序過(guò)于復(fù)雜,引入嵌入式操作系統(tǒng)實(shí)現(xiàn)多任務(wù)管理機(jī)制,即可減輕程序設(shè)計(jì)負(fù)擔(dān),又大大提高的嵌入式系統(tǒng)的性能[4]。嵌入式操作系統(tǒng)可以兼容嵌入式硬件設(shè)備的差異性,將操作系統(tǒng)引入嵌入式系統(tǒng)開(kāi)發(fā)已經(jīng)成為一種趨勢(shì)。另一方面,汽車(chē)作為重要的出行工具,隨著其持有量的逐年上升,伴隨而來(lái)的是道路擁擠問(wèn)題凸顯,道路擁堵嚴(yán)重影響人們的正常工作生活,合理的車(chē)輛調(diào)度以及智能的導(dǎo)航服務(wù)成為出行必備條件[5]。車(chē)輛導(dǎo)航是當(dāng)前汽車(chē)電子行業(yè)研究的熱點(diǎn)問(wèn)題,全球定位系統(tǒng)以及智能交通系統(tǒng)發(fā)展迅速。導(dǎo)航系統(tǒng)可為司機(jī)提路況信息服務(wù),提高車(chē)輛行駛效率與行車(chē)安全。全球定位系統(tǒng)(GPS)能為車(chē)輛提供精準(zhǔn)的位置信息,地理位置信息系統(tǒng)(GIS)為用戶(hù)提供完整的路況信息,車(chē)輛監(jiān)控中心為行駛車(chē)輛提供合理的調(diào)度[6_7]。嵌入式車(chē)載設(shè)備將GPS,GIS技術(shù)結(jié)合應(yīng)用,提供嵌入式電子地圖具有瀏覽,查詢(xún),計(jì)算等功能,為用戶(hù)提供方便的導(dǎo)航服務(wù)。車(chē)載設(shè)備的多功能服務(wù)要求嵌入式系統(tǒng)運(yùn)行要具有高可靠性與實(shí)時(shí)性。嵌入式電子地圖的設(shè)計(jì)與嵌入式設(shè)備的內(nèi)存,顯示界面,CPU速度以及接口性能有著密切的關(guān)系[8]。嵌入式處理器作為車(chē)輛導(dǎo)航系統(tǒng)的終端設(shè)備,通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)設(shè)備與監(jiān)控中心間的通信,嵌入式系統(tǒng)對(duì)車(chē)載終端性能具有很大影響[9]。將嵌入式操作系統(tǒng)應(yīng)用于車(chē)載導(dǎo)航設(shè)備中,實(shí)現(xiàn)終端多功能應(yīng)用,極大程度為用戶(hù)安全,穩(wěn)定,及時(shí)的導(dǎo)航服務(wù)。1.2嵌入式系統(tǒng)研究的發(fā)展現(xiàn)狀嵌入式系統(tǒng)自問(wèn)世以來(lái),系統(tǒng)功能需求日益復(fù)雜,嵌入式處理器研發(fā)技術(shù)不斷提高,嵌入式芯片在功耗,尺寸等方面的改進(jìn),使嵌入式系統(tǒng)產(chǎn)品成本不斷降低目前市場(chǎng)上已經(jīng)推出處理能力更加強(qiáng)大的嵌入式處理器如32位,64位處理器芯片以及DSP芯片等,來(lái)提高嵌入式處理器處理數(shù)據(jù)速度[n]。同時(shí)在處理器上移植專(zhuān)用的嵌入式操作系統(tǒng),操作系統(tǒng)采用多任務(wù)處理機(jī)制,并提供個(gè)性化人機(jī)交互界面,支持豐富API程序接口[12]。-1- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

2車(chē)載終端嵌入式平臺(tái)構(gòu)建方案2.1嵌入式系統(tǒng)設(shè)計(jì)思路嵌入式系統(tǒng)設(shè)計(jì)開(kāi)發(fā)過(guò)程中,需依據(jù)一定的幵發(fā)流程,正確合理地進(jìn)行系統(tǒng)開(kāi)發(fā)[26]。(1)系統(tǒng)需求分析:根據(jù)需求確定系統(tǒng)設(shè)計(jì)的實(shí)現(xiàn)功能和目標(biāo)。并制定可行性方案,綜合考慮設(shè)計(jì)系統(tǒng)需完成的基本功能、系統(tǒng)性能,以及設(shè)備開(kāi)發(fā)成本,功耗等因素。(2)系統(tǒng)結(jié)構(gòu)設(shè)計(jì):依據(jù)系統(tǒng)的設(shè)計(jì)任務(wù)與目標(biāo),設(shè)計(jì)實(shí)現(xiàn)目標(biāo)方法,選擇合適的處理器,以及選擇嵌入式操作系統(tǒng)。(3)硬件與軟件設(shè)計(jì):根據(jù)系統(tǒng)需實(shí)現(xiàn)功能的特點(diǎn)和實(shí)際擁有的設(shè)備條件,進(jìn)行相應(yīng)的軟件與硬件模塊設(shè)計(jì)。(4)系統(tǒng)集成:對(duì)系統(tǒng)的軟硬件進(jìn)行集成調(diào)試,改正設(shè)計(jì)過(guò)程中出現(xiàn)的錯(cuò)誤。(5)系統(tǒng)測(cè)試:對(duì)系統(tǒng)進(jìn)行測(cè)試,測(cè)試其是否達(dá)到設(shè)計(jì)目標(biāo),最終生成產(chǎn)品。2.2車(chē)載終端平臺(tái)設(shè)計(jì)2.2.1車(chē)載終端平臺(tái)設(shè)計(jì)目標(biāo)本課題是在ARM7核處理器上構(gòu)建|aC/OS-n實(shí)時(shí)操作系統(tǒng)的軟件平臺(tái),完善操作系統(tǒng)內(nèi)核功能。在^iC/os-^系統(tǒng)內(nèi)核基礎(chǔ)上移植^iCFS文件系統(tǒng),mCGUI圖形界面系統(tǒng),TCP/IP協(xié)議棧,實(shí)現(xiàn)完整的操作系統(tǒng)應(yīng)用平臺(tái),并在構(gòu)建平臺(tái)的基礎(chǔ)上實(shí)現(xiàn)上層車(chē)載終端導(dǎo)航功能。車(chē)載終端通過(guò)GPS模塊獲得當(dāng)前設(shè)備的位置、速度、時(shí)間信息,將車(chē)載終端當(dāng)前位置通過(guò)液晶顯示器顯示在由GIS生成的電子地圖上。存儲(chǔ)設(shè)備實(shí)現(xiàn)重要的狀態(tài)信息存儲(chǔ)。車(chē)載終端設(shè)備通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)與監(jiān)控中心間信息交互,監(jiān)控中心可通過(guò)瀏覽器查詢(xún)當(dāng)前終端狀態(tài)。系統(tǒng)組成結(jié)構(gòu)如圖2.1所示。信息監(jiān)控倍息存儲(chǔ)電子地圖GPS信息 ^^ n

\7 \7 II網(wǎng)絡(luò) 圖形交互界面 iz iz ik

嵌入式nc/os-n操作系統(tǒng)圖2.1系統(tǒng)組成結(jié)構(gòu)Fig.2.1Structureofsystem-4- 大連理工大學(xué)碩士學(xué)位論文

根據(jù)車(chē)載終端導(dǎo)航系統(tǒng)的設(shè)計(jì)需求,系統(tǒng)需實(shí)現(xiàn)以下功能:(1)構(gòu)建完整的嵌入式操作平臺(tái)。車(chē)載嵌入式處理器為車(chē)載終端實(shí)現(xiàn)的核心,負(fù)責(zé)整個(gè)系統(tǒng)的功能實(shí)現(xiàn)。需要穩(wěn)定,健全的系統(tǒng)平臺(tái)滿足其上層的多任務(wù)管理調(diào)度,選擇合適的操作系統(tǒng),構(gòu)建完整的操作系統(tǒng)平臺(tái)。穩(wěn)定的平臺(tái)基礎(chǔ)是應(yīng)用層實(shí)現(xiàn)車(chē)載終端的前提條件。(2) GPS數(shù)據(jù)信息讀取與存儲(chǔ)功能。獲取當(dāng)前車(chē)載終端GPS數(shù)據(jù),是系統(tǒng)實(shí)現(xiàn)其他功能任務(wù)的基礎(chǔ),系統(tǒng)獲得GPS接收機(jī)傳送的數(shù)據(jù)信息,處理器處理GPS模塊傳送的數(shù)據(jù),提取與系統(tǒng)所需相關(guān)的經(jīng)諱度、時(shí)間、速度、日期信息。根據(jù)用戶(hù)需求將這些信息通過(guò)文件系統(tǒng)存儲(chǔ)與Flash設(shè)備當(dāng)中,作為黑匣子進(jìn)行數(shù)據(jù)備份,以便用戶(hù)對(duì)當(dāng)前數(shù)據(jù)與歷史數(shù)據(jù)的查詢(xún),并且處理器處理的位置數(shù)據(jù)需要達(dá)到一定的精度,確保設(shè)備位置信息的準(zhǔn)確性。(3)電子地圖功能。電子地圖作為車(chē)載終端系統(tǒng)實(shí)現(xiàn)的主要功能,決定了車(chē)載終端的使用意義與價(jià)值。Mapinfo軟件導(dǎo)出GIS文件中大連市地圖路況信息存入相關(guān)文件中,系統(tǒng)通過(guò)讀取相關(guān)數(shù)據(jù)信息,通過(guò)點(diǎn)、線、面的形式將路況數(shù)據(jù)分層顯示在液晶顯示器上構(gòu)成完整的電子地圖,系統(tǒng)結(jié)合GPS數(shù)據(jù)實(shí)現(xiàn)車(chē)載靜態(tài)定位功能。系統(tǒng)提供地點(diǎn)查詢(xún),電子地圖顯示,電子地圖縮放、移位以及路徑導(dǎo)航等功能。(4)人性化人機(jī)交互功能。車(chē)載終端為用戶(hù)提供信息提示服務(wù),簡(jiǎn)潔規(guī)整的提示界面便于用戶(hù)操作,節(jié)省了駕駛?cè)藛T讀取信息時(shí)間。終端提供系統(tǒng)化的操作界面,并結(jié)合簡(jiǎn)單易懂的文字提示,方便駕駛員進(jìn)行相關(guān)操作。(5)監(jiān)控中心功能。在處理器上構(gòu)建B/S模式服務(wù)器,每輛車(chē)載終端具有獨(dú)立固定的IP地址。監(jiān)控中心通過(guò)網(wǎng)絡(luò)打開(kāi)瀏覽器,登錄相應(yīng)網(wǎng)址獲取當(dāng)前設(shè)備的狀態(tài)信息,便于監(jiān)控中心對(duì)車(chē)輛進(jìn)行調(diào)度,提供相應(yīng)幫助與服務(wù)功能。2.2.2硬件平臺(tái)車(chē)載終端系統(tǒng)硬件設(shè)計(jì)主要包括S3C44B0處理器,GPS接收機(jī)模塊,LCD觸摸屏人機(jī)交互模塊,以太網(wǎng)接口模塊,F(xiàn)lash存儲(chǔ)器模塊等幾部分組成。其中S3C44B0處理器是整個(gè)系統(tǒng)設(shè)計(jì)的核心。GPS接收機(jī)模塊獲取全球定位系統(tǒng)發(fā)送的數(shù)據(jù)信息,以太網(wǎng)模塊負(fù)責(zé)車(chē)載終端與監(jiān)控中心的數(shù)據(jù)通信,LCD觸摸屏模塊主要功能為接收用戶(hù)操作輸入,與車(chē)載導(dǎo)航系統(tǒng)的電子地圖與數(shù)據(jù)信息的顯示。Flash存儲(chǔ)模塊負(fù)責(zé)存儲(chǔ)重要的數(shù)據(jù)信息。系統(tǒng)的硬件平臺(tái)框圖如圖2.2所示。-5- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

網(wǎng)絡(luò)化也是嵌入式系統(tǒng)發(fā)展的必然趨勢(shì),將嵌入式系統(tǒng)與互聯(lián)網(wǎng)相連,依據(jù)信息時(shí)代的電子設(shè)備聯(lián)網(wǎng)需求,使得嵌入式設(shè)備幵發(fā)支持TCP/IP協(xié)議等軟件,提供標(biāo)準(zhǔn)網(wǎng)絡(luò)接口[〗3]。目前國(guó)外的嵌入式商用操作系統(tǒng)例如VxWorks高性能操作系統(tǒng)支持多種開(kāi)發(fā)平臺(tái),WindowsCE是由微軟推出的嵌入式操作系統(tǒng),具有與Windows—致的開(kāi)發(fā)界面,但其內(nèi)存占用過(guò)大[14]。這些操作已經(jīng)是成熟,提供方便的開(kāi)發(fā)與調(diào)試工具,但是由于其價(jià)格昂貴,致使幵發(fā)成本較高,商業(yè)化的操作系統(tǒng)受著用戶(hù)需求以及硬件資源的限制隨著Linux操作系統(tǒng)的產(chǎn)生,開(kāi)源代碼的操作系統(tǒng)受到追捧,開(kāi)源代碼操作系統(tǒng)產(chǎn)品得到廣泛推廣。iiC/OS-II是一種高性能的嵌入式操作系統(tǒng),具有源代碼公開(kāi),占用資源少,實(shí)時(shí)性能高的特點(diǎn)[16]。PC/OS-II大部分代碼由C語(yǔ)言編寫(xiě),內(nèi)核便于剪裁,可根據(jù)用戶(hù)不同需求增減相應(yīng)功能模塊,非常適合小型嵌入式系統(tǒng)幵發(fā),具有很大的靈活性。國(guó)內(nèi)自主的嵌入式操作系統(tǒng)主要有silver公司推出的DeltaOS操作系統(tǒng),桑夏2000操作系統(tǒng)以及中科院推出的Hopen操作系統(tǒng)等,具有一定的應(yīng)用價(jià)值,但是推廣程度不夠117]。1.3車(chē)載終端系統(tǒng)的發(fā)展現(xiàn)狀GPS是由美國(guó)國(guó)防部研制的衛(wèi)星導(dǎo)航定位系統(tǒng),起初為軍方服務(wù)用于收集情報(bào),定位導(dǎo)航,通過(guò)太空衛(wèi)星定位計(jì)算,地面接收機(jī)接收當(dāng)前位置信息數(shù)據(jù)[“8]。自市場(chǎng)化以來(lái)GPS導(dǎo)航技術(shù)得到推廣,GPS能夠?yàn)槿澜缬脩?hù)提供及時(shí),精確的位置,速度以及時(shí)間信息。隨著GPS成本降低,其應(yīng)用范圍也越來(lái)越廣,在測(cè)量、航海、航空、氣象、定位跟蹤、車(chē)載導(dǎo)航等領(lǐng)域有著重要的作用。GIS將計(jì)算機(jī)技術(shù),數(shù)據(jù)庫(kù)技術(shù)與測(cè)繪技術(shù)相結(jié)合[I9]。GIS通過(guò)測(cè)繪技術(shù)得到與地理相關(guān)的位置、大小、形態(tài)等數(shù)據(jù)信息,并將這些地理信息數(shù)據(jù)轉(zhuǎn)化為可用點(diǎn)、線、面來(lái)描述的數(shù)據(jù)對(duì)象存儲(chǔ)與數(shù)據(jù)庫(kù)中,并配有相關(guān)的屬性信息,GIS將類(lèi)型相近的地理數(shù)據(jù)歸為同一圖層,電子地圖由不同圖層的繪制而成,便于用戶(hù)查詢(xún)路況信息。將GPS技術(shù)與電子地圖數(shù)據(jù)結(jié)合的車(chē)載導(dǎo)航系統(tǒng)使得GPS在汽車(chē)行業(yè)得到廣泛應(yīng)用[20]。用戶(hù)根據(jù)車(chē)載導(dǎo)航系統(tǒng)顯示的電子地圖確定行駛路徑,系統(tǒng)為用戶(hù)提供可靠及時(shí)的信息服務(wù)。我國(guó)汽車(chē)銷(xiāo)量每年持續(xù)增長(zhǎng),世界各大汽車(chē)公司將企業(yè)發(fā)展的戰(zhàn)略重心轉(zhuǎn)移到中國(guó)市場(chǎng),車(chē)載導(dǎo)航產(chǎn)品研發(fā)迅速[2^。國(guó)外的基于GPS智能導(dǎo)航產(chǎn)品十分成熟,美國(guó)通用的On-Star系統(tǒng),將無(wú)線技術(shù)與GPS技術(shù)相結(jié)合,為駕駛員提供安全服務(wù)。福特的Wingcast系統(tǒng),日本作為智能交通系統(tǒng)最為發(fā)達(dá)的國(guó)家之一,由豐田公司的G-Book系統(tǒng),基于3G聯(lián)網(wǎng)為用戶(hù)提供智能的信息服務(wù)都已經(jīng)成為健全完善的服務(wù)平臺(tái)。國(guó)內(nèi)汽車(chē)信息服務(wù)系統(tǒng)起步較晚處于研究階段,在國(guó)內(nèi)由于一些關(guān)鍵技術(shù)較為滯后,例如GIS,GPS和無(wú)線通信技術(shù),以致我國(guó)的車(chē)輛導(dǎo)航系統(tǒng)研究與開(kāi)發(fā)較晚I23]。此外,道路-2- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

JTAG調(diào)試^=0 觸摸屏Flash LCD 、^嵌入式處、^

理器I、S3C44B0,JSDRAM <^=C>網(wǎng)卡RS-232¢=^ GPS圖2.2系統(tǒng)硬件平臺(tái)框圖Fig.2.2Diagramofsystemhardwareplatform(1) S3C44B0處理器嵌入式處理器是嵌入式系統(tǒng)的核心,S3C44B0是ARM7系列32位處理器,提供了豐富的內(nèi)置部件其中包括:外部存儲(chǔ)器控制器、LCD控制器、UART串口、A/D轉(zhuǎn)換器,定時(shí)器、外部中斷、可選的內(nèi)部SRAM、PPL倍頻模塊使最高工作頻率高到66MHZ等功能其功能滿足設(shè)計(jì)需求,可作為核心處理器。(2) SDRAM模塊本系統(tǒng)中使用的SDRAM模塊為16位的數(shù)據(jù)寬度,存儲(chǔ)容量為8M字節(jié)I29]。當(dāng)系統(tǒng)啟動(dòng)時(shí),處理器CPU從復(fù)位地址運(yùn)行,為減少Flash的讀寫(xiě)次數(shù)以及提高數(shù)據(jù)讀取速度,將程序代碼加載到SDRAM中運(yùn)行。(3) Flash模塊本系統(tǒng)中使用Hash模塊為16位數(shù)據(jù)寬度,存儲(chǔ)容量為4M字節(jié),系統(tǒng)設(shè)計(jì)分配2M存儲(chǔ)空間作為程序代碼段,1M空間作為重要數(shù)據(jù)信息存儲(chǔ)區(qū),F(xiàn)lash生產(chǎn)及使用過(guò)程中都有可能產(chǎn)生壞塊,這會(huì)造成數(shù)據(jù)無(wú)法正常寫(xiě)入存儲(chǔ)器內(nèi)。系統(tǒng)用1M的空間作為壞塊的備份空間。(4)觸摸屏模塊S3C44B0處理器內(nèi)置LCD控制器,可以支持256級(jí)顏色的彩色LCD屏,采用系統(tǒng)存儲(chǔ)器作為觸摸屏的顯示緩沖區(qū)觸摸屏尺寸為320X240,較高的屏幕刷新速率為用戶(hù)提供清晰細(xì)膩的現(xiàn)實(shí)界面。本系統(tǒng)為提供更清晰地圖顯示功能另采用800X480分辨率液晶顯示器作為顯示界面。該顯示器通過(guò)串口實(shí)現(xiàn)與處理器通信,屏滿足用戶(hù)對(duì)圖面的顯示高清晰度的需求。(5) GPS接收機(jī)模塊-6- 大連理工大學(xué)碩士學(xué)位論文

交通設(shè)施不斷建設(shè)更新使中國(guó)幵的車(chē)輛導(dǎo)航系統(tǒng)成果并不理想,隨著國(guó)內(nèi)相關(guān)技術(shù)的發(fā)展,車(chē)輛導(dǎo)航系統(tǒng)已經(jīng)成為交通和自動(dòng)控制領(lǐng)域的熱點(diǎn)課題[24]。2011年我國(guó)發(fā)射北斗導(dǎo)航衛(wèi)星,北斗導(dǎo)航衛(wèi)星系統(tǒng)已經(jīng)進(jìn)入試運(yùn)行階段,預(yù)計(jì)2020年通過(guò)發(fā)送更多衛(wèi)星后,定位范圍將覆蓋全球。同年,我國(guó)大唐電信與長(zhǎng)春一汽啟明公司發(fā)展合作關(guān)系,研發(fā)具有自主產(chǎn)權(quán)的汽車(chē)導(dǎo)航服務(wù)系統(tǒng)[25]。我國(guó)車(chē)載信息系統(tǒng)技術(shù)的研發(fā)需要不斷探索與創(chuàng)新。1.4論文的主要內(nèi)容論文共分為五個(gè)部分。第1章:緒論。分析了車(chē)載導(dǎo)航系統(tǒng)對(duì)嵌入式系統(tǒng)的性能需求,介紹了嵌入式系統(tǒng)的應(yīng)用現(xiàn)狀和發(fā)展趨勢(shì)以及車(chē)載導(dǎo)航系統(tǒng)的特點(diǎn)和發(fā)展,最后介紹本文研究的主要內(nèi)容和方法。第2章:嵌入式系統(tǒng)平臺(tái)總體設(shè)計(jì)。介紹嵌入式系統(tǒng)設(shè)計(jì)發(fā)開(kāi)思路,車(chē)載導(dǎo)航系統(tǒng)設(shè)計(jì)目標(biāo),軟硬件平臺(tái)的選擇與設(shè)計(jì)。第3章:操作系統(tǒng)C/OS-II內(nèi)核改進(jìn)。詳細(xì)描述了C/OS-II操作系統(tǒng)內(nèi)核存在的優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,并提出內(nèi)核動(dòng)態(tài)切換的改進(jìn)方法。第4章:操作系統(tǒng)平臺(tái)構(gòu)建。通過(guò)移植文件系統(tǒng),圖形界面系統(tǒng),TCP/IP協(xié)議構(gòu)成完整的嵌入式操作系統(tǒng)平臺(tái),第5章:車(chē)載終端多任務(wù)設(shè)計(jì)。并將平臺(tái)與外圍設(shè)備相連,設(shè)計(jì)車(chē)載終端多任務(wù)應(yīng)用程序,最終實(shí)現(xiàn)車(chē)載終端系統(tǒng)的上層應(yīng)用幵發(fā)。最后對(duì)本文研究?jī)?nèi)容和方法進(jìn)行了總結(jié),并對(duì)以后的工作提出展望。-3- 基于嵌入式平臺(tái)的車(chē)載終i晶設(shè)計(jì)與應(yīng)用

(1) Bootloader設(shè)計(jì)Bootloader程序通常存放在系統(tǒng)的Hash存儲(chǔ)器上,系統(tǒng)掉電程序信息不丟失,嵌入式系統(tǒng)上電后即可從起始地址執(zhí)行Bootloader程序,Bootloader作為整個(gè)系統(tǒng)軟件的設(shè)計(jì)基礎(chǔ),決定著系統(tǒng)的資源配置,對(duì)于系統(tǒng)的穩(wěn)定高效運(yùn)行起著重要作用。(2)嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)為程序擴(kuò)展功能提供軟件平臺(tái),對(duì)于決定整個(gè)系統(tǒng)的性能起著至關(guān)重要的作用。目前嵌入式操作系統(tǒng)的種類(lèi)特點(diǎn)各異,^iClinux開(kāi)放源代碼,具有優(yōu)秀的網(wǎng)絡(luò)功能,標(biāo)準(zhǔn)豐富的API接口,但是供實(shí)時(shí)性操作的實(shí)時(shí)軟件模塊在內(nèi)核空間運(yùn)行時(shí)會(huì)影響系統(tǒng)的可靠性;VxWorks,WindowsCE等商業(yè)操作系統(tǒng)具有高效的任務(wù)管理功能,然而由于其價(jià)格昂貴,軟件的研發(fā)和維護(hù)成本都很高;^iC/OS-II源代碼公開(kāi),內(nèi)核小巧,擴(kuò)展能力強(qiáng),可根據(jù)系統(tǒng)設(shè)計(jì)需要,增添相應(yīng)功能模塊,靈活性強(qiáng)。選擇hC/OS-II作為操作系統(tǒng)不但低成本且能根據(jù)設(shè)計(jì)需求擴(kuò)展相應(yīng)功能模塊滿足設(shè)計(jì)需求[33]。l^C/OS-II是一種支持多任務(wù)實(shí)時(shí)調(diào)度系統(tǒng)內(nèi)核,內(nèi)核主要五個(gè)部分核心部分:主要負(fù)責(zé)操作系統(tǒng)的初始化,設(shè)置時(shí)鐘節(jié)拍,任務(wù)調(diào)度等;任務(wù)處理部分:在^1(3/05-11中以任務(wù)為單位進(jìn)行程序調(diào)度,對(duì)任務(wù)進(jìn)行基本處理操作;時(shí)鐘部分:時(shí)鐘節(jié)拍是^1(:/05-11中任務(wù)切換的最小時(shí)鐘單元;通信部分:liC/OS-II以信號(hào)量、郵箱、隊(duì)列的方式實(shí)現(xiàn)任務(wù)間同步與通信;與處理器接口部分:i-iC/OS-II作為通用性的的操作系統(tǒng),需要根據(jù)具體處理器寄存器特點(diǎn)編寫(xiě)相應(yīng)的移植程序。^iC/OS-II內(nèi)核具體特點(diǎn)如下[35]:①公開(kāi)源代碼:源代碼可免費(fèi)獲取,內(nèi)核可以根據(jù)設(shè)計(jì)需要對(duì)其進(jìn)行修改與裁剪;②可移植性強(qiáng):代碼絕大部分是用C語(yǔ)言編寫(xiě),移植部分用匯編語(yǔ)言編寫(xiě),便于移植到處理器上;③穩(wěn)定性高:^iC/OS-II目前已廣泛應(yīng)用于商業(yè)應(yīng)用設(shè)計(jì);④搶占式內(nèi)核:實(shí)時(shí)處理優(yōu)先級(jí)最高的就緒任務(wù)。⑤多任務(wù):用戶(hù)根據(jù)系統(tǒng)需求將程序以任務(wù)為單元模塊化調(diào)度,并根據(jù)任務(wù)的特性分配不同的優(yōu)先級(jí);⑥系統(tǒng)服務(wù):nC/OS-II提供多種通信機(jī)制,保證任務(wù)在互不影響的前提下資源共享;(3)文件系統(tǒng)由于嵌入式系統(tǒng)設(shè)備資源有限,需要外接存儲(chǔ)設(shè)備。但由于嵌入式系統(tǒng)對(duì)數(shù)據(jù)存儲(chǔ)量大,數(shù)據(jù)刷新頻繁,這使得延長(zhǎng)Flash存儲(chǔ)器的使用壽命,減少對(duì)其的擦寫(xiě)次數(shù)非常重要[36]。由于嵌入式設(shè)備中數(shù)據(jù)存儲(chǔ)量大,存儲(chǔ)類(lèi)型不同,可移植文件系統(tǒng),實(shí)現(xiàn)對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行管理[37]。分層設(shè)計(jì)嵌入式軟件系統(tǒng),文件系統(tǒng)作為中間層,設(shè)計(jì)在內(nèi)核與應(yīng)用程序之間,是軟件設(shè)計(jì)的基礎(chǔ)與支撐,對(duì)優(yōu)化嵌入式應(yīng)用軟件性能有重要作用,決-8- 大連理工大學(xué)碩士學(xué)位論文

JP-13型GPS接收機(jī)作為GPS接收模塊,在GPS接收機(jī)在通電的情況下接收定位系統(tǒng)傳送的數(shù)據(jù)信息,數(shù)據(jù)遵循NMEA0183協(xié)議[31]。處理器通過(guò)串口與接收機(jī)連接,通過(guò)解析接收機(jī)傳送的數(shù)據(jù),獲取相應(yīng)的經(jīng)諱度、速度,時(shí)間信息,為設(shè)備其他功能提供數(shù)據(jù)。(6)以太網(wǎng)模塊CS8900網(wǎng)卡作為硬件設(shè)備,數(shù)據(jù)傳輸速率為10M。通過(guò)配置網(wǎng)卡的MAC地址,工作模式初始化網(wǎng)卡,在網(wǎng)卡上移植TCP/IP協(xié)議找實(shí)現(xiàn)網(wǎng)卡的基礎(chǔ)通信[32]。并在處理器上構(gòu)建B/S模式服務(wù)器,構(gòu)建車(chē)載終端網(wǎng)站。監(jiān)控中心通過(guò)登錄網(wǎng)站獲當(dāng)前車(chē)載終端狀態(tài)信息。2.2.3軟件平臺(tái)本課題在硬件模塊的基礎(chǔ)上以嵌入式操作系統(tǒng)UC/OS-II為軟件核心,UC/OS-II操作系統(tǒng)內(nèi)核小巧,便于移植,可方便用戶(hù)系統(tǒng)進(jìn)行開(kāi)發(fā)。基于操作系統(tǒng)多任務(wù)調(diào)度優(yōu)點(diǎn),便于系統(tǒng)上層應(yīng)用程序的模塊化調(diào)度。在操作系統(tǒng)內(nèi)核的基礎(chǔ)上通過(guò)擴(kuò)展支持圖形界面系統(tǒng),文件系統(tǒng),網(wǎng)絡(luò)系統(tǒng)使操作系統(tǒng)平臺(tái)更加健全,功能更加豐富。在構(gòu)建的操作系統(tǒng)平臺(tái)上實(shí)現(xiàn)上層車(chē)載終端應(yīng)用程序開(kāi)發(fā),實(shí)時(shí)為駕駛員提供導(dǎo)航位置信息等。嵌入式操作系統(tǒng)實(shí)現(xiàn)車(chē)載模塊多任務(wù)總體調(diào)度。圖形系統(tǒng)設(shè)計(jì)可以提供用戶(hù)操作串口界面,實(shí)時(shí)顯示當(dāng)前位置圖形信息以及速度時(shí)間等相關(guān)信息,便于用戶(hù)輕松操作。文件系統(tǒng)的設(shè)計(jì)可以將所需的重要信息進(jìn)行備份,便于車(chē)輛出現(xiàn)故障時(shí),為發(fā)現(xiàn)故障原因提供可靠的參考數(shù)據(jù)。網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì),個(gè)體車(chē)輛將當(dāng)前數(shù)據(jù)通過(guò)網(wǎng)絡(luò)反饋到信息中心,便于信息中心及時(shí)掌握當(dāng)前車(chē)輛運(yùn)行信息,對(duì)車(chē)輛進(jìn)行控制調(diào)度。相關(guān)模塊在操作系統(tǒng)內(nèi)核上的移植以及上層應(yīng)用程序的設(shè)計(jì)至關(guān)重要。系統(tǒng)軟件平臺(tái)框圖如圖2.3所示。上層應(yīng)用程序^ 圖形界面系統(tǒng)件 h絡(luò)^$HC/OS-II內(nèi)核 會(huì);Bootloader啟動(dòng)程序圖2.3系統(tǒng)軟件平臺(tái)框圖Fig.2.3Diagramofsystemsoftwareplatform-7- 大連理工大學(xué)碩士學(xué)位論文

定著整個(gè)系統(tǒng)的可擴(kuò)展性??s短嵌入式系統(tǒng)幵發(fā)周期,通過(guò)文件系統(tǒng)可以很好的實(shí)現(xiàn)操作系統(tǒng)數(shù)據(jù)管理。在數(shù)據(jù)交互日益頻繁的電子設(shè)備中,使得嵌入式系統(tǒng)需要文件系統(tǒng)的支持,而uC/OS-II內(nèi)核不包含文件系統(tǒng),開(kāi)發(fā)人員需要根據(jù)系統(tǒng)設(shè)計(jì)建立相應(yīng)的文件系統(tǒng)。文件系統(tǒng)種類(lèi)繁多,廣泛應(yīng)用的文件系統(tǒng)有FAT12、FAT16、FAT32、YAFFS,NTFS等[38]。在嵌入式系統(tǒng)中一般采用FAT12/16/32文件系統(tǒng),使得設(shè)備存儲(chǔ)數(shù)據(jù)文件與PC機(jī)存儲(chǔ)文件格式一致,便于進(jìn)行信息的交互[39]。文件系統(tǒng)實(shí)現(xiàn)嵌入式設(shè)備對(duì)Flash存儲(chǔ)器以塊為單位操作,并且文件系統(tǒng)申請(qǐng)數(shù)據(jù)緩存區(qū),減少了系統(tǒng)對(duì)的擦寫(xiě)次數(shù),延長(zhǎng)了Hash存儲(chǔ)設(shè)備的使用壽命。FAT16是微軟較早推出的文件系統(tǒng),數(shù)據(jù)按照目錄索引以及簇鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ),廣泛應(yīng)用與存儲(chǔ)設(shè)備中[4^。uC/FS文件系統(tǒng)是Micrium公司開(kāi)發(fā)的一種針對(duì)嵌入式設(shè)備的文件系統(tǒng),與WC/OS-II操作系統(tǒng)具有相似的設(shè)計(jì)風(fēng)格,易于UC/OS-II操作系統(tǒng)結(jié)合實(shí)現(xiàn)系統(tǒng)平臺(tái)構(gòu)建,UC/FS文件系統(tǒng)具有如下特點(diǎn)[4〗]:①支持FAT12、FAT16、FAT32多種文件格式,可根據(jù)設(shè)計(jì)需求定義系統(tǒng)文件格式;②提供多種硬件存儲(chǔ)器驅(qū)動(dòng)接口,使系統(tǒng)實(shí)現(xiàn)訪問(wèn)不同類(lèi)型的存儲(chǔ)器;③支持操作系統(tǒng),^10?5可以移植到任何操作系統(tǒng)中,支撐系統(tǒng)的多任務(wù)調(diào)度;④模塊化分層設(shè)計(jì),提供標(biāo)準(zhǔn)API接口,硬件驅(qū)動(dòng)結(jié)構(gòu)簡(jiǎn)單僅需編寫(xiě)硬件初始化以及讀寫(xiě)程序即在存儲(chǔ)器上建立文件系統(tǒng);(4)圖形界面系統(tǒng)嵌入式顯示界面中帶觸摸屏的液晶顯示技術(shù)已成為主流,為使設(shè)備提供美觀的顯示界面,系統(tǒng)更加注重圖形界面的開(kāi)發(fā)由于嵌入式系統(tǒng)內(nèi)存資源有限,如windows這樣占用內(nèi)存較大的顯示界面不適宜應(yīng)用在嵌入式設(shè)備中。故設(shè)計(jì)需要具有占用內(nèi)存少功能完善的圖形界面系統(tǒng)。uCGUI是Micrium公司開(kāi)發(fā)的專(zhuān)門(mén)面向嵌入式系統(tǒng)開(kāi)發(fā)的圖形界面系統(tǒng),是高效的用戶(hù)圖形接口,可獨(dú)立于處理器及LCD控制器應(yīng)用于使用LCD圖形顯示的設(shè)備上[43]。口CGUI可在多任務(wù)的系統(tǒng)上運(yùn)行,具有很強(qiáng)的可移植性,并且消耗較少的系統(tǒng)資源,占用RAM和ROM的空間都很小,適用于嵌入式系統(tǒng)的多任務(wù)管理。CGUI作為嵌入式支撐軟件,是應(yīng)用程序設(shè)計(jì)的基礎(chǔ),決定著整個(gè)系統(tǒng)的可擴(kuò)展性與穩(wěn)定性通過(guò)yCGUI圖形界面系統(tǒng)可以很好的實(shí)現(xiàn)操作系統(tǒng)圖形與界面的管理。CGUI具有如下特點(diǎn)、[45-46]:①可移植到8、16、32位嵌入式處理器上,提供標(biāo)準(zhǔn)的API接口,顯示屏大小可配置,支持比實(shí)際顯示器更大尺寸的虛擬顯示功能;-9- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

②支持彩色LCD顯示與多邊形繪制,并且提供有效的位圖轉(zhuǎn)換器,便于用戶(hù)開(kāi)發(fā)直接將圖片轉(zhuǎn)化為相應(yīng)代碼便于應(yīng)用開(kāi)發(fā);③為應(yīng)用程序提供不同種類(lèi)的字體,提供字體轉(zhuǎn)換器,并且可以根據(jù)用戶(hù)需求定義新的字體;④支持視窗管理與相應(yīng)的窗口控件,支持觸摸屏以及鼠標(biāo)操作,觸摸屏與視窗控件是UCGUI系統(tǒng)輸入輸出的完整統(tǒng)一,支持觸摸屏的功能將CGUI系統(tǒng)與觸摸屏相結(jié)合,充分體現(xiàn)界面系統(tǒng)的實(shí)用價(jià)值;(5)TCP/IP協(xié)議棧開(kāi)發(fā)人員在設(shè)計(jì)與研制新型電子相關(guān)產(chǎn)品時(shí)都會(huì)留有網(wǎng)絡(luò)接口,以實(shí)現(xiàn)設(shè)備間遠(yuǎn)程數(shù)據(jù)的傳輸和監(jiān)控TCP/IP協(xié)議是Internet的重要組成部分,系統(tǒng)設(shè)計(jì)中考慮到嵌入設(shè)備資源限制以及網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜實(shí)現(xiàn)難度較大,TCP/IP協(xié)議棧作為網(wǎng)絡(luò)系統(tǒng)的一部分,將其移植入嵌入式處理器中可以實(shí)現(xiàn)網(wǎng)絡(luò)功能【48]。UC/OS-II操作系統(tǒng)內(nèi)核并不支持網(wǎng)絡(luò)功能,需要移植協(xié)議棧構(gòu)成完整操作平臺(tái)。目前嵌入式領(lǐng)域中應(yīng)用較為廣泛的協(xié)議找有C/IP,UIP,LwIP等。uC/IP是專(zhuān)門(mén)為UC/OS設(shè)計(jì)的協(xié)議棧,但是由于其網(wǎng)絡(luò)應(yīng)用支持不足,應(yīng)用具有局限性LwIP是LightWeightIP協(xié)議的縮寫(xiě)。LwIP幵發(fā)源代碼,按照分層結(jié)構(gòu)設(shè)計(jì),夠獨(dú)立實(shí)現(xiàn)TCP/IP協(xié)議的套件。LwIP在較少資源使用量的同時(shí)實(shí)現(xiàn)TCP/IP協(xié)議功能,這使得LwIP適用于擁有幾KB的RAM與40KB的ROM的嵌入式系統(tǒng)中。LwIP協(xié)議棧具有如下特點(diǎn)①支持DHCP客戶(hù)端,DNS客戶(hù)端,APIPA自動(dòng)私有IP地址,SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理;②專(zhuān)有API接口增強(qiáng)系統(tǒng)性能,可選擇的Berkeley接口 ;③支持?jǐn)U展功能:多個(gè)網(wǎng)絡(luò)接的IP轉(zhuǎn)發(fā),TCP擁塞控制、RTT估計(jì)和快速恢復(fù)/快速重新傳輸;④支持插件的應(yīng)用:HTTP服務(wù)器、SNTP客戶(hù)端、SMTP客戶(hù)端、Ping、NetBIOS命名服務(wù)器;-10- 大連理工大學(xué)碩士學(xué)位論文

3操作系統(tǒng)yC/OS-II內(nèi)核改進(jìn)3.1車(chē)載終端多任務(wù)調(diào)度特點(diǎn)車(chē)載終端嵌入式系統(tǒng)需實(shí)現(xiàn)較多應(yīng)用功能,需通過(guò)與GPS接收機(jī)相連獲得當(dāng)前設(shè)備的經(jīng)煒度信息與時(shí)間速度等狀態(tài)信息。顯示界面實(shí)現(xiàn)實(shí)時(shí)顯示當(dāng)前位置圖形信息及速度時(shí)間等相關(guān)信息。系統(tǒng)需將所需的重要狀態(tài)信息進(jìn)行備份。并且將汽車(chē)當(dāng)前運(yùn)行信息傳輸?shù)叫畔⒅行钠脚_(tái),實(shí)現(xiàn)終端信息交互信息中心通過(guò)瀏覽器登錄終端網(wǎng)址提取相應(yīng)數(shù)據(jù),便于及時(shí)掌握當(dāng)前車(chē)輛運(yùn)行信息,對(duì)車(chē)輛進(jìn)行控制調(diào)度。車(chē)載嵌入式系統(tǒng)根據(jù)各功能性能要求不同,對(duì)各功能進(jìn)行合理的調(diào)度與協(xié)調(diào)分配。并且系統(tǒng)的經(jīng)諱度、速度等狀態(tài)信息作為系統(tǒng)的共享信息,在不同功能使用共享資源時(shí)不能被其他功能篡改數(shù)據(jù),這就要求共享信息在使用的時(shí)候被合理保護(hù)。車(chē)載終端實(shí)現(xiàn)任務(wù)功能復(fù)雜,共享信息刷新頻繁,增加的嵌入式系統(tǒng)的設(shè)計(jì)難度。3.2內(nèi)核任務(wù)調(diào)度存在的問(wèn)題車(chē)載嵌入式系統(tǒng)運(yùn)行不但具有高可靠性而且對(duì)任務(wù)處理的實(shí)時(shí)性的要求也越來(lái)越高。uC/OS-II在內(nèi)核調(diào)度中存在優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,也是一直以來(lái)對(duì)嵌入式系統(tǒng)不斷改進(jìn)和完善設(shè)計(jì)中的熱點(diǎn)問(wèn)題[51]。車(chē)載終端中各任務(wù)對(duì)與臨界資源的共享會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,問(wèn)題關(guān)鍵在于多任務(wù)訪問(wèn)臨界資源時(shí),高優(yōu)先級(jí)任務(wù)被較低優(yōu)先級(jí)任務(wù)阻塞而延時(shí),甚至造成任務(wù)等待資源而死鎖現(xiàn)象,以致從整體結(jié)構(gòu)上降低系統(tǒng)運(yùn)行的穩(wěn)定性。目前提出的解決方法在一定程度上解決了優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,但存在影響其他高優(yōu)先級(jí)任務(wù)調(diào)度與內(nèi)核修改過(guò)于復(fù)雜的缺點(diǎn)。本文針對(duì)內(nèi)核任務(wù)隊(duì)列引入一種任務(wù)動(dòng)態(tài)切換思想,解決了其他協(xié)議的不足,達(dá)到改善優(yōu)先級(jí)多任務(wù)調(diào)度的執(zhí)行效率的目的。3.2.1UC/OS-II內(nèi)核任務(wù)調(diào)度機(jī)制分析UC/0S-I1內(nèi)核中調(diào)度具有最高優(yōu)先級(jí)的就緒任務(wù)立即執(zhí)行,而其他任務(wù)被掛起。內(nèi)核調(diào)度過(guò)程中通過(guò)查找就緒表,調(diào)度其中優(yōu)先級(jí)最高的任務(wù)。臨界資源每次只允許一個(gè)任務(wù)訪問(wèn)的資源,C/OS-II內(nèi)核通過(guò)信號(hào)量管理機(jī)制實(shí)現(xiàn)任務(wù)對(duì)臨界資源的訪問(wèn),任務(wù)訪問(wèn)臨界資源前須先獲得保護(hù)該臨界資源的信號(hào)量。任務(wù)在等待保護(hù)該臨界資源的信號(hào)量時(shí),若信號(hào)量授權(quán)該任務(wù),即可繼續(xù)訪問(wèn)臨界資源,訪問(wèn)完畢后,任務(wù)釋放信號(hào)量的授權(quán),以便其他任務(wù)執(zhí)行。若信號(hào)量沒(méi)有授權(quán)與該任務(wù),內(nèi)核會(huì)將等待該信號(hào)量授權(quán)的任務(wù)從就緒表中調(diào)入等待任務(wù)列表中,即該任務(wù)被掛起,內(nèi)核轉(zhuǎn)去調(diào)度當(dāng)前優(yōu)先級(jí)-11- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

最高的就緒任務(wù)。當(dāng)信號(hào)量的授權(quán)釋放后,掛起的任務(wù)則轉(zhuǎn)變?yōu)榫途w態(tài),相應(yīng)的也要從等待任務(wù)列表調(diào)入就緒表中等待內(nèi)核調(diào)度。內(nèi)核任務(wù)調(diào)度過(guò)程如圖3.1所示。事件控制塊鏈表 任務(wù)控制塊列表~専件類(lèi)型=… I調(diào)度就緒任務(wù)爭(zhēng)什5^:土_ 伴各狀太= ^計(jì)數(shù)器(信號(hào)量)=… … I^t ‘任務(wù)狀態(tài)=等待信號(hào)量I事件類(lèi)型=信號(hào)量~ (賊)

計(jì)數(shù)器(信號(hào)量)=1$i:仏‘一.||計(jì)數(shù)yss;)=口?議.就緒」★0 任務(wù)狀態(tài)=...圖3.1內(nèi)核任務(wù)調(diào)度過(guò)程Fig.3.1Sechedulingmechanismofkemal3.2.2uC/OS-1I內(nèi)核優(yōu)先級(jí)的反轉(zhuǎn)問(wèn)題優(yōu)先級(jí)反轉(zhuǎn)指一個(gè)任務(wù)因等待比它優(yōu)先級(jí)低的任務(wù)釋放臨界資源而被阻塞,此時(shí)又有中等優(yōu)先級(jí)的就緒任務(wù),內(nèi)核則調(diào)度中等優(yōu)先級(jí)任務(wù),使高優(yōu)先級(jí)任務(wù)阻塞時(shí)間延長(zhǎng)甚至死鎖現(xiàn)象[52]。liC/OS-II內(nèi)核調(diào)度中如圖3.2所示系統(tǒng)運(yùn)行三個(gè)任務(wù)(H、M、L),各任務(wù)的優(yōu)先級(jí)依次降低。系統(tǒng)運(yùn)行后任務(wù)L就緒執(zhí)行并占用臨界資源,n時(shí)任務(wù)H就緒后開(kāi)始運(yùn)行。/2時(shí)由于任務(wù)H訪問(wèn)臨界資源而此時(shí)臨界資源被任務(wù)L占用,任務(wù)H掛起,等待任務(wù)L釋放臨界資源。時(shí)任務(wù)M就緒并搶占內(nèi)核,使任務(wù)H阻塞時(shí)間延長(zhǎng),直至?xí)r任務(wù)M運(yùn)行結(jié)束與,5時(shí)任務(wù)L釋放臨界資源后,任務(wù)H才能占用臨界資源,由掛起態(tài)變?yōu)榫途w態(tài)執(zhí)行。由此可知優(yōu)先級(jí)反轉(zhuǎn)嚴(yán)重影響了系統(tǒng)的實(shí)時(shí)性。任』〖高 ,I務(wù) ;: ;_—優(yōu) i; m 口油.先* —… iZ-i掛起‘ I : la占用資源Ii—.…誦…——""""""i一T—: : ?t\hh Uh運(yùn)行時(shí)間圖3.2優(yōu)先級(jí)反轉(zhuǎn)現(xiàn)象Fig.3.2Priorityinversion-12- 大連理工大學(xué)碩士學(xué)位論文

3.2.3優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題解決現(xiàn)狀的討論目前解決優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題主要有兩種常用的方法:優(yōu)先級(jí)上限協(xié)議與優(yōu)先級(jí)繼承協(xié)議["]。優(yōu)先級(jí)上限協(xié)議為占用臨界資源的任務(wù)定義了的一個(gè)上限優(yōu)先級(jí)[54],優(yōu)先級(jí)上限協(xié)議在應(yīng)用過(guò)程中將占用臨界資源任務(wù)的優(yōu)先級(jí)替換為上限優(yōu)先級(jí),使得不需要臨界資源的部分任務(wù)無(wú)法搶占內(nèi)核,影響了內(nèi)核正常調(diào)度就緒任務(wù)。優(yōu)先級(jí)繼承協(xié)議實(shí)現(xiàn)了同等優(yōu)先級(jí)任務(wù)的輪詢(xún)調(diào)度[55-56],優(yōu)先級(jí)繼承協(xié)議需修改內(nèi)核任務(wù)等數(shù)據(jù)結(jié)構(gòu),使內(nèi)核調(diào)度支持輪詢(xún)算法,這違背了實(shí)時(shí)系統(tǒng)設(shè)計(jì)內(nèi)核時(shí)不允許出現(xiàn)同優(yōu)先級(jí)任務(wù)的初衷。針對(duì)基于優(yōu)先級(jí)上限方法任務(wù)的優(yōu)先級(jí)改變后會(huì)影響到其他任務(wù)的正常調(diào)度,基于輪詢(xún)調(diào)度方法實(shí)現(xiàn)過(guò)于復(fù)雜影響內(nèi)核調(diào)度效率的情況。在解決優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題的過(guò)程中,解決方法旨在優(yōu)先調(diào)度占用臨界資源的低優(yōu)先級(jí)任務(wù),使其盡快釋放臨界資源。本研究目的是在不改變?nèi)蝿?wù)優(yōu)先級(jí)并且保證內(nèi)核調(diào)度效率的前提下,引入通過(guò)動(dòng)態(tài)切換中等優(yōu)先級(jí)就緒任務(wù)解決優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,在高優(yōu)先級(jí)任務(wù)申請(qǐng)低優(yōu)先級(jí)任務(wù)占用的臨界資源時(shí),通過(guò)動(dòng)態(tài)切換任務(wù)狀態(tài)的方法,實(shí)現(xiàn)中等優(yōu)先級(jí)就緒任務(wù)在就緒表與等待列表的之間的切換,從而避免優(yōu)先級(jí)反轉(zhuǎn)的發(fā)生。3.3多任務(wù)動(dòng)態(tài)切換調(diào)度方法的提出3.3.1任務(wù)動(dòng)態(tài)切換調(diào)度方法的引入yC/OS-II內(nèi)核中如圖3.3(a)所示設(shè)此時(shí)有三個(gè)任務(wù)的優(yōu)先級(jí)分別為3,4,5。任務(wù)控制塊列表 任務(wù)控制塊列表任務(wù)優(yōu)先級(jí)=...I I任務(wù)優(yōu)先級(jí)=...調(diào)度就緒任務(wù) 任務(wù)狀態(tài)=... 調(diào)度就緒任務(wù) 任務(wù)狀態(tài)=...- 任務(wù)優(yōu)先級(jí)=3 廣 4I 任務(wù)優(yōu)先級(jí)=3 任務(wù)狀態(tài)=等待信號(hào)fi:(掛起) I 任務(wù)狀態(tài)=就緒 、'餅^任務(wù)切1 任務(wù)體先級(jí)=4 任務(wù)妨態(tài)=就緒1 任務(wù):?牽=掛起甲1 任務(wù)優(yōu)先級(jí)=5”、任務(wù)狀態(tài)=就緒 任務(wù)狀態(tài)=就緒任務(wù)優(yōu)先級(jí)=... 任務(wù)優(yōu)先級(jí)=...任務(wù)狀態(tài)=... 任務(wù)狀態(tài)=...(a)任務(wù)動(dòng)態(tài)切換前 (b)任務(wù)動(dòng)態(tài)切換后圖3.3任務(wù)動(dòng)態(tài)切換模型Fig.3.3Dynamicswitchingmodel-13- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

任務(wù)3訪問(wèn)任務(wù)5占用的臨界資源,由于任務(wù)3需獲得信號(hào)量后執(zhí)行,因此任務(wù)3被掛起。此時(shí)通過(guò)修改內(nèi)核調(diào)度算法,將任務(wù)4從就緒表中移除(將該任務(wù)的狀態(tài)由就緒態(tài)改為掛起態(tài),將該優(yōu)先級(jí)從就緒表中刪除)。內(nèi)核繼續(xù)調(diào)度任務(wù)5。直至任務(wù)5釋放臨界資源后,判斷此時(shí)任務(wù)4是否可還原為就緒態(tài),若該任務(wù)可還原為就緒態(tài),則將該任務(wù)從等待任務(wù)列表刪除,插入到就緒表中,如圖3.3(b)所示改進(jìn)后的內(nèi)核調(diào)度當(dāng)前優(yōu)先級(jí)最高的就緒任務(wù)3,阻止優(yōu)先級(jí)反轉(zhuǎn)發(fā)生。3.3.2任務(wù)動(dòng)態(tài)切換優(yōu)先級(jí)調(diào)度的實(shí)現(xiàn)由于任務(wù)在共享臨界資源時(shí)須先獲得其相應(yīng)的信號(hào)量,通過(guò)修改就緒表的方法對(duì)操作系統(tǒng)中信號(hào)量相關(guān)結(jié)構(gòu)及函數(shù)進(jìn)行修改,解決優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,以滿足設(shè)計(jì)要求。在事件結(jié)構(gòu)體中加入當(dāng)前占用信號(hào)量的事件優(yōu)先級(jí)變量Cur_Prio,先前占用信號(hào)量的事件優(yōu)先級(jí)變量Pre一Prio,當(dāng)前事件優(yōu)先級(jí)反轉(zhuǎn)標(biāo)志Convert—Flag,以此判斷是否有優(yōu)先級(jí)反轉(zhuǎn)現(xiàn)象發(fā)生。并在OSSemCreateO函數(shù)中對(duì)創(chuàng)建的相關(guān)變量進(jìn)行初始化。改進(jìn)的事件結(jié)構(gòu)體如下:typedefstructos一event{……INT8UCur—Prio; //當(dāng)前占用信號(hào)量的事件優(yōu)先級(jí)INT8UPre_Prio; //先前占用信號(hào)量的事件優(yōu)先級(jí)INT8UConvert_Flag;//當(dāng)前事件優(yōu)先級(jí)反轉(zhuǎn)標(biāo)志}OS—EVENT;在等待信號(hào)量函數(shù)OSSemPendO中,首先判斷當(dāng)前信號(hào)量是否被其他任務(wù)占用,若沒(méi)有被任何任務(wù)占用,則將信號(hào)量的當(dāng)前優(yōu)先級(jí)變量設(shè)置為該等待信號(hào)量任務(wù)的優(yōu)先級(jí)。若該信號(hào)量已被占用,判斷占用其任務(wù)的優(yōu)先級(jí)是否高于當(dāng)前等待該信號(hào)量任務(wù)的優(yōu)先級(jí),若高于此時(shí)會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)。首先設(shè)置當(dāng)前信號(hào)反轉(zhuǎn)標(biāo)志,并將當(dāng)前任務(wù)優(yōu)先級(jí)變量Cur_Prio賦值給先前任務(wù)優(yōu)先級(jí)變量Pre_Prio,并將當(dāng)前等待信號(hào)量任務(wù)優(yōu)先級(jí)的數(shù)值賦給CurJPrio。判斷Cur_Prio與Pre_Prio任務(wù)優(yōu)先級(jí)之間是否存在中等優(yōu)先級(jí)就緒任務(wù),若存在則將該任務(wù)移出就緒表并掛起,這樣占用臨界資源的低優(yōu)先級(jí)任務(wù)可以盡快執(zhí)行,髙優(yōu)先級(jí)等待信號(hào)量的任務(wù)繼續(xù)等待,不會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn),其他更高優(yōu)先級(jí)任務(wù)可以正常執(zhí)行,不會(huì)發(fā)生阻塞現(xiàn)象。改進(jìn)算法如下:if(pevent->Cur—Prio>OSTCBCur->OSTCBPrio){pevent->Convert_Flag=l;pevent->Pre_Prio=pevent->Cur_Prio;pevent->Cur_Prio=OSTCBCur->OSTCBPrio;-14- 大連理工大學(xué)碩士學(xué)位論文

for(查找就緒表){if(高低優(yōu)先級(jí)之間是否存在就緒任務(wù)){if(存在就緒任務(wù)){將該任務(wù)移出就緒表;將該任務(wù)的狀態(tài)設(shè)為掛起態(tài);}}}}在釋放信號(hào)量函數(shù)OSSemPostO中,首先判斷當(dāng)前信號(hào)量反轉(zhuǎn)標(biāo)志,若信號(hào)量反轉(zhuǎn)標(biāo)志為1則查找就緒表,判斷Cur一Prio與Pre—Prio任務(wù)優(yōu)先級(jí)之間是否存在中等優(yōu)先級(jí)掛起任務(wù),若存在并且該任務(wù)可還原為就緒態(tài),則將該任務(wù)狀態(tài)改為就緒態(tài),并將該任務(wù)添加到就緒表中等待調(diào)度,若不存在則繼續(xù)查找直至Cur一Prio與Pre_Prio任務(wù)優(yōu)先級(jí)之間沒(méi)有中等優(yōu)先級(jí)掛起任務(wù),最后將信號(hào)量?jī)?yōu)先級(jí)反轉(zhuǎn)標(biāo)志清零。內(nèi)核正常調(diào)度,改進(jìn)算法如下:if(pevent->Convert_Flag!=0){for(查找就緒表){if(高低優(yōu)先級(jí)之間是否存在處于掛起態(tài)的任務(wù))if(((ptcb->OSTCBStat&=?OS—STAT一SUSPEND)-=OS—STAT—RDY)&&(ptcb->OSTCBDly==0)){將該任務(wù)插入就緒表;}}pevent->Pre_Prio=0;pevent->Cur_Prio=0;pevent->Convert_Flag=0;}3.4改進(jìn)后內(nèi)核的移植S3C44B0處理器支持中斷、多線程程序操作,內(nèi)部有足夠寄存器作為硬件堆棧,編譯器能產(chǎn)生可重入代碼,適合^iC/OS-II操作系統(tǒng)的移植。要將t^C/OS-II移植到S3C44B0處理器上,需要編寫(xiě)底層移植文件OS一CPU.H、OS_CPUj:.C、OS_CPU_A.Sc(1)宏定義頭文件OS_CPU.H該文件主要根據(jù)yC/OS-II提供的API標(biāo)準(zhǔn)接口對(duì)數(shù)據(jù)類(lèi)型重新定義,并定義與ARM體系結(jié)構(gòu)相關(guān)的堆棧類(lèi)型,其中包括:堆棧增長(zhǎng)方向、任務(wù)堆棧個(gè)數(shù)等。在該文件中進(jìn)行了開(kāi)中斷、關(guān)中斷的宏定義,為保證任務(wù)間資源共享且互不影響執(zhí)行。(2)匯編語(yǔ)言文件OS—CPU—A.S由于該文件中的函數(shù)直接對(duì)處理器進(jìn)行操作,所以該文件內(nèi)的程序需用匯編語(yǔ)言編-15- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

寫(xiě),其中包括任務(wù)調(diào)度、任務(wù)切換、幵關(guān)中斷等函數(shù)。(3)C語(yǔ)言文件OS_CPU_C.C在該文件中對(duì)用戶(hù)任務(wù)堆棧進(jìn)行初始以及系統(tǒng)相關(guān)硬件初始化、設(shè)定定時(shí)器作為時(shí)鐘節(jié)拍等函數(shù)。完成以上三個(gè)文件的編寫(xiě)基本實(shí)現(xiàn)了liC/OS-II操作系統(tǒng)的移植。-16- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

BPB

每族扇區(qū)數(shù)隱藏扇區(qū)數(shù)根目錄項(xiàng)數(shù)I每FAT占用扇區(qū)數(shù)IFATrw]["mniiiiiiCUD[ZZ:dZDCZDEZDCiz:]CZI][ZZ]口錄項(xiàng) 數(shù)據(jù)簇I文件名(name)jI擴(kuò)展名I符族巧-(02H)圖4.2FAT16文件系統(tǒng)結(jié)構(gòu)Fig.4.2FAT16filesystemstructure保留區(qū)位于第一個(gè)扇區(qū),其中定義了每簇扇區(qū)數(shù)、隱藏扇區(qū)數(shù)、根目錄項(xiàng)數(shù)、總共扇區(qū)數(shù)等用于記錄FAT表結(jié)構(gòu)參數(shù)的重要信息。FAT文件中數(shù)據(jù)信息的讀取以族為單位,F(xiàn)lash的讀寫(xiě)以扇區(qū)為單位,通過(guò)定義每簇扇區(qū)數(shù)將文件系統(tǒng)與硬件設(shè)備的讀寫(xiě)單元聯(lián)系起來(lái)。定義的根目錄項(xiàng)數(shù)確定了文件系統(tǒng)支持的最大根目錄數(shù)。FAT區(qū)占用扇區(qū)數(shù)決定了文件系統(tǒng)在單獨(dú)文件的情況下的文件容量。FAT區(qū)包含有兩張F(tuán)AT表,其中一張F(tuán)AT表作為系統(tǒng)的備份表。FAT1表被修改后,F(xiàn)AT2也會(huì)同步更新。在FAT16文件系統(tǒng)中,文件數(shù)據(jù)的存儲(chǔ)以族為單位,F(xiàn)AT表是一一對(duì)應(yīng)于數(shù)據(jù)區(qū)族號(hào)的列表,F(xiàn)AT表中每單元記錄的是文件所在的簇號(hào),F(xiàn)AT表從02簇號(hào)為起始,每個(gè)單元中內(nèi)容為該文件數(shù)據(jù)所在的下一個(gè)簇號(hào),這樣構(gòu)成簇鏈?zhǔn)降拇鎯?chǔ)結(jié)構(gòu),當(dāng)單元中記錄數(shù)據(jù)為FF時(shí),表明該文件結(jié)束。FAT表通過(guò)簇號(hào)確定文件的位置。根目錄區(qū)中目錄項(xiàng)每項(xiàng)32個(gè)字節(jié),根目錄區(qū)記錄了文件名、擴(kuò)展名、屬性、文件長(zhǎng)度、首族號(hào)等信息。系統(tǒng)通過(guò)文件名以及首族號(hào)來(lái)索引文件在Flash中的存儲(chǔ)位置。數(shù)據(jù)區(qū)設(shè)在根目錄區(qū)后,以簇為單位,用于存儲(chǔ)文件的數(shù)據(jù)信息。-18- 大連理工大學(xué)碩士學(xué)位論文

FAT文件系統(tǒng)查找文件的過(guò)程為:首先根據(jù)文件名在根目錄區(qū)中找到相應(yīng)的目錄項(xiàng),然后根據(jù)目錄項(xiàng)記錄的首簇號(hào)在FAT表區(qū)找到首簇號(hào)的位置,該位置所對(duì)應(yīng)的內(nèi)容為該文件的下一族的簇號(hào),通過(guò)FAT表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),直至找到最后一個(gè)簇號(hào)。最后通過(guò)FAT表中的簇號(hào)在數(shù)據(jù)區(qū)找到其對(duì)應(yīng)的位置后讀取數(shù)據(jù),實(shí)現(xiàn)了文件系統(tǒng)的數(shù)據(jù)查找。以上圖為例:應(yīng)用程序需讀取文件名為name的文件,首先從跟目錄區(qū)查找相關(guān)文件名,找到文件名為name目錄項(xiàng)后,查找該文件的首簇號(hào),該文件的首簇號(hào)是02H,這樣在FAT表中簇號(hào)為02的地址內(nèi)存放的數(shù)據(jù)內(nèi)容,內(nèi)容為03H表明,簇號(hào)03的地址內(nèi)也存放該文件數(shù)據(jù),這樣通過(guò)鏈?zhǔn)降牟檎?,知道族?hào)地址內(nèi)容為FFH為止,表明該文件結(jié)束。通過(guò)FAT表查找得知name的文件數(shù)據(jù)存放在簇號(hào)為02H、03H、04H三個(gè)簇內(nèi),最后通過(guò)讀取數(shù)據(jù)區(qū)內(nèi)相應(yīng)簇地址內(nèi)的數(shù)據(jù)信息。4.2.2文件系統(tǒng)移植yC/FS文件系統(tǒng)可實(shí)現(xiàn)FAT12/FAT16格式文件,uC/FS文件系統(tǒng)的分層關(guān)系模式分為應(yīng)用接口層、文件管理層、邏輯塊層、介質(zhì)驅(qū)動(dòng)層,文件系統(tǒng)層次分明,函數(shù)調(diào)用關(guān)系清晰,uC/FS文件系統(tǒng)的結(jié)構(gòu)如圖4.3所示。應(yīng)用程序;-- 4^^^嵌I 應(yīng)用接口層 丨&、丨 丨嵌SI I入^i 文件管理層 丨I件一zzzzmzzz:I件J! 邏輯塊層 iJ內(nèi)i I‘‘核丨 介質(zhì)驅(qū)動(dòng)層 丨——丄--:子—__硬件設(shè)備圖4.3yC/FS文件系統(tǒng)體系結(jié)構(gòu)圖Fig.4.3StructurediagramofyC/FSfilesystem移植文件系統(tǒng)前首先掌握目前存儲(chǔ)器的相關(guān)信息,根據(jù)存儲(chǔ)器的相關(guān)信息確定文件系統(tǒng)的存儲(chǔ)容量、每簇大小、本系統(tǒng)釆用4M容量的Flash存儲(chǔ)器,每扇區(qū)512字節(jié),設(shè)定每族扇區(qū)數(shù)為1,即每族大小為512字節(jié)。由于4M的存儲(chǔ)空間需要分配2M空間用作程序代碼存儲(chǔ),剩余的2M空間中用1M空間可作為文件系統(tǒng)。文件系統(tǒng)在Flash中所占的空間為1M-2M之間的存儲(chǔ)區(qū),文件系統(tǒng)在Flash的起始地址為0x100000。本-19- 大連理工大學(xué)碩士學(xué)位論文

4車(chē)載操作系統(tǒng)平臺(tái)構(gòu)建uC/OS-II只為操作系統(tǒng)內(nèi)核,并不能作為整個(gè)系統(tǒng)實(shí)現(xiàn)復(fù)雜的應(yīng)用功能需求,所以需要移植文件系統(tǒng)、圖形界面系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)構(gòu)成完整的嵌入式系統(tǒng)操作平臺(tái)。4.1BootLoader設(shè)計(jì)在欺入式系統(tǒng)中,系統(tǒng)上電后程序從起始地址運(yùn)彳了。系統(tǒng)會(huì)將Bootloader程序放在該地址中,由Bootloader完成整個(gè)系統(tǒng)的加載任務(wù)。因此Bootloader決定系統(tǒng)硬件資源的分配,中斷向量設(shè)置,內(nèi)存空間的分配以及應(yīng)用程序的執(zhí)行,本系統(tǒng)的BootLoader設(shè)計(jì)流程如圖4.1所示。C^“)

、丄乂 中斷系統(tǒng)頻率設(shè)置設(shè)置中斷向量表 ^

I—— 堆找初始化關(guān)-麵二超觀I將Flasl4的程序i 拷入R^M中設(shè)置看門(mén)狗’非緩沖 ^

^ 將全局變量初始化進(jìn)行硬“口設(shè)一,B」。ader、、結(jié)束j圖4.1Bootloader設(shè)計(jì)流程圖Fig.4.1DesignflowofBootJoader4.2文件系統(tǒng)的實(shí)現(xiàn)本系統(tǒng)中選擇FAT16文件格式存儲(chǔ)數(shù)據(jù)信息,將yC/FS文件系統(tǒng)移植入Flash存儲(chǔ)器上作為系統(tǒng)的文件系統(tǒng)。4.2.1FAT16文件系統(tǒng)架構(gòu)FAT16是用來(lái)記錄文件在Flash的存儲(chǔ)位置的表格,F(xiàn)AT16是以16位的尋址方式査找定位的族鏈?zhǔn)浇Y(jié)構(gòu),F(xiàn)AT16最大的尋址范圍為2GB,本系統(tǒng)中Flash的容量為4MB,滿足系統(tǒng)設(shè)計(jì)需求。FAT16文件系統(tǒng)由保留區(qū)、FAT區(qū)、根目錄區(qū)、數(shù)據(jù)區(qū)組成,F(xiàn)AT16結(jié)構(gòu)如圖4.2所示。-17- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

系統(tǒng)Flash存儲(chǔ)器為16位尋址方式,需將文件系統(tǒng)的8位尋址方式經(jīng)過(guò)轉(zhuǎn)換成16位后進(jìn)行相應(yīng)讀寫(xiě)操作。Flash每塊的容量為8KB,以塊為單位進(jìn)行對(duì)Flash進(jìn)行一次性讀寫(xiě)可以減少Flash的擦寫(xiě)次數(shù),延長(zhǎng)Hash的使用壽命。故根據(jù)設(shè)計(jì)需求在對(duì)Flash進(jìn)行格式化時(shí)確定了文件系統(tǒng)的引導(dǎo)扇區(qū)的相關(guān)信如表4.1所示。表4.1保留區(qū)相關(guān)參數(shù)設(shè)定Tab.4.1BPBparameterssetting保留區(qū)相關(guān)參數(shù) 個(gè)數(shù) —

每簇扇區(qū)數(shù)0x01隱藏扇區(qū)數(shù)0x0001根目錄項(xiàng)數(shù)0x0040總扇區(qū)數(shù)0x1000 每FAT占用扇區(qū)數(shù) 0x0002

編寫(xiě)相關(guān)Flash讀寫(xiě)驅(qū)動(dòng)函數(shù),通過(guò)文件系統(tǒng)中層次之間的調(diào)用完成文件系統(tǒng)在Flash存儲(chǔ)器上的移植。應(yīng)用程序通過(guò)調(diào)用文件系統(tǒng)上層函數(shù)來(lái)讀取數(shù)據(jù)信息,上層函數(shù)通過(guò)各層之間的函數(shù)調(diào)用關(guān)系將調(diào)用底層讀寫(xiě)Flash函數(shù)對(duì)存儲(chǔ)器進(jìn)行操作。由于Flash存儲(chǔ)器是以塊為單位進(jìn)行數(shù)據(jù)擦除的,為減少Flash的擦寫(xiě)次數(shù),申請(qǐng)與Flash塊容量大小相同的緩沖區(qū),當(dāng)數(shù)據(jù)信息寫(xiě)滿一塊后,一并寫(xiě)入Flash中,延長(zhǎng)的儲(chǔ)存器的使用壽命。Flash驅(qū)動(dòng)層文件flash—drv.c:該文件的主要功能實(shí)現(xiàn)了Hash底層驅(qū)動(dòng)與上層文件的鏈接,通過(guò)定義存儲(chǔ)設(shè)備類(lèi)型結(jié)構(gòu)體FS—flashdevice—driver,來(lái)實(shí)現(xiàn)上層函數(shù)對(duì)底層的訪問(wèn)。結(jié)構(gòu)體定義描述如下:constFS—device一typeFS—flashdevice—driver={"FLA^Hdevice",—//設(shè)備、區(qū)動(dòng)名稱(chēng)—FS—FLASH—DevStatus,//FS檢測(cè)設(shè)備狀態(tài)_FS_FLASH_DevRead,//FS設(shè)備讀驅(qū)動(dòng)_FS_FLASH_DevWrite,//FS設(shè)備寫(xiě)驅(qū)動(dòng)FSFLASHDevIoCtl//FS設(shè)備控制};該結(jié)構(gòu)+_FS_FLASH_DevReadO為從存儲(chǔ)器中讀取數(shù)據(jù)函數(shù),該函數(shù)通過(guò)調(diào)用flash—x—hx.c文件中的FS—FLASH—ReadSectorO函數(shù)實(shí)現(xiàn)文件系統(tǒng)對(duì)于底層Flash的驅(qū)動(dòng)flash—Read—sectorO函數(shù)的調(diào)用,讀取Flash相應(yīng)頁(yè)中的數(shù)據(jù)。_FS_FLASH_DevIoCt丨0為功能控制函數(shù),其中的FS—CMD—FLUSH—CACHE命令為文件系統(tǒng)緩沖區(qū)操作命令,該命令先不將每頁(yè)數(shù)據(jù)寫(xiě)入Flash中,而是將數(shù)據(jù)存儲(chǔ)到-20- 大連理工大學(xué)碩士學(xué)位論文

緩沖區(qū)中,在關(guān)閉文件時(shí),對(duì)緩沖區(qū)數(shù)據(jù)進(jìn)行處理,調(diào)用flash_x—hx.c文件中的write一cached一data()函數(shù),實(shí)現(xiàn)文件系統(tǒng)對(duì)于底層Flash的驅(qū)動(dòng)函數(shù)調(diào)用,最終完成Flash相應(yīng)塊的鎖定,擦除以及寫(xiě)入數(shù)據(jù)的功能。文件系統(tǒng)函數(shù)層次調(diào)用關(guān)系如圖4.4所示。flash_drv.c flash_x_hx.c nflash.cPCFTACT4rvT^rtiIIIIunlock—one一blockO(FS'CMDFLUSHCACHE)write—cached_data()=^>erasejlock—arndg、—- - '一 flashWrite.sectorQ

—FS_FLASH_DevReadO〉FS—FLASH_WriteSectorQ〉flash_Read_sector()圖4.4文件系統(tǒng)函數(shù)調(diào)用關(guān)系圖Fig.4.4Callgraphoffilesystemfiinction4.2.3文件系統(tǒng)壞塊查找完成文件系統(tǒng)移植后,為完善文件系統(tǒng)使用性能,保證數(shù)據(jù)存的可靠性,但Hash可能產(chǎn)生壞塊。這會(huì)造成塊擦除時(shí)出現(xiàn)錯(cuò)誤無(wú)法得到正確結(jié)果。在存儲(chǔ)數(shù)據(jù)時(shí),F(xiàn)lash存儲(chǔ)器的讀寫(xiě)操作頻率非常高,可能使Flash—部分?jǐn)?shù)據(jù)塊由于被頻繁擦寫(xiě)而損壞。系統(tǒng)需要對(duì)壞塊進(jìn)行處理,保證數(shù)據(jù)讀寫(xiě)的可靠性。為此在Hash存儲(chǔ)器中將2M以后的部分空間作為壞塊備份空間,通過(guò)對(duì)Flash中作為文件系統(tǒng)的部分進(jìn)行塊遍歷進(jìn)行擦寫(xiě)并讀取擦寫(xiě)數(shù)據(jù),若回讀的數(shù)據(jù)不為FFH,說(shuō)明存儲(chǔ)器出現(xiàn)壞塊,并記錄該塊地址,用備份區(qū)中的地址代替,直至:Flash文件系統(tǒng)存儲(chǔ)地址空間遍歷為止。在上層應(yīng)用程序與對(duì)壞塊之地操作時(shí),將數(shù)據(jù)寫(xiě)入備份地址中,完成壞塊的替換,保證文件系統(tǒng)正常操作,壞塊查找結(jié)構(gòu)體以及壞塊查找代碼如下所示:typedefstruct{FS_ul6Num_Badblock; //壞塊個(gè)數(shù)FS_u32Addr_Badblock[256]; //壞塊地址FSja32Addr_Reserveblock[256];//備份區(qū)地址}FS—Badblock—Index;/*FS—Check—BadblockO函數(shù)功能為查找壞塊地址并用備份地址替代*/voidFS一Check—Badblodc(FSJBadblock—IndexFind—Badblock){for(count_block=0;count_block<256;count_block++)//IM空間內(nèi)進(jìn)行塊遍歷{將每塊進(jìn)行數(shù)據(jù)擦除寫(xiě)入OxFF;for(count_page=0;count_page<16;count_page++)//塊空間內(nèi)進(jìn)行頁(yè)遍歷{讀取每頁(yè)數(shù)據(jù);if(OxFF!-buffer[i]) //判斷頁(yè)內(nèi)容是否為OxFF-21- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

{保存壞塊地址;壞塊個(gè)數(shù)加1;用備份區(qū)地址替代壞塊;}4.3圖形界面系統(tǒng)的實(shí)現(xiàn)圖形界面系統(tǒng)作為嵌入式系統(tǒng)的輸出設(shè)備,直觀反映了當(dāng)前系統(tǒng)運(yùn)行狀態(tài)與系統(tǒng)的性能,而觸摸屏即可作為輸出設(shè)備又可作為輸入設(shè)備節(jié)約嵌入式設(shè)備占用空間,C/GUI圖形界面系統(tǒng)將觸摸屏的輸入功能與輸入功能結(jié)合為同一的整體,并提供系統(tǒng)化的顯示界面。4.3.1UC/GUI圖形系統(tǒng)架構(gòu)tiC/GUI是針對(duì)嵌入式系統(tǒng)的圖形軟件,采用模塊化分層結(jié)構(gòu)設(shè)計(jì),代碼由C語(yǔ)言編寫(xiě),可以移植到任意處理器上。功能模塊主要包括LCD驅(qū)動(dòng)模塊,GUI內(nèi)核模塊,視窗管理器模塊,窗口控件模塊,和觸摸屏及字體和位圖等模塊,liC/GUI設(shè)計(jì)架構(gòu)如圖4.5所示。iiC/GUI系統(tǒng)支持多任務(wù)與多窗口機(jī)制,提供了豐富的圖形字體庫(kù)與窗口控件類(lèi),并支持鼠標(biāo)、觸摸屏等功能。應(yīng)用層I字體與位圖J

觸摸屏 窗口控件視窗管理器內(nèi)存設(shè)備GUI內(nèi)核抗鋸齒 LCD驅(qū)動(dòng)圖4.5PC/GU1系統(tǒng)架構(gòu)Fig.4.5SystemframeworkofPC/GUILCD驅(qū)動(dòng)模塊包含很多類(lèi)型LCD顯示器的驅(qū)動(dòng)程序與接口函數(shù)。便于用戶(hù)根據(jù)系統(tǒng)LCD型號(hào)選擇合適的或者相近的驅(qū)動(dòng)程序完成顯示器的移植。-22- 大連理工大學(xué)碩士學(xué)位論文

抗鋸齒模塊用于優(yōu)化處理顯示圖形的邊緣鋸齒效果,在圖形顯示過(guò)程中,圖形的轉(zhuǎn)動(dòng)可能會(huì)造成圖像邊緣出現(xiàn)鋸齒現(xiàn)象,抗銀齒模塊通過(guò)將前景色與背景色相融合,使圖形邊緣平滑,減少的圖形的失真現(xiàn)象。GUI內(nèi)核模塊是圖形界面系統(tǒng)的核心部分,其中包含GUI對(duì)點(diǎn)、線、區(qū)域的繪制的繪圖函數(shù);GUI顯示字體,文本,數(shù)字,字符串旳相關(guān)函數(shù);GUI支持鼠標(biāo),觸摸屏等功能函數(shù);這些功能函數(shù)實(shí)現(xiàn)圖形界面系統(tǒng)的最基本的顯示個(gè)功能,使GUI構(gòu)成一個(gè)完整的顯示系統(tǒng)。內(nèi)存設(shè)備模塊主要功能為防止在繪制重疊圖像時(shí)出現(xiàn)的閃爍現(xiàn)象,若顯示系統(tǒng)不支持存儲(chǔ)設(shè)備,在繪制重疊圖像時(shí),重疊的繪制會(huì)導(dǎo)致顯示屏出現(xiàn)閃爍現(xiàn)象。支持存儲(chǔ)設(shè)備后相關(guān)操作會(huì)在存儲(chǔ)區(qū)內(nèi)進(jìn)行,操作完畢后再將數(shù)據(jù)傳送到顯示屏上,避免了閃爍現(xiàn)象的發(fā)生,為系統(tǒng)提供更好的顯示效果。視窗管理器模塊實(shí)現(xiàn)了系統(tǒng)的窗口顯示功能,并且提供一整套函數(shù)支持對(duì)窗進(jìn)行創(chuàng)建、移動(dòng)等操作。并且管理器可同時(shí)顯示多個(gè)窗口為用戶(hù)可視化管理帶來(lái)便捷。窗口控件模塊為系統(tǒng)提供了豐富的控件支持,控件支持的函數(shù)與視窗管理器相結(jié)合,通過(guò)窗口回調(diào)機(jī)制實(shí)現(xiàn)系統(tǒng)的功能切換,為用戶(hù)個(gè)性化顯示設(shè)計(jì)提供充分的條件。觸摸屏模塊實(shí)現(xiàn)功能類(lèi)似與windows下的鼠標(biāo)功能,通過(guò)觸摸屏模塊顯示系統(tǒng)讀取用戶(hù)輸入的坐標(biāo)信息,并將信息封裝成鼠標(biāo)信息顯示在顯示器上,并將所在位置信息與其相應(yīng)的空間想結(jié)合完成用戶(hù)設(shè)備的控制。字體與位圖模塊中系統(tǒng)提供位圖轉(zhuǎn)化器可在PC下將圖形轉(zhuǎn)化為GUI可識(shí)別相關(guān)的數(shù)據(jù)結(jié)構(gòu),縮短開(kāi)發(fā)人員的開(kāi)發(fā)周期。并通過(guò)模塊相應(yīng)函數(shù)實(shí)現(xiàn)對(duì)圖像信息的顯示。4.3.2tiC/GUI系統(tǒng)移植將yC/GUI顯示系統(tǒng)應(yīng)用于嵌入式設(shè)備中,移植主要針對(duì)LCD底層驅(qū)動(dòng)與UC/OS-II操作系統(tǒng)兩方面。(1) LCD底層驅(qū)動(dòng)設(shè)計(jì)處理器通過(guò)對(duì)內(nèi)部LCD控制器進(jìn)行配置,將LCD設(shè)置為256色彩色模式,8位單掃描方式。LCD屏水平尺寸為320,垂直尺寸240,以及設(shè)定掃描頻率,設(shè)置抖動(dòng)模式寄存器,使顯示為最佳效果。申請(qǐng)LCD顯示緩存區(qū)Buffer大小為320X240。當(dāng)LCD需顯示數(shù)據(jù)時(shí),控制器需將顯示內(nèi)容存儲(chǔ)到緩沖區(qū)內(nèi),之后以幀的形式顯示在顯示器上,將處理器LCD初始化程序作為yC/GU1系統(tǒng)LCD控制器初始化程序,緩沖區(qū)同樣作為tiC/GUI緩存。(2) iiC/GUI相關(guān)參數(shù)配置根據(jù)LCD顯示器的特性,對(duì)yC/GUI進(jìn)行相關(guān)配置,其中包括liC/GUI屏幕顯示-23- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

尺寸,每點(diǎn)像素使用位數(shù),LCD控制器選擇,RGB顏色設(shè)定以及對(duì)GUI各模塊支持使能等設(shè)定定義如表4.2所示。UC/GUI的LCD控制選擇為與S3C44B0控制器相似的1375型的LCD控制器,這樣可以簡(jiǎn)化系統(tǒng)移植步驟,只需S3C44B0LCD控制器顯示緩存區(qū)的地址賦給1375控制器讀寫(xiě)存儲(chǔ)空間的地址,即可完成緩存區(qū)分配問(wèn)題。配置中將S3C44B0LCD控制器的初始化程序設(shè)定為C/GUI1375LCD初始化程序,通過(guò)以上步驟即可完成LCD底層驅(qū)動(dòng)的結(jié)合問(wèn)題,使PC/GUI可控制S3C44B0LCD顯示器的相應(yīng)操作功能。表4.2yC/GUILCD參數(shù)配置Tab.4.2ParameterconfigurationofLCDinwC/GUItiC/GUI參數(shù)配置 設(shè)定值LCD—XSIZE //水平尺寸 ^LCD_YSIZE //垂直尺寸 240LCD_BITSPERPIXEL //每點(diǎn)像素位數(shù) 8LCD_CONTROLLER //控制器選擇 1375LCD_FIXEDPALETTE //RGB設(shè)定 323LCD_BUSWIDTH //總線寬度 8LCD_IMT_CONTROLLER() //初始化程序 LcdJnitQUC/GUI設(shè)定為支持操作系統(tǒng),如表4.3所示設(shè)定顯示系統(tǒng)可最大支持任務(wù)數(shù)為4,自行設(shè)計(jì)的字體為系統(tǒng)的默認(rèn)字體,uC/GUI分配12500大小控件作為窗口的內(nèi)存,使uC/GUI支持虛擬窗口顯示功能。通過(guò)各模塊配置,使得UC/GUI滿足嵌入式系統(tǒng)設(shè)計(jì)需求。表4.3UC/GUI模塊相關(guān)配置Tab.4.3ModuleconfigurationofuC/GUI—PC/GUI參數(shù)配置 設(shè)定值GUI—OS‘//操作系統(tǒng)支持 iGU1_SUPP0RT_T0UCH//觸摸屏支持 1GUI_MAXTASK//最大任務(wù)數(shù) 4GUI—DEFAULT—FONT//支持字體 &GUI_FontHZ12GUI—ALLOC—SIZE//內(nèi)存分配 12500GUI_WINSUPPORT//窗口支持 1GUI_SUPPORT_MEMDEV//存儲(chǔ)器支持 1GUI_SUPPORT_AA //抗銀齒支持 1

(3)uC/OS-II接口相關(guān)配置uC/GU丨支持多任務(wù)調(diào)度,為保證上下文切換時(shí)保護(hù)共享資源,GUI通過(guò)上鎖-24- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

觸摸屏Y+i iJIr‘IIX_AD i Y電極 i Hx-! X X1■>、一"I~電 電一Ii丨極 極丨 J丨 Y電極 iYADiIi 1I~II 丨IIIx+ "‘圖4.8觸摸屏連接框圖Fig.4.8Connectiondiagramoftouchscreen(1)觸摸屏電壓信息采集電阻式觸摸屏為顯示器上的兩層導(dǎo)電薄膜,兩層薄膜隔離層中有許多隔離點(diǎn)。在電阻式觸摸屏中,電極兩端分別接高低電平,當(dāng)某一層薄膜上電時(shí)會(huì)在兩極之間產(chǎn)生電壓梯度,當(dāng)觸摸屏被按壓時(shí),兩層導(dǎo)電薄膜接觸,在未上電的另一層薄膜上可測(cè)得觸點(diǎn)的電壓值。如圖4.8所示,當(dāng)Y電極上電時(shí),按下觸摸屏,兩層薄膜接觸,由于X極未上電,在X極層電壓信號(hào)經(jīng)過(guò)AD轉(zhuǎn)換獲得的數(shù)字信息為與Y軸坐標(biāo)位置相關(guān)的數(shù)據(jù)信息。X極同理。觸摸屏通過(guò)兩層電極分別上電獲得X,Y坐標(biāo)相關(guān)信息。系統(tǒng)將處理器外部中斷與X電極相連,并設(shè)定外部中斷為下降沿觸發(fā)模式,當(dāng)觸摸屏被按壓后,外部中斷接收信號(hào)產(chǎn)生中斷。系統(tǒng)處理通過(guò)兩個(gè)A/D轉(zhuǎn)換端口傳送的數(shù)據(jù)信息進(jìn)行處理。(2)觸摸屏坐標(biāo)信息校準(zhǔn)觸摸屏產(chǎn)生電壓信號(hào)后,兩極電壓值分別經(jīng)16次A/D轉(zhuǎn)換取平均值后轉(zhuǎn)變成數(shù)字信號(hào)。為使數(shù)字信息與觸摸屏坐標(biāo)值相匹配,需進(jìn)行校準(zhǔn)工作,本系統(tǒng)采用兩點(diǎn)校準(zhǔn)法進(jìn)行線性校準(zhǔn)。將觸摸屏左上角坐標(biāo)(10,10),右下角坐標(biāo)(310,230)的X軸、Y軸電壓數(shù)值信息。取平均值獲得觸摸屏X,Y兩極最大最小電壓信息的數(shù)字量。由于電壓降成線性關(guān)系,固當(dāng)觸摸屏按下某一點(diǎn)時(shí),獲取的電壓信息與兩端坐標(biāo)的電壓信息成比例關(guān)系,即可獲得當(dāng)前觸點(diǎn)的坐標(biāo)值。(3)觸摸屏坐標(biāo)信息封裝當(dāng)處理器采集到觸摸屏觸點(diǎn)坐標(biāo)信息后,將觸摸屏的坐標(biāo)信息封裝成為鼠標(biāo)信息,即將觸摸屏的觸點(diǎn)坐標(biāo)值賦值給建立的鼠標(biāo)控件中,并將鼠標(biāo)狀態(tài)設(shè)為被按下?tīng)顟B(tài)。這樣在顯示器上便及時(shí)顯示出鼠標(biāo)來(lái)表示當(dāng)前按壓的觸點(diǎn)位置,完成了觸摸屏坐標(biāo)信息封裝。為使鼠標(biāo)信息及時(shí)獲取到觸摸屏觸點(diǎn)位置的更新信息,鼠標(biāo)信息要及時(shí)釋放掉前一次得到的觸摸屏信息并將狀態(tài)該為空閑,以便獲取下一次觸摸屏信息。-26- 大連理工大學(xué)碩士學(xué)位論文

4.4LwIP協(xié)議錢(qián)的移植與實(shí)現(xiàn)將嵌入式設(shè)備聯(lián)網(wǎng)實(shí)現(xiàn)設(shè)備間通訊,為用戶(hù)使用設(shè)備帶來(lái)極大的便捷。但由于網(wǎng)絡(luò)功能復(fù)雜,嵌入式設(shè)備資源有限,為部分實(shí)現(xiàn)網(wǎng)絡(luò)通訊功能,本系統(tǒng)將TCP/IP協(xié)議棧移植入嵌入式系統(tǒng)中作為網(wǎng)絡(luò)模塊。4.4.1LwIP協(xié)議錢(qián)架構(gòu)LwIP是專(zhuān)門(mén)為嵌入式系統(tǒng)開(kāi)發(fā)的TCP/IP協(xié)議錢(qián),占用資源少,便于移植到操作系統(tǒng)當(dāng)中。LwlP按照分層結(jié)構(gòu)思想設(shè)計(jì),與其他網(wǎng)絡(luò)協(xié)議相同LwIP分為網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層與應(yīng)用層。針對(duì)嵌入式系統(tǒng),LwIP提供相關(guān)模塊支持包括內(nèi)存管理模塊與操作系統(tǒng)模擬模塊等,LwIP系統(tǒng)架構(gòu)如圖4.9所示。TCP/IP應(yīng)用程序 I操 LwIPAP丨接口 緩作 沖系 與統(tǒng) UDP協(xié)議TCP協(xié)議 內(nèi)模 存擬 管層 IP協(xié)議1CMP協(xié)議ARP協(xié)議 理網(wǎng)絡(luò)接口 I圖4.9LwIP體系結(jié)構(gòu)Fig.4.9StructrueofLwIP應(yīng)用層提供一些網(wǎng)絡(luò)軟件服務(wù),使用戶(hù)通過(guò)應(yīng)用層訪問(wèn)網(wǎng)絡(luò)系統(tǒng),包括Http,F(xiàn)tp,Telnet等協(xié)議軟件。傳輸層為用戶(hù)提供端到端服務(wù),包含UDP模塊與TCP模塊,通過(guò)端口實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)通訊。網(wǎng)絡(luò)層實(shí)現(xiàn)數(shù)據(jù)分組轉(zhuǎn)發(fā)到目標(biāo)地址,其中包含IP模塊,ICMP模塊,ARP模塊。ARP模塊完成目的IP地址與MAC地址之間的映射,IP模塊完成IP數(shù)據(jù)包的接收,發(fā)送,轉(zhuǎn)發(fā)等功能。網(wǎng)絡(luò)接口層為以太網(wǎng)卡驅(qū)動(dòng)程序編寫(xiě)提供函數(shù)接口,便于LwIP移植到網(wǎng)卡上,使數(shù)據(jù)在硬件設(shè)備上傳送。LwIP的操作系統(tǒng)模擬層提供進(jìn)程間通信接口函數(shù),修改接口函數(shù)即可完成相應(yīng)操作系統(tǒng)移植。-27- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

內(nèi)存管理模塊提供內(nèi)存與緩沖空間為設(shè)備使用。本系統(tǒng)中主要通過(guò)TCP/IP協(xié)議完成網(wǎng)絡(luò)間通訊,系統(tǒng)發(fā)送數(shù)據(jù)時(shí)LwIP將數(shù)據(jù)分段,逐層封裝后發(fā)送到網(wǎng)卡設(shè)備;接收數(shù)據(jù)時(shí)LwIP將數(shù)據(jù)重組,逐層拆包后為應(yīng)用層使用。LwIP的TCP/IP通訊進(jìn)程如圖4.10所示。應(yīng)用程序? 二:‘tcp_write() /tcp_receive() 傳輸層士 /、=tcp_enqueue() / tcp_process()-I/廠tcp_output tcp_input()ip_route() ip_output_if() Ip_input() 網(wǎng)絡(luò)戸一… :―丄—_____‘二netif_output() netif—input。|網(wǎng)絡(luò)接口層圖4.10TCP通訊進(jìn)程圖Fig.4.10CommunicationprocessdiagramofTCP4.4.2LwIP協(xié)議棧移植將LwIP協(xié)議棧移植入嵌入式系統(tǒng)當(dāng)中,移植主要針對(duì)C/OS-II操作系統(tǒng)與網(wǎng)卡驅(qū)動(dòng)兩方面。(1)與UC/OS-II操作系統(tǒng)接口LwIP的操作系統(tǒng)模擬層提供進(jìn)程間通信接口函數(shù)。將LwIP移植入U(xiǎn)C/OS-II操作系統(tǒng)中,以信號(hào)量機(jī)制為例,在LwIP中通過(guò)信號(hào)量的等待與釋放保證任務(wù)同步,其函數(shù)調(diào)用關(guān)系如圖4.11所示。LwIP UC/OS-IIsys_sem_new(count) 〉pSem=OSSemCreate(count)sys—sem—signal(pSem) OSSemPost(pSem)sys_arch_sem_wait(pSem)〉OSSemPend(pSem)圖4.11LwIP信號(hào)量函數(shù)調(diào)用關(guān)系Fig.4.11SignalfunctioncallofLwIP-28- 大連理工大學(xué)碩士學(xué)位論文

GUI_X_LockO與解鎖GUI_X—UnlockO函數(shù)來(lái)實(shí)現(xiàn)共享資源的保護(hù)。該功能與C/OS-II中信號(hào)量的調(diào)用機(jī)制一致,如圖4.6所示GUI上鎖與解鎖函數(shù)是通過(guò)調(diào)用UC/OS-II信號(hào)量相關(guān)函數(shù)實(shí)現(xiàn)其功能。UC/GUI WC/OS-IIGUI_X_GetTaskld()=j)[(OSTCBCur->OSTCBPrio)GUI_X_lnitOS() 二=0DispSem=OSSemCreate(l)GUI_X_Unlock() OSSemPost(DispSem)GUI_X_Lock() OSSemPend(DispSem)圖4.6uC/GUI系統(tǒng)相關(guān)函數(shù)Fig.4.6SystemfunctionofPC/GUI在GUI系統(tǒng)中對(duì)于窗口相應(yīng),以及其他窗口的任務(wù)調(diào)度需要延時(shí)等其他時(shí)間相關(guān)操作,GUI時(shí)間管理功能是通過(guò)調(diào)用C/OS-II相應(yīng)的時(shí)間調(diào)用函數(shù)實(shí)現(xiàn)的,如圖4.7所示。UC/GUI 口C/OS-IIGUI_X_GetTime()==^ OSTimeGetQGUI_X_Delay(Period) OSTimeDly(Period)GUI_X—ExecIdleO =[> OSTimeDly(l)圖4.7UC/GUI時(shí)間相關(guān)函數(shù)Fig.4.7TimefunctionofyC/GUI通過(guò)對(duì)處理器LCD配置,GUI系統(tǒng)模塊配置以及與yC/OS-II接口設(shè)定,系統(tǒng)即可完成yC/GUI的移植,C/GUI可實(shí)現(xiàn)基本的顯示功能。4.3.3觸摸屏實(shí)現(xiàn)UC/GUI對(duì)觸摸屏模塊的支持,可實(shí)現(xiàn)觸摸屏設(shè)備的應(yīng)用。本系統(tǒng)采用的是電阻式觸摸屏,將觸摸屏與處理器外部中斷相連,并且將觸摸屏產(chǎn)生的電壓信號(hào)在處理器進(jìn)行A/D轉(zhuǎn)換,將模擬信號(hào)轉(zhuǎn)換成電壓信號(hào),實(shí)現(xiàn)對(duì)輸入信號(hào)的信息采集,觸摸屏連接結(jié)構(gòu)框圖如圖4.8所示。-25* 大連理工大學(xué)碩士學(xué)位論文

LwIP中郵箱機(jī)制調(diào)用關(guān)系與信號(hào)量機(jī)制類(lèi)似,但是在LwIP中郵箱信息以隊(duì)列的形式存儲(chǔ),uC/OS-II通過(guò)內(nèi)存管理模塊分配一定空間給郵箱隊(duì)列,并通過(guò)創(chuàng)建,占用,釋放等操作完成空間的動(dòng)態(tài)分配,保證了郵箱消息的緩沖與數(shù)據(jù)傳遞。LwIP通過(guò)獲得和發(fā)送郵箱信息,完成任務(wù)間的消息傳遞。LwIP為每個(gè)網(wǎng)絡(luò)線程都提供一個(gè)等待超時(shí)計(jì)時(shí)器,作為當(dāng)前線程超時(shí)等待時(shí)間標(biāo)準(zhǔn),根據(jù)系統(tǒng)需求會(huì)帶有相關(guān)的超時(shí)回調(diào)處理函數(shù),線程超時(shí)后會(huì)調(diào)用該函數(shù)執(zhí)行設(shè)定操作。若該線程的等待時(shí)間為空,則說(shuō)明該線程對(duì)鏈接永遠(yuǎn)等待。(2)LwIP網(wǎng)卡移植本系統(tǒng)采用的是CS8900網(wǎng)卡,將網(wǎng)卡接收中斷端口與嵌入式處理器的外部中斷相連接,有數(shù)據(jù)接收時(shí)引發(fā)中斷進(jìn)入處理程序。CS8900為16位尋址方式,將LwIP協(xié)議移植在網(wǎng)卡上需對(duì)網(wǎng)卡進(jìn)行初始化,與收發(fā)數(shù)據(jù)等程序的編寫(xiě)。網(wǎng)卡初始話函數(shù)主要負(fù)責(zé)芯片重啟確保芯片正常工作,并對(duì)網(wǎng)卡的物理地址,接收巾貞格式以及工作模式等相關(guān)參數(shù)進(jìn)行設(shè)置。并且開(kāi)啟中斷,數(shù)據(jù)收發(fā)功能。網(wǎng)卡初始化流程如圖4.12所示。(附,跳)設(shè)置中斷端口—^— 設(shè)置接收中斷重啟芯片 ^

i幵啟發(fā)送設(shè)置網(wǎng)卡接收功能物理地址★—

Tiq使能中斷設(shè)置接收幀格式 -T-

7]■①設(shè)置全T工模式I (M圖4.12網(wǎng)卡初始化流程圖Fig.4.12Initializationflowofnetworkcard在網(wǎng)卡初始化后,編寫(xiě)網(wǎng)卡收發(fā)數(shù)據(jù)相關(guān)函數(shù),接收函數(shù)中首先從寄存器中獲取接收數(shù)據(jù)長(zhǎng)度,之后開(kāi)始讀取數(shù)據(jù)將讀取的數(shù)據(jù)放入緩存中以備上層應(yīng)用程序調(diào)用。在數(shù)-29- 大連理工大學(xué)碩士學(xué)位論文

5車(chē)載終端任務(wù)設(shè)計(jì)5.1車(chē)載終端多任務(wù)流程隨著車(chē)輛日益普及,城市建設(shè)導(dǎo)致道路交錯(cuò)復(fù)雜,駕駛員對(duì)GPS車(chē)載導(dǎo)航系統(tǒng)更為依賴(lài),電子地圖作為車(chē)載導(dǎo)航設(shè)備的主要功能,為駕駛員提供正確的道路信息,方便快捷的指示用戶(hù)到達(dá)目的地點(diǎn)。本系統(tǒng)以嵌入式平臺(tái)為基礎(chǔ),實(shí)現(xiàn)車(chē)載終端導(dǎo)航應(yīng)用,提供電子信息服務(wù)。本系統(tǒng)中車(chē)載終端作為車(chē)載結(jié)點(diǎn)設(shè)備,通過(guò)與GPS接收機(jī)相連獲得當(dāng)前設(shè)備的經(jīng)瑋度信息與時(shí)間速度等狀態(tài)信息。圖形界面系統(tǒng)實(shí)現(xiàn)實(shí)時(shí)顯示當(dāng)前位置圖形信息及速度時(shí)間等相關(guān)信息。文件系統(tǒng)設(shè)計(jì)將所需的重要數(shù)據(jù)如速度,時(shí)間,位置等信息進(jìn)行備份。網(wǎng)絡(luò)系統(tǒng)是通過(guò)建立的B/S模式服務(wù)器,通過(guò)網(wǎng)絡(luò)連接,將汽車(chē)當(dāng)前運(yùn)行信息傳輸?shù)叫畔⒅行钠脚_(tái),實(shí)現(xiàn)終端信息交互信息中心通過(guò)瀏覽器登錄終端網(wǎng)址提取相應(yīng)數(shù)據(jù),便于及時(shí)掌握當(dāng)前車(chē)輛運(yùn)行信息,對(duì)車(chē)輛進(jìn)行控制調(diào)度。車(chē)載終端應(yīng)用如圖5.1所示。^,域圖5.1車(chē)載終端應(yīng)用Fig.5.1Applicationofvehicleterminal5.2車(chē)載終端多任務(wù)調(diào)度依據(jù)車(chē)載設(shè)備功能需要,在操作系統(tǒng)內(nèi)核的基礎(chǔ)上通過(guò)擴(kuò)展支持圖形界面系統(tǒng),文件系統(tǒng),網(wǎng)絡(luò)系統(tǒng)使操作系統(tǒng)平臺(tái)更加健全,功能更加豐富。在構(gòu)建的操作系統(tǒng)平臺(tái)上實(shí)現(xiàn)上層車(chē)載終端應(yīng)用程序幵發(fā),實(shí)時(shí)為駕駛員提供導(dǎo)航位置信息等。UC/0S-I1內(nèi)核-31- 大連理工大學(xué)碩士學(xué)位論文

處于顯示狀態(tài),該任務(wù)的優(yōu)先級(jí)在系統(tǒng)中最低,保證在顯示任務(wù)仍提供畫(huà)面顯示的前提下,便于其他任務(wù)獲得CPU使用權(quán)限運(yùn)行。(1)電子地圖靜態(tài)顯示隨著城市不斷建設(shè),城市的道路信息日趨復(fù)雜為駕駛員的出行帶來(lái)諸多不變,電子科技的發(fā)展已經(jīng)使車(chē)載電子地圖已經(jīng)取代紙質(zhì)地圖成為駕駛?cè)藛T出行的必備條件。GIS可以很好的反映路況信息,GIS系統(tǒng)將城市地理信息按照點(diǎn)、線、面等地理類(lèi)型進(jìn)行分層管理。本系統(tǒng)在設(shè)計(jì)過(guò)程中通過(guò)使用Mapinfo軟件讀取大連市電子地圖信息。首先將wor格式的大連市電子地圖信息導(dǎo)入Mapinf中,通過(guò)Mapinfo軟件導(dǎo)出所需要的地理信息,考慮到嵌入式系統(tǒng)內(nèi)存限制本系統(tǒng)中電子地圖顯示的地理信息中面類(lèi)型信息包括區(qū)界、縣界、湖泊水庫(kù)、綠地;線類(lèi)型信息包括國(guó)道、高速公路、一級(jí)道路、二級(jí)道路、三級(jí)道路;點(diǎn)類(lèi)型信息包括城區(qū)地物信息。Mapinfo軟件中為幵發(fā)人員開(kāi)發(fā)提供的數(shù)據(jù)格式主要有mid與mif兩種文件格式:mid文件中主要包含了某類(lèi)型地理信息對(duì)象中的各成員的名稱(chēng)屬性;mif文件中主要包含了該類(lèi)型地理信息對(duì)象的各成員經(jīng)諱度坐標(biāo)信息,成員個(gè)數(shù),每個(gè)成員中的元素以及該成員的繪制信息。通過(guò)對(duì)以上兩個(gè)文件的分析,編寫(xiě)程序讀取地理信息數(shù)據(jù)。以高速公路數(shù)據(jù)信息為例,設(shè)計(jì)程序?qū)崿F(xiàn)電子地圖數(shù)據(jù)顯示。定義道路類(lèi)結(jié)構(gòu)體及調(diào)用關(guān)系如圖5.3所不。MapLine=^pMLs;//折線數(shù)據(jù) MyPoint—lt*points; ^edefstruct{intSCount;//多少條折線 經(jīng)―標(biāo)數(shù)-mtcolor;//線條1?顏色 IntLcount;//折線的點(diǎn)數(shù) P^int'Itmct,char*Sname//折線名稱(chēng) char*Lname;//名稱(chēng) 占|玉據(jù)6±知’}MapLineSet;//折線集合結(jié)構(gòu)體}MapLine;圖5.3道路信息結(jié)構(gòu)體及調(diào)用關(guān)系Fig,5.3Roadinformationstructureandcallrelationship由于高速公路為線類(lèi)型結(jié)構(gòu),高速公路信息在mif文件中主要由三條路段組成,每條路段都是由多組的經(jīng)瑋度坐標(biāo)點(diǎn)的折線以及該路段名稱(chēng)構(gòu)成,首先定義高速公路類(lèi)集合結(jié)構(gòu)體其成員包含高速公路類(lèi)名稱(chēng),高速公路的顏色,高速公路由多少條路段構(gòu)成以及每路段的數(shù)據(jù)指針。路段的數(shù)據(jù)指針指向路段結(jié)構(gòu)體,該結(jié)構(gòu)體主要定義了每條路段-- 基于嵌入式平臺(tái)的車(chē)載終端設(shè)計(jì)與應(yīng)用

依據(jù)不同功能特性不同,將各功能劃分為不同的任務(wù),通過(guò)內(nèi)核實(shí)現(xiàn)多任務(wù)調(diào)度。如圖5.2所示,系統(tǒng)通過(guò)LCD顯示器顯示釆集到的數(shù)據(jù)信息,并提供電子地圖為用戶(hù)提供導(dǎo)航服務(wù),由于系統(tǒng)時(shí)刻處于顯示狀態(tài)固將該任務(wù)的優(yōu)先級(jí)設(shè)為系統(tǒng)任務(wù)中的最低優(yōu)先級(jí);設(shè)備通過(guò)串口與GPS接收機(jī)相連獲取信息,將該任務(wù)的優(yōu)先級(jí)設(shè)置中等優(yōu)先級(jí);信息存儲(chǔ)與讀取,網(wǎng)絡(luò)通信,這些任務(wù)具有較高的優(yōu)先級(jí),并且監(jiān)控中心需要及時(shí)查詢(xún)當(dāng)前設(shè)備的運(yùn)行狀態(tài),固將網(wǎng)絡(luò)任務(wù)優(yōu)先級(jí)設(shè)為最高。由于速度與位置信息數(shù)據(jù)為非常重要的數(shù)據(jù),不同的任務(wù)在調(diào)用該資源時(shí)需單獨(dú)對(duì)其進(jìn)行訪問(wèn),但是當(dāng)顯示任務(wù)占用存儲(chǔ)該數(shù)據(jù)信息的臨界資源,若此時(shí)網(wǎng)絡(luò)任務(wù)需通過(guò)調(diào)用該臨界資源實(shí)時(shí)顯示該數(shù)據(jù),由于系統(tǒng)其他中等優(yōu)先級(jí)一直處于運(yùn)行狀態(tài),網(wǎng)絡(luò)任務(wù)容易產(chǎn)生優(yōu)先級(jí)反轉(zhuǎn)現(xiàn)象,造成網(wǎng)絡(luò)系統(tǒng)無(wú)法顯示數(shù)據(jù)甚至死機(jī)現(xiàn)象,影響系統(tǒng)穩(wěn)定性。網(wǎng)絡(luò)任務(wù)要求有較高的實(shí)時(shí)性,為避免了優(yōu)先級(jí)反轉(zhuǎn)發(fā)生,通過(guò)移植改進(jìn)的iiC/OS-II系統(tǒng)內(nèi)核,使整個(gè)系統(tǒng)運(yùn)行更加穩(wěn)定。網(wǎng)絡(luò)通信任務(wù) GPS串口任務(wù) 電子地圖顯示任務(wù)數(shù)據(jù)信息存儲(chǔ)任務(wù)ImL臨界資源j!車(chē)載嵌入式終端設(shè)備圖5.2車(chē)載終端C/OS-II系統(tǒng)平臺(tái)的任務(wù)調(diào)度示意圖Fig.5.2Schedulingdiagraminv

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論