基于ARM設(shè)計(jì)GPS導(dǎo)航_第1頁
基于ARM設(shè)計(jì)GPS導(dǎo)航_第2頁
基于ARM設(shè)計(jì)GPS導(dǎo)航_第3頁
基于ARM設(shè)計(jì)GPS導(dǎo)航_第4頁
基于ARM設(shè)計(jì)GPS導(dǎo)航_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于ARM920T核的GPS導(dǎo)航儀設(shè)計(jì)一.引言現(xiàn)代物流對運(yùn)輸車輛和貨物安全與準(zhǔn)時(shí)調(diào)運(yùn)的要求、公交與出租車的運(yùn)營管理、大型的企事業(yè)單位日常車輛管理也都對車輛的監(jiān)控與導(dǎo)航有迫切的需求。面且隨著旅游行業(yè)的發(fā)展,人們急需要一種可以隨時(shí)隨地知道自己方位和目的地的方便設(shè)備。GPS(全球定位系統(tǒng))具有全球、全天候工作,定位精度高,功能多,應(yīng)用廣的特點(diǎn),通過GPS接收機(jī)可以實(shí)現(xiàn)精確的自主定位,這為實(shí)現(xiàn)車輛的定位和導(dǎo)航奠定了基礎(chǔ)。伴隨ARM處理器、嵌入式操作系統(tǒng)、路徑優(yōu)化控制算法和GPS網(wǎng)絡(luò)的成熟,車輛定位導(dǎo)航系統(tǒng)有了新的發(fā)展,可以在短時(shí)間內(nèi)實(shí)現(xiàn)定位和最優(yōu)路徑導(dǎo)航。本項(xiàng)目在信息系統(tǒng)終端的設(shè)計(jì)中采用了ARM處理器

2、和嵌入式操作系統(tǒng)uC/OS-II作為開發(fā)平臺,通過采用ARM處理器可達(dá)到最大為60MHz的CPU操作頻率,使得數(shù)據(jù)處理能力大大加強(qiáng),同時(shí),基于嵌入式操作系統(tǒng)uC/OS-II開發(fā)設(shè)計(jì)的軟件具備了很強(qiáng)的擴(kuò)展性和穩(wěn)定性。二、方案簡介 本文先通過對GPS衛(wèi)星定位理論、衛(wèi)星數(shù)據(jù)處理的簡要介紹,對GPRS移動(dòng)通信技術(shù)分析以及ARM嵌入式硬件系統(tǒng)、C/OS-II嵌入式操作系統(tǒng)等計(jì)算機(jī)技術(shù)的不斷實(shí)踐提出一套基于GPRS無線通信技術(shù)的車載定位終端的設(shè)計(jì)方案。車載定位終端將GPS模塊傳輸過來的定位信息提取出來,然后通過GPRS模塊將車輛信息發(fā)送給車輛監(jiān)控中心。本設(shè)計(jì)采用ARM920T核的S3C2410X處理器作為

3、硬件平臺,然后設(shè)計(jì)相應(yīng)的外圍電路,加上GPS模塊電路和GPRS模塊電路,構(gòu)成一個(gè)完整的硬件系統(tǒng)。軟件設(shè)計(jì)采用宿主機(jī)/目標(biāo)機(jī)的開發(fā)模型,在構(gòu)建好交叉編譯環(huán)境后,向處理器上移植Bootloader和C/OS-II操作系統(tǒng)。然后便攜多任務(wù)應(yīng)用程序,最后將編譯好的操作系統(tǒng)和應(yīng)用程序下載到硬件平臺。三、車載定位系統(tǒng)所解決的問題隨著我國經(jīng)濟(jì)的高速發(fā)展以及人民生活水平的提高,我國的汽車保有量在未來很長一段時(shí)間內(nèi)將持續(xù)上漲。交通運(yùn)輸行業(yè)作為國家重點(diǎn)扶持的基礎(chǔ)產(chǎn)業(yè)得到了快速高效的發(fā)展,遍布全國的高等級公路網(wǎng)絡(luò)的建設(shè),方便快捷的城市公共交通體系的建成,都顯現(xiàn)出一番蓬勃的繁榮景象。與此同時(shí),城市建設(shè)規(guī)模日益擴(kuò)大,高

4、速公路網(wǎng)絡(luò)不斷延伸,城市的車輛,駕駛員及交通流量大幅度增長,這對公安交通管理部門和交通運(yùn)輸部門的管理提出了更新,更高的要求。另外,對于各種車輛的行駛安全以及公路交通的暢通等問題,也逐漸成為當(dāng)前所面臨的急需解決的重要課題.對于上述等問題,必須找到一個(gè)行之有效的解決方案。由此,我們發(fā)現(xiàn),只要知道汽車在某一時(shí)刻的有效位置,就可以找到解決相關(guān)問題的方法,車載GPS/GPRS系統(tǒng)集全球衛(wèi)星定位技術(shù),現(xiàn)代移動(dòng)通信技術(shù)于一體,對車輛位置和相關(guān)狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,有效地解決以上所提到的問題。根據(jù)要求,本設(shè)計(jì)主要研究了以下幾部分內(nèi)容:(1) 車載定位系統(tǒng)的整體方案。(2) ARM9S3C2410X系列處理器、GP

5、S模塊、GPRS模塊以及各部分模塊的關(guān)系與作用。(3) GPRS模塊的應(yīng)用。(4) 如何來實(shí)現(xiàn)GPS數(shù)據(jù)的提取和GPRS信息的發(fā)送。 一、車載定位系統(tǒng)原理概述1、全球定位系統(tǒng)(GPS)1.1GPS全球定位系統(tǒng)的組成GPS是Navigation Satellite Timing and Ranging Global Positioning System的縮寫詞NAVTAR/GPS的簡稱,GPS是以衛(wèi)星為基礎(chǔ)的無線電導(dǎo)航定位系統(tǒng),具有全能性、全球性、全天候、連續(xù)性和實(shí)時(shí)性的導(dǎo)航、定位和定時(shí)功能。GPS是1937年12月美國國防部批準(zhǔn)的海陸空三軍聯(lián)合研制的新的衛(wèi)星導(dǎo)航系統(tǒng),從1973年以來,GPS經(jīng)

6、歷T方案論證(1974-1978)、系統(tǒng)論證(1979-1987)和生產(chǎn)實(shí)驗(yàn)(1988-1993)三個(gè)階段。GPS系統(tǒng)包括三大部分:空間部分(GPS衛(wèi)星星座),地面控制部分(地面監(jiān)控系統(tǒng)),用戶設(shè)備部分(GPS信號接收機(jī))。(1) 空間衛(wèi)星部分1) GPS由21顆工作衛(wèi)星和3顆備用衛(wèi)星組成,工作衛(wèi)星分布在6個(gè)軌道平面內(nèi),每個(gè)軌道面分布有3-4顆衛(wèi)星,衛(wèi)星軌道面相對地赤道面的傾角為55度,各個(gè)軌道平面升交點(diǎn)的赤經(jīng)相隔60度,相鄰軌道之間的衛(wèi)星要彼此叉開30度。2) GPS衛(wèi)星用L波段兩種頻率的無線電波(1575.42 MHZ和1227.6MHZ)向用戶發(fā)射導(dǎo)航定位信號,同時(shí)接收地面發(fā)送的導(dǎo)航電文

