一種基于CAN總線和MiniGUI的虛擬儀表的實(shí)現(xiàn)

4 CAN總線驅(qū)動(dòng)程序的方案設(shè)計(jì)與實(shí)現(xiàn)
設(shè)備驅(qū)動(dòng)程序是介于硬件和Linux內(nèi)核之間的軟件接口,是一種低級(jí)的、專用于某一硬件的軟件組件。設(shè)備驅(qū)動(dòng)也可以理解為操作系統(tǒng)的一部分,對(duì)于一個(gè)特定的硬件設(shè)備來說,其對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序是不同的,比如網(wǎng)卡、鍵盤、鼠標(biāo)、顯卡、電位器、電機(jī)等。操作系統(tǒng)本身沒有對(duì)各種硬件設(shè)備提供持久不變的驅(qū)動(dòng)設(shè)備,沒有驅(qū)動(dòng),操作系統(tǒng)就控制不了底層的設(shè)備,對(duì)于操作系統(tǒng)來說,掛接的設(shè)備越多,需要的設(shè)備驅(qū)動(dòng)程序也越多。
在Linux操作系統(tǒng)中,把所有外設(shè)都當(dāng)成文件看待,使用操作文件的方法來操作設(shè)備,通過驅(qū)動(dòng)程序,Linux操作系統(tǒng)才能以文件夾的方式來管理設(shè)備。因此驅(qū)動(dòng)程序的編寫開發(fā)具有十分重要的地位。Linux設(shè)備驅(qū)動(dòng)程序運(yùn)行在Linux內(nèi)核空間,是Linux內(nèi)核中聯(lián)系硬件設(shè)備和應(yīng)用程序的橋梁。Linux系統(tǒng)硬件、設(shè)備驅(qū)動(dòng)和應(yīng)用程序的關(guān)系如圖4所示[7].
MagicARM270實(shí)驗(yàn)箱采用SJA1000 CAN控制器擴(kuò)展了1路CAN接口,SJA1000是PHILIPS公司經(jīng)典的CAN控制器,支持CAN 2.0 A、B協(xié)議。結(jié)合應(yīng)用程序、驅(qū)動(dòng)程序、內(nèi)核程序,CAN驅(qū)動(dòng)流程圖如圖5所示。

5 測(cè)試結(jié)果與驗(yàn)證
選取廣州致遠(yuǎn)電子有限公司生產(chǎn)的Magic ARM270實(shí)驗(yàn)箱進(jìn)行仿真[2].通過CAN總線實(shí)現(xiàn)汽車上各種信息的采集和測(cè)量,并將采集的結(jié)果送到ARM進(jìn)行處理,最后通過TFT顯示出來,設(shè)置 CAN總線傳輸速度波特率為125 KB/s,圖6所示為捕捉的一個(gè)界面。
隨著信息技術(shù)的快速發(fā)展,現(xiàn)場(chǎng)總線技術(shù)在汽車上得到了越來越多的應(yīng)用。本文在測(cè)試系統(tǒng)下采用CAN總線接口提取車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、機(jī)油壓力、油量、水溫、傳動(dòng)箱壓力及其他車況等信息。實(shí)驗(yàn)表明采用虛擬儀表技術(shù)完全能夠滿足車輛運(yùn)行參數(shù)和狀態(tài)顯示的要求,可擴(kuò)充性好,配置方便。
評(píng)論