0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是someip?如何發(fā)揮通信中間件的服務(wù)化作用呢?

832065824 ? 來源:汽車電子嵌入式 ? 2023-09-12 09:16 ? 次閱讀

1.什么是someip?

2011年,寶馬提出和設(shè)計了Someip,SOME/IP全稱Scalable service-Oriented Middleware over IP,即基于IP的可擴展面向服務(wù)的中間件。因此,從Someip的名字出發(fā),有三個典型要素:

3e45bf4e-5100-11ee-a25d-92fbcf53809c.png

因此,要了解Someip,首先得理解Someip為什么要具備三個典型要素。

1.1 面向服務(wù)

提到面向服務(wù),很多人會聯(lián)想到面對對象編程C++python語言someip的面向服務(wù)與python語言中的“類”是一致的,即把方法以及數(shù)據(jù)抽象出來,供多方使用。

即someip通信的本質(zhì)是:一個控制器通過服務(wù)的方式使用另一個控制器的方法或者數(shù)據(jù)。

車內(nèi)溫度值獲取方式為例:

在基于can通信的電器架構(gòu)中,一個特定的功能就需要一個人特定的信號。比如對于車窗控制功能,就需要一個can信號來表示車窗的上升與下降。當需要控制車窗上升時,對應(yīng)的can信號的將設(shè)置為上升,并且周期發(fā)送。

3e7309d6-5100-11ee-a25d-92fbcf53809c.png

基于can信號開啟車窗

在基于Someip通信的電器架構(gòu)中,一個特定的功能將被抽象成“服務(wù)”。這服務(wù)中可以有多種不同的方法,比如:車燈控制器服務(wù),喇叭控制服務(wù)等。當需要控制車窗上升時,只需要通過將服務(wù)中的車窗控制方法設(shè)置為上升,并且只需要發(fā)送一次即可。

3e9080ce-5100-11ee-a25d-92fbcf53809c.png

基于Someip信號開啟車窗 那基于服務(wù)的通信方式有什么優(yōu)勢呢?

基于服務(wù)的通信方式的最大優(yōu)勢在于可擴展性強,便于更新。舉個例子:

如果在車內(nèi)有另一個控制器ECU3也需要對車窗升降進行控制,比如語音控制車窗。

1)如果使用Can通信,那么需要增加哪些工作呢?

l整車通信設(shè)計:增加Can網(wǎng)段或者Can信號(修改硬件或者修改通信矩陣),提供另一個車窗指令信號給ECU3使用。

lECU2軟件設(shè)計:ECU2需要專門為了ECU3設(shè)計對應(yīng)的車窗控制邏輯,因此需要修改軟件。

3eabf2dc-5100-11ee-a25d-92fbcf53809c.png

2)如果使用Someip為基礎(chǔ)的面向服務(wù)的通信,需要增加哪些工作呢?

l整車通信設(shè)計:只需要在整車通信設(shè)計層面,增加ECU3消費ECU2車窗服務(wù)。

3ec28e84-5100-11ee-a25d-92fbcf53809c.png

面向服務(wù)是將功能抽象成服務(wù),如ECU2將車窗功能抽象成車窗控制服務(wù),車內(nèi)任意節(jié)點需要使用車窗控制服務(wù),只需要給ECU2發(fā)送對應(yīng)的服務(wù)someip報文,而ECU2對應(yīng)的車窗邏輯代碼完全不需要修改。即面向服務(wù)的通信與信號完全解耦,擴展性強。 綜上所述,面向服務(wù)的通信將原子功能服務(wù)化,軟件功能邏輯與信號解耦,具有更強的可擴展性,降低修改需求時的成本。

1.2基于IP之上的協(xié)議

3ed51c84-5100-11ee-a25d-92fbcf53809c.png

以太網(wǎng)是一種使用十分廣泛的協(xié)議,由標準的七層架構(gòu)組成,但CP中的以太網(wǎng)其實僅用了5層協(xié)議,Someip為第5層協(xié)議。

以太網(wǎng)第一層是物理層,既可以理解為硬件層,MCU的軟硬件系統(tǒng)中由Phy芯片完成。Phy芯片能對模擬信號與數(shù)字信號進行轉(zhuǎn)換,接收報文時,將模擬信號轉(zhuǎn)換成數(shù)字信號給MCU芯片處理;發(fā)送報文時,將數(shù)字信號轉(zhuǎn)換成模擬信號發(fā)送至以太網(wǎng)總線上。