7、以及調(diào)試命令。每個(gè)電波用導(dǎo)航信息D(t)和偽隨機(jī)碼(PRN),測距信號進(jìn)行雙相調(diào)制。用于捕獲信號及粗略定位的偽隨機(jī)碼稱C/A碼,精密測距碼稱為P碼。由導(dǎo)航電文可以知道該衛(wèi)星當(dāng)前的位置和衛(wèi)星的工作情況。3) 位于地平線以上的衛(wèi)星顆數(shù)隨著時(shí)間和地點(diǎn)的不同而不同,最少可見到4顆,最多可見到11顆。在用GPS信號導(dǎo)航定位時(shí),為了計(jì)算觀測點(diǎn)的三級坐標(biāo),必須觀測4顆GPS衛(wèi)星,稱為定位星座。這4顆衛(wèi)星在觀測過程中的幾何位置分布對定位精度有一定的影響。對于某地某時(shí),甚至不能測得精確的點(diǎn)位坐標(biāo),這種時(shí)間段叫做“間隙段”。但這種時(shí)間隙段是很短暫的,并不影響全球絕大多數(shù)地方的全天候、高精度、連續(xù)實(shí)時(shí)的導(dǎo)航定位測量

8、。(2) 地面控制系統(tǒng) 對于導(dǎo)航定位來說,GPS衛(wèi)星是一動(dòng)態(tài)己知點(diǎn)。星的位置是依據(jù)衛(wèi)星發(fā)射的星歷描述衛(wèi)星運(yùn)動(dòng)及其軌道的參數(shù)算得的。每顆GPS衛(wèi)星所播發(fā)的星歷,是由地面監(jiān)控系統(tǒng)提供的。衛(wèi)星上的各種設(shè)備是否正常工作,以及衛(wèi)星是否一直沿著預(yù)定軌道運(yùn)行,都要由地面設(shè)備進(jìn)行監(jiān)測和控制。地面監(jiān)控系統(tǒng)另一重要作用是保持各顆衛(wèi)星的時(shí)間,求出鐘差.然后由地面注入站發(fā)給衛(wèi)星,衛(wèi)星再由導(dǎo)航電文發(fā)給用戶設(shè)備。地面控制部分包括一個(gè)主控站、三個(gè)注入站和五個(gè)監(jiān)測站,實(shí)現(xiàn)對GPS衛(wèi)星運(yùn)行的監(jiān)控。主控站位于美國的科羅拉多,三個(gè)注入站分別設(shè)在太平洋、印度洋和大西洋的三個(gè)美國軍事基地內(nèi)。監(jiān)測站設(shè)在主控站、三個(gè)注入站和夏威夷島。(3

9、) 用戶接收機(jī) GPS的空間衛(wèi)星部分和地面監(jiān)控部分是用戶應(yīng)用該系統(tǒng)進(jìn)行導(dǎo)航定位的基礎(chǔ)而用戶只有使用GPS接收機(jī)才能實(shí)現(xiàn)其定位、導(dǎo)航的目的。 GPS信號接收機(jī)的任務(wù)是:能夠捕獲到按一定衛(wèi)星高度截止角所選擇的待測衛(wèi)星的信號,并跟蹤這些衛(wèi)星的運(yùn)行,對所接收到的GPS信號進(jìn)行變換、處理,、以便測量出GPS信號從衛(wèi)星到接收機(jī)天線的傳播時(shí)間,解譯出GP放大和衛(wèi)星所發(fā)送的導(dǎo)航電文,實(shí)時(shí)計(jì)算出測點(diǎn)的三維位置,甚至三維速度和時(shí)間。接收機(jī)硬件和機(jī)內(nèi)軟件以及GPS數(shù)據(jù)的后處理軟件包,構(gòu)成完整的GPS用戶設(shè)備,GPS接收機(jī)的結(jié)構(gòu)分為天線單元和接收單元兩大部分。1.2GPS定位的基本原理GPS地面觀測點(diǎn)定位的方法有偽距

10、定位法、多普勒定位法、載波相位定位法、偽距測量加多普勒定位法和干涉定位法等。常用的是前三種,多普勒定位法和載波相位法定位精度比偽距測量定位法高,但其成本造價(jià)也要高出許多.現(xiàn)在導(dǎo)航型GPS接收機(jī)主要采用偽距測量定位法,本設(shè)計(jì)采用的OEM板GPS接收機(jī)也是采用這種定位法。偽距(Pseudo-Range)是GPS接收機(jī)對碼的量測而得到衛(wèi)星到時(shí)接收機(jī)的距離,由于含有接收機(jī)衛(wèi)星時(shí)鐘的誤差及大氣傳播誤差,故稱為P碼偽距,精度約為2m左右。在GPS觀測中,我們可以得到衛(wèi)星到接收機(jī)的距離,利用三維坐標(biāo)中的距離公式,利用3顆衛(wèi)星,就可以組成3個(gè)方程式,解出觀測點(diǎn)的位置(x,y,z)??紤]到衛(wèi)星的時(shí)鐘與接收機(jī)之間

11、的誤差,實(shí)際上有4個(gè)未知數(shù),x,y,z和鐘差,因而需要引入第4顆衛(wèi)星,構(gòu)成4個(gè)方程式進(jìn)行求解,從而得到觀測點(diǎn)的經(jīng)度、緯度和高度,如Error! Reference source not found.。GPS定位原理圖 據(jù)上圖可以確定下列方程式:(x1-x)2+(y1-y)2+(z1-z)2+c2(t-t01)=d12(x2-x)2+(y2-y)2+(z2-z)2+c2(t-t02)=d22(x3-x)2+(y3-y)2+(z3-z)2+c2(t-t03)=d32(x4-x)2+(y4-y)2+(z4-z)2+c2(t-t04)=d42求解未知數(shù)(x,y,z,t),其中(x,y,z)是待測點(diǎn)坐標(biāo)

12、,即定位未知參數(shù):t為定時(shí)未知參數(shù),是接收機(jī)的時(shí)種差。c為GPS信號的傳播速度(即光速)。d1 d4是衛(wèi)星14到定位點(diǎn)的距離,(xi,yj,zk)是每個(gè)衛(wèi)星的星歷參數(shù),即衛(wèi)星的軌道坐標(biāo)(i=1,2,3,4;j=1,2,3,4;k=1,2,3,4);t01t04是各個(gè)衛(wèi)星的時(shí)鐘差。接收機(jī)可以鎖住4顆以上的衛(wèi)星,接收機(jī)可按衛(wèi)星的星座分布成若干組,每組4顆。然后通過算法挑選出誤差最小的一組用作定位,從而提高精度。由于衛(wèi)星運(yùn)行軌道衛(wèi)星時(shí)鐘存在誤差,大氣對流層和電離層對信號的影響,以及人為的SA保護(hù)政策,使得民用GPS的定位精度只有100m。為提高定位精度,普遍采用差分GPS(DGPS)技術(shù),建立基準(zhǔn)站

