《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Cortex-A8的車載信息系統(tǒng)設(shè)計(jì)
基于Cortex-A8的車載信息系統(tǒng)設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2014年第8期
黃小波,,許 勇
桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,,廣西 桂林541004
摘要: 基于Cortex-A8嵌入式開(kāi)發(fā)平臺(tái)和SAE J1939協(xié)議,,通過(guò)解析CAN總線報(bào)文、后臺(tái)數(shù)據(jù)處理和前端應(yīng)用程序開(kāi)發(fā),,設(shè)計(jì)出了一套車載信息服務(wù)系統(tǒng),。經(jīng)過(guò)測(cè)試表明,該系統(tǒng)能穩(wěn)定顯示車輛實(shí)時(shí)運(yùn)行狀況,,并能分析和保存故障信息,,方便車主的維護(hù)和保養(yǎng),;其易操控性和良好的人機(jī)交互體驗(yàn)使本系統(tǒng)具有一定的實(shí)用價(jià)值。
Abstract:
Key words :

摘  要: 基于Cortex-A8嵌入式開(kāi)發(fā)平臺(tái)和SAE J1939協(xié)議,,通過(guò)解析CAN總線報(bào)文,、后臺(tái)數(shù)據(jù)處理和前端應(yīng)用程序開(kāi)發(fā),設(shè)計(jì)出了一套車載信息服務(wù)系統(tǒng),。經(jīng)過(guò)測(cè)試表明,,該系統(tǒng)能穩(wěn)定顯示車輛實(shí)時(shí)運(yùn)行狀況,并能分析和保存故障信息,,方便車主的維護(hù)和保養(yǎng),;其易操控性和良好的人機(jī)交互體驗(yàn)使本系統(tǒng)具有一定的實(shí)用價(jià)值,。
關(guān)鍵詞: Cortex-A8,;SAE J1939協(xié)議;車載信息,;人機(jī)交互

    車載信息系統(tǒng)是現(xiàn)代汽車電子重要組成之一,。目前市場(chǎng)上的乘用車車載信息系統(tǒng)智能化程度比較高,技術(shù)已趨向成熟,,但是商用車卻相對(duì)滯后,。這也意味著商用車車載信息服務(wù)系統(tǒng)市場(chǎng)亟待開(kāi)發(fā),主要有以下幾個(gè)方面的原因:一是行業(yè)的內(nèi)在需求,。商用車作為運(yùn)營(yíng)車輛,,如客運(yùn)、旅游公交,、物流公司對(duì)車輛的安全,、運(yùn)營(yíng)、成本管理等的內(nèi)在需求愈發(fā)強(qiáng)烈,。二是技術(shù)的日漸成熟,。車載總線技術(shù)的推廣普及為車輛信息采集提供了基礎(chǔ);大規(guī)模集成電路的迅速發(fā)展為車聯(lián)網(wǎng)硬件開(kāi)發(fā)提供了基礎(chǔ),;通信技術(shù)中的3G技術(shù)已經(jīng)成熟,,4G網(wǎng)絡(luò)在快速建設(shè),很快將完成城市和公路范圍覆蓋,。三是國(guó)家相關(guān)政策陸續(xù)出臺(tái),。商用車,尤其是客車作為運(yùn)營(yíng)車輛,,事關(guān)人身安全,、財(cái)產(chǎn)安全以及社會(huì)穩(wěn)定,國(guó)家對(duì)其管理要求也是格外重視,,自2003年起便推出了道路運(yùn)輸車輛衛(wèi)星定位動(dòng)態(tài)監(jiān)管系統(tǒng)標(biāo)準(zhǔn),、強(qiáng)制安裝記錄儀標(biāo)準(zhǔn),、JT-T415-2006道路運(yùn)輸電子政務(wù)平臺(tái)標(biāo)準(zhǔn)及汽車行駛記錄儀新國(guó)家標(biāo)準(zhǔn),這為商用車的車載信息服務(wù)系統(tǒng)的快速普及提供了強(qiáng)大的政策推動(dòng),。商用車車載信息服務(wù)系統(tǒng)及相關(guān)技術(shù)發(fā)展?jié)摿薮蟆?br/>     為此,,本文借助Cortex-A8嵌入式開(kāi)發(fā)平臺(tái),基于SAE J1939協(xié)議,,針對(duì)商用車設(shè)計(jì)了一套功能完善,、整體性強(qiáng)且性價(jià)比高的車載信息系統(tǒng)。
