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

        ?

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

        2016-04-12 00:00:00于合龍李丹馬麗
        現(xiàn)代電子技術(shù) 2016年17期

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

        關(guān)鍵詞: CAN; 信息安全; 驅(qū)動程序; 中繼器

        中圖分類號: TN92?34 文獻標識碼: A 文章編號: 1004?373X(2016)17?0120?04

        0 引 言

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

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

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

        1 硬件設(shè)計

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

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

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

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

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

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

        2.1 CAN接口驅(qū)動程序設(shè)計

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

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

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

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

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

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

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

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

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

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

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

        3 中繼測試及安全測試

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

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

        3.1 中繼測試

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

        3.2 安全測試

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

        4 結(jié) 論

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

        參考文獻

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        [15] BAEK S H, JANG J W. Implementation of integrated OBD?II connector with external network [J]. Information systems, 2014, 50: 69?75.

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

        在线视频一区二区在线观看| 熟妇丰满多毛的大隂户| 人妻熟妇乱又伦精品视频app| 亚洲一区二区高清精品| 国产女主播福利一区二区| 亚洲精品乱码久久久久久| 熟妇丰满多毛的大隂户| 亚洲色欲久久久综合网| av免费一区在线播放| 国产视频自拍一区在线观看| 内射少妇36p亚洲区| 五月天婷婷综合网| 精品国产一区二区三区毛片| 一区二区三区天堂在线| 伊人久久大香线蕉av网禁呦| 国产精品视频yuojizz| 中文字幕高清一区二区| 亚洲av日韩av卡二| 黄瓜视频在线观看| 国产亚洲精品国产福利在线观看| 我也色自拍俺也色自拍| 女人下边被添全过视频| 无码熟妇人妻av在线影片| 日本高清色惰www在线视频| 男女深夜视频网站入口| 亚洲av午夜福利精品一区| 越南女子杂交内射bbwbbw| 国产精品va在线观看一| 亚洲精品女同一区二区三区 | 麻豆精品国产精华精华液好用吗| 精品人无码一区二区三区 | 61精品人妻一区二区三区蜜桃| 爆操丝袜美女在线观看| 成人免费看www网址入口| 日韩啪啪精品一区二区亚洲av| 日韩精品人妻视频一区二区三区 | 99精品国产综合久久麻豆| 少妇性饥渴无码a区免费| 久久国产亚洲高清观看5388| 亚洲精品中文字幕熟女| 中文字幕亚洲综合久久菠萝蜜|