13、(差分臺)進(jìn)行GPS觀測,利用己知的基準(zhǔn)站精確坐標(biāo),與觀測值進(jìn)行比較,從而得出一修正數(shù),并對外發(fā)布接收機(jī)收到該修正數(shù)后,與自身的觀測值進(jìn)行比較,消去大部分誤差,得到一個(gè)較準(zhǔn)確的位置。2.通用分組無線業(yè)務(wù)(GPRS) GPS接收機(jī)提供定位信息,而不能把定位信息發(fā)送給監(jiān)控中心。因此車載終端和控制中心之間必須建立數(shù)據(jù)通信,使得定位信息能夠及時(shí),準(zhǔn)確的發(fā)送出去。2.1 GPRS系統(tǒng)概述GPRS(General Packet Radio service)是通用分組無線業(yè)務(wù)的簡稱,是GSM提供的分組交換和分組傳輸方式的新的承載業(yè)務(wù)。采用與GSM相同的頻段、頻帶寬度、突發(fā)結(jié)構(gòu)、無線調(diào)制標(biāo)準(zhǔn)、跳頻規(guī)則以及相同

14、的TDMA幀結(jié)構(gòu)。它的基本原理是:當(dāng)有數(shù)據(jù)傳送需要時(shí),將利用分組在網(wǎng)絡(luò)中傳送數(shù)據(jù),而不是利用當(dāng)前承載服務(wù)所采用的固定電路連接。這促進(jìn)了多用戶間對網(wǎng)絡(luò)資源的共享,并允許運(yùn)營商最優(yōu)地使用現(xiàn)有設(shè)備,同時(shí)利用己安裝的設(shè)備創(chuàng)造新的收入來源。使用GPRS時(shí),數(shù)據(jù)封裝進(jìn)每個(gè)分組并在網(wǎng)上發(fā)送。網(wǎng)絡(luò)容量僅在需要時(shí)分配,提供了即時(shí)連接和高通過率。GPRS提供了非常靈活的波特率,從小于100bit/s到大于171.2kbit/s,因此能處理從低速短消息到瀏覽復(fù)雜網(wǎng)站所需的高速傳輸。GPRS允許用戶在收發(fā)數(shù)據(jù)資料的同時(shí)接收電話。不過GPRS將要求空中接口和基站分系統(tǒng)兩方面作改動(dòng),以便能進(jìn)行此分組模式的傳輸。另外,GP

15、RS需要新的網(wǎng)絡(luò)組成部分,SGSN和GGSN,GRPS IP骨干網(wǎng)以及新型終端。GPRS對電子信箱和數(shù)據(jù)庫接入業(yè)務(wù)較理想,用戶不必為短暫的傳輸付出高費(fèi)用。GPRS被認(rèn)為是2G向3G演進(jìn)的重要一步,它不僅能提供PTP(點(diǎn)對點(diǎn))和PTM(點(diǎn)對多點(diǎn))數(shù)據(jù)業(yè)務(wù),還能支持補(bǔ)充業(yè)務(wù)和短消息業(yè)務(wù)。2.2GPRS特點(diǎn)GPRS采用分組交換技術(shù),在現(xiàn)在GSM網(wǎng)絡(luò)上實(shí)現(xiàn)高速數(shù)據(jù)傳輸,最高數(shù)據(jù)速率可達(dá)171.2kbit/s。這樣的數(shù)據(jù)速率,可以極大地滿足日益增長的移動(dòng)數(shù)據(jù)業(yè)務(wù)需求,并可與Internet有效融合,實(shí)現(xiàn)移動(dòng)Internet,因而有很強(qiáng)的生命力。其優(yōu)勢主要有以下幾個(gè)方面:資源利用率高:GPRS引入了分組交

16、換的傳輸模式,使得原來采用電路交換模式的GSM傳輸數(shù)據(jù)方式發(fā)生了根本性的變化,這在無線資源稀缺的情況下顯得尤為重要。按電路交換模式來說,在整個(gè)連接期內(nèi),用戶無論是否傳送數(shù)據(jù)都將獨(dú)自占有無線信道。而對于分組交換模式,用戶只有在發(fā)送或接收數(shù)據(jù)期間才占用資源,這意味著多個(gè)用戶可高效率地共享同一無線信道,從而提高了資源的利用率。GPRS用戶的計(jì)費(fèi)以通信的數(shù)據(jù)量為主要依據(jù),而不是連接時(shí)間,體現(xiàn)了“得到多少,支付多少”的原則。實(shí)際上,GPRS用戶的連接時(shí)間可能長達(dá)數(shù)小時(shí),卻只需支付相對低廉的連接費(fèi)用。傳輸速率高:GPRS可提供高達(dá)115kbit/s的傳輸速率(最高值為171.2kbit/s,不包括FEC)

17、。這意味著通過便攜式電腦,GPRS用戶能和ISDN用戶一樣快速地上網(wǎng)瀏覽,同時(shí)也使一些對傳輸速率敏感的移動(dòng)多媒體應(yīng)用成為可能。接入時(shí)間短:分組交換接入時(shí)間縮短為少于1秒,能提供快速即時(shí)的連接,可大幅度提高一些事務(wù)(如信用卡核對、遠(yuǎn)程監(jiān)控等)的效率,并可使已有的工Internet應(yīng)用(如E-mail、網(wǎng)頁瀏覽等)操作更加便捷、流暢。支持IP協(xié)議和x.25協(xié)議:GPRS支持因特網(wǎng)應(yīng)用最廣泛的IP協(xié)議和X.25協(xié)議.而且由于GSM網(wǎng)絡(luò)覆蓋面廣,使得GPRS能提供Internet和其它分組網(wǎng)絡(luò)系統(tǒng)的全球性無線接入?;谝陨系奶攸c(diǎn),GPRS系統(tǒng)的采用能克服了電路交換型數(shù)據(jù)傳輸速率低,資源利用率差等缺點(diǎn),

18、特別適用于像GPS系統(tǒng)那樣突發(fā)性數(shù)據(jù)的應(yīng)用。其GPRS/IP/TCP/UDP協(xié)議??梢詽M足數(shù)據(jù)的實(shí)時(shí)交換,在現(xiàn)有的公用無線通信系統(tǒng)中擁有最大的帶寬。與目前流行的短消息相比,在相同數(shù)據(jù)長度,相同時(shí)間間隔下通訊費(fèi)用是短消息的1/6,甚至更少。車載終端以GPRS為傳輸網(wǎng)絡(luò),有效地解決了以往短消息傳輸方式延時(shí)大、系統(tǒng)實(shí)時(shí)性差的問題。GPRS技術(shù)提供的高速傳輸速率和“永遠(yuǎn)在線,按流量計(jì)費(fèi)”的優(yōu)點(diǎn),使該系統(tǒng)具有良好的適用性、可靠性和可擴(kuò)展性,而且易于管理與維護(hù)。3.ARM與嵌入式系統(tǒng)ARM(Advanced RSIC Machines),是一個(gè)公司名字,也是一種處理器的通稱,還可以認(rèn)為是一種技術(shù)名字。AR

19、M處理器目前包括下面幾個(gè)系列的處理器產(chǎn)品以及其他廠商實(shí)現(xiàn)的基于ARM體系結(jié)構(gòu)的處理器。ARM7系列、ARM9系列、ARM9E系列ARM10E系列、SeurCore系列、Intel的Xscale系列和StrongARM等系列。這些處理器最高主頻達(dá)到了BOOMISP,功耗數(shù)量級為Mw/MHz。對于支持同樣ARM體系版本的處理器,其軟件是兼容的。本設(shè)計(jì)采用是三星公司的S3C2410X處理器,屬于ARM9系列,有以下特點(diǎn):提供1.IMISP/MHz的5級流水線結(jié)構(gòu)。支持32為ARM指令和16位Thumb指令集。支持23位高速AMBA總線和接口。全性能MMU,支持Linux、WinCE等各種嵌入式操作系