以太網(wǎng)第二層是數(shù)據(jù)鏈路層。鏈路層即Mac層,規(guī)定了數(shù)據(jù)幀能被網(wǎng)卡接收的條件,最常見的方式是利用利用網(wǎng)卡的MAC 地址,發(fā)送方會在欲發(fā)送的數(shù)據(jù)幀的首部加上接收方網(wǎng)卡的MAC 地址信息,接收方只有監(jiān)聽到屬于自己的MAC 地址信息后,才會去接收并處理該數(shù)據(jù)。以太網(wǎng)第三層是網(wǎng)絡(luò)。每一臺搭載了以太網(wǎng)的ECU都需要定義ip地址,主機的網(wǎng)絡(luò)地址該如何定義,以及如何在網(wǎng)絡(luò)地址和MAC 地址之間進行映射,即ARP 協(xié)議;網(wǎng)絡(luò)層實現(xiàn)了數(shù)據(jù)包在ECU之間的傳遞。

以太網(wǎng)第四層是傳輸層。傳輸層主要是實現(xiàn)UDP以及TCP協(xié)議功能,在一個ECU內(nèi)可能存在不同的應(yīng)用程序,這些程序可能會使用到不同的IP地址,那么傳輸層就能區(qū)分數(shù)據(jù)包是屬于哪個應(yīng)用程序的,即傳輸層可以實現(xiàn)數(shù)據(jù)包端到端的傳遞,即ECU1的應(yīng)用程序至ECU2的應(yīng)用程序。

SomeipSomeipsd,Doip位于以太第五層應(yīng)用層:Someip協(xié)議,,Someipsd協(xié)議,doip協(xié)議本質(zhì)上是規(guī)定了對網(wǎng)絡(luò)層傳遞的數(shù)據(jù)的處理,適應(yīng)了不同的應(yīng)用場景。在CP中,實際上Soad,SD,Doip,Soemipxf都是在實現(xiàn)應(yīng)用層功能。

1.3 通信中間件

中間件本來是在互聯(lián)網(wǎng)行業(yè)十分流行的術(shù)語,是基礎(chǔ)軟件一類,位于操作系統(tǒng),網(wǎng)絡(luò),數(shù)據(jù)庫之上,應(yīng)用軟件的下層。作用是為處于自己上層的應(yīng)用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復雜的應(yīng)用軟件。在不同的技術(shù)之間共享資源并管理計算資源和網(wǎng)絡(luò)通信。

3f0193ea-5100-11ee-a25d-92fbcf53809c.png

中間件的核心思想在于“統(tǒng)一標準、分散實現(xiàn)、集中配置”。Someip這套協(xié)議具備了中間件的顯著特征,能夠運行于車內(nèi)不同的操作系統(tǒng)之上,并且能滿足同一套標準協(xié)議。

2.SOMEIP服務(wù)化通信

在面向服務(wù)的Someip通信中,Someip提供了三種接口將幫助使用者將原子功能服務(wù)化:

事件Events:事件通知主要提供事件型的接口,該事件可以是突發(fā)型的事件,也可以是周期性的事件。

方法Methods:遠程過程調(diào)用, 主要用于遠程調(diào)用方法。

字段Fields:訪問進程數(shù)據(jù)(Field)。訪問進程通信機制主要是為了實現(xiàn)針對對應(yīng)用程序的數(shù)據(jù)獲取與更改

看完上面對于someip接口的解釋,相信很多人還是對這些官方的抽象解釋一臉疑惑,接下來為大家提供接地氣的描述。

2.1 設(shè)定不同Someip接口的目的

本質(zhì)上一個服務(wù)抽象的是一個大功能,每個功能會有不同的子功能以及不同的應(yīng)用場景,所以就需要不同的接口滿足不同場景需求。

以上文中提到的車窗服務(wù)為例,如果車窗服務(wù)有如下使用需求:

需求1:某ECU需要ECU2周期性提供車窗開度狀態(tài)信息。

需求2:某ECU需要ECU2在車窗開度信息有變化時提供車窗開度信息。

需求3:某ECU在有需要時遠程單次獲取車窗開度信息。

需求4:某ECU需要設(shè)置當前的車窗開度信息

需求5:某ECU需要直接開關(guān)車窗

上面的不同功能需求都可以通過Someip提供的三種接口實現(xiàn)。