1 系統(tǒng)總體設(shè)計(jì)方案
    本系統(tǒng)主要功能為:實(shí)時(shí)監(jiān)控車輛運(yùn)行參數(shù),,給駕駛?cè)藛T提供豐富的車輛實(shí)時(shí)運(yùn)行狀況信息,;建立車載數(shù)據(jù)庫(kù),存儲(chǔ)采集到的車輛實(shí)時(shí)運(yùn)行動(dòng)態(tài)信息和故障信息,,以備查詢使用,;實(shí)現(xiàn)車輛故障自診斷功能,方便相關(guān)人員對(duì)車輛進(jìn)行故障檢測(cè),。系統(tǒng)結(jié)構(gòu)原理圖如圖1所示,。
    圖1中,CAN控制器模塊采集車內(nèi)各CAN節(jié)點(diǎn)的報(bào)文信息,,其通過(guò)SPI接口與主處理器進(jìn)行通信,;GPS模塊提供車輛的實(shí)時(shí)定位信息;通過(guò)GPRS模塊可將車輛的實(shí)時(shí)運(yùn)行狀態(tài)與移動(dòng)通信設(shè)備進(jìn)行信息交換,;存儲(chǔ)模塊主要儲(chǔ)存車輛的故障信息,,方便車輛的維護(hù)和保養(yǎng);人機(jī)交互模塊主要用來(lái)顯示針對(duì)本系統(tǒng)開(kāi)發(fā)的應(yīng)用軟件,,給用戶以人性化體驗(yàn),。

2 系統(tǒng)主要硬件結(jié)構(gòu)
    主控芯片采用基于ARMv7架構(gòu)的Cortex-A8處理器,其主頻達(dá)1 GHz,,是三星推出的一款適用于智能手機(jī)和平板電腦的應(yīng)用處理芯片,。本系統(tǒng)采用的開(kāi)發(fā)平臺(tái)具有豐富的板載資源:板載RS232串口、RS485串口,、外擴(kuò)I2C,、SPI、PWM等接口,,板載CAN總線接口,、GPS模塊、工業(yè)級(jí)GSM/GPRS模塊等,,大大方便了本系統(tǒng)的開(kāi)發(fā),。
    其中,CAN總線模塊主要由CAN獨(dú)立控制器,、CAN收發(fā)器和時(shí)鐘電路組成,??刂破鬟x用MCP2510,并以晶振電路作為時(shí)鐘源,;收發(fā)器選用CTM1050T(內(nèi)部集成光電隔離電路),。電源部分:MCP2510采用3.3 V電源供電,CTM1050T采用5 V供電,,與CAN總線電源電壓一致,。由于CTM1050T內(nèi)部集成了光電隔離電路,因此GND和CANG兩個(gè)接地引腳,,分別接系統(tǒng)地線和CAN總線地線,。數(shù)據(jù)線接線部分:MCP2510通過(guò)標(biāo)準(zhǔn)SPI串行接口與Cortex-A8通信,通過(guò)收發(fā)器CTM1050T與車內(nèi)CAN總線網(wǎng)絡(luò)連接,。信號(hào)線接線部分:MCP2510有8個(gè)中斷源,,有中斷發(fā)生時(shí),通過(guò)INT引腳向主處理器發(fā)送中斷請(qǐng)求,,然后主處理器通過(guò)查詢中斷標(biāo)志寄存器(CANINTF)確定中斷源,。另外,,接收緩沖器滿引腳(RX0BF和RX1BF)也可用來(lái)顯示有效報(bào)文是否分別成功載入RXB0或RXB1,。本設(shè)計(jì)使用中斷引腳INT與Cortex-A8的外部中斷引腳EINT19相連,用于發(fā)送中斷信息,,RX0BF和RX1BF外接LED,,用于指示數(shù)據(jù)傳輸狀態(tài)。CAN總線模塊電路原理圖如圖2所示,。

