摘要:在現(xiàn)代汽車(chē)業(yè)中,先進(jìn)的通信網(wǎng)絡(luò)技術(shù)CAN總線被應(yīng)用到汽車(chē)儀表系統(tǒng)中,實(shí)現(xiàn)與汽車(chē)各電控單元節(jié)點(diǎn)之間的資源共享,使得汽車(chē)儀表的功耗、安全性、可靠性得到改善。基于Android系統(tǒng)和CAN總線的車(chē)輛虛擬儀表是具有支持駕駛員與車(chē)輛進(jìn)行信息交流、行駛信息的記錄和管理及通信功能的平臺(tái)。
關(guān)鍵詞:Android系統(tǒng) CAN總線 車(chē)輛虛擬儀表
中圖分類(lèi)號(hào):TP216 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2012)09(c)-0032-01
為了簡(jiǎn)化汽車(chē)內(nèi)部控制系統(tǒng),降低汽車(chē)制造成本,提高人車(chē)交互界面的友好度,設(shè)計(jì)并實(shí)現(xiàn)了一種新型的汽車(chē)虛擬儀表。本文致力于全數(shù)字式汽車(chē)液晶智能儀表系統(tǒng)的開(kāi)發(fā)和研究,提出了在嵌入式Android平臺(tái)上用液晶顯示屏圖形化顯示復(fù)雜車(chē)載信息的方法。該理論上是作為汽車(chē)CAN總線上的一個(gè)節(jié),通過(guò)CANBUS接口提取車(chē)速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、燃油量、冷卻水溫度、汽車(chē)檔位及其他車(chē)況信息等各種數(shù)字量和模擬量,經(jīng)S5PV210微處理器分析計(jì)算,采用數(shù)字及圖形化動(dòng)態(tài)LCD顯示,并可以通過(guò)觸摸屏進(jìn)行交互響應(yīng),既照顧到了駕駛員的習(xí)慣,又利用了現(xiàn)代電子技術(shù)的優(yōu)勢(shì),使儀表具有多功能、智能和高精度的特點(diǎn)。
1 系統(tǒng)軟硬件平臺(tái)的選擇
本文選取基于三星A8處理器1GHz S5PV210為微處理器,選配REALV210核心板,支持SD/MMC/SDIO接口存儲(chǔ)卡,最高支持32GB,支持SD卡啟動(dòng)。而制作可用于啟動(dòng)的SD卡,即燒寫(xiě)u-boot到SD卡中進(jìn)行內(nèi)核的燒寫(xiě)與移植。CAN總線通信模塊在硬件上采用了獨(dú)立高速CAN控制器MCP2515結(jié)合收發(fā)器MCP2551的設(shè)計(jì)方法。
2 Android的程序開(kāi)發(fā)和移植
將android及應(yīng)用程序移植到目標(biāo)機(jī)上需要經(jīng)歷編寫(xiě)相應(yīng)的驅(qū)動(dòng)程序、交叉編譯android及應(yīng)用程序,安裝android 到目標(biāo)系統(tǒng)。首先本文采用windows+vmware+ubuntu 的方式,建android編譯環(huán)境,編譯Android 需要許多的軟件包的配合,可以直接在ubuntu 下輸入命令進(jìn)行安裝。Android的編譯還需要使用到j(luò)ava開(kāi)發(fā)環(huán)境,把下載的jdk1.6.0_26.tar.bz2進(jìn)行解壓,在ubuntu的終端命令輸入sudo tar -jxvf jdk1.6.0_26.tar.bz2便能在當(dāng)前目錄下得到 jdk1.6.0_26 目錄。安裝結(jié)束后還要設(shè)置好環(huán)境變量讓Android找到這個(gè)路徑,編輯/etc/bash.bashrc,增加下面的語(yǔ)句:
exportJAVA_HOME=/home/work/jdk1.6.0_26
exportANDROID_JAVA_HOME=
$JAVA_HOME export PATH=$JAVA_HOME/bin:$PATH
這里要根據(jù)實(shí)際情況修改路徑,保存退出。
把下載好的android_gingerbread_realv210_ver_1_0.tar.bz2 Android源代碼復(fù)制到ubuntu主機(jī)下進(jìn)行解壓。便可得到Android、u-boot、linux kernel等源碼包和交叉編譯器。在終端進(jìn)入android目錄,輸入./build.sh進(jìn)行編譯,之后便可在android_gingerbread_realv210_ver_1_0/out/target/product/smdkv210下得到 kernel.img,ramdisk-yaffs.img,userdata.img,system.img等鏡像文件,分別是 Linux內(nèi)核鏡像文件,根文件系統(tǒng)鏡像,data分區(qū)鏡像,system分區(qū)鏡像。在 SD卡上新建文件夾,命名為 sdfuse,把需要燒寫(xiě)的文件放到sdfuse文件夾里。第一次燒寫(xiě)前,最好先格式化一下nandflash。開(kāi)發(fā)板連接pc,使用u-boot菜單燒寫(xiě)SD卡中的鏡像文件。到此,Android成功移植到開(kāi)發(fā)板。
3 CAN總線驅(qū)動(dòng)程序的方案設(shè)計(jì)與實(shí)現(xiàn)
本文選用Microchip公司生產(chǎn)的MCP2515作為CAN總線控制器。MCP2515是一款獨(dú)立的CAN協(xié)議控制器,完全支持CAN2.0B技術(shù)規(guī)范,MCP251與主控制器的連接是通過(guò)標(biāo)準(zhǔn)串行外設(shè)接口SPI(Searial Peripheral Interface)實(shí)現(xiàn)的。
(1)查看編譯的Android系統(tǒng)是否自動(dòng)啟動(dòng)CAN腳本。查看init.rc 中service can /system/etc/can.sh oneshot 如果不存在則需要在android的源文件/device/samsung/smdkv210中修改init.rc。加入上面兩句話,重新生成鏡像燒寫(xiě)
(2)查看/system/etc/can.sh是否存在。不存在則創(chuàng)建can.sh。can.sh內(nèi)容如下:
#!/system/bin/sh
ifconfig can0 down
ip link set can0 type can bitrate 125000 fconfig can0 up
同時(shí)將其push到響應(yīng)位置。125000是波特率。根據(jù)情況自己修改。經(jīng)以上修改后在啟動(dòng)過(guò)程中可以看到mcp2515信息。
4 結(jié)語(yǔ)
本文所提出的虛擬儀表平臺(tái)主要有以下二個(gè)優(yōu)點(diǎn):一是采用CAN總線技術(shù),把各種模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),能處理大量數(shù)據(jù),提高精度和靈敏度,獲取全面車(chē)況信息的同時(shí)解決了傳統(tǒng)行駛記錄儀線束多的問(wèn)題,增強(qiáng)了平臺(tái)的擴(kuò)展性;二是CAN設(shè)備在嵌入式操作系統(tǒng)Android下驅(qū)動(dòng)程序的成功實(shí)現(xiàn),為在嵌入式系統(tǒng)中擴(kuò)展其他硬件設(shè)備驅(qū)動(dòng)程序提供了很好的參考價(jià)值。
參考文獻(xiàn)
[1] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996.
[2] Android移植環(huán)境手冊(cè)[oL].http://source.android.com/source/downloading.html
[3] 蔡月明,劉浩.基于CAN總線的工業(yè)控制系統(tǒng)[J].中國(guó)儀器表,2001(5):16-18.
[4] 陳連坤.嵌入式系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2005.