需求1:該需求為需要提供周期性事件信息,選Event接口

需求2:該需求為需要提供突發(fā)型事件型的數(shù)據(jù),選Event接口。

需求3:有需要時獲取數(shù)據(jù),即訪問進程中的內(nèi)容,選Field接口。

需求4:設(shè)置當前的車窗開度信息,也是訪問進程中的內(nèi)容,選Filed接口。

需求5:直接開關(guān)車窗,實現(xiàn)車窗的遠程控制,需要遠程調(diào)用開關(guān)服務(wù),這是典型的遠程調(diào)用,選Method接口。

看到這兒,大家是否對Someip接口有所認識,本質(zhì)上Method/Event/Filed都是上層的概念,用以體現(xiàn)服務(wù)中子功能的特征,根據(jù)子功能的特點選擇合適的接口。

比如事件型的子功能選Event,過程訪問(比如車輛運行過程中獲取空調(diào)溫度,設(shè)置空調(diào)溫度)選Filed,遠程調(diào)用(比如App遠程直接控制空調(diào)開關(guān))選Method。

2.2 Someip服務(wù)的通信機制

Method/Event/Filed三個接口只是上層概念,是對于功能層面概念的抽象,在整車架構(gòu)中實現(xiàn)這幾種概念,還需要通信機制的支撐。

比如:打工仔有很好的針對業(yè)務(wù)上的建議(Method/Event/Filed),需要獲取領(lǐng)導的資源支持,那么就需要使用PPT進行匯報,PPT就是底層的通信機制。

Someip提供了三種通信方式:

l請求/響應(yīng)

l請求不響應(yīng)

l服務(wù)發(fā)現(xiàn)/訂閱發(fā)布

上述三種方式對應(yīng)著四種真正的通信機制:

lRequest/response

lFire&Forget

lNotification

lGetter/Setter

通信方式描述的是通信機制的特點,通信機制是支撐Someip接口功能實現(xiàn)的底層通信機制。

通信機制有如下圖中的對應(yīng)關(guān)系,下面將介紹各接口中的通信機制。

3f1d338e-5100-11ee-a25d-92fbcf53809c.png

1)Method

Method的特點是遠程調(diào)用,根據(jù)是否需要服務(wù)端發(fā)出響應(yīng)報文可以分為兩類:

1.請求響應(yīng),即Request/Response機制

簡而言之,Client端(某個ECU)有需求的時候,向Server端(某個ECU)發(fā)送Request請求Someip報文,Server接收報文后處理該請求,并向Client端發(fā)送響應(yīng)Someip報文,響應(yīng)Someip報文中將攜帶請求處理結(jié)果。

3f48e524-5100-11ee-a25d-92fbcf53809c.png

2.請求不響應(yīng),即Fire/Forget機制

Fire/Forget機制相對于Request/Response機制,區(qū)別在于前者不需要Server端發(fā)送響應(yīng)報文,而后者需要。

3f64ee5e-5100-11ee-a25d-92fbcf53809c.png

2)Event

Event服務(wù)接口支持的通信機制是Notification,有如下特性:

l由Server向Client發(fā)送報文

l可周期性發(fā)送或者根據(jù)事件狀態(tài)(值改變或者特定條件滿足)發(fā)送通知類消息

l在Server端發(fā)送報文之前,需要Client端先對服務(wù)進行訂閱。

3f807a7a-5100-11ee-a25d-92fbcf53809c.png

3)Field

Field訪問進程通信支持了三種通信機制,Notification,Getter,Setter三種。

1.Notification

Filed支持Notification時,具有如下特性:

1)由Server端主動發(fā)送報文

2)在Server端提供的服務(wù)整個生命周期中,即在服務(wù)上線后的任意時刻,Server端可以Filed數(shù)據(jù)報文發(fā)送給Client端。Filed強調(diào)的是全生命周期的數(shù)據(jù),Event強調(diào)的是變化的事件。

3)在Server端發(fā)送報文之前,需要Client端先對服務(wù)進行訂閱。

3fa6f8da-5100-11ee-a25d-92fbcf53809c.png

2.Getter

Client主動從Server端獲取field數(shù)據(jù)。

3fc69938-5100-11ee-a25d-92fbcf53809c.png

3.Setter

Client主動設(shè)置Server端的Field數(shù)據(jù)。

3fe60822-5100-11ee-a25d-92fbcf53809c.png