3 系統(tǒng)的軟件設(shè)計(jì)
    本文所設(shè)計(jì)的車載信息服務(wù)系統(tǒng)是基于操作系統(tǒng)的嵌入式產(chǎn)品,。傳統(tǒng)的基于操作系統(tǒng)的嵌入式產(chǎn)品可以分為應(yīng)用層、文件系統(tǒng)及驅(qū)動(dòng)層和底層3個(gè)部分,。借助于功能強(qiáng)大的Cortex-A8嵌入式開(kāi)發(fā)平臺(tái),,本文主要工作集中在應(yīng)用層上面,其軟件設(shè)計(jì)流程圖如圖3所示,。系統(tǒng)地看,,CAN設(shè)備經(jīng)過(guò)驅(qū)動(dòng)以后,從車載CAN總線網(wǎng)絡(luò)上接收?qǐng)?bào)文,,讀取設(shè)備文件函數(shù)后,,數(shù)據(jù)流向后臺(tái)數(shù)據(jù)處理程序,經(jīng)過(guò)后臺(tái)數(shù)據(jù)處理,,最后交由前端Qt頁(yè)面顯示,。

    本系統(tǒng)所做工作的核心部分即為后臺(tái)數(shù)據(jù)處理程序設(shè)計(jì)和前端人機(jī)交互程序設(shè)計(jì)。后臺(tái)數(shù)據(jù)處理程序接收CAN報(bào)文后,,基于SAE J1939協(xié)議進(jìn)行解析處理,;人機(jī)交互是將處理后的數(shù)據(jù)顯示在用戶圖形界面上,。
3.1 SAE J1939協(xié)議
    SAE J1939協(xié)議是美國(guó)汽車工程師協(xié)會(huì)(SAE)在CAN2.0B協(xié)議基礎(chǔ)上制定的針對(duì)客車和貨運(yùn)車網(wǎng)絡(luò)通信應(yīng)用層協(xié)議,目前在汽車電子網(wǎng)絡(luò)中得到廣泛應(yīng)用,。SAE J1939協(xié)議以CAN2.0B協(xié)議為基礎(chǔ),,所不同的是在很多方面做了更具體的規(guī)定。例如,,在物理層,,選用屏蔽雙絞線作為傳輸介質(zhì),傳輸速率規(guī)定為250 kb/s,;在數(shù)據(jù)鏈路層使用CAN擴(kuò)展幀,,并對(duì)CAN標(biāo)識(shí)符重新定義,摒棄了CAN協(xié)議中對(duì)報(bào)文標(biāo)識(shí)的方法,,重新采用對(duì)節(jié)點(diǎn)地址編號(hào),。SAE J1939協(xié)議總體按照ISO/OSI模型制定相關(guān)標(biāo)準(zhǔn),在CAN2.0B協(xié)議的基礎(chǔ)上又增加了應(yīng)用層定義,、網(wǎng)絡(luò)層定義,、網(wǎng)絡(luò)管理和故障診斷定義,傳輸層,、會(huì)話層和表示層暫未定義,。SAE J1939協(xié)議各層使用的是格式統(tǒng)一的協(xié)議數(shù)據(jù)單元PDU(Protocol Data Unit),每個(gè)協(xié)議數(shù)據(jù)單元的功能由所攜帶的參數(shù)組編號(hào)PGN(Parameter Group Number)標(biāo)識(shí),。SAE J1939作為一種控制局域網(wǎng)協(xié)議,,網(wǎng)絡(luò)中大部分?jǐn)?shù)據(jù)都是以參數(shù)的形式在應(yīng)用層完成傳遞的。
    下面以動(dòng)機(jī)瞬時(shí)油耗為例說(shuō)明報(bào)文解析的具體過(guò)程:如接收到的PDU的幀ID為0x18FEF200,,其數(shù)據(jù)區(qū)前兩個(gè)字節(jié)值為138(0x008A),,則該報(bào)文部分域值如圖4所示。

    由圖4可知,,優(yōu)先級(jí)P為6,,目標(biāo)地址PS為0xF2,源地址SA為0x0,。此時(shí)地址為0xF2的節(jié)點(diǎn)會(huì)接收該報(bào)文并交由上層應(yīng)用程序處理,,而其他節(jié)點(diǎn)則不進(jìn)行處理,直接丟棄,。根據(jù)R(保留位),、DP(數(shù)據(jù)頁(yè))、PF(PDU格式),、PS(特定PDU)的值的計(jì)算可得本報(bào)文的參數(shù)組編號(hào)PGN為0x00-