20、統(tǒng)。支持Cache和指令Cache。嵌入式系統(tǒng)是嵌入到對象體系中的專用計(jì)算機(jī)系統(tǒng),以嵌入式計(jì)算機(jī)為核心的嵌入式系統(tǒng)是繼IT網(wǎng)絡(luò)技術(shù)之后,又一個(gè)新的技術(shù)發(fā)展方向。嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本上升、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序等四個(gè)部分組成,用于實(shí)現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理等功能。嵌入式系統(tǒng)是專用計(jì)算機(jī)應(yīng)用系統(tǒng),它具有一般計(jì)算機(jī)組成的共性,也是由硬件和軟件組成的。嵌入式系統(tǒng)的硬件是嵌入式系統(tǒng)軟件環(huán)境運(yùn)行的基礎(chǔ),它提供了嵌入式系統(tǒng)軟件運(yùn)行的物理平臺和通

21、信接口;嵌入式操作系統(tǒng)和嵌入式應(yīng)用軟件則是整個(gè)系統(tǒng)的控制中心,控制整個(gè)系統(tǒng)的運(yùn)行,提供人機(jī)交互的信息等。嵌入式系統(tǒng)的軟件分為嵌入式操作系統(tǒng)和嵌入式應(yīng)用軟件兩大部分。4.車載系統(tǒng)的定位與實(shí)現(xiàn)GPS接收模塊接收到GPS定位衛(wèi)星的信號,然后解算出定位數(shù)據(jù),車載終端對數(shù)據(jù)進(jìn)行提取和格式轉(zhuǎn)換,車載終端再把信息發(fā)送給GPRS通信模塊。GPRS通信模塊將定位信息通過網(wǎng)絡(luò)傳給監(jiān)控中心。監(jiān)控中心根據(jù)這些信息采取一定的處理措施。本設(shè)計(jì)完成車載定位系統(tǒng)的車載終端部分。硬件上,完成ARM處理器、SDRAM、FLASH、GPS模塊、GPRS模塊及其外圍電路的搭建;軟件上,移植啟動(dòng)代碼Bootloader、文件系統(tǒng)嵌入式

22、C/OS-II系統(tǒng),然后開發(fā)應(yīng)用程序,建立交叉開發(fā)環(huán)境,將程序編譯成目標(biāo)平臺上的可執(zhí)行文件,完成GPS定位數(shù)據(jù)的提取并發(fā)送給GPRS模塊。二、車載終端的硬件設(shè)計(jì)1、總體硬件設(shè)計(jì)方案車載終端總體上可以分為三大部分:S3C2410X系統(tǒng)電路、GPS模塊電路和GPRS模塊電路。電路的核心為S3C2410X處理器,FLASH存儲(chǔ)系統(tǒng),應(yīng)用程序等;SDARM作為系統(tǒng)的運(yùn)行內(nèi)存,用作程序的運(yùn)行空間、數(shù)據(jù)及堆棧區(qū)、JTAG用來開發(fā)調(diào)試系統(tǒng)。GPS模塊將接收到的定位數(shù)據(jù)通過串口傳送給處理器。GPRS模塊用來發(fā)送定位等信息到控制中心。如圖圖表 車載終端電路框圖除以上的幾個(gè)電路部分外,本設(shè)計(jì)還預(yù)留了USB電路和擴(kuò)

23、展槽,用于后續(xù)開發(fā)和功能擴(kuò)展.本設(shè)計(jì)共分S3C24l0系統(tǒng)電路、GPS接收機(jī)電路和GRPS發(fā)送電路。電路分別用RS-232串口相連.下面給出幾個(gè)主要部分的電路連接圖.2、電源由于本設(shè)計(jì)的芯片較多,所需的芯片電壓也有所不同。根據(jù)車載終端的特點(diǎn),而一言,汽車上的直流電壓源有兩種:12v和24V。需要對這兩種電壓進(jìn)行轉(zhuǎn)換,得到所需的電壓。主要芯片的電壓需求如下:.S3C2410X:3.3V,1.8V.SDRAM,NAND,JTAG,MAX3 232:3.3V.GPS MAX232:5V .GPRS:3.6V 2410電源電路(一) 2410電源電路(二)3.S3C2410X處理器從產(chǎn)品的定位出發(fā),考

24、慮到功能、性能和性價(jià)比,兼顧二次開發(fā)和功能拓展,選擇一款各適的處理器。S3C2410X微處理器是一款由三星公司為手持設(shè)備設(shè)計(jì)的低功耗,高集成度的基于ARM920T的微處理器。采用16位/32位RISC結(jié)構(gòu)和ARM精簡指令集,支持Wince,Linux等操作系統(tǒng):支持指令CACHE、數(shù)據(jù)CACHE和寫緩沖、支持ARM調(diào)試結(jié)構(gòu)、片上ICE支持JTAG調(diào)試方式:支持大端(Big Endian)小端(Little Enidan)模式。8個(gè)內(nèi)存塊,6個(gè)用于ROM、SRAM及其他,2個(gè)用于ROM/SRAM/SDRAM;每個(gè)內(nèi)存塊128(共1G),每個(gè)內(nèi)存塊支持8/16/32位數(shù)據(jù)總線編程;1個(gè)起始地址和大

25、小可編程的內(nèi)存塊(Bank7),7個(gè)起始地址固定的內(nèi)存塊(Bank0Bank6):所有的內(nèi)存塊可編程尋址周期,支持SDRAM自動(dòng)刷新模式,支持多種類型ROM啟動(dòng),包括NOR/NNAD FLASH,EEPROM等。(1) S3C2410X處理器時(shí)鐘和電源管理。 片上MPLL和UPLL:UPLL產(chǎn)生操作USB主/從的時(shí)鐘MPLL產(chǎn)生操作MCU的時(shí)鐘,1.8vs電壓供電最高可達(dá)203MHZ;每個(gè)模塊的時(shí)鐘可由軟件控制,電源模式有四種,分別為正常模式,處于正常運(yùn)行的狀態(tài)下:休眠模式下只使CUP的時(shí)鐘停止:低能模式,不帶PLL的低頻時(shí)鐘:停止模式下,所有時(shí)鐘都停止??梢杂肊INT15:0或RTC告警中斷

26、從停止模式喚醒。(2) S3C24l0X處理器中斷控制器。 它帶有55個(gè)中斷源(看門狗定時(shí)器,5個(gè)定時(shí)器,9個(gè)UART,24個(gè)外部中斷,4個(gè)DMA,2個(gè)RTC,2個(gè)ADC,1個(gè)I2C,2個(gè)SPI,2個(gè)USB,1個(gè)LCD和1個(gè)電池管理);外部中斷源的觸發(fā)模式可為電平觸發(fā)也可為邊沿觸發(fā);對緊急中斷請求支持FIQ(快速中斷請求)。(3) S3C2410X處理器定時(shí)器。它帶有四個(gè)16位帶PWM的定時(shí)器,1個(gè)16位基于DMA或基于中斷的定時(shí)器;具有可編程的占空比,頻率和極性:支持外部時(shí)鐘源,具有看門狗定時(shí)器:16位看門狗定時(shí)器,定時(shí)中斷請求和系統(tǒng)復(fù)位.(4) S3C2410X處理器實(shí)時(shí)時(shí)鐘. 全時(shí)鐘特點(diǎn)

