AUTOSAR基礎篇之BswM
前言
首先,請問大家幾個小小問題,你清楚:
你知道BswM是做甚的嗎?
常說的APP Mode或者System狀態機與BswM關系又是如何的呢?
BswM模塊作為AUTOSAR的一個標準模塊,內部工作機制如何實現?
BswM與各SW-C以及各個BSW模塊又是如何交互的呢?
。。。
今天,我們來一起探索并回答這些問題。為了便于大家理解,以下是本文的主題大綱:
正文
總體設計框架
顧名思義,BswM全稱為基礎軟件管理模塊(即Bsw Management)。該模塊根據來自BSW或者SW-C特定的輸入,在滿足一定的規則條件下執行直接對各個BSW模塊的序列化操作。
從我剛剛總結的話語中不難得出BswM具有以下三個顯著的特點:
輸入來源于各SW-C或者各BSW模塊;
執行時需要滿足一定的規則條件;
實現對各BSW模塊的序列化操作;
按照AUTOSAR規范,我們可以將前兩者叫做模式仲裁過程,而最后的步驟稱為模式控制過程。
為了便于大家理解,首先分別針對上述模式仲裁過程與模式控制過程做總體性介紹。
模式仲裁過程
如下圖1所示,BswM模塊將會接收來自SW-C或者BSW模塊的Mode Request或者Mode Indication作為模式仲裁的兩種輸入方式。
通常Mode Request來源于SW-C模塊,當然也不排除BSW模塊,比如DCM請求ComM進行full communication的時候。Mode Indication則總是來源于BSW模塊,比如CANSM,EcuM,WdgM等。
在圖中也可以看到定義了模式請求的一些規則條件,如只有Normal_Mode為TRUE且IFC1_Bus_Off為False時,條件成立為TRUE,其他情況則為False。
由此可見,模式仲裁過程中的規則條件也就是真值表達式,而真值表達式的結果就是模式仲裁之后的結果,并作為下一環節模式控制過程的輸入。
上述過程中提到的Mode Indication 與 Mode Request都是以同等的地位在BswM中接收仲裁,且這兩種類型都可以在AUTOSAR標準配置項BswMModeRequestSource得以體現。
同時BswM模塊會通過調用其他BSW模塊如EcuM,COM,ComM,
模式控制過程
模式控制指的是基于上述上述模式仲裁的結果(TRUE or FALSE)執行相應的行為序列。
這些行為序列通常稱為“Action List”,且這些Action List都是有序的,也就意味著可根據項目需要自由配置各類Action的執行順序。
圖2 模式控制過程
如上圖2所示, 每一個Action List可以對應1個或者多個行為,AUTOSAR支持實現不同行為的自由組合與復用。每一種行為都可以分為以下三種方式來實現:
直接調用其他BSW模塊或者RTE模塊的標準接口來實現一系列的控制(即BSWM_ATOMIC);
ComM:設置對應通信接口的通信模式或允許在對應的通道上通信;
COM:實現IPDU報文的切換;(帶有初始值或者不帶有初始值);
COM: 使能或者關閉信號的deadline timeout monitoring;
NM:開啟或者關閉NM通信;
鏈接其他Action List中的內容(即BSWM_LIST);
執行某些仲裁規則(即BSWM_RULE);
除此以外,模式控制在可控制多個行為的同時,也可以通過ID號來保證各個Action的執行順序,所以說Action List是有序行為列表。某些仲裁規則可以作為從屬規則成為某個主規則的Action List的一員。
從整體上介紹了模式仲裁與模式控制的過程之后,相信大家對BswM模塊的控制流有了基本的了解。
接下來,將針對模式仲裁與模式控制過程中的具體細節信息展開講述,以便大家對BswM模塊的配置過程能夠更為清晰。
模式仲裁
模式請求來源(ModeRequestPorts)
模式請求來源指的是模式仲裁過程中需要判斷的數據源是什么,而這些數據源的獲取都是已定義好的標準接口。
你只需要進行相應配置就能完成針對其他Bsw模塊數據獲取,即BswM會提供并生成相應的函數接口來獲取對應Bsw模塊的數據輸入,舉例說明常見的數據請求來源如下表1所示:
針對上述的模式請求來源,BswM存在以下兩種方式去查詢這些請求來源的狀態:
事件觸發型
在該模式下,只有接收到Mode Indication或者Mode Request才會執行,適用于模式請求來源數據變化不大較為穩定的場合;
輪詢遍歷型
在該模式下,BswM會在自身Mainfunction函數中主動查詢Mode Indication以及Mode Reqest的狀態,適用于Indication或者Request變化較為頻繁的場合,一般情況下,都可以直接采用該模式去查詢請求數據來源的狀態;
上述兩種狀態可通過配置參數BswMRequestProcessing來進行選擇。
模式條件(ModeCondition)
模式條件指的是根據上述模式請求來源與設定的值相比較的單一表達式。比如若模式請求來源為X,N為設定的常量狀態,那么模式條件就是配置X ==N或者X !=N的表達式。
邏輯表達式(LogicExpressions)
邏輯表達式是相比模式條件而言,它可以實現多個模式條件的邏輯組合。舉例說明如下:
若Logic Expression僅需要兩個Mode Indication 1與Mode Indication 2的邏輯組合,當然理論上可支持n個單一表達式的邏輯組合,取決于實際情況的需要。
Mode Condition 1:X == 3;
Mode Condition 2:Y == 4;
Logic Expression A = (Mode Condition 1 (OR或AND或XOR或NAND)Mode Condition 2 );
模式規則(ModeRules)
模式規則指的是根據上述邏輯表達式的結果(TRUE or FALSE)來執行相應的Action List。也就意味著模式規則是為了實現邏輯表達式與相應Action List 的Mapping關系。
為了對模式仲裁過程中的三大構件(模式請求來源、模式條件、邏輯表達式)的相互reference關系及執行對應關系有個更好的理解,如下圖3所示則較為清晰地表示了彼此之間的關聯關系。
模式規則的初始化
模式規則可以設定其Map的邏輯表達式的結果初始值為TRUE或者FALSE,以便默認執行相應的Action List。
該初始值可通過參數BswMModeInitValue來進行配置,同時該參數屬于BswMRules的子參數。
如果沒有配置初始值,則模式仲裁的初始值處于undefined的狀態,在該狀態下意味著BswM在完成其初始化之后默認就會執行一次。絕大多數情況下,模式規則的初始值為FALSE。
模式控制
模式控制基本流程
模式控制基本流程就是根據模式仲裁的結果去執行相應的Action List。如下圖4所示,以SW-C組件模式請求為例:
S1:SW-C通過sender port經由RTE向BswM模塊發送模式請求信息;
S2:BswM模塊通過receive port接收請求并根據已配置好的模式仲裁規則得出相應的仲裁結果;
S3:執行相應的Bsw相關的Action List及RTE狀態切換;
S4:經過RTE傳輸的狀態將會傳遞給到需要使用該模式的SW-C以及返回請求該模式的SW-C;
模式行為
模式行為作為模式控制的基本執行單元,在執行Action List的過程中也存在著以下兩種方式:
循環執行(BswM_Condition),只要模式仲裁規則成立,一直連續不斷的執行;
事件觸發(BswM_Trigger),僅在模式規則變化的情況下,才會去執行相應的Action List;
這兩種執行方式可以通過模式控制過程中的參數BswMActionListExecution來進行配置。
如上圖5展示了BswMruleInitValue與模式行為的觸發方式在不同組合情況下執行Action List的結果,以便我們在配置過程中能夠注意到它們之間的關聯。
需要注意的是如果在執行Action List的過程中返回結果為E_NOT_OK,那么BswM模塊應當終止Action List的執行,如果需要實現,那么需要設置配置參數BswMAbortOnFail結果為TRUE。
在模式控制的配置選項中,一般會存在BswMAction與BswMActionList兩類選項,解釋如下:
BswMAction: 則用來配置各種各樣標準的行為;(如Com模塊報文切換等)
BswMActionList: 用來定義action的集合(即從BswMAction中取任意個自由組合);
常用函數接口
為了更好的使用該模塊函數以及遇到問題時方便調試該模塊,特將BswM模塊中較為重要的常用函數列舉如下表2所示。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















