Autosar以太網(wǎng)及SOME/IP實(shí)現(xiàn)?
MICROSAR ETH 簡(jiǎn)介
以太網(wǎng)即 ETH (Ethernet) 是 MICROSAR (*MICROSAR 是由Vector 開發(fā)的一套符合 AUTOSAR 標(biāo) 準(zhǔn)的基礎(chǔ)軟件代碼包,包含了 MICROSAR.RTE 以及 MICRO- SAR.BSW,覆蓋了 AUTOSAR 的所有標(biāo)準(zhǔn),還具有一些擴(kuò)展功能模塊,每一個(gè)AUTOSAR 的BSW 模塊都能對(duì)應(yīng)到具體的 MICROSAR 模塊。Vector DaVinci Configurator Pro 工具用于對(duì) MICROSAR 模塊進(jìn)行具體配置,并生成代碼。*)中的一個(gè)
BSW 模塊,其概念是由 Xerox 公司創(chuàng)建并由 Xerox、Intel 和
DEC/' 公司聯(lián)合開發(fā)的基帶局域網(wǎng)規(guī)范,是當(dāng)今現(xiàn)有局域網(wǎng)
采用的最通用的通信協(xié)議標(biāo)準(zhǔn)。
圖1 汽車以太網(wǎng)
圖2 以太網(wǎng)無線充電
以太網(wǎng)包括標(biāo)準(zhǔn)的以太網(wǎng)
(10Mbit/s)、快速以太網(wǎng)(100Mbit/s)和 10G(10Gbit/s)以太網(wǎng)。IEEE 組織的 IEEE 802.3 標(biāo)準(zhǔn)制定了以太網(wǎng)的技術(shù)標(biāo)準(zhǔn),它規(guī)定了包括物理層的連線、電子信號(hào)和介質(zhì)訪問層協(xié)議的內(nèi)容。
圖3 Vector全棧解決方案
AUTOSAR 對(duì)于車載以太網(wǎng)的架構(gòu)提出了新的解決方案,不同于計(jì)算機(jī)網(wǎng)絡(luò)通信的 7 層 OSI 架構(gòu)模型,AUTOSAR 規(guī)范首次提出了一種適用于車載以太網(wǎng)的 TCP/IP 模型。如圖 4 所示,以太網(wǎng)在 OSI 七層模型定義于物理層和數(shù)據(jù)鏈路層,相對(duì)應(yīng)地在 TCP/IP 模型中處于網(wǎng)絡(luò)接口層。由于 OSl 七層模型對(duì)于車用網(wǎng)絡(luò)架構(gòu)而言過于復(fù)雜,而 AUTOSAR 使用的TCP/IP 模型更貼近實(shí)用,故其在車載以太網(wǎng)領(lǐng)域獲得了更廣泛的應(yīng)用。
圖4 OSI 模型與車載以太網(wǎng) TCP/IP 模型
在 TCP/IP 模型中,網(wǎng)絡(luò)通信架構(gòu)被分為 4 層,其中應(yīng)用層是應(yīng)用程序訪問網(wǎng)絡(luò)的通道,常見FTP、HTTP、DNS 和TEL-
NET 協(xié)議,AUTOSAR 內(nèi)還包含了 SOME/IP、DoIP 和 XCP 等
協(xié)議;傳輸層主要指的是 TCP 協(xié)議和 UDP 協(xié)議;網(wǎng)絡(luò)層包括
IP 協(xié)議,ARP、RARP 協(xié)議,ICMP 協(xié)議等;網(wǎng)絡(luò)接口層是 TCP/
IP 協(xié)議的基層,負(fù)責(zé)數(shù)據(jù)幀的發(fā)送和接收。
車載以太網(wǎng) SOME/IP 協(xié)議簡(jiǎn)介
SOME/IP(Scalable service-Oriented MiddlewarE over IP) 是車載以太網(wǎng)通信領(lǐng)域的一個(gè)概念,是一種位于應(yīng)用層的通信協(xié)議。在目前主流的以 CAN 總線為主的車載網(wǎng)絡(luò)中,通信過程是面向信號(hào)的(除了診斷通信之外),這是一種根據(jù)發(fā)送者需求實(shí)現(xiàn)的通信過程,當(dāng)發(fā)送者發(fā)現(xiàn)信號(hào)的值變化了或者到達(dá)預(yù)定的發(fā)送周期,就會(huì)向外發(fā)送該信號(hào),而不考慮接收者是否有需求。而 SOME/IP 則不同,它是在接收方有需求的時(shí)候才發(fā)送,這種協(xié)議使得總線上不會(huì)出現(xiàn)過多不必要的數(shù)據(jù)收發(fā),從而有效地降低總線負(fù)載。在車載網(wǎng)絡(luò)中,某個(gè) ECU 有時(shí)會(huì)需要調(diào)用實(shí)現(xiàn)在其他
ECU 上的服務(wù),此時(shí)兩個(gè)ECU 就分別扮演了網(wǎng)絡(luò)通信中client
和 server 的角色,而 SOME/IP 就是實(shí)現(xiàn)這種遠(yuǎn)程服務(wù)調(diào)用的接口,如圖 5 所示。
圖 5 SOME/IP 通信示意圖
從圖 5 和圖 6 可以看出,SOME/IP 本質(zhì)上是構(gòu)架在傳輸層之上的應(yīng)用層通信協(xié)議,它是位于TCP/UDP 報(bào)文的Payload 部分內(nèi)的。
圖 6 SOME/IP報(bào)文位置
SOME/IP數(shù)據(jù)的 Header 部分的 Message Type 字段是
SOME/IP 功能實(shí)現(xiàn)的重要部分,其長度為 8 bit,有以下五種取值:REQUEST(期待響應(yīng)的請(qǐng)求)、REQUEST_NO_RETURN
(不期待響應(yīng)的請(qǐng)求)、NOTIFICATION (事件通知)、RE-
SPONSE(響應(yīng)消息)和 ERROR(報(bào)錯(cuò)消息)。
圖 7 SOME/IP 協(xié)議通信方法
如圖 7 所示,當(dāng) ECU A 作為 Client 端對(duì) ECU B 的某個(gè)服務(wù)有需求時(shí),發(fā)送一個(gè)Request 消息,之后ECU B 作為Ser- ver 端根據(jù)接收到的 Request 類型決定是否返回一個(gè) Re- sponse 消息。在二者經(jīng)過上述通信沒有發(fā)生錯(cuò)誤后,首先由
Client 向 Server 訂閱服務(wù)內(nèi)容,然后 Server 向 Client 自動(dòng)發(fā)
布服務(wù)內(nèi)容。3 實(shí)現(xiàn)方法
MICROSAR ETH 模塊功能的實(shí)現(xiàn)需要一個(gè)上位機(jī)與單片機(jī)上的 ETH 模塊進(jìn)行信息交互,為了更好的進(jìn)行交互過程觀察和單片機(jī)上的變量觀察,本文使用德國 Vector 公司的產(chǎn)品 VN5640 配合電腦上的 CANoe 軟件作為上位機(jī)。
圖 8 實(shí)現(xiàn)方法示意圖
在 MICROSAR 中,DaVinci 配置工具將以太網(wǎng)相關(guān)的配置內(nèi)容分為如圖 9 所示的多個(gè)分層模塊結(jié)構(gòu)。用戶需要自下而上進(jìn)行配置,即從底層的Eth 收發(fā)器、接口和驅(qū)動(dòng)模塊開始, 之后配置網(wǎng)絡(luò)傳輸協(xié)議 TCP/IP 模塊,配置對(duì) TCP/IP 協(xié)議進(jìn)行封裝的SoAd 模塊,然后將其和信號(hào)相關(guān)的PduR、Com 模塊相互配合,最后和上層的 SOME/IP 協(xié)議應(yīng)用相關(guān)聯(lián)。其設(shè)計(jì)路線與上文 MICROSAR 提出的車載以太網(wǎng) TCP/IP 模型結(jié)構(gòu)的順序基本符合。
圖 9 MICROSAR 配置工具的分層模塊架構(gòu)
因此,本文采用的技術(shù)路線如下:(1)使用Vector DaVinci 開發(fā)工具搭建操作系統(tǒng),實(shí)現(xiàn)RTE、任務(wù)配置和運(yùn)行實(shí)體的映射,配置應(yīng)用層用于測(cè)試的簡(jiǎn)單應(yīng)用;
(2)配置 Eth/EthIf/EthTrcv 模塊,即以太網(wǎng)通信底層模塊,包括以太網(wǎng)接口、以太網(wǎng)收發(fā)器和以太網(wǎng)驅(qū)動(dòng)的相關(guān)配置;
(3)配置 TCP/IP 模塊,即以太網(wǎng)通信協(xié)議,對(duì)傳輸層和網(wǎng)絡(luò)層進(jìn)行配置。
(4)配置 SoAd 模塊,每一條 TCP 連接通過一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,連接的兩個(gè)端點(diǎn)稱為一個(gè) Socket。其本質(zhì)是編程接口(API),即一種對(duì) TCP/IP 的封裝。
(5)配置信號(hào)定義(該步驟用于SOME/IP 通信),主要通過以太網(wǎng)描述文件(.arxml)完成,通過 Com 相關(guān)模塊和 Pdu 相關(guān)模塊進(jìn)行配置實(shí)現(xiàn)其具體功能。
(6)在 Tasking 編譯器中集成靜態(tài)代碼以及配置工具生成
的代碼,生成可執(zhí)行文件;
(7)使用調(diào)試工具進(jìn)行測(cè)試驗(yàn)證,使用 CANoe 對(duì)所需變量進(jìn)行觀測(cè);
本文設(shè)計(jì)了如下方案以驗(yàn)證 ETH 基礎(chǔ)通信及 SOME/IP
通信的功能的正確性。在驗(yàn)證ETH 基礎(chǔ)通信功能時(shí),如下圖所示,設(shè)計(jì)了一個(gè)以太網(wǎng)接收數(shù)據(jù)的中斷服務(wù),即每當(dāng)單片機(jī)成功接收到上位機(jī)發(fā)來的以太網(wǎng)報(bào)文后,產(chǎn)生一個(gè)二類中斷。為了驗(yàn)證以太網(wǎng) 基礎(chǔ)通信在UDP 和TCP 兩種協(xié)議下均可正常工作,故設(shè)計(jì)適用于 UDP 和 TCP 兩種協(xié)議的中斷服務(wù)程序,在其內(nèi)部調(diào)用以太網(wǎng)發(fā)送函數(shù)SoAd_IfTransmit(),即當(dāng)單片機(jī)成功接收到上位機(jī)發(fā)來的以太網(wǎng)報(bào)文后,立刻向外發(fā)出一個(gè)以太網(wǎng)報(bào)文,本文設(shè)計(jì)發(fā)送內(nèi)容與接收到的數(shù)據(jù)一致,以此驗(yàn)證以太網(wǎng)基礎(chǔ)通信的收發(fā)功能。
圖 10 驗(yàn)證通信功能的中斷服務(wù)程序及任務(wù)的簡(jiǎn)單代碼
測(cè)試與驗(yàn)證
測(cè)試與驗(yàn)證 本文測(cè)試硬件平臺(tái)為英飛凌公司生產(chǎn)的 Aurix TC397 單片機(jī),通過 Mini-Wiggler 與計(jì)算機(jī)上的 pls 公司的 UDE 調(diào)試軟件相連,另以德國 Vector 公司生產(chǎn)的 VN5610 控制器作為測(cè)試上位機(jī),配合該公司的 CANoe 軟件進(jìn)行測(cè)試。
圖 11 測(cè)試系統(tǒng)示意圖
-
ETH 基礎(chǔ)通信測(cè)試
圖 12 UDP Message
在單片機(jī)運(yùn)行的程序中添加代碼,目的是使單片機(jī)收到上位機(jī)CANoe 發(fā)送來的數(shù)據(jù)時(shí),直接將收到的數(shù)據(jù)轉(zhuǎn)發(fā)出去, 即發(fā)回 CANoe。這樣只要分別對(duì)比在 UDP 與 TCP 協(xié)議下, 發(fā)送與接收到的 UDP/TCP 的 Payload 數(shù)據(jù)是否一致,以及
UDP/TCP 的Header 部分是否相互匹配,即可確認(rèn)以太網(wǎng)基礎(chǔ)
通信功能是否正常。點(diǎn)擊 CANoe 的運(yùn)行按鍵,在 Trace 窗口可以看到以太網(wǎng)網(wǎng)絡(luò)的數(shù)據(jù)幀,Trace 結(jié)果的片段如下圖所示。在 Trace 窗口中點(diǎn)擊任意一幀接收?qǐng)?bào)文Rx,可以在Detail View 中查看UDP報(bào)文和 TCP 報(bào)文的詳細(xì)信息,從圖 13 中可以看到幀類型、物理地址、本地和目標(biāo)地址及其端口,在 UDP 與 TCP 下的 Pay-
load 是主要的用戶數(shù)據(jù)。
圖 13 UDP 報(bào)文 Trace
在 UDP 協(xié)議下,將 CANoe 接收到的數(shù)據(jù)報(bào)文與之前預(yù)設(shè)在 CANoe 中發(fā)送的數(shù)據(jù)報(bào)文進(jìn)行對(duì)比,可以看出兩者的
Payload 部分相同,其他部分嚴(yán)格對(duì)應(yīng)無誤。在 UDP 協(xié)議下,將 CANoe 接收到的數(shù)據(jù)報(bào)文與之前預(yù)設(shè)在 CANoe 中發(fā)送的數(shù)據(jù)報(bào)文進(jìn)行對(duì)比,可以看出兩者的
Payload 部分相同,其他部分嚴(yán)格對(duì)應(yīng)無誤。
圖 14 TCP 報(bào)文 Trace
在 TCP 協(xié)議下,可以看出 TCP 協(xié)議特有的識(shí)別過程,首先進(jìn)行 ARP 協(xié)議傳輸,根據(jù) IP 地址解析 MAC 地址,之后是客戶端(CANoe)與服務(wù)端(TC397)建立連接的“三次握手”。與 UDP 協(xié)議不同的是,TCP 協(xié)議中的任何以此收發(fā)均會(huì)給對(duì)方產(chǎn)生一個(gè)反饋信息,由于在代碼中設(shè)置了將單片機(jī)收到的報(bào)文數(shù)據(jù)立刻發(fā)送出去,因此該報(bào)文數(shù)據(jù)會(huì)與反饋信息相結(jié)合形成一個(gè)報(bào)文,故在上位機(jī)中以此完整通信只收到一次 Rx 報(bào)文。將 CANoe 接收到的數(shù)據(jù)報(bào)文與之前預(yù)設(shè)在 CANoe 中發(fā)送的數(shù)據(jù)報(bào)文進(jìn)行對(duì)比,可以看出兩者的Payload 部分相同, 其他部分嚴(yán)格對(duì)應(yīng)無誤。綜上所述,驗(yàn)證了以太網(wǎng)基礎(chǔ)通信功能的正確實(shí)現(xiàn)。-
以太網(wǎng) SOME/IP 通信測(cè)試
通過網(wǎng)線將 VN5610 與 TC397 單片機(jī)相連接,另一端通過數(shù)據(jù)線將 VN5610 與電腦相連接。首先測(cè)試從 TC397 單片機(jī)向外發(fā)送數(shù)據(jù),在代碼中聲明要發(fā)送的信號(hào)為如圖 10 所示結(jié)構(gòu)體 aSOAData_RDA_HSC4_S00,賦值為{1,0,0,4}。正常運(yùn)行單片機(jī)之后,可以在 UDE 調(diào)試器中通過 Watches 窗口查看到代碼中設(shè)置好的信號(hào)的值。保持單片機(jī)上的程序正常運(yùn)行,建立 CANoe 工程。只要分別對(duì)比:(1)上位機(jī) CANoe 發(fā)送出的報(bào)文,即上述結(jié)構(gòu)體的值,是否被單片機(jī)正確接收,即單片機(jī)內(nèi)存中該結(jié)構(gòu)體的值與發(fā)送 報(bào)文的相應(yīng)值是否一致。(2)上位機(jī) CANoe 接收到的報(bào)文,即上述結(jié)構(gòu)體的值,是否與單片機(jī)發(fā)出的報(bào)文相應(yīng)值一致,即上位機(jī)中收到的數(shù)據(jù) 是否與單片機(jī)內(nèi)存中該結(jié)構(gòu)體的值一致。以及各自的 Header 部分是否相互匹配,即可確認(rèn)以太網(wǎng)SOME/IP 通信功能是否正常。
圖 15 SOME/IP 通信接收測(cè)試
使用 CANoe 的 Trace 窗口觀測(cè)報(bào)文,和 UDE 調(diào)試器中看到的單片機(jī)預(yù)設(shè)數(shù)據(jù)進(jìn)行對(duì)比。可以看到 CANoe 收到的信號(hào)中的結(jié)構(gòu)體與代碼中設(shè)置的名稱相同,數(shù)據(jù){1,0,0,4}一致,報(bào)文其他部分互相對(duì)應(yīng)無誤。之后測(cè)試從上位機(jī)CANoe 向單片機(jī)發(fā)送數(shù)據(jù),在CANoe 中利用 CAPL 語言手寫代碼,聲明要發(fā)送的信號(hào)為如圖 10 所示結(jié)構(gòu)體 aSOAData_IECU_HSC4_RDA_FrP01,賦值為{1, 34,51,68}。正常運(yùn)行單片機(jī)和 CANoe 工程之后,可以在 CA-
Noe 的 Trace 窗口查看在 CAPL 語言中設(shè)置好的信號(hào)的內(nèi)容。
圖 16 SOME/IP 通信發(fā)送測(cè)試
使用 UDE 調(diào)試器的 Watches 窗口查看單片機(jī)收到的結(jié)構(gòu)體數(shù)據(jù),和 CANoe 中預(yù)設(shè)的報(bào)文數(shù)據(jù)進(jìn)行對(duì)比。可以看到單片機(jī)收到的信號(hào)中的結(jié)構(gòu)體與 CANoe 中設(shè)置的名稱相同,數(shù)據(jù){1,34,51,68}一致,報(bào)文其他部分互相對(duì)應(yīng)無誤。綜上所述,驗(yàn)證了以太網(wǎng) SOME/IP 通信功能的正確實(shí)現(xiàn)。