27、:毫秒,秒,分,時(shí),日,星期,月,年;以32.768KHz運(yùn)行,可以產(chǎn)生告警中斷,時(shí)鐘滴答中斷。(5) S3C2410X處理器通用輸入/輸出端口及接口。 有24個(gè)外部中斷端口,多路輸入/輸出口;具有3個(gè)帶DAM和中斷的UART,支持5,6,7,8位串行數(shù)據(jù)傳送或接收,并且在傳送或接收情況時(shí)支持雙向握手,具有可編程的波特率,支持IrDA1.0,并且支持回環(huán)測試,每個(gè)通道有16字節(jié)TX FIFO和16字節(jié)RX FIFO。ARM9 S3C2410X的存儲(chǔ)空間映射圖。為使處理器對各設(shè)備的訪問不相互干擾,因此要將不同類的設(shè)備映射到不相同的BANK。圖表 :S3C2410X存儲(chǔ)空間映射圖4、存儲(chǔ)電路設(shè)計(jì)4

28、.1 SDRAM存儲(chǔ)器 SDRAM是嵌入式微處理器的內(nèi)存,掉電以后數(shù)據(jù)即消失,不可以夠長久保存。SDARM在系統(tǒng)中一般作為程序的運(yùn)行空間、數(shù)據(jù)或者堆棧區(qū)。當(dāng)系統(tǒng)啟動(dòng)時(shí),CPU首先讀取啟動(dòng)代碼,完成系統(tǒng)的初始化之后,程序代碼一般情況都調(diào)入SDRAM中運(yùn)行,這樣可以增加運(yùn)行速度。同時(shí),SDARM還存儲(chǔ)系統(tǒng)及用戶堆棧、運(yùn)行數(shù)據(jù)等。SDRAM單位空間存儲(chǔ)量大,并且價(jià)格便宜,已經(jīng)廣泛用于各種嵌入式系統(tǒng)中。SDARM的存儲(chǔ)單元可以堪稱一個(gè)電容,總是具有放電傾向,為了防止數(shù)據(jù)丟失,須在一定時(shí)間內(nèi)充電即刷新。所以,在系統(tǒng)中使用SDRAM時(shí),微處理器必須具有刷新控制邏輯功能,或者另外加入刷心控制電路。S3C24

29、10X在片內(nèi)具有獨(dú)立的SDARM刷新控制邏輯,可方便的與SDRAM相連。現(xiàn)在市面上常用的SDRAM為8位/16位的數(shù)據(jù)寬度,工作電壓一般情況為3.3V。生產(chǎn)商生產(chǎn)的同型器件一般情況都具有相同的電氣特性和封裝,可以通用。S3C2410X數(shù)據(jù)寬度為32位,所以使用2片K45561632C,一片連數(shù)據(jù)線的低16位,一片連數(shù)據(jù)線的高16位。這兩片并聯(lián)作為32位數(shù)據(jù)寬度的SDRAM存儲(chǔ)系統(tǒng),并映射到SC32410的BANK6,其地址范圍為0x300000000x33FFFFFF。SDRAM連接圖如圖表 :SDRAM內(nèi)存電路連接圖。圖表 :SDRAM內(nèi)存電路連接圖4.2 FLASH FLASH是一種非易失

30、,可在系統(tǒng)電擦寫,掉電后信息不會(huì)丟失的存儲(chǔ)器。它具有功耗低、容量大、擦寫速度快、可整片或者分扇區(qū)在系統(tǒng)編程(燒寫)、擦除等、優(yōu)點(diǎn),并且可以由內(nèi)部的算法完成對芯片的操作,在許多嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。FLASH在系統(tǒng)中通常用于存放程序代碼、常量表以及一些在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等。FLASH主要可分為NOR FLASH和NAND FLASH。NOR FLASH的特點(diǎn)是芯片內(nèi)執(zhí)行,這樣應(yīng)用可以直接在FLASH內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中,NOR的傳輸效率很高,在14BM的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能:NAND FLASH結(jié)構(gòu)能提供極高的

31、單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快,應(yīng)用NAND的困難在于FLASH的管理和需要特殊的系統(tǒng)接口。FLASH閃存是非易失存儲(chǔ)器,可以對成塊的存儲(chǔ)器單元進(jìn)行擦寫和再編程。任何FLASH器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為0。一般NAND FLASH的存儲(chǔ)容量較大,雖然NAND的管理比較困難,但是S3C2410X提供了能夠從NAND FLASH啟動(dòng)系統(tǒng)的Steppingstone機(jī)制,因此S3C2410X系統(tǒng)可以采用1片NAND

32、 FLASH同時(shí)作為啟動(dòng)ROM和系統(tǒng)程序保存ROM,減少了硬件成本。在本設(shè)計(jì)中,使用三星公司的NAND FLASH芯片K9F1208U0M,用來存放啟動(dòng)代碼(Bootloader)、C/OS-II內(nèi)核映像、文件系統(tǒng),另外還有應(yīng)用程序。它的單片存儲(chǔ)容量為64M,8位數(shù)據(jù)寬度,快速的寫周期時(shí)間(編程時(shí)間為200us,塊擦除時(shí)間為2ms),命令、地址、數(shù)據(jù)I/O口復(fù)用。芯片上包含有寫控制器,能夠自動(dòng)編程和擦寫。NAND FLASH部分的電路圖如圖表 :NAND FLASH部分的電路圖。圖表 :NAND FLASH部分的電路圖5、 串口電路串行口是計(jì)算機(jī)一種常用的接口,具有連接線少,通訊簡單,得到廣泛

33、的使用。常用的串口是RS-322-C接口(又稱EIA RS-223-C)它是在1970年由美國電子工業(yè)協(xié)會(huì)(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同制定的用于串行通訊的標(biāo)準(zhǔn)。它的全名是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備(DCE之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。它所具有的特性有:機(jī)械特性:RS-232C接口是單端發(fā)送,單端接收,傳輸線上允許一個(gè)驅(qū)動(dòng)器和一個(gè)發(fā)送器。RS-232C標(biāo)準(zhǔn)接口有25針(DB25)和9針(DB9)兩種。它的最大傳輸距離可達(dá)30m,最大速率20kb/s,適于相距較近設(shè)備的通信電氣特性:RS-232C標(biāo)準(zhǔn)定義-15V-3V表示邏輯“1”,+3Vl5

34、v表示邏輯“0",它選擇-15V-3V和+3V+15V這個(gè)范圍而不采用TTL邏輯(0v5v)的原因是為了提高抗干擾能力和增加傳輸距離,因此與TTL設(shè)備連接時(shí)需加電平轉(zhuǎn)換接口由于S3C2140的異步串行通訊接口不是RS232邏輯,因此,需加電平轉(zhuǎn)換接口,采用SP3232低功耗芯片,將TTL電平轉(zhuǎn)換為RS232電平。在設(shè)計(jì)中采用兩個(gè)9針DB9串口(如圖表3-5:串口電路圖),分別用來連接GPS模塊和GPRS模塊。另外還用來和PC機(jī)進(jìn)行通信,觀察系統(tǒng)啟動(dòng)情況和下載代碼等。COM0(串口0)包含了四個(gè)信號(TxD、RxD、CTS、RTS),可用來連接GPRS模塊;COM1(串口一)只有兩個(gè)信

35、號(TxD,RxD),可用來連接GPS模塊。兩個(gè)串口的TxD,RxD信號,分別與兩個(gè)模塊的TX,RX交叉相接,完成數(shù)據(jù)的發(fā)送和接收。圖表3-5:串口電路圖6 、GPS 模塊電路GPS是GPS定位信息的接收機(jī),本設(shè)計(jì)直接采用OEM板GPS模塊,從GPS模塊可以直接得到GPS衛(wèi)星的定位信息,而不需要了解太多GPS原理上的知識、算法等,因此加快了開發(fā)速度。并且,GPS模塊大多采用專用的處理芯片和相關(guān)算法,提高了GPS定位信息的精度。本設(shè)計(jì)采用合眾思壯公司的E531接收機(jī)模塊。它是12通道的GPS接收機(jī)模塊,同時(shí)可以跟蹤12顆GPS衛(wèi)星,跟蹤性能優(yōu)越,能夠快速定位。E531接收機(jī)功耗低,數(shù)據(jù)更新率為每

36、秒一次,能滿足車載系統(tǒng)的需求,性價(jià)比較高。其主要指標(biāo)如下:(1) 電氣指標(biāo):輸入電壓:DC3.3V一5.5V。GPS指標(biāo):接收機(jī)頻率:L1,C/A code(SSP),接收機(jī)通道:并行12通道,定位時(shí)間:快速啟動(dòng):約8秒,熱啟動(dòng):約15秒,冷啟動(dòng):約50秒(典型值)自由定位:2分鐘,更新率:1HZ,精度:定位精度:3m(CEP),小于6m 2DRMS速度精度:0.2m/s RMS(50%)接收機(jī)靈敏度:-152dB.(跟蹤);-139dBm(捕獲)。(2) 接口:接口特性:CMOS電平輸出。串口0:默認(rèn)波特率為4800輸出:NMEA0183版本3.01的ASCLL碼語句,默認(rèn)輸出語句包括義GG

37、A,GSA,GSV,RMC;可選輸出:GLL,VTG,ZDA,DTM。輸入:選擇坐標(biāo)系、波特率設(shè)置、輸出語句選擇等。串口1:默認(rèn)波特率為115200,二進(jìn)制協(xié)議在本設(shè)計(jì)中,使用串口0,通過串口提取ASCLL碼。串口數(shù)據(jù)通過掀SPS232電平轉(zhuǎn)換為RS223電平。另外,將GPS模塊的發(fā)送端和接收端經(jīng)電平轉(zhuǎn)換后與串口DB9交叉相連。完整的GPS接收機(jī)包括電源、接收機(jī)和天線等模塊。GPS接收機(jī)連接圖如圖表1:GPS模塊電路圖, GPS供電電路如圖表2:GPS供電電路。圖表1:GPS模塊電路圖圖表2:GPS供電電路7 、GPRS模塊電路在車載終端中,短消息的發(fā)送、接收和語音通話是由無線通信模塊來負(fù)責(zé)完

38、成的。GPRS模塊是指帶有GPRS功能的GSM模塊,可以通過GPRS網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸?,F(xiàn)在使用較多的有法國WAVECOM公司的WISMO系列、Siemens公司的MC35,MC45系列、Motorola公司的G81,G20系列,BENQ公司的M22,M23系列等。這些模塊接口簡單、使用方便并且功能非常強(qiáng)大,為GPRS應(yīng)用提供理想的解決方案,在工業(yè)與民用等諸多領(lǐng)域已得到了廣泛的應(yīng)用。在結(jié)構(gòu)和功能上都有相似之處.一般具有以下特點(diǎn):(1) 接口簡單,使用方便:一般都提供電源接口、SIM卡接口、RS223數(shù)據(jù)口,利用AT指令進(jìn)行控制(2) 功能齊全,有兩種工作模式:GSM Phase 2模式,支持語音

39、服務(wù);GPRS分組交換模式模塊本身支持的數(shù)據(jù)業(yè)務(wù)包括SMS、CSD、HSCCSD和GPRS。同時(shí)也支持語音,傳真等服務(wù)。有的模塊內(nèi)部集成了TCP/IP協(xié)議棧,方便了網(wǎng)絡(luò)應(yīng)用程序的開發(fā)。本設(shè)計(jì)采用的GPRS模塊是BENQ M23圖表:GPRS模塊電路圖表:SIM卡模塊電路三、嵌入式操作系統(tǒng)及其開發(fā)環(huán)境介紹以嵌入式處理器為中心,搭建好硬件電路,僅僅提供了裸機(jī)運(yùn)行平臺,要使整個(gè)系統(tǒng)的各部分資源充分利用起來,還需要嵌入式操作系統(tǒng)的軟件支持。1、嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)EOS(Embedded Operation System)是一種實(shí)時(shí)的,支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件。它是嵌入式系統(tǒng)(包括軟、

40、硬件)極為重要的組成部分部分,通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、通信協(xié)議、圖形用戶界面和標(biāo)準(zhǔn)化瀏覽器。嵌入式與一般的商用多任務(wù)0S(如unix、windows以及Linux等)有共同的一面,也有不同的一面。商用多任務(wù)0S主要目的是方便用戶管理計(jì)算機(jī)資源和追求系統(tǒng)資源的最大利用率,而嵌入式操作系統(tǒng)重點(diǎn)追求的是可確定性、可靠性,當(dāng)然也包括有限資源的管理。一般嵌入式操作系統(tǒng)內(nèi)核都很小,在幾KB到幾十KB之間?;旧隙贾С只趦?yōu)先級的搶占式調(diào)度策略和時(shí)間片輪翻調(diào)度,具有微內(nèi)核結(jié)構(gòu),有標(biāo)準(zhǔn)組件可代選用,支持虛擬存儲(chǔ)技術(shù)和存儲(chǔ)保護(hù)機(jī)制。一個(gè)典型的嵌入式操作系統(tǒng)一般要包括操作系統(tǒng)所具備的基本功能,

41、如進(jìn)程調(diào)度、內(nèi)存管理以及中斷處理等,同時(shí)要具有小巧、速度快和響應(yīng)可預(yù)測性等特點(diǎn),必須保證實(shí)時(shí)任務(wù)在要求的時(shí)間內(nèi)完成。2、嵌入式系統(tǒng)選擇與嵌入式C/OS-IIC/OS-II是一種免費(fèi)公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時(shí)內(nèi)核的實(shí)時(shí)操作系統(tǒng)。 C/OS-II 是專門為計(jì)算機(jī)的嵌入式應(yīng)用設(shè)計(jì)的, 絕大部分代碼是用C語言編寫的。CPU 硬件相關(guān)部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU 上。用戶只要有標(biāo)準(zhǔn)的ANSI 的C交叉編譯器,有匯編器、連接器等軟件工具,就可以將C/OS-II嵌人到開發(fā)的產(chǎn)品中。C/OS-II 具有執(zhí)行效率高、占用空間

42、小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn), 最小內(nèi)核可編譯至 2KB 。C/OS-II 已經(jīng)移植到了幾乎所有知名的CPU 上。 嚴(yán)格地說C/OS-II只是一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核,它僅僅包含了任務(wù)調(diào)度,任務(wù)管理,時(shí)間管理,內(nèi)存管理和任務(wù)間的通信和同步等基本功能。沒有提供輸入輸出管理,文件系統(tǒng),網(wǎng)絡(luò)等額外的服務(wù)。但由于C/OS-II良好的可擴(kuò)展性和源碼開放,這些非必須的功能完全可以由用戶自己根據(jù)需要分別實(shí)現(xiàn)。 C/OS-II目標(biāo)是實(shí)現(xiàn)一個(gè)基于優(yōu)先級調(diào)度的搶占式的實(shí)時(shí)內(nèi)核,并在這個(gè)內(nèi)核之上提供最基本的系統(tǒng)服務(wù),如信號量,郵箱,消息隊(duì)列,內(nèi)存管理,中斷管理等。 2.1任務(wù)管理C/OS-II 中最多可以支持64

43、 個(gè)任務(wù),分別對應(yīng)優(yōu)先級063,其中0 為最高優(yōu)先級。63為最低級,系統(tǒng)保留了4個(gè)最高優(yōu)先級的任務(wù)和4個(gè)最低優(yōu)先級的任務(wù),所有用戶可以使用的任務(wù)數(shù)有56個(gè)。 C/OS-II提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級,任務(wù)掛起和恢復(fù)等。 系統(tǒng)初始化時(shí)會(huì)自動(dòng)產(chǎn)生兩個(gè)任務(wù):一個(gè)是空閑任務(wù),它的優(yōu)先級最低,該任務(wù)僅給一個(gè)整形變量做累加運(yùn)算;另一個(gè)是系統(tǒng)任務(wù),它的優(yōu)先級為次低,該任務(wù)負(fù)責(zé)統(tǒng)計(jì)當(dāng)前cpu的利用率。 2.2時(shí)間管理C/OS-II的時(shí)間管理是通過定時(shí)中斷來實(shí)現(xiàn)的,該定時(shí)中斷一般為10毫秒或100毫秒發(fā)生一次,時(shí)間頻率取決于用戶對硬件系統(tǒng)的定時(shí)器編程來實(shí)現(xiàn)。中斷發(fā)生的

44、時(shí)間間隔是固定不變的,該中斷也成為一個(gè)時(shí)鐘節(jié)拍。 C/OS-II要求用戶在定時(shí)中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時(shí)鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例如中斷級的任務(wù)切換函數(shù),系統(tǒng)時(shí)間函數(shù)。2.3內(nèi)存管理在ANSI C中是使用malloc和free兩個(gè)函數(shù)來動(dòng)態(tài)分配和釋放內(nèi)存。但在嵌入式實(shí)時(shí)系統(tǒng)中,多次這樣的錯(cuò)作會(huì)導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理算法的原因,malloc和free的執(zhí)行時(shí)間也是不確定。 C/OS-II中把連續(xù)的大快內(nèi)存按分區(qū)管理。每個(gè)分區(qū)中包含整數(shù)個(gè)大小相同的內(nèi)存塊,但不同分區(qū)之間的內(nèi)存快大小可以不同。用戶需要?jiǎng)討B(tài)分配內(nèi)存時(shí),系統(tǒng)選擇一個(gè)適當(dāng)?shù)姆謪^(qū),按塊來分配內(nèi)存。釋放內(nèi)存時(shí)將該塊放回它以前所屬

45、的分區(qū),這樣能有效解決碎片問題,同時(shí)執(zhí)行時(shí)間也是固定的。 任務(wù)間通信與同步 對一個(gè)多任務(wù)的操作系統(tǒng)來說,任務(wù)間的通信和同步是必不可少的。C/OS-II中提供了4中同步對象,分別是信號量,郵箱,消息隊(duì)列和事件。所有這些同步對象都有創(chuàng)建,等待,發(fā)送,查詢的接口用于實(shí)現(xiàn)進(jìn)程間的通信和同步。 2.4任務(wù)調(diào)度C/OS-II 采用的是可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核??蓜儕Z型的實(shí)時(shí)內(nèi)核在任何時(shí)候都運(yùn)行就緒了的最高優(yōu)先級的任務(wù)。 C/OS-II的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先級的搶占式調(diào)度,也就是最高優(yōu)先級的任務(wù)一旦處于就緒狀態(tài),則立即搶占正在運(yùn)行的低優(yōu)先級任務(wù)的處理器資源。為了簡化系統(tǒng)設(shè)計(jì),C/OS-II規(guī)定所有任務(wù)的

46、優(yōu)先級不同,因?yàn)槿蝿?wù)的優(yōu)先級也同時(shí)唯一標(biāo)志了該任務(wù)本身。 任務(wù)調(diào)度將在以下情況下發(fā)生: (1) 高優(yōu)先級的任務(wù)因?yàn)樾枰撤N臨界資源,主動(dòng)請求掛起,讓出處理器,此時(shí)將調(diào)度就緒狀態(tài)的低優(yōu)先級任務(wù)獲得執(zhí)行,這種調(diào)度也稱為任務(wù)級的上下文切換。 (2) 高優(yōu)先級的任務(wù)因?yàn)闀r(shí)鐘節(jié)拍到來,在時(shí)鐘中斷的處理程序中,內(nèi)核發(fā)現(xiàn)高優(yōu)先級任務(wù)獲得了執(zhí)行條件(如休眠的時(shí)鐘到時(shí)),則在中斷態(tài)直接切換到高優(yōu)先級任務(wù)執(zhí)行。這種調(diào)度也稱為中斷級的上下文切換。 這兩種調(diào)度方式在C/OS-II的執(zhí)行過程中非常普遍,一般來說前者發(fā)生在系統(tǒng)服務(wù)中,后者發(fā)生在時(shí)鐘中斷的服務(wù)程序中。 調(diào)度工作的內(nèi)容可以分為兩部分:最高優(yōu)先級任務(wù)的尋找和任

47、務(wù)切換。其最高優(yōu)先級任務(wù)的尋找是通過建立就緒任務(wù)表來實(shí)現(xiàn)的。 C/OS-II 中的每一個(gè)任務(wù)都有獨(dú)立的堆??臻g,并有一個(gè)稱為任務(wù)控制塊TCB(Task Control Block)的數(shù)據(jù)結(jié)構(gòu),其中第一個(gè)成員變量就是保存的任務(wù)堆棧指針。任務(wù)調(diào)度模塊首先用變量OSTCBHighRdy 記錄當(dāng)前最高級就緒任務(wù)的TCB 地址,然后調(diào)用OS_TASK_SW()函數(shù)來進(jìn)行任務(wù)切換。 C/OS-II的組成部分 C/OS-II可以大致分成核心、任務(wù)處理、時(shí)間處理、任務(wù)同步與通信,CPU的移植等5個(gè)部分。 (1) 核心部分(OSCore.c) 是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運(yùn)行、中斷進(jìn)出的前

48、導(dǎo)、時(shí)鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里。(2) 任務(wù)處理部分(OSTask.c) 任務(wù)處理部分中的內(nèi)容都是與任務(wù)的操作密切相關(guān)的。包括任務(wù)的建立、刪除、掛起、恢復(fù)等等。因?yàn)镃/OS-II是以任務(wù)為基本單位調(diào)度的,所以這部分內(nèi)容也相當(dāng)重要。(3) 時(shí)鐘部分(OSTime.c) C/OS-II中的最小時(shí)鐘單位是timetick(時(shí)鐘節(jié)拍)。任務(wù)延時(shí)等操作是在這里完成的。 (4) 任務(wù)同步和通信部分 為事件處理部分,包括信號量、郵箱、郵箱隊(duì)列、事件標(biāo)志等部分;主要用于任務(wù)間的互相聯(lián)系和對臨界資源的訪問。 (5) 與CPU的接口部分 是指C/OS-II針對所使用的