3.Someip的軟件實現(xiàn)

在AUTOSAR架構(gòu)中,Someip服務(wù)化通信的實現(xiàn)需要依賴于底層以太協(xié)議棧與應(yīng)用層的共同完成。

如上文所描述,服務(wù)接口的抽象由應(yīng)用層完成,即Event,F(xiàn)iled,Method的抽象,具體的通信機制由以太棧支持。

即以太協(xié)議棧與Rte將完成數(shù)據(jù)的序列化與反序列化,報文的組裝與分解以及notify,RR,Getter/Setter等通信機制。

應(yīng)用層SWC將完成Event與Method或者Filed特性的實現(xiàn)。

3.1 Method請求代碼實現(xiàn)

下圖為Method接口請求/響應(yīng)中請求的代碼實現(xiàn)方式。

Request/Response中Request即是典型的請求。

實際上,Method接口中請求在AUTOSAR架構(gòu)中體現(xiàn)為函數(shù)調(diào)用。Client向Server端通過Method接口請求車窗開啟,本質(zhì)上就是,Client端向Server端請求調(diào)用對應(yīng)的車窗控制函數(shù),只不過函數(shù)調(diào)用請求需要通過Someip報文從Client端發(fā)送至Server端實現(xiàn)。

如下圖,Client端Rte_Call_OpenTheWindowMethod(State)執(zhí)行后,Someip報文將此請求傳輸至Server端,Re_OpenTheWindowMethod被調(diào)用。

注意:Request/Response中Response的實現(xiàn)方式與Request一致,不同點在于變?yōu)镾erver端請求調(diào)用Client端中的函數(shù)。

4007e244-5100-11ee-a25d-92fbcf53809c.png

3.2 Event主動發(fā)送代碼實現(xiàn)

下圖為Event服務(wù)接口在代碼中的實現(xiàn)方式。

在AUTOSAR架構(gòu)中,Event實現(xiàn)的即為ECU間的數(shù)據(jù)傳輸。

Server端使用Rte_Write_WindowStateEvent(State)接口,通過Someip報文將State數(shù)據(jù)傳送給Client端,Client端通過Rte_read_WindowStateEvent(State)獲取數(shù)據(jù)。

注意:Fire/Forget.Field之notifation的實現(xiàn)機制與Event一致。

40214090-5100-11ee-a25d-92fbcf53809c.png

總結(jié)

本文對Someip的來源本質(zhì),Someip的服務(wù)化通信,以及Someip服務(wù)化通信在AUTOSAR中代碼實現(xiàn)方式做了詳細的介紹,如果需要深入了解Someip,還需要對Someip的報文格式,SomeipSD的機制以及AUTOSAR的以太棧模塊進行學習。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16028

    瀏覽量

    176639
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5317

    瀏覽量

    170468
  • CAN通信
    +關(guān)注

    關(guān)注

    5

    文章

    93

    瀏覽量

    17790
  • C++語言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    6944
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84283

