基于案例解析AP AUTOSAR開發流程


本文通過一個應用案例,將整體使用AP AUTOSAR的流程簡單介紹。同時,讀者將理解AP AUTOSAR的幾個基本平臺組件?;谶@個案例,讀者可以了解最基礎的AP AUTOSAR開發流程。其中,重點介紹了AP AUTOSAR建模。

1

開發流程

基于案例解析AP AUTOSAR開發流程的圖1
AP AUTOSAR整體開發流程
AP AUTOSAR開發流程:
  • 定義服務:輸出ServiceInterface, 屬于OEM工作范圍。
  • 生成基于Skeleton/Proxy 的Class。使用AUTOSAR供應商工具鏈。
  • 實現SWC和使用目標軟件平臺工具鏈編譯為可執行文件 Executables。
  • 生成Machine Manifest。描述目標硬件和軟件平臺環境。將應用映射到進程。使用AUTOSAR工具鏈。

2

案例:服務定義

將車輛功能拆解為服務的部分在這里就不多講了。我個人認為這個跟業務邏輯強相關,跟IT域的方法論沒什么太大區別。


一個服務接口需滿足SOME/IP的組成,里面包含3部分:Fields,Events,Methods。技術細節請參看SOME/IP介紹。

本文假設一個服務接口RadarFusion。

基于案例解析AP AUTOSAR開發流程的圖2

對于一個SOA服務接口,肯定至少得有一個Provider和可能多個Consumer。

基于案例解析AP AUTOSAR開發流程的圖3

3

使用工具鏈生成Skeleton/Proxy

Skeleton/Proxy是在CM (Communication Management)選擇的基本設計模式。這是軟件設計模式里最常用的幾個設計模式之一。AP AUTOSAR基本上參考了GENIVI的CommonAPI設計。原因嘛,都是BMW主導的唄。

做個和比較常見的Publisher/Subscriber模式比較:

Publisher Skeleton 提供服務
Subscriber Proxy 請求(或消費)服務

如圖所示,Skeleton/Proxy的代碼由AUTOSAR工具鏈自動生成。跟應用相關的主要是一個頭文件。

基于案例解析AP AUTOSAR開發流程的圖4

4

SWC定義和實現

這個案例里,兩個SWC對應兩個可執行文件。

基于案例解析AP AUTOSAR開發流程的圖5

服務接口為ap/radar。

RadarService提供輸出接口radar_PPort, Fusion提供輸入接口radar_RPort。


接下來,實現RadarService和Fusion兩個SWC。

幾個 關鍵點
  • SWC里 只允許使用POSIX PSE51接口。
  • SWC一般用C++14代碼規范。注意遵循AUTOSAR標準文檔Guidelines for the use of the C++14 language in critical and safety-related systems。
  • SWC與其他SWC或者平臺模塊只能通過CM接口。

注解:
  • 標準里沒有文件系統接口,只有Persistency平臺模塊。所以嚴格來講,直接訪問文件系統是不允許的。
  • 和CP不同,對通常的外圍定義了標準接口。而AP沒有定義訪問外圍的BSP接口。嚴格來講,AP需要把外圍的訪問抽象為服務。

功能安全

值得注意的是,如果一個SWC是ASIL,其所依賴的POSIX PSE51庫也必須是通過ASIL認證。一般來講,這是由OS供應商提供。另外,一部分C++14的標準庫也必須通過ASIL認證。這部分一般由編譯器供應商提供。

5

定義目標硬件平臺Machine Manifest

對應于流程里步驟3。用于定義目標環境。

基于案例解析AP AUTOSAR開發流程的圖6

從外看,我們可以把機器看做一個抽象的硬件+軟件平臺和通訊接口。硬件包括一個N核CPU。軟件平臺可以定義為具體OS。通訊接口如上圖,可以有一個以太網接口連接在一個以太網上。


1,定義機器狀態

比如,我們有如下7種狀態定義:

{

"name": "Driving"

},

{

"name": "Leaving"

},

{

"name": "Off"

},

{

"name": "Parking"

},

{

"name": "Restart"

},

{

"name": "Shutdown"

},

{

"name": "Startup"

}


目的是:每一種機器狀態里,可能會激活不同的應用。


2. 網絡配置

在我們這個RadarFusion案例里,我們假定最簡單情況:一個Provider和一個Consumer。

基于案例解析AP AUTOSAR開發流程的圖7

在這里案例里,他們分別部署在不同的ECU上,通過以太網通訊。


首先配置服務發現(Service Discovery,SD)用來交換SD消息。一般是一個multicast地址和UDP端口。

基于案例解析AP AUTOSAR開發流程的圖8

然后是兩個應用本身的網絡配置:

基于案例解析AP AUTOSAR開發流程的圖9

6

應用配置Application Manifest

應用除了代碼本身外,還包含應用配置。

這個案例比較簡單,每個應用只有一個進程。每個進程對應自己的可執行文件。

基于案例解析AP AUTOSAR開發流程的圖10

定義應用到進程的映射

基于案例解析AP AUTOSAR開發流程的圖11

如上圖所示,一個Machine可以有N個進程。每個進程都會對應可執行文件。

7

ServiceInstance定義

這里主要定義SOA通訊怎么映射和部署到transport傳輸層協議,比如SOME/IP。


1 服務接口部署

這里定義對于一個接口的SOME/IP Service ID, 每個Method ID,Event ID。應該非常清晰。

基于案例解析AP AUTOSAR開發流程的圖12

2 服務實例Service Instance 部署

定義一個服務實例是提供方還是消費方。

基于案例解析AP AUTOSAR開發流程的圖13

3 從服務實例映射到目標硬件Mapping from ServiceInstance to Machine

Service Instance可以理解為還在應用的層面,這步將會把一個服務實例映射到目標硬件層面。

下表可以看出,ServiceInstance列以前屬于應用層面,而Connector和TCP/UDP端口都屬于目標硬件層面。

基于案例解析AP AUTOSAR開發流程的圖14

8

建模總結

下圖能比較直觀的展示應用配置,目標硬件配置,服務實例配置的對應關系。

基于案例解析AP AUTOSAR開發流程的圖15


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP