劉 軍,金 蕾,張方方
(1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710121;3.廣州致遠(yuǎn)電子有限公司 廣東 廣州 510660)
近年來,隨著中國汽車工業(yè)的發(fā)展,越來越多的人喜歡開私車出行,所到之地也越來越廣,傳統(tǒng)的“看地圖,找地名”方式已很難為車主提供具體客觀的路況等信息,各式各樣的導(dǎo)航系統(tǒng)方興未艾。
市面上的導(dǎo)航系統(tǒng)一般只提供道路、地點(diǎn)等靜態(tài)信息,基本不提供道路擁堵及停車場車位情況等動態(tài)實(shí)時信息。而且基于Internet的實(shí)時路況查詢系統(tǒng)一般都基于個人計(jì)算機(jī),遠(yuǎn)沒有嵌入式系統(tǒng)方便實(shí)用[1-2]。因此,本文利用SOPC工具進(jìn)行系統(tǒng)設(shè)計(jì)時,硬件與軟件系統(tǒng)的可裁減性,開發(fā)了一個“基于NOIS II多核智能交通車載終端”的系統(tǒng),本系統(tǒng)的設(shè)計(jì)充分利用雙Nios II軟核的多種功能和特點(diǎn),所有的控制和數(shù)據(jù)處理都是在一片F(xiàn)PGA生成的雙Nios II軟核處理器的管理下進(jìn)行,充分體現(xiàn)了高度集成的SOPC解決方案,擺脫了傳統(tǒng)軟件依賴于硬件的開發(fā)模式[3-4]。
考慮到要向客戶提供道路擁堵情況等實(shí)時信息,該系統(tǒng)采用客戶機(jī)—服務(wù)器模式,將地圖等靜態(tài)信息存放于車載終端中,而實(shí)時的動態(tài)信息由后臺服務(wù)器在用戶發(fā)出請求后,通過無線通信模塊傳送給用戶[5-6]。系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成圖Fig.1 System diagram
本系統(tǒng)設(shè)計(jì)分為軟件和硬件兩大部分。硬件結(jié)構(gòu)如圖2所示。
圖2 硬件系統(tǒng)框圖Fig.2 Hardware block diagram of system
其中CPU1運(yùn)行應(yīng)用程序(GUI),CPU2運(yùn)行GPS模塊和GPRS模塊,CPU1與CPU2間通過3個互斥核通訊。其中GPS用于GPS模塊與GUI鍵的通訊,GPRS_TX用于 GPRS向GUI發(fā)送數(shù)據(jù),GPRS_RX用于GUI向GPRS發(fā)送數(shù)據(jù)[7-8]。
軟件結(jié)構(gòu)如圖3所示。
圖3 軟件系統(tǒng)框圖Fig.3 Software block diagram of system
μC/OS II是我們整個GPRS通信模塊的基礎(chǔ),通信模塊所有任務(wù)的調(diào)度和各個任務(wù)之間的通信都是依靠μC/OS II完成的,主要用來調(diào)度Task_start(主控任務(wù))、Task_GPS_Send(從串口接受 GPS數(shù)據(jù)并向 GUI發(fā)送 GPS信息)、Task_GPRS_Send(向 GUI發(fā)送后臺傳來的數(shù)據(jù))、Task_GPRS_TCP_Send(向后臺發(fā)送前端服務(wù)請求)等9個任務(wù)。
μC/GUI不僅提供了豐富的界面元素(窗體,各種控件)和繪圖函數(shù),同時也提供了很好的顏色管理和漢字支持,對硬件也提供了良好的底層驅(qū)動支持。我們的應(yīng)用程序正是基于這樣的圖形用戶接口開發(fā)的[9]。
由于uc/GUI的調(diào)用關(guān)系復(fù)雜,地圖數(shù)據(jù)的處理過于龐大,導(dǎo)致μC/OS II調(diào)度GUI所需的堆棧太大,調(diào)度效果很不理想,于是決定拋棄μC/OS II,提出雙核設(shè)計(jì),即滿足了 uc/GUI運(yùn)行于無操作系統(tǒng)環(huán)境中,又保證GPS和GPRS運(yùn)行于有操作系統(tǒng)環(huán)境中。設(shè)計(jì)思想如下:
第一個CPU的功能:
1)人機(jī)交互,不設(shè)置操作系統(tǒng);
2)μC/GUI及應(yīng)用程序的運(yùn)行。
第二個CPU的功能:
1)設(shè)置嵌入式實(shí)時μC/OS II操作系統(tǒng);
2)通過UART1串口接受前端GPS數(shù)據(jù);
3)通過UART2(自定義擴(kuò)展)串口與GPRS模塊通信。
2個NiosII軟核通過mailbox進(jìn)行軟核間的通信。
Altera提供的雙核互斥通訊機(jī)制使用效果不能滿足系統(tǒng)要求,于是編寫了郵箱機(jī)制來實(shí)現(xiàn)雙核間的互斥通訊。
互斥信號量(mutex)是解決雙處理器爭用存儲器的關(guān)鍵。它的位寬為2x32bit(見表1)。首先將VALUE值置0x0000,RESET位賦‘1’,使能mutex。而在多核的環(huán)境中也可以用信箱(mailbox)在多核之間進(jìn)行通信,mailbox含有的互斥信號量(mutex)僅僅在同一時刻使一個CPU修改mailbox里面的內(nèi)容,基于兩者的優(yōu)點(diǎn),在互斥信號量的基礎(chǔ)上用信箱的方式來解決雙處理器爭用存儲器的問題。下面分別是共享存儲器和信箱的結(jié)構(gòu)體:
表1 互斥信號量Tab.1 Mutual exclusion semaphore
μC/GUI不僅提供了豐富的界面元素(窗體,各種控件),繪圖函數(shù),以及顏色管理和漢字支持,同時對硬件也提供了良好的底層驅(qū)動支持。在μC/GUI的基礎(chǔ)上,使用壓縮位圖作為存儲格式開發(fā)的智能交通導(dǎo)航系統(tǒng)界面如下:
首先定義GUIConf.h和LCDConf.h這兩個文件,GUIConf.h是μC/GUI功能模塊和動態(tài)存儲空間 (用于內(nèi)存設(shè)備和窗口對象)大小,默認(rèn)字體設(shè)置等基本GUI預(yù)定義控制的定義。LCDConf.h為LCD大小,控制器類別,總線寬度,顏色選取等LCD參數(shù)控制文件。
GUI/CORE/LCD_ConfDefaults.h文件內(nèi)可以找到所有囊括LCD配制默認(rèn)選項(xiàng),包括LCD屏個數(shù),控制器個數(shù),調(diào)色板,屏幕反向設(shè)置等眾多配制選項(xiàng)。如果配備觸摸屏可以通過GUITouchConf.h進(jìn)行配制,根據(jù)觸摸屏及其控制芯片編制以下幾個函數(shù):
void TOUCH_X_ActivateX (void);//準(zhǔn)備 X 軸數(shù)據(jù)測量
void TOUCH_X_ActivateY (void);//準(zhǔn)備 Y 軸數(shù)據(jù)測量
因?yàn)樵诒鞠到y(tǒng)的軟件中不需要測量X、Y軸的數(shù)據(jù),所以以上兩個函數(shù)均為空結(jié)構(gòu)體;
int TOUCH_X_MeasureX (void);//根據(jù)AD轉(zhuǎn)換結(jié)果返回X的值
int TOUCH_X_MeasureY (void);//根據(jù)AD轉(zhuǎn)換結(jié)果返回Y的值
以上幾個函數(shù)在GUI_TOUCH_Exec()會被調(diào)用,將它們寫好即可。
雖然μC/GUI自身提供了RLE算法,但解壓時要全部解壓,會占用大量的內(nèi)存和CPU,而對于本系統(tǒng)并不需要完全解壓,在地圖中主要以白色為主而且是連續(xù)的,因此采用了類RLE算法,即只壓縮白色像素,以壓縮率的微弱降低來換取更快的壓縮速度,而且在解壓時采用部分解壓,即只解壓屏幕上顯示部分,大大減少了內(nèi)存使用量。在實(shí)際操作中制作的地圖達(dá)4.1M,而Altera的DE2板子的Flash只有4M,如果不采取壓縮算法,地圖根本無法運(yùn)行,經(jīng)過類RLE算法,地圖壓縮到了2.45M,節(jié)省了DE2板的Flash。
圖4 導(dǎo)航系統(tǒng)界面Fig.4 Navigation system interface
服務(wù)器端軟件是由Microsoft SQL2000和Microsoft Visual Studio.NET 2003完成的,數(shù)據(jù)庫中主要包括的是酒店、商場、醫(yī)院、車站、加油站及道路等信息,而.NET主要完成了界面的設(shè)計(jì)、算法設(shè)計(jì)和數(shù)據(jù)處理等。后端服務(wù)器軟件的登陸界面如圖5所示。
由于后端服務(wù)器可以實(shí)時的將路況的信息反饋給車主,本車載終端可用作交通部門的數(shù)據(jù)采集終端,假設(shè)交通部門裝配了一定數(shù)目的該系統(tǒng)(比如安裝在公交車、出租車上),則交通部門可以通過該車載終端發(fā)送的位置信息 (當(dāng)然,用戶也可以不發(fā)送)了解道路擁堵情況。算法設(shè)計(jì)如下:
N為某條道路S上裝配該設(shè)備的車輛數(shù)目;
圖5 后端服務(wù)器軟件登陸界面Fig.5 Back-end server software interface
R為這些車輛的平均行駛速度(一定時間內(nèi),該時間會大于紅綠燈的紅燈時間,以免造成誤判斷);
R0為該路段限速最大值。
若R<<R0且N大于一定數(shù)目 (減少可能存在的司機(jī)停車情況對結(jié)果的影響),我們可以認(rèn)為該路段擁堵,R越小則擁堵越嚴(yán)重。
為了更好的將道路實(shí)時信息反饋給車主,方便車主與控制中心聯(lián)絡(luò)和通信,本系統(tǒng)外置了GPRS模塊,通過串口和FPGA中的NiosII軟核聯(lián)系。車主可以直接發(fā)送服務(wù)請求給后端的監(jiān)控中心,并獲得相關(guān)的服務(wù),同時后端通過采集道路信息而及時了解道路交通情況。由于SOPC系統(tǒng)構(gòu)件中硬件和軟件的可裁剪性,使得系統(tǒng)開發(fā)過程中軟硬件設(shè)計(jì)可以協(xié)同開發(fā),幾乎可以同時開始和同時完成,優(yōu)勢明顯,加快了產(chǎn)品上市的進(jìn)程,并可以保持一個較長的產(chǎn)品生命周期[10]。即使在開發(fā)過程中需要修改一些定義,也只需重新生成新的NiosII內(nèi)核,對于其他的外圍器件或者是NiosII程序沒有任何影響。
[1]HungA,BishopW,AndrewKennings.Symmetricmultiprocessing on programmable chips made easy[J].1530-1591/05 IEEE.
[2]王衛(wèi)源,戴紫彬,錢育蓉.NiosⅡ多處理器系統(tǒng)方案設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,7(2):96-97.
WANG Wei-yuan,DAIZi-bin,QIAN Yu-rong.Nios Ⅱmultiprocessor system design[J].Control&Automation,2007,7(2):96-97.
[3]李蘭英.NiosII嵌入式軟核SOPC設(shè)計(jì)原理及應(yīng)用 [M].北京:北京航空航天大學(xué)出版社有限公司,2006.
[4]周航慈.基于嵌入式實(shí)時操作系統(tǒng)的程序設(shè)計(jì)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2011.
[5]陸明,馮志勇.基于嵌入式SoC的車載系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微處理機(jī),2008(4):174-176.
LU Ming,F(xiàn)ENG Zhi-yong.Design and implementation of vehicle system based embedded SoC[J].Microprocessors,2008(4):174-176.
[6]Vanlvanno J W.嵌入式微計(jì)算機(jī)系統(tǒng)實(shí)時接口技術(shù)[M].李曦,周學(xué)海,方潛生,等譯.北京:機(jī)械工業(yè)出版社,2003.
[7]張佐經(jīng),吳旭光.基于GPS和GPRS模塊的車載導(dǎo)航定位系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2008,16(7):997-1000.
ZHANG Zuo-jing,WU Xu-guang.Design of multi-functional development board based on GPS module and GPRS module[J].Computer Measurement&Control,2008,16(7):997-1000.
[8]史軍勇,張曉煜.基于GPRS的實(shí)時路況車載導(dǎo)航終端研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(9):156-159.
SHI Jun-yong,ZHANG Xiao-yu.Study and implementation of real-time traffic information navigation terminal based on GPRS[J].Computer Technology and Development,2011,21(9):156-159.
[9]邵貝貝.嵌入式實(shí)時操作系統(tǒng)μC/OS-II[M].北京:北京航空航天大學(xué)出版社,2003.
[10]江國強(qiáng).SOPC技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.