FEF2,。SAE J1939對(duì)該參數(shù)組編號(hào)定義如表1所示。

 

 

    由表1可知,此報(bào)文數(shù)據(jù)區(qū)攜帶了4個(gè)參數(shù),,前兩個(gè)字節(jié)內(nèi)定義的參數(shù)是燃油使用率,,可疑參數(shù)編號(hào)SPN為183。具體燃油使用率的值可以按照SAE J1939協(xié)議對(duì)SPN183的定義計(jì)算出來(lái),,協(xié)議對(duì)SPN183的定義如表2所示,。
    由表2,根據(jù)計(jì)算公式:參數(shù)實(shí)際值=分辨率×總線傳輸數(shù)值+偏移量,,代入數(shù)據(jù)便可以得到參數(shù)的實(shí)際物理值:瞬時(shí)油耗=0.05 L/h×138+0=6.9 L/h,。
3.2 CAN總線底層配置
    CAN總線驅(qū)動(dòng)程序的報(bào)文發(fā)送、接收任務(wù)都是圍繞控制器MCP2510展開(kāi)的,,因此驅(qū)動(dòng)程序主要是對(duì)控制器MCP2510內(nèi)部寄存器進(jìn)行操作,。在Linux為所有設(shè)備都提供的統(tǒng)一函數(shù)接口file_operations中,其中can_ioctl()函數(shù)可以設(shè)置CAN總線通信波特率,、通信幀ID,、CAN總線接收濾波器以及MCP2510工作模式等參數(shù)。因此CAN總線驅(qū)動(dòng)程序主要內(nèi)容就是對(duì)CAN總線控制器MCP2510的操作和file_operations結(jié)構(gòu)的設(shè)計(jì),。
3.2.1 CAN總線控制器MCP2510的設(shè)置
    首先對(duì)MCP2510進(jìn)行初始化,,具體步驟為:(1)軟件復(fù)位,進(jìn)入配置模式,;(2)設(shè)置CAN總線波特率,;(3)關(guān)閉中斷,設(shè)置ID過(guò)濾器,;(4)切換MCP2510至工作狀態(tài),;(5)清空接收和發(fā)送緩沖區(qū),;(6)開(kāi)啟接收緩沖區(qū),,開(kāi)中斷。
    由于MCP2510與Cortex-A8的SPI0直接相連,,因此接下來(lái)需要編寫驅(qū)動(dòng)SPI0控制器的接口函數(shù),,具體包括SPI_init()、SPI_putch(),、SPI_getch(),、SPI_mcp_select()、SPI_mcp_unselect()函數(shù)等,。它們的作用分別是初始化SPI控制器,;通過(guò)SPI發(fā)送一個(gè)字節(jié);通過(guò)SPI接收一個(gè)字節(jié),;后兩個(gè)函數(shù)是MCP2510的片選的選擇和取消,。
    MCP2510為微控制器提供讀指令、寫指令,、請(qǐng)求發(fā)送指令,、狀態(tài)讀指令,、復(fù)位指令和位修改指令6種指令操作。編寫的相應(yīng)的SPI接口函數(shù)為:SPI_mcp_RD()讀操作,;SPI_mcp_WR()寫操作,;SPI_mcp_rts()請(qǐng)求發(fā)送操作;SPI_mcp_RD_status()狀態(tài)讀操作,;SPI_mcp_reset()復(fù)位操作,;SPI_mcp_write_bits()位修改操作。