原文標題:通信中間件Someip服務(wù)化通信

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是DDS(數(shù)據(jù)分發(fā)服務(wù))?#軟件中間件

    中間件DDS
    北匯信息POLELINK
    發(fā)布于 :2023年06月05日 14:50:13

    一種嵌入式系統(tǒng)通信中間件的設(shè)計

    基于嵌入式系統(tǒng)的跨平臺實現(xiàn)互通、互連、互操作及通用性的特殊要求,我們根據(jù)中間件的設(shè)計思想研制開發(fā)了一種基于嵌入式技術(shù)的各通信設(shè)備之間進行網(wǎng)絡(luò)互連的通信中間件
    發(fā)表于 05-30 09:33 ?35次下載

    支持多服務(wù)的消息中間件設(shè)計與實現(xiàn)

    為了解決消息中間件中的性能瓶頸問題和實現(xiàn)其可靠性的提高,研究并開發(fā)了支持多服務(wù)的消息中間件,提供單個節(jié)點無法提供的性能和可靠性保障。消息集群設(shè)計過程中涉及的主
    發(fā)表于 08-06 10:04 ?26次下載

    基于JMS的RFID中間件設(shè)計與實現(xiàn)

    介紹了Radio Frequency Identification (RFID) 和物聯(lián)網(wǎng)的RFID 中間件技術(shù),設(shè)計了RFID 中間件整體框架,在此基礎(chǔ)上設(shè)計并實現(xiàn)了一個基于JMS 的商品零售的邊緣中間件
    發(fā)表于 10-19 16:16 ?17次下載

    什么是中間件

    什么是中間件 中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件
    發(fā)表于 12-28 17:54 ?1350次閱讀
    什么是<b class='flag-5'>中間件</b>

    arm技術(shù)中間件技術(shù)研究

    中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源;中間件位于客戶機/服務(wù)器的操作系統(tǒng)之上,管理計算資源和網(wǎng)絡(luò)
    發(fā)表于 06-18 09:47 ?1661次閱讀

    基于ARM的RFID中間件系統(tǒng)設(shè)計

    RFID中間件在RFID讀寫器和應(yīng)用程序之間起橋梁作用。應(yīng)用程序端使用中間件所提供一組通用的應(yīng)用程序接口(API),即能連到RFID讀寫器,采集RFID標簽數(shù)據(jù)。即使存儲RFID標簽情報的數(shù)據(jù)庫軟
    發(fā)表于 09-16 10:33 ?988次閱讀

    常見的中間件有哪些?匯總解析

    世界著名的資訊機構(gòu)Giga Group把中間件分為三大類,共十五種。另一家世界著名的資訊機構(gòu)IDC同時指出,最近幾年到未來的2002年,增長率最高的中間件將集中在數(shù)據(jù)存取中間件、消息中間件
    發(fā)表于 12-01 08:48 ?5.4w次閱讀

    物聯(lián)網(wǎng)軟件系統(tǒng)中的RFID中間件介紹

    RFID中間件是物聯(lián)網(wǎng)軟件系統(tǒng)中的關(guān)鍵和靈魂,為解決分布異構(gòu)問題,人們提出了中間件的概念。中間件是位于平臺(硬件和操作系統(tǒng))和應(yīng)用之間的通用服務(wù),這些
    發(fā)表于 04-15 16:00 ?4540次閱讀
    物聯(lián)網(wǎng)軟件系統(tǒng)中的RFID<b class='flag-5'>中間件</b>介紹

    RFID中間件是什么東西

    RFID 中間件是一種面向消息的中間件,信息是以消息的形式,從一個程序傳送到另一個或多個程序。
    發(fā)表于 12-02 16:12 ?3403次閱讀

    Go項目中引入中間件的目的和效果如何

    中間件是什么?Go 項目中引入中間件的目的和效果如何?本文詳細介紹了Golang 中間件。 中間件是一種計算機 軟件,可為 操作系統(tǒng) 提供的 軟件應(yīng)用程序 提供
    的頭像 發(fā)表于 08-14 14:24 ?1975次閱讀

    通信中間件接口手冊

    通信中間件接口手冊
    發(fā)表于 06-29 11:37 ?2次下載

    汽車軟件通信中間件iceoryx和它的零拷貝技術(shù)

    1. iceOryx 是什么?這是一頭漂亮的"冰羚",它是一種用于汽車軟件中的 ICP 通信中間件,由 Eclipse 基金會發(fā)布和維護。 通信中間件在汽車軟件開發(fā)中占據(jù)越來越重要的地位,這是
    發(fā)表于 05-15 11:42 ?0次下載
    汽車軟件<b class='flag-5'>通信中間件</b>iceoryx和它的零拷貝技術(shù)

    自動駕駛通信中間件

    ,而中間件的任務(wù)就是確保網(wǎng)絡(luò) 本身對軟件組件是透明的。比如我們所熟知的SOME/IP就是一種典型的中間件技術(shù)實現(xiàn)。使用中間件能夠簡化系統(tǒng)的開發(fā),提 高管理和測試效率。 車載網(wǎng)絡(luò)通信
    發(fā)表于 06-01 11:32 ?0次下載
    自動駕駛<b class='flag-5'>通信中間件</b>

    DDS通信中間件——DCPS規(guī)范(上)

    DDS通信中間件——DCPS規(guī)范(上)本篇文章繼續(xù)和大家分享一下對DDS這套規(guī)范的理解。預期本系列文章將包括以下內(nèi)容陸續(xù)更新:1.DDS規(guī)范概述2.DCPS規(guī)范解讀3.DDS-XTypes與IDL
    的頭像 發(fā)表于 09-26 08:08 ?171次閱讀
    DDS<b class='flag-5'>通信中間件</b>——DCPS規(guī)范(上)