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

        ?

        基于Linux平臺的CAN-FD技術探索

        2019-09-10 07:22:44彭國文陳劍棟張林
        現代信息科技 2019年16期
        關鍵詞:總線

        彭國文 陳劍棟 張林

        摘 ?要:CAN-FD是由Bosch主導開發(fā)的新一代總線技術,它在傳統(tǒng)的CAN2.0的基礎上提高了總線網絡通信帶寬和數據吞吐量,將廣泛用于替代傳統(tǒng)的CAN2.0總線網絡。目前越來越多運行Linux操作系統(tǒng)的ARM處理器配置了CANFD控制器,因此對Linux平臺的CAN-FD技術進行探索至關重要。本文將從CAN-FD技術與傳統(tǒng)CAN2.0的總線的異同出發(fā),介紹Linux平臺下CANFD技術的配置細節(jié),及SocketCAN編程接口。

        關鍵詞:總線;CAN-FD;Linux;SocketCAN

        中圖分類號:TP393;TP273 ? ? ?文獻標識碼:A 文章編號:2096-4706(2019)16-0059-03

        Abstract:CAN-FD is a new generation bus technology led by Bosch,which improves the communication bandwidth and data throughput of the bus network on the basis of the traditional CAN2.0,and will be widely used to replace the traditional CAN2.0 bus network. At present,more and more ARM processors running Linux operating system are equipped with CAN-FD controller,so it is very important to explore the CANFD technology of Linux platform. This paper will start from the similarities and differences between CAN-FD technology and traditional CAN2.0 bus,introduce the configuration details of CAN-FD technology under Linux platform,and SocketCAN programming interface.

        Keywords:bus;CAN-FD;Linux;SocketCAN

        0 ?引 ?言

        隨著當今工業(yè)的發(fā)展,尤其是在CAN總線運用較多的汽車領域,總線通訊的數據量越來越大,但由于傳統(tǒng)CAN總線最高傳輸速度為1Mbit/s,這就使得CAN總線在傳輸速率和帶寬方面越來越力不從心。為了滿足日益增長的高帶寬需求,CAN-FD應運而生。CAN-FD(CAN with Flexible Data-Rate)繼承了CAN總線的主要特征,提高了CAN總線得到網絡通信帶寬,改善了錯誤幀漏檢率,同時可以保持網絡系統(tǒng)大部分軟硬件,特別是物理層不變。目前越來越多高端處理器攜帶CAN-FD控制器,Linux作為廣泛使用的操作系統(tǒng),對新出現的高端處理器有很好的平臺支持。Linux自3.6版本內核起引入了對CAN-FD的支持,這為擁有CAN-FD接口的新設備研發(fā)帶來很大的便利。本文將先介紹CAN-FD技術,通過與傳統(tǒng)的CAN2.0進行對比,可以清晰地了解CAN-FD的技術優(yōu)勢,接著介紹Linux平臺的CAN-FD總線配置細節(jié)、測試工具及應用程序開發(fā)流程。

        1 ?CAN-FD技術簡介

        CAN-FD是由Bosch公司于2012年發(fā)布的新一代總線技術,CAN-FD繼承了傳統(tǒng)CAN總線的絕大多數特性,如同樣的物理層、雙線串行通訊協議、分布式實時控制、可靠的錯誤處理和檢測機制等。2015年6月30日,國際標準化組織(ISO)已經正式認可CAN-FD技術,并通過了ISO 11898-1作為CAN-FD的國際標準草案。與傳統(tǒng)的CAN相比,CAN-FD主要升級了以下幾方面。

        1.1 ?更高的傳輸波特率

        CAN-FD支持數據段選擇高波特率進行傳輸。它可將原CAN總線控制場中的BRS位(位速率轉換開關)到ACK場(總線確認場)之前(含CRC,即循環(huán)冗余校驗分界符,主要包含數據段部分)的位采用最高達5M的可變速率傳輸,其余的仲裁段部分保留為原CAN總線速率。這兩種速率各有一套位時間定義寄存器,使用時須配置仲裁段波特率及數據段波特率。

        1.2 ?更高效的數據段

        傳統(tǒng)CAN2.0總線僅支持DLC(數據場長度)最大為8個字節(jié)的數據場,而CAN-FD對數據場的長度做了很大的擴充,DLC最大支持64個字節(jié),在DLC小于等于8字節(jié)時與原CAN2.0總線是一樣的,大于8字節(jié)時則有一個非線性的增長。CAN-FD可支持的DLC有:0~8、12、16、24、32、48、64。

        1.3 ?更可靠的CRC校驗

        在傳統(tǒng)的CAN2.0總線中,由于填充規(guī)則對CRC產生干擾,造成錯幀漏檢率未達到設計意圖。CAN-FD對CRC算法做了升級,將填充位加入多項式的運算,主要作為格式檢查??紤]數據長度變化區(qū)間很大,CRC也會根據區(qū)間生成兩種校驗算法,當幀長小于210位時,使用CRC_17位算法,當幀長大于210位、小于1023位時,使用CRC_21位算法。

        2 ?Linux系統(tǒng)CAN-FD操作

        Linux系統(tǒng)自3.6版本后引入CAN-FD的支持,用戶可以通過uname -r命令查看當前內核版本以確定是否已支持CAN-FD。

        2.1 ?接口配置

        與傳統(tǒng)CAN接口配置類似,Linux系統(tǒng)中CAN-FD同樣采用ip命令對接口進行配置,ip命令在傳統(tǒng)CAN接口的基礎上為CAN-FD接口增加了多個選項,常見選項及含義說明如表1所示。

        以下示例用于設置CAN-FD控制器采用500K仲裁波特率和4M的數據波特率:

        $ ip link set can0 up type can bitrate 500000 sample-point 0.75dbitrate4000000 dsample-point 0.8 fd on

        設置后可通過以下命令查看控制器的狀態(tài):

        $ ip-details link show can0

        輸出狀態(tài)中包含了控制器狀態(tài)、仲裁段波特率、數據段波特率及各類錯誤計數。

        2.2 ?CAN-FD測試工具包

        can-utils是Linux Socket CAN子系統(tǒng)提供的一個用戶層工具包,它由多個實用程序組成,為CAN/CAN-FD網絡的測試提供便利,can-utils常用測試程序如表2所示。

        candump命令可以用來接收、過濾CAN、CAN-FD報文,輸出方式可以選擇輸出到標準輸出或文件。candump的默認方式為輸出到標準輸出,如果candump啟動時攜帶-l參數,數據將以文件方式保存至當前目錄,文件名格式為candump-YYYY-MM-DD_HHMMSS.log。以下命令演示了接收can0的數據并保存至文件的使用方法:

        candump -l can0

        cansend命令用于發(fā)送單幀CAN/CAN-FD報文,該命令對發(fā)送CAN幀、CAN-FD幀、遠程幀有不同的格式要求,以下命令演示發(fā)送各種類型數據幀。

        cansend can0 00F#00.11.22.33 ? ? ? # 發(fā)送標準幀,幀ID為3個16進制字符

        cansend can0 001234EF#00.11.22.33.44.55.66.77 ? ? ? # 發(fā)送擴展幀,幀ID為8個16進制字符

        cansend can0 00F#R3 ? ? ? ? ? ?# 發(fā)送標準遠程幀,數據為3個字節(jié)

        cansend can0 00F##0.00.11.22.33.44.55.66 ? ?# 發(fā)送CAN-FD標準幀,#后0為CAN-FD標識位

        cansend can0 00F##0.00.11.22.33.44.55.66.77.88.99.AA.BB ? #發(fā)送CAN-FD數據幀,數據段位12個字節(jié)。

        canplayer用于回放一個數據文件,數據文件一般由candump生成,canplayer程序運行時會根據數據文件的接口設備、幀數據、間隔進行數據發(fā)送,通過以下命令演示canplayer的使用方法:

        canplayer -I candump-2018-12-16_034811.log

        cangen命令是CAN/CAN-FD總線流量測試工具,它可以設置發(fā)送間隔、數據幀ID增長規(guī)則、數據增長等參數,實現對總線流量多維測試的目的。以下命令演示cangen各種參數的用法:

        cangen can0 -v -v ? ? ? #默認間隔,發(fā)送隨機標準幀

        cangen can0 -g 4 -I 42A -L 1 -D i -v -v ? ?#間隔為4ms,發(fā)送幀42A,長度為1,數據遞增

        cangen can0 -g 0 -i -x ? ? ? #總線滿載,并忽略寫-ENOBUFS錯誤。

        3 ?Linux系統(tǒng)CAN-FD編程

        Linux內核在2.6.xx版本引入SocketCAN子系統(tǒng),由于當時CAN-FD還未正式發(fā)布,初期版本的SocketCAN子系統(tǒng)只支持傳統(tǒng)CAN控制器,在后續(xù)的3.6版本內核中,SocketCAN子系統(tǒng)在原來的基礎上加入了CAN-FD的支持。初期版本SocketCAN中使用struct can_frame結構體來表示傳統(tǒng)CAN幀,而由于CAN-FD的數據段長度最多可支持64個字節(jié),傳統(tǒng)的CAN幀結構體struct can_frame已不再適合CAN-FD的使用。因此在新版本SocketCAN中為CAN-FD幀建立的新的結構體struct canfd_frame。

        SocketCAN接口編程跟傳統(tǒng)網絡Socket編程很類似,需要先建立套接字,然后根據接口名稱構建接口地址并進行綁定,完成套接字建立后,應用程序可以通過使用帶SIOCGIFMTU參數的ioctl的系統(tǒng)調用查詢該控制器支持的最大MTU值來確定控制器CAN-FD發(fā)送接收能力,如果最大MTU值為CANFD_MTU,表示當前控制器具備CAN-FD功能,否則只為傳統(tǒng)CAN控制器。

        套接字完成bind操作后,即可進行讀寫操作。在CAN- FD模式下進行讀操作時,控制器既可以接收傳統(tǒng)CAN幀,也可以接收CAN-FD幀,這需要讀操作在返回數據時進行判斷,如果讀出的字節(jié)數等于CANFD_MTU,表示當前讀取幀為CAN-FD幀,如果讀出的字節(jié)數不等于CAN_MTU,表示當前讀取的幀為傳統(tǒng)CAN幀。發(fā)送操作則根據寫入長度來判斷操作幀為傳統(tǒng)CAN幀還是CAN-FD幀,當寫入長度為CANFD_MTU時,表示寫入幀為CAN-FD幀,否則為傳統(tǒng)CAN幀。CAN-FD的SocketCAN編程流程如圖1所示。

        4 ?結 ?論

        CAN-FD技術是傳統(tǒng)CAN2.0總線的最新升級,它能在保持物理層不變的情況下,極大地提高總線帶寬,保證數據的實時性。本文針對CAN-FD新技術在Linux平臺下如何進行配置和測試進行介紹,并著重介紹了CAN-FD應用開發(fā)的流程。

        參考文獻:

        [1] 周立功.項目驅動——CAN-bus現場總線基礎教程 [M].北京:北京航空航天大學出版社,2012.

        [2] 周立功.嵌入式Linux開發(fā)教程(上冊) [M].北京:北京航空航天大學出版社,2016.

        [3] 周立功.嵌入式Linux開發(fā)教程(下冊) [M].北京:北京航空航天大學出版社,2016.

        作者簡介:彭國文(1986-),男,漢族,廣東興寧人,軟件工程師,工學學士,研究方向:工業(yè)通訊。

        猜你喜歡
        總線
        基于PCI Express總線的xHC與FPGA的直接通信
        測控技術(2018年6期)2018-11-25 09:50:12
        機載飛控1553B總線轉以太網總線設計
        測控技術(2018年8期)2018-11-25 07:42:08
        多通道ARINC429總線檢查儀
        基于EtherCAT總線的ROV控制系統(tǒng)設計
        河南科技(2014年16期)2014-02-27 14:13:22
        亚洲狠狠网站色噜噜| 久久99精品久久久久麻豆| 久久久久久久久毛片精品| 躁躁躁日日躁| 亚洲AV无码一区二区一二区色戒| av一区二区三区观看| 国产午夜福利片在线观看| 国产亚洲情侣一区二区无| 亚洲综合伦理| 日本av一级视频在线观看| 亚洲人精品午夜射精日韩| 麻豆亚洲av永久无码精品久久| 麻豆密入视频在线观看 | 久久久精品国产亚洲av网麻豆| 人妻在卧室被老板疯狂进入| 精品人妻潮喷久久久又裸又黄| 国产精品98福利小视频| 人妻在线有码中文字幕| 正在播放老肥熟妇露脸| 黑人巨大videos极度另类| 视频精品熟女一区二区三区| 亚洲日本精品国产一区二区三区| 无码少妇一区二区性色av| 免费av在线国模| 在线观看免费的黄片小视频| 午夜精品久久久久久久久| 欧美mv日韩mv国产网站| 亚洲AV秘 片一区二区三区| 日本一区二区在线免费看| 久久精品无码av| 98在线视频噜噜噜国产| 日本激情一区二区三区| 欧美男生射精高潮视频网站| 吸咬奶头狂揉60分钟视频| 欧美亚洲另类国产18p| 两人前一后地插着她丰满| 免费观看又色又爽又湿的视频| 青草网在线观看| 人日本中文字幕免费精品| 宅男666在线永久免费观看 | 精品国产18禁久久久久久久|