在汽車軟件的開(kāi)發(fā)周期中,基于POSIX標(biāo)準(zhǔn)的操作系統(tǒng)(如Linux)廣泛應(yīng)用于AUTOSAR Adaptive平臺(tái)的ECU原型開(kāi)發(fā)、算法或功能評(píng)估中。
該領(lǐng)域的嵌入式軟件開(kāi)發(fā)人員通常傾向于在運(yùn)行Linux系統(tǒng)(如Ubuntu/Debian)的虛擬機(jī)中進(jìn)行開(kāi)發(fā),因?yàn)樗峁┝伺c嵌入式平臺(tái)相似的可訪問(wèn)的接口和組件。
Vector提供的CANoe軟件是進(jìn)行網(wǎng)絡(luò)/總線和ECU開(kāi)發(fā)、測(cè)試和分析的全面工具,支持總線網(wǎng)絡(luò)開(kāi)發(fā)從需求分析到系統(tǒng)實(shí)現(xiàn)的全過(guò)程,包括模型創(chuàng)建、仿真、測(cè)試、診斷及通信分析等。
但和大多數(shù)網(wǎng)絡(luò)開(kāi)發(fā)工具一樣只適用于Windows操作系統(tǒng),因此開(kāi)發(fā)人員需要考慮如何實(shí)現(xiàn)Linux環(huán)境和CANoe工具之間的數(shù)據(jù)交互。

圖1:CANoe與被測(cè)軟件的虛擬化執(zhí)行環(huán)境
為了滿足用戶多樣化虛擬執(zhí)行環(huán)境的測(cè)試需求,除了CANoe以外,Vector還提供了專注于SIL測(cè)試的CANoe4SW,可以對(duì)軟件組件、軟件子系統(tǒng)以及整個(gè)軟件系統(tǒng)進(jìn)行開(kāi)發(fā),測(cè)試和分析。
以及面向服務(wù)器版本的CANoe4SW SE(CANoe4SW Server Edition),支持Linux或Windows服務(wù)器環(huán)境運(yùn)行CANoe工程,支持Docker容器化運(yùn)行。
本文主要介紹CANoe與虛擬機(jī)通過(guò)以太網(wǎng)交互的幾種常用方法。
01
Shared Networking
共享意味著CANoe和被測(cè)應(yīng)用程序共享主機(jī)的TCP/IP協(xié)議棧,這種方式在使用WSL(Windows Subsystem for Linux)時(shí)最為便捷。WSL有WSL2和WSL1兩個(gè)版本,主要區(qū)別在于WSL2使用了真實(shí)的 Linux 內(nèi)核、支持完整的系統(tǒng)調(diào)用兼容性以及跨 Linux 和 Windows 操作系統(tǒng)的性能。
接下來(lái)以WSL2環(huán)境為例演示虛擬機(jī)與CANoe基于Shared Networking的通信配置過(guò)程。在CANoe端需要?jiǎng)?chuàng)建一個(gè)UDP通信節(jié)點(diǎn),將其TCP/IP Stack配置為使用操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧,然后通過(guò)CAPL函數(shù)創(chuàng)建socket通過(guò)本地環(huán)回地址(127.0.0.1)實(shí)現(xiàn)UDP報(bào)文的發(fā)送和接收;在WSL2端無(wú)需特殊配置,可直接通過(guò)指令去監(jiān)聽(tīng)UDP報(bào)文并向CANoe發(fā)送UDP數(shù)據(jù)。通信過(guò)程如下圖。

圖2: CANoe與WSL2通信過(guò)程
這種方式配置簡(jiǎn)單,但是無(wú)法直接在CANoe的Trace窗口中顯示通信數(shù)據(jù),并且可能會(huì)受到主機(jī)上其他應(yīng)用程序的串?dāng)_,另外Windows防火墻也可能會(huì)抑制通信流量。
Shared Networking同樣也適用于其他的虛擬化工具,如VMware Workstation、Virtual Box等。只是需要一些額外配置,對(duì)于其他虛擬化環(huán)境更推薦使用后面介紹的方式。
02
Virtual Ethernet Link
該方式適用于運(yùn)行Linux虛擬機(jī)的各種虛擬化環(huán)境,如VMware Workstation 和Microsoft Hyper-V。接下來(lái)以VMware環(huán)境為例介紹其配置過(guò)程。
安裝Vector Network Driver
在CANoe的安裝路徑下包含有該驅(qū)動(dòng)的安裝程序(參考路徑:C:Program FilesVector CANoe 16.3.110Installer Additional ComponentsVector Network Driver),以管理員權(quán)限安裝即可。
安裝Microsoft環(huán)回適配器
在Window搜索欄中輸入“hdwwiz”打開(kāi)添加硬件配置選項(xiàng),選擇手動(dòng)從列表中選擇硬件安裝,在硬件類型中選擇“網(wǎng)絡(luò)適配器”,在下一步中廠商選擇“MicroSoft”,型號(hào)選擇“Microsoft KM-TEST環(huán)回適配器”進(jìn)行安裝。
安裝完成之后就可以在PC的網(wǎng)絡(luò)連接中查看到Microsoft環(huán)回適配器了。