3.2.2 CAN驅(qū)動(dòng)程序的實(shí)現(xiàn)
    CAN設(shè)備屬于字符設(shè)備,,根據(jù)Linux設(shè)備驅(qū)動(dòng)程序的通用模式,, CAN驅(qū)動(dòng)程序軟件結(jié)構(gòu)如圖5所示。

    由圖5可知,,CAN總線驅(qū)動(dòng)程序設(shè)計(jì)具體步驟如下:
    (1)通過(guò)can_init()函數(shù)實(shí)現(xiàn)初始化,,具體包括:初始化硬件、注冊(cè)字符設(shè)備驅(qū)動(dòng),、注冊(cè)中斷和創(chuàng)建設(shè)備文件系統(tǒng)節(jié)點(diǎn),。硬件的初始化主要通過(guò)調(diào)用函數(shù)SPI_init()和mcp_init()實(shí)現(xiàn)。注冊(cè)字符設(shè)備驅(qū)動(dòng)是通過(guò)register_
chrdev()函數(shù)實(shí)現(xiàn)的,。向內(nèi)核注冊(cè)中斷使用了函數(shù)request_irq(),。創(chuàng)建設(shè)備文件系統(tǒng)節(jié)點(diǎn)則是通過(guò)函數(shù)devfs_register()實(shí)現(xiàn)的,它將為CAN總線設(shè)備創(chuàng)建文件節(jié)點(diǎn)/dev/can,。
    (2)CAN驅(qū)動(dòng)程序的編寫選擇適用的文件操作接口file_operations結(jié)構(gòu),,具體如下所示:
Static struct file_operations can_fops={
owner:THIS_MODULE;
open:can_open,;
release:can_release,;
ioctl:can_ioctl;
write:can_write,;
read:can_read,;
};
    在該結(jié)構(gòu)中,應(yīng)用程序可以通過(guò)can_ioctl()函數(shù)改變CAN總線通信中諸如CAN總線通信波特率,、通信幀ID,、CAN總線接收濾波器以及MCP2510工作模式等參數(shù)的設(shè)置。
    (3)通過(guò)函數(shù)can_exit()用來(lái)卸載和取消設(shè)備,。在模塊被卸載時(shí),,可以通過(guò)調(diào)用unregister_chrdev()和free_irq()函數(shù)注銷字符型設(shè)備驅(qū)動(dòng)和已經(jīng)申請(qǐng)的中斷。
