亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        車(chē)載信息安全系統(tǒng)中CAN中繼器的設(shè)計(jì)與實(shí)現(xiàn)

        2016-09-20 07:12于合龍
        現(xiàn)代電子技術(shù) 2016年17期
        關(guān)鍵詞:中繼器波特率驅(qū)動(dòng)程序

        于合龍,李 丹,馬 麗

        (吉林農(nóng)業(yè)大學(xué) 信息技術(shù)學(xué)院,吉林 長(zhǎng)春 130118)

        車(chē)載信息安全系統(tǒng)中CAN中繼器的設(shè)計(jì)與實(shí)現(xiàn)

        于合龍,李丹,馬麗

        (吉林農(nóng)業(yè)大學(xué) 信息技術(shù)學(xué)院,吉林 長(zhǎng)春130118)

        針對(duì)汽車(chē)OBD接口存在的安全隱患,設(shè)計(jì)了以i.MX6系列處理器為核心,通過(guò)其串行外設(shè)接口,利用MCP2515CAN控制器接入CAN總線的車(chē)載信息安全中繼器。在分析 Linux設(shè)備驅(qū)動(dòng)程序工作原理的基礎(chǔ)上,闡述了CAN接口在Linux系統(tǒng)下的驅(qū)動(dòng)程序設(shè)計(jì)方法,實(shí)現(xiàn)了CAN接口在Linux系統(tǒng)下的驅(qū)動(dòng),解決了汽車(chē)CAN總線的中繼問(wèn)題。通過(guò)在Linux系統(tǒng)中添加ISO15031協(xié)議過(guò)濾器,實(shí)現(xiàn)了非法指令過(guò)濾,為車(chē)載信息在CAN總線上的傳輸提供了一層保護(hù)屏障。

        CAN;信息安全;驅(qū)動(dòng)程序;中繼器

        0引 言

        CAN(Controller Area Network,控制器區(qū)域網(wǎng)絡(luò))總線廣泛地應(yīng)用于汽車(chē)上,主要用來(lái)實(shí)現(xiàn)車(chē)載網(wǎng)絡(luò)各個(gè)電控單元之間的信息交換,形成車(chē)載網(wǎng)絡(luò)系統(tǒng)。利用CAN總線、傳感器、控制器和執(zhí)行器通過(guò)串行數(shù)據(jù)線連接起來(lái)[1-2]。

        OBD(On-Board Diagnostic)接口作為車(chē)載監(jiān)控系統(tǒng)的通信接口,通過(guò)CAN總線接入車(chē)載系統(tǒng)。OBD接口除了讀取故障碼以供修車(chē)外,首要的功能是提供車(chē)輛的各種工況數(shù)據(jù)。利用汽車(chē)OBD接口與汽車(chē)ECU通過(guò)CANBUS協(xié)議通信,就可以達(dá)到控制汽車(chē)某些部件的目的。為了消除此安全隱患,需要在OBD接口與CAN總線之間接入能夠保證信息安全的CAN中繼器,實(shí)現(xiàn)信息可靠傳輸與非法指令過(guò)濾。目前CAN中繼器的設(shè)計(jì)大多是MCU加控制器來(lái)實(shí)現(xiàn)的。例如文獻(xiàn)[3]中利用雙MCU實(shí)現(xiàn)CAN總線中繼器,文獻(xiàn)[4-5]中利用雙口RAM實(shí)現(xiàn)雙機(jī)系統(tǒng)的通信,文獻(xiàn)[6]中通過(guò)獨(dú)立雙CAN設(shè)計(jì)CAN中繼器等,在這些方案中,不僅電路冗余復(fù)雜,同時(shí)在MCU與CAN控制器交換數(shù)據(jù)時(shí)存在數(shù)據(jù)交換速度慢,準(zhǔn)確性低等問(wèn)題,而且沒(méi)有相應(yīng)系統(tǒng)的支撐,僅憑借獨(dú)立的硬件設(shè)備,很難保證車(chē)載信息傳輸安全。

        基于上述分析,本文提出車(chē)載信息安全系統(tǒng)中繼器的設(shè)計(jì)方案。此中繼器一端通過(guò)CAN接口與OBD相連接,另一端通過(guò)CAN接口與CAN總線相連接。當(dāng)中繼器接收到來(lái)自O(shè)BD接口發(fā)送的指令后,經(jīng)過(guò)指令判斷與過(guò)濾,確定指令是否可以轉(zhuǎn)發(fā)到CAN總線上。本文完成了此中繼器在嵌入式Linux系統(tǒng)下的驅(qū)動(dòng)和中繼,并加入ISO15031汽車(chē)指令集過(guò)濾器,通過(guò)嵌入式Linux系統(tǒng)自身的安全屬性以及指令過(guò)濾增強(qiáng)了整個(gè)CAN總線系統(tǒng)的安全性。

        1 硬件設(shè)計(jì)

        本文采用i.MX6Quad處理器,該處理器是基于Cortex-A9內(nèi)核的四核處理器,帶有1 MB L2緩存和64 b DDR3和2通道、支持32 b LPDDR2。

        硬件結(jié)構(gòu)圖包含五個(gè)組成部分,如圖1所示。

        圖1 硬件結(jié)構(gòu)圖

        其中:系統(tǒng)控制部分由鎖相環(huán)、振蕩器、時(shí)鐘與復(fù)位電路、看門(mén)狗、定時(shí)器等組成;電源管理部分由電源模塊和濕度監(jiān)測(cè)儀組成;程序燒寫(xiě)模塊采用NorFlash,便于進(jìn)行撥碼燒寫(xiě);兩個(gè)CAN接口的設(shè)計(jì)借助了參考文獻(xiàn)[7]中提到的問(wèn)題和解決方法。具體設(shè)計(jì)如圖2所示。

        圖2 CAN接口

        為了保證中繼器工作可靠,采用隔離型的DC/DC變換器[7]。對(duì)于CAN終端電阻使用分裂終端的方式,利用兩個(gè)30 Ω電阻匹配屏蔽雙絞線的60 Ω特性阻抗[8]。CAN控制器選擇了基于SPI控制器的MCP2515。

        指示燈部分共使用了7個(gè)LED燈,1個(gè)燈用于上電指示,4個(gè)燈用于兩路CAN接口的接收和發(fā)送指示燈,2個(gè)燈用于兩路CAN通信故障指示。

        2 CAN中繼器程序設(shè)計(jì)

        2.1CAN接口驅(qū)動(dòng)程序設(shè)計(jì)

        CAN總線驅(qū)動(dòng)程序的設(shè)計(jì)以Linux系統(tǒng)為開(kāi)發(fā)平臺(tái),通過(guò)字符設(shè)備驅(qū)動(dòng)的方式實(shí)現(xiàn)驅(qū)動(dòng)程序的設(shè)計(jì)。

        根據(jù)硬件設(shè)計(jì)圖,MCP2515通過(guò)SPI的形式接入內(nèi)核,通過(guò)向Linux內(nèi)核添加SPI驅(qū)動(dòng)對(duì)MCP2515進(jìn)行驅(qū)動(dòng)。在Linux 3.0.35的內(nèi)核中,SPI的驅(qū)動(dòng)架構(gòu)可以分為如下三個(gè)層次:SPI核心層、SPI控制器驅(qū)動(dòng)層和SPI設(shè)備驅(qū)動(dòng)層。具體驅(qū)動(dòng)的結(jié)構(gòu)圖如圖3所示。

        Linux中SPI驅(qū)動(dòng)代碼位于drivers/spi/spi.c目錄。SPI核心層是Linux的SPI核心部分,提供了核心數(shù)據(jù)結(jié)構(gòu)的定義、SPI控制器驅(qū)動(dòng)和設(shè)備驅(qū)動(dòng)的注冊(cè)、注銷(xiāo)管理等API。SPI控制器驅(qū)動(dòng)層屬于平臺(tái)移植相關(guān)層。它的職責(zé)是為系統(tǒng)中每條SPI總線實(shí)現(xiàn)相應(yīng)的讀寫(xiě)方法[9-10]。SPI設(shè)備驅(qū)動(dòng)層為用戶接口層,其為用戶提供了通過(guò)SPI總線訪問(wèn)具體設(shè)備的接口。寫(xiě)驅(qū)動(dòng)程序時(shí)首先要向Linux內(nèi)核注冊(cè)設(shè)備,注冊(cè)完成后,執(zhí)行make menuconfig配置內(nèi)核選項(xiàng),然后再編譯內(nèi)核,最后通過(guò)Mini USB接口將編譯好的內(nèi)核、文件系統(tǒng)一起燒寫(xiě)到集成的模塊中。

        圖3 SPI驅(qū)動(dòng)結(jié)構(gòu)圖

        2.2CAN數(shù)據(jù)中繼原理及程序設(shè)計(jì)

        CAN中繼的主要作用是對(duì)接收到的CAN報(bào)文進(jìn)行過(guò)濾轉(zhuǎn)發(fā)。中繼器的工作流程為:中繼器上電時(shí)通過(guò)讀取波特率設(shè)置電路和ID設(shè)置電路的狀態(tài),設(shè)置好波特率和ID值。初始化完成后,iMX6Q通過(guò)監(jiān)聽(tīng)兩個(gè)CAN接口的中斷完成數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)。當(dāng)CAN接口A收到總線上的數(shù)據(jù)包時(shí)產(chǎn)生中斷,中斷處理程序根據(jù)標(biāo)準(zhǔn)標(biāo)識(shí)符和擴(kuò)展標(biāo)識(shí)符判斷該數(shù)據(jù)包是標(biāo)準(zhǔn)幀還是擴(kuò)展幀,同時(shí)將該ID值和ID過(guò)濾表中的值進(jìn)行對(duì)比,若符合過(guò)濾條件則不轉(zhuǎn)發(fā),否則將數(shù)據(jù)包通過(guò)CAN接口B轉(zhuǎn)發(fā)出去[11-12]。

        根據(jù)本文需要,要求保證車(chē)載信息安全,需要結(jié)合ISO1503汽車(chē)故障診斷協(xié)議,實(shí)現(xiàn)協(xié)議過(guò)濾器功能。ISO1503協(xié)議內(nèi)容有9種模式[13],I協(xié)議過(guò)濾器根據(jù)這9種模式列出所有合法指令集,如果接收的指令匹配指令集,允許指令通過(guò),否則丟棄。

        根據(jù)上文完成兩個(gè)CAN接口的驅(qū)動(dòng),在此只需實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā)和過(guò)濾,由于此設(shè)備是用于汽車(chē)CAN總線上,防止黑客通過(guò)OBD接口使用非法指令對(duì)汽車(chē)進(jìn)行攻擊,因此結(jié)合汽車(chē)OBD指令集協(xié)議ISO15031完成指令集的過(guò)濾。具體數(shù)據(jù)中繼實(shí)現(xiàn)流程如圖4所示。

        圖4 數(shù)據(jù)中繼程序設(shè)計(jì)流程圖

        對(duì)于數(shù)據(jù)轉(zhuǎn)發(fā)的處理過(guò)程,通常采用環(huán)形緩沖區(qū)的方式來(lái)實(shí)現(xiàn)。在參考文獻(xiàn)[9]中提出關(guān)于環(huán)形緩沖器的問(wèn)題:讀和寫(xiě)在移動(dòng)尾指針時(shí)均需進(jìn)行“折行處理 ”(即當(dāng)指針指到緩沖區(qū)內(nèi)存的末尾時(shí),需重新將其定向到緩沖區(qū)的首地址),環(huán)形緩沖區(qū)的執(zhí)行效率并不高[14]。為此,本文根據(jù)i.MX6Quad處理器的特點(diǎn)(自帶32 KB的數(shù)據(jù)緩沖區(qū)域),對(duì)環(huán)形緩沖區(qū)做了改進(jìn),同時(shí)為了增強(qiáng)CAN總線的通信能力,提高通信效率。具體做法為:

        (1)在緩沖區(qū)域開(kāi)辟兩個(gè)4 KB的環(huán)形數(shù)據(jù)緩沖區(qū),采用雙FIFO的緩沖機(jī)制,在主監(jiān)控程序的監(jiān)控下對(duì)兩路緩沖區(qū)進(jìn)行監(jiān)控。

        (2)當(dāng)主監(jiān)控程序檢測(cè)到CAN接口有信息傳輸時(shí),此CAN接口產(chǎn)生中斷,兩路CAN數(shù)據(jù)通過(guò)中斷的方式將接收到的報(bào)文通過(guò)標(biāo)識(shí)符的比較,放入各自對(duì)應(yīng)的環(huán)形緩沖區(qū)。

        (3)轉(zhuǎn)發(fā)進(jìn)程通過(guò)判斷比較緩沖區(qū)的狀態(tài)標(biāo)識(shí)符決定轉(zhuǎn)發(fā)的端口[15],將接收到的指令與配置文件ISO15031協(xié)議中的指令集進(jìn)行匹配,決定數(shù)據(jù)轉(zhuǎn)發(fā)或過(guò)濾,保證車(chē)載指令的安全。

        3 中繼測(cè)試及安全測(cè)試

        本文設(shè)計(jì)的測(cè)試板如圖5所示。

        圖5 CAN中繼器測(cè)試板

        采用千目電子公司的USB轉(zhuǎn)CAN接口卡對(duì)系統(tǒng)進(jìn)行測(cè)試驗(yàn)證。CAN總線的通信速率最高為1 Mb/s,本系統(tǒng)遵循CAN 2.0A技術(shù)規(guī)范,仲裁域采用11 b標(biāo)識(shí)符,再加上64 b的數(shù)據(jù)域、控制域、CRC域等,每幀數(shù)據(jù)幀的長(zhǎng)度為110 b左右[16]。為了確定本實(shí)驗(yàn)調(diào)試的通信速率,首先找到汽車(chē)CAN總線接口,使用示波器測(cè)出CAN總線的波特率為125 Kb/s。

        3.1中繼測(cè)試

        CAN總線的傳輸距離與波特率有關(guān),傳輸距離與波特率成反比,波特率越高,傳輸距離越短。根據(jù)上述測(cè)出的CAN總線波特率為125 Kb/s,傳輸距離可在0~530 m之間。由于本實(shí)驗(yàn)設(shè)備直接與CAN總線相連,實(shí)驗(yàn)測(cè)試中將實(shí)驗(yàn)距離設(shè)為1.5 m。中繼測(cè)試實(shí)驗(yàn)中將兩個(gè)CAN子網(wǎng)波特率設(shè)置為125 Kb/s,通過(guò)手動(dòng)以及自動(dòng)定時(shí)兩種向中繼器一端發(fā)送數(shù)據(jù),觀察中繼器能否正常工作,且雙向通信是否均不丟幀。先由CAN1接口向CAN2接口發(fā)送標(biāo)準(zhǔn)幀07 DF 01 02 03,然后由CAN2接口向CAN1接口發(fā)送相同的標(biāo)準(zhǔn)幀。經(jīng)過(guò)反復(fù)測(cè)試,抽取其中一次CAN2接口實(shí)驗(yàn)結(jié)果,CAN2接口實(shí)驗(yàn)結(jié)果如圖6所示??梢钥闯?,CAN2接口既可以接收到數(shù)據(jù),也可以發(fā)送數(shù)據(jù),幀計(jì)數(shù)順序依次遞增,沒(méi)有出現(xiàn)丟幀現(xiàn)象。

        圖6 CAN總線調(diào)試工具終端接收界面圖

        3.2安全測(cè)試

        在中繼測(cè)試的基礎(chǔ)上又進(jìn)一步做了多次安全測(cè)試,安全測(cè)試與上述中繼實(shí)驗(yàn)的不同之處在于將07 DF 01 02 03標(biāo)準(zhǔn)數(shù)據(jù)幀變?yōu)?2 00 aa aa aa數(shù)據(jù)幀(非法數(shù)據(jù)幀)以及其他多種非法數(shù)據(jù)幀,實(shí)驗(yàn)結(jié)果為:當(dāng)CAN1接口成功向CAN1接口發(fā)送數(shù)據(jù)幀時(shí),CAN2接口沒(méi)有接收到數(shù)據(jù);同樣當(dāng)CAN2接口向CAN1接口發(fā)送數(shù)據(jù)幀時(shí),CAN1接口也沒(méi)有收到數(shù)據(jù)。查看中繼器中的非法數(shù)據(jù)日志文件,里面記錄了發(fā)送的各種非法數(shù)據(jù)幀信息。實(shí)驗(yàn)結(jié)果表明CAN中繼器能夠過(guò)濾掉非法指令。

        4結(jié) 論

        本文基于信息傳輸在OBD接口上存在的安全問(wèn)題,采用i.MX6Quad處理器方案實(shí)現(xiàn)CAN中繼器。同時(shí)實(shí)現(xiàn)了在Linux系統(tǒng)下CAN的接口驅(qū)動(dòng),完成了車(chē)載CAN總線中繼,使其性能和效率得到了很大提高;通過(guò)將Linux系統(tǒng)移植到硬件平臺(tái)上,在Linux系統(tǒng)中植入ISO15031汽車(chē)指令集過(guò)濾器,使得系統(tǒng)的安全性能得到提升。基于本方案開(kāi)發(fā)的CAN中繼器通過(guò)了車(chē)載系統(tǒng)的安全測(cè)試,達(dá)到了預(yù)期的效果。

        [1]黎永健,趙祚喜.汽車(chē)CAN總線概述及其故障診斷檢測(cè)方法[J].應(yīng)用科學(xué),2010(2):119-120.

        [2]REGT H D.車(chē)載網(wǎng)絡(luò)讓汽車(chē)駛上安全、舒適、環(huán)保的快車(chē)道[J].世界電子元器件,2007(12):27-29.

        [3]邱鐵,劉曉艷,徐子川.雙MCU的CAN總線中繼器設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(9):71-73.

        [4]王剛.利用雙口RAM實(shí)現(xiàn)雙機(jī)系統(tǒng)的通信[J].計(jì)算機(jī)與數(shù)字工程,2008(1):123-124.

        [5]史久根,張培仁,陳真勇.CAN現(xiàn)場(chǎng)總線系統(tǒng)設(shè)計(jì)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2004.

        [6]艾萱.基于獨(dú)立雙CAN控制器的中繼器設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2007,30(21):9-11.

        [7]莫瓊?cè)A.基于STM32F105的CAN總線中繼器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù),2011(3):25-26.

        [8]王繼國(guó),吉吟東,孫新亞.CAN總線控制器MCP2515的原理及應(yīng)用[J].電測(cè)與儀表,2004,41(1):52-56.

        [9]戴敏,曹杰.基于ARM的單芯片CAN總線中繼器設(shè)計(jì)[J].測(cè)控技術(shù),2010(5):64-68.

        [10]THOMPSON H A,BENITEZ-PEREZ H,LEE D,et al.ACANbus-based safety-critical distributed earoengine control systems architecture demonstrator[J].Microprocessors and microsystems,1999,23(6):345-355.

        [11]曾祥文,宋樹(shù)祥,賓相邦.嵌入式Linux下波特率自適應(yīng)的CAN總線驅(qū)動(dòng)的實(shí)現(xiàn)[J].測(cè)控技術(shù),2015(8):104-107.

        [12]朱振濤.基于ARM9的智能車(chē)載信息系統(tǒng)研究[D].秦皇島:燕山大學(xué),2007.

        [13]劉仁峰.基于PCI總線的嵌入式設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)與研究[D].武漢:華中科技大學(xué),2004.

        [14]楊峰,吉吟東,薛明.CAN通信卡的Linux設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2002(1):52-55.

        [15]BAEK S H,JANG J W.Implementation of integrated OBD-II connector withexternal network[J].Informationsystems,2014,50:69-75.

        [16]王宏亮,田帥帥.基于C8051F060單片機(jī)SPI接口的CAN中繼器設(shè)計(jì)[J].火炮發(fā)射與控制學(xué)報(bào),2011(2):74-77.

        Design and implementation of CAN repeater in vehicle-mounted information security system

        YU Helong,LI Dan,MA Li
        (College of Information Technology,Jilin Agricultural University,Changchun 130118,China)

        Aiming at the potential safety hazard of the car on-board diagnostic(OBD)interface,a vehicle-mounted information safety repeater was designed,which takes i.MX6 series processor as the core,and uses the MCP2515 CAN controller to access into CAN bus through its serial peripheral interface.On the basis of analyzing the working principle of the Linux device driver,the driver design method of CAN interface under Linux system is expounded.The drive of CAN interface under Linux system was implemented,and the relaying problem of vehicle-mounted CAN bus was solved.The iso15031 protocol filter is added into Linux system to filter the illegal instructions,and provide a protective screening for transmitting the vehicle-mounted information through CAN bus.

        CAN;information safety;driver;repeater

        TN92-34

        A

        1004-373X(2016)17-0120-04

        10.16652/j.issn.1004-373x.2016.17.030

        2015-11-27

        于合龍(1974—),男,博士研究生,教授。研究方向?yàn)榍度胧较到y(tǒng)。李丹(1988—),女,在讀碩士。研究方向?yàn)榍度胧较到y(tǒng)。馬麗(1980—),女,在讀博士生,副教授。研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)。

        猜你喜歡
        中繼器波特率驅(qū)動(dòng)程序
        CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
        計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
        基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
        基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動(dòng)程序設(shè)計(jì)
        雙層無(wú)線傳感器網(wǎng)絡(luò)的中繼器放置問(wèn)題
        單層網(wǎng)絡(luò)中繼器放置的2-連通問(wèn)題及算法
        對(duì)利用軌間交叉環(huán)線進(jìn)行列車(chē)定位的幾點(diǎn)思考
        C*Core芯片SCI串口波特率容限優(yōu)化
        三維無(wú)線傳感器網(wǎng)絡(luò)的中繼器放置問(wèn)題
        計(jì)算機(jī)多設(shè)備接口波特率不匹配的研究
        亚洲国产一区二区网站| 最新国产福利在线观看精品| 制服丝袜中文字幕在线| 最近中文字幕在线mv视频在线| av色综合网站| 亚洲欧洲日韩另类自拍| 亚洲精品综合一区二区| 中文字日产幕码三区的做法大全| 国内精品久久久久久99| 亚洲国产天堂久久综合| 亚洲精品午睡沙发系列| 一本大道东京热无码| 99re免费在线视频| 国产盗摄XXXX视频XXXX| 国产粉嫩美女一区二区三| 国产白浆一区二区三区佳柔 | 成人片黄网站色大片免费观看cn | 日韩无码电影| 加勒比av在线一区二区| 中文字幕本久久精品一区| 国产激情一区二区三区| 人妻影音先锋啪啪av资源| 免费毛片视频网站| 中文字幕国产精品专区| 中文字幕av熟女中文av| 欧美老妇牲交videos| 少妇粉嫩小泬喷水视频www| 正在播放一区| 久久精品国产亚洲av蜜桃av| 中文字幕一区二区中出后入| 亚洲国产另类精品| 亚洲日产无码中文字幕| 精品人妻久久av中文字幕| 亚洲av在线观看播放| 国产精品久久国产精品99 gif| 日日碰狠狠躁久久躁9| 日韩欧美国产自由二区| 午夜视频在线观看国产| 亚洲综合日韩精品一区二区| 国产精品无码久久久久久久久久| 精品久久综合一区二区|