圖3:安裝環(huán)回適配器
將Microsoft環(huán)回適配器映射到VM
打開(kāi)VMware Workstation,在編輯菜單下打開(kāi)虛擬網(wǎng)絡(luò)編輯器,選擇VMnet0并將其橋接到Microsoft環(huán)回適配器。

圖4:配置橋接模式
配置CANoe使用Microsoft環(huán)回適配器
在CANoe界面,Hardware -> Network Hardware-> Ehernet channel-> Hardware Type中選擇Microsoft環(huán)回適配器。

圖5:配置使用網(wǎng)卡
所有配置完成之后,來(lái)自CANoe中的以太網(wǎng)數(shù)據(jù)就可以通過(guò)映射的以太網(wǎng)鏈路發(fā)送到VMware中,同樣VMware中的以太網(wǎng)數(shù)據(jù)也可以發(fā)送給CANoe。
以VMware中Ubuntu環(huán)境為例,驗(yàn)證CANoe與Ubuntu之間的通信鏈路,過(guò)程如下圖。

圖6: CANoe與Ubuntu通信過(guò)程
03
TUN/TAP Server
CANoe從15.0版本開(kāi)始,新增了Virtual Link(TUN/TAP)功能,支持使用TUN/TAP設(shè)備驅(qū)動(dòng)程序?qū)M虛擬的網(wǎng)絡(luò)設(shè)備連接到CANoe進(jìn)行仿真。這種模式的通信是雙向的,并且CANoe支持工作在真實(shí)總線及仿真總線模式下。

圖7: TAP功能示意
主要配置過(guò)程如下。
配置TUN/TAP Server
一是需要在本地Linux環(huán)境中編譯TAP server,二是編譯完成后需要在VM中創(chuàng)建虛擬的TAP設(shè)備,具體過(guò)程可以參考CANoe幫助文檔的說(shuō)明。

圖8:TAP server配置
以VMware中CentOS7環(huán)境為例,演示下TAP server配置的具體過(guò)程:

圖9: CenOS7中TAP server配置示例
CANoe中激活Virtual Link
在CANoe中打開(kāi)Option頁(yè)面,激活virtual link并選擇TAP server映射的網(wǎng)絡(luò)。

圖10:CANoe中激活TAP server配置
CANoe中UDP通信配置
在CANoe中創(chuàng)建一個(gè)UDP通信節(jié)點(diǎn),配置其TCP/IP stack信息。

圖11:TCP/IP stack配置
所有配置完成后,運(yùn)行CANoe就可以在write窗口查看到“Tap Server Discovery on 192.168.24.255:33000”及“Connected to Tap Server 192.168.24.131:35802”的信息,表明CANoe與TAP server端的配置已經(jīng)完成并建立了連接。為了驗(yàn)證虛擬機(jī)與CANoe之間的通信,可以通過(guò)Ping指令或者UDP API去進(jìn)行驗(yàn)證,結(jié)果如下。

圖12: CANoe與TAP server通信過(guò)程
審核編輯:劉清
-
AUTOSAR
+關(guān)注
關(guān)注
10文章
398瀏覽量
23661 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
972瀏覽量
30486 -
CANoe總線
+關(guān)注
關(guān)注
0文章
4瀏覽量
1063
原文標(biāo)題:CANoe與虛擬機(jī)
文章出處:【微信號(hào):VectorChina,微信公眾號(hào):Vector維克多】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
在CanoE和TC3x7應(yīng)用套件之間建立通信,如何實(shí)現(xiàn)通過(guò)串行通信從CanoE收到的數(shù)據(jù)幀?
CANoe:網(wǎng)絡(luò)和ECU開(kāi)發(fā)、測(cè)試和分析的專業(yè)工具
CANoe怎么實(shí)現(xiàn)數(shù)據(jù)采集
使用canoe能回放can通道0的數(shù)據(jù)嗎(原始數(shù)據(jù)里的通道是0)?
如何實(shí)現(xiàn)單片機(jī)和電腦之間的信息交互
基于Linux的RFID交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
CANOE教程之CANOE的使用手冊(cè)免費(fèi)下載
嵌入式Linux開(kāi)發(fā)環(huán)境搭建-5-Windows環(huán)境下相關(guān)工具的使用
如何實(shí)現(xiàn)OPC DA Server和MQTT Broker之間的數(shù)據(jù)交互?
淺談CANoe實(shí)現(xiàn)SOA仿真測(cè)試
CANoe集成解決方案
CANOE工具使用教程
基于Linux的RFID交互系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)方案
PLC之間的IO交互怎么實(shí)現(xiàn)
CANoe仿真HTTP節(jié)點(diǎn)的實(shí)戰(zhàn)秘籍大公開(kāi)
如何實(shí)現(xiàn)Linux環(huán)境和CANoe工具之間的數(shù)據(jù)交互
評(píng)論