3.3 應(yīng)用程序設(shè)計(jì)
    應(yīng)用軟件是車載信息系統(tǒng)的重要組成部分,。本系統(tǒng)使用Qt/Enbedded 應(yīng)用程序架構(gòu)開(kāi)發(fā)應(yīng)用程序,。根據(jù)車載信息系統(tǒng)的功能需求,系統(tǒng)應(yīng)用程序的設(shè)計(jì)分為人機(jī)交互界面、CAN總線數(shù)據(jù)處理,、GPS,、GPRS信息處理和數(shù)據(jù)存儲(chǔ)等部分。由于需要執(zhí)行多個(gè)任務(wù),,若在單一線程里實(shí)現(xiàn),,可能會(huì)導(dǎo)致阻塞、降低系統(tǒng)整體性能,。因此,,本系統(tǒng)采取多線程技術(shù),可以提高處理器效率,,還能避免程序阻塞,、交互界面卡頓等現(xiàn)象。本文著重介紹車輛實(shí)時(shí)狀態(tài)監(jiān)控程序設(shè)計(jì)部分,。
    車輛狀態(tài)監(jiān)控主要包括實(shí)時(shí)監(jiān)控車輛各項(xiàng)實(shí)時(shí)運(yùn)行參數(shù)和故障信息,。結(jié)合前面的報(bào)文解析過(guò)程,其流程圖如圖6所示,。

    根據(jù)SAE J1939協(xié)議的規(guī)定,,車輛各項(xiàng)參數(shù)會(huì)以規(guī)定周期在網(wǎng)絡(luò)上廣播,如果有故障發(fā)生,,就會(huì)廣播相應(yīng)的故障碼,。本程序只需監(jiān)測(cè)網(wǎng)絡(luò),提取攜帶這些有用信息的報(bào)文進(jìn)行相應(yīng)的解析即可,。該部分功能在車輛狀態(tài)監(jiān)控子線程中實(shí)現(xiàn),,該線程啟動(dòng)后循環(huán)讀取來(lái)自MCP2510從總線上接收的報(bào)文。如果報(bào)文中攜帶的是車輛狀態(tài)參數(shù),,則根據(jù)相應(yīng)的PGN查表確定該報(bào)文數(shù)據(jù)域的參數(shù)和它們的SPN,,再根據(jù)SPN查表獲得這些參數(shù)在數(shù)據(jù)域中的位置、數(shù)據(jù)分辨率,、數(shù)據(jù)長(zhǎng)度和偏移量等信息,,最后通過(guò)計(jì)算獲得該參數(shù)具體的物理值;如果是故障報(bào)文,,則需要根據(jù)報(bào)文中的診斷故障代碼(DTC)來(lái)確定故障參數(shù)和故障類型。獲得以上這些信息后把它們存入到相應(yīng)的全局變量以供其他線程使用,,同時(shí)刷新LCD顯示值,。
    本文設(shè)計(jì)的車載信息系統(tǒng)實(shí)時(shí)監(jiān)控畫面如圖7所示。在實(shí)際測(cè)試中,,本系統(tǒng)能穩(wěn)定地顯示車輛的實(shí)時(shí)運(yùn)行數(shù)據(jù),,方便車主對(duì)車輛進(jìn)行維護(hù)和保養(yǎng),滿足用戶的基本需求;人性化的操控界面和快捷靈敏的反應(yīng)速度使本系統(tǒng)具有一定的應(yīng)用價(jià)值,。

參考文獻(xiàn)
[1] 尹占威.商用車車載信息服務(wù)市場(chǎng)升溫[N].中國(guó)電子報(bào),,2011,15(11):2.
[2] 陳一新,,李武屹,,莫家貴.基于SAE J1939協(xié)議的車輛信息采集與診斷模塊[J].電子技術(shù),2010(7):65-67.
[3] 張繼輝,,許勇.基于SAE J1939的車輛監(jiān)測(cè)與故障診斷車載系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,,2013,22(3):73-75.
[4] 趙俊旭,,唐厚君,,鐘溢原.基于Cortex-A8的倉(cāng)庫(kù)管理移動(dòng)終端設(shè)計(jì)[J].微型電腦應(yīng)用,2011,,27(10):35-37.
[5] 田帥,,柳曉鳴.車載信息系統(tǒng)的研究[D].大連:大連海事大學(xué),2007.
[6] SAE J1939-71:vehicle application layer[S].Society of Automotive Engineers,,2008.
[7] SAE J1939-21:data link layer[S].Society of Automotive Engineers,,2006.
[8] SAE J1939-73:vehicle application layer-Diagnostics[S].Society of Automotive Engineers,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。