49、CPU的移植部分。由于C/OS-II是一個(gè)通用性的操作系統(tǒng),所以對于關(guān)鍵問題上的實(shí)現(xiàn),還是需要根據(jù)具體CPU的具體內(nèi)容和要求作相應(yīng)的移植。這部分內(nèi)容由于牽涉到SP等系統(tǒng)指針,所以通常用匯編語言編寫。主要包括中斷級任務(wù)切換的底層實(shí)現(xiàn)、任務(wù)級任務(wù)切換的底層實(shí)現(xiàn)、時(shí)鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān)處理部分等內(nèi)容。3 、C/OS-II任務(wù)之間的通訊與同步方式3.1任務(wù)之間的通訊在C/OS-II中,有多種方法可以保護(hù)任務(wù)之間的共享數(shù)據(jù)和提供任務(wù)之間的通訊。(1) 利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來關(guān)閉中斷和打開中斷。當(dāng)兩個(gè)任務(wù)或者一個(gè)任務(wù)和一個(gè)中斷服務(wù)子程

50、序共享某些數(shù)據(jù)時(shí),可以采用這種方法;(2) 利用函數(shù)OSSchedLock()和OSSchekUnlock()對C/OS-II中的任務(wù)調(diào)度函數(shù)上鎖和開鎖;(3) 信號量;(4) 郵箱;(5) 隊(duì)列。3.2.C/OS-II中使用信號量進(jìn)行任務(wù)之間同步通過調(diào)用OSSemCreate()建立信號量,并對信號量的初始計(jì)數(shù)值賦值。該初始值為0到65,535之間的一個(gè)數(shù)。如果信號量是用來表示一個(gè)或者多個(gè)事件的發(fā)生,那么該信號量的初始值應(yīng)設(shè)為0。如果信號量是用于對共享資源的訪問,那么該信號量的初始值應(yīng)設(shè)為1(例如,把它當(dāng)作二值信號量使用)。最后,如果該信號量是用來表示允許任務(wù)訪問n個(gè)相同的資源,那么該初始值

51、顯然應(yīng)該是n,并把該信號量作為一個(gè)可計(jì)數(shù)的信號量使用。通過調(diào)用OSSemPost()函數(shù)發(fā)送一個(gè)信號量,通過調(diào)用OSSemPend()函數(shù)等待一個(gè)信號量。如果信號量當(dāng)前是可用的(信號量的計(jì)數(shù)值大于0),將信號量的計(jì)數(shù)值減1,然后函數(shù)將“無錯(cuò)”錯(cuò)誤代碼返回給它的調(diào)用函數(shù)。如果信號量的計(jì)數(shù)值為0,而OSSemPend()函數(shù)又不是由中斷服務(wù)子程序調(diào)用的,則調(diào)用OSSemPend()函數(shù)的任務(wù)要進(jìn)入睡眠狀態(tài),等待另一個(gè)任務(wù)(或者中斷服務(wù)子程序)發(fā)出該信號量。下面的代碼使用兩個(gè)信號量實(shí)現(xiàn)了兩個(gè)任務(wù)之間的同步。信號量創(chuàng)建的代碼如下,信號量Sem2初始為可用狀態(tài),而信號量Sem1初始為不可用狀態(tài)。Sem1

52、=OSSemCreate(0);Sem2=OSSemCreate(1);任務(wù)TaskLED必須等待Sem2可用才能夠繼續(xù)往下運(yùn)行,而Sem2在TaskSEG中發(fā)送。同樣TaskSEG必須等待Sem1可用才能夠繼續(xù)往下運(yùn)行,而Sem1在TaskLED中發(fā)送,這樣就實(shí)現(xiàn)了程序中“”之間代碼的順序執(zhí)行,而不受OSTimeDly的延時(shí)值的影響。void TaskLED(void*Id)INT8U Reply;for(;)OSSemPend(Sem2,0,&Reply);/*wait for the semaphore*/OSSemPost(Sem1);/*signal the semaphor

53、e*/OSTimeDly(200);/*wait a short while*/void TaskSEG(void*Id)INT8U Reply;for(;)OSSemPend(Sem1,0,&Reply);/*wait for the semaphore*/OSSemPost(Sem2);/*signal the semaphore*/OSTimeDly(100);/*wait a short while*/3.3 C/OS-II中使用郵箱實(shí)現(xiàn)任務(wù)之間的通訊郵箱可使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送一個(gè)指針型的變量。該指針個(gè)包含了特定“消息”的數(shù)據(jù)結(jié)構(gòu)。通過調(diào)用OSMboxC

54、reate()函數(shù)來創(chuàng)建郵箱,并指定指始值。一般情況下,這個(gè)初始值是NULL,但也可以初始化一個(gè)郵箱,使其在最開始就包含息。如果使用郵箱的目的是用來通知一個(gè)事件的發(fā)生(發(fā)送一條消息),那么就要初始化為NULL,因?yàn)樵陂_始時(shí),事件還沒有發(fā)生。如果用戶用郵箱來共享某些資源,那么就要初郵箱為一個(gè)非NULL的指針。在這種情況下,郵箱被當(dāng)成一個(gè)二值信號量使用。使用郵箱同以實(shí)現(xiàn)上節(jié)中描述的任務(wù)間的同步。通過OSMboxPost()函數(shù)發(fā)送一個(gè)消息到郵箱中,通過OSMboxPend()函數(shù)等待一個(gè)郵箱消息,如果郵箱中沒有可用的消息,OSMboxPend()的調(diào)用任務(wù)就被掛起,直到郵箱中有了者等待超時(shí)。下面的

55、代碼每100個(gè)時(shí)鐘節(jié)拍從TaskSEG中發(fā)送一個(gè)字符串,在TaskLED中接收并打來。void TaskLED(void*Id)char*Msg;INT8U err;for(;)/*wait for a message from the input mailbox*/Msg=(char*)OSMboxPend(Mbox1,0,&err);uHALr_printf(Msg);/*print task's id*/void TaskSEG(void*Id)char Msg100;INT8U err;int nCount=0;for(;)/*post the input messag

56、e to the output mailbox*/sprintf(Msg,"TaskSEG%d",nCount+);OSMboxPost(Mbox1,Msg);OSTimeDly(100);3.4.C/OS-II中使用消息隊(duì)列實(shí)現(xiàn)任務(wù)之間的通訊消息隊(duì)列是C/OS-II中另一種通訊機(jī)制,它可以使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送以指針方式定義的變量。因具體的應(yīng)用有所不同,每個(gè)指針指向的數(shù)據(jù)結(jié)構(gòu)變量也有所不同。C/OS-II提供了7個(gè)對消息隊(duì)列進(jìn)行操作的函數(shù):創(chuàng)建消息隊(duì)列函數(shù)OSQCreate(),等待消息隊(duì)列函數(shù)OSQPend(),先進(jìn)先出(FIFO)發(fā)送消息函數(shù)OSQPost(),后進(jìn)先出(LIFO)發(fā)送消息函數(shù)OSQPostFront(),無等待獲取消息函數(shù)OSQAccept(),清空消息隊(duì)列函數(shù)OSQFlush()和查詢消息隊(duì)列函數(shù)OSQQuery()。四、車載終端的軟件設(shè)計(jì)1、軟件設(shè)計(jì)總體框架軟件功能是系統(tǒng)開始運(yùn)行后等待接收來自控制中心的請求信息,信息到達(dá)后進(jìn)行信息確

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論