定義 RIMB 狀態圖及其執行

您可以使用狀態圖來說明 Rhapsody® 實作區塊 (RIMB) 的行為。

關於這項作業

在執行時期環境管理的模式中,到達 AUTOSAR 接收端埠的資料元素會轉換為觸發的作業。 當資料元素到達時,執行時期環境 (RTE) 會呼叫直接觸發狀態圖上轉移的對應作用中作業。 佇列作業由執行時期環境在 AUTOSAR 資料元素層次完成。 在此模式中,只有源自 AUTOSAR 資料元素到達的觸發作業可以觸發狀態圖上的轉移。

在 Rhapsody 管理的模式中,到達 AUTOSAR 接收端埠的資料元素會轉換為 Rhapsody 事件。當資料元素到達時,會呼叫作用中作業,它將對應的事件排入 Rhapsody 實作區塊的事件佇列。實作區塊的 doExecute 指令會執行並將事件逐個分派到狀態圖中,這是模仿一般 Rhapsody 機制。此模式涉及雙重佇列作業:由執行時期環境和 Rhapsody 進行。

RIMB 的狀態圖可能透過下列兩種模式之一執行:
  • RTE 管理 - 在此模式中,到達 AUTOSAR 接收端埠的資料元素會轉換至觸發的作業中。 每當資料元素到達時,RTE 都會呼叫直接觸發狀態圖上轉移的對應作用中作業。RIMB 不處於作用中也不是執行管理程式,並且不存在 RHP 事件佇列。佇列作業由 RTE 在 AUTOSAR 資料元素層次完成。在此模式中,只有源自 AR 資料元素到達的觸發作業可以觸發狀態圖上的轉移。不允許呼叫 RicGEN。
  • RHP 管理 - 在此模式中,到達 AUTOSAR 接收端埠的資料元素會轉換至 RHP 事件中。 每當資料元素到達時,都會呼叫作用中作業,它將對應的事件排入 RIMBO 的事件佇列。RIMB 需要是作用中的定期執行管理程式。它的 doExecute 定期執行並將事件逐個分派到狀態圖中,這是模仿常用的 RHP 機制。這涉及由 RTE 和 RHP 進行的雙重佇列作業。

在執行時期環境管理的模式中定義 Rhapsody 實作區塊 (RIMB) 的狀態圖

程序

  1. 將 RIMB 定義為「循序」。
  2. 對於 Rhapsody 實作區塊接收端埠 p 上的每個屬性 x(其達到會觸發轉移),定義名為 evP_x 的觸發作業。
  3. x 的存取模式設定為明確區塊處理明確非區塊處理(即隱含)。 存取模式將由一般 C 類型而非 Rhapsody 事件輸入。
  4. 建立將觸發的作業用作轉移觸發程式的狀態圖。
  5. 對於每個這種 p.x,您可以定義作用中作業,以用作 p.x 的分派器。 作用中作業的實作是要呼叫 receiveAndHandleData_p_x()。 此步驟對於執行時期環境管理的模式和 Rhapsody 管理的模式是相同的。 差異是 Rhapsody 針對 receiveAndHandleData_p_x() 產生的程式碼。
  6. 將狀態圖的所有分派器設定為受保護,以確保分派器互斥。

在 Rhapsody 管理的模式中定義 Rhapsody 實作區塊 (RIMB) 的狀態圖

程序

  1. 將 RIMB 定義為「作用中」,並且使用「定期」執行原則。
  2. 建立使用 Rhapsody 事件作為轉移觸發程式的狀態圖。
  3. 使用那些事件在 Rhapsody 實作區塊輸入埠的接收端介面上輸入屬性。如果 AUTOSAR 資料元素 x 到達接收端埠 p 是觸發事件 ev 的方式,請在透過 ev 輸入 p 的 Rhapsody 實作區塊接收端介面上輸入 x。與在前面一組步驟中說明的觸發作業對照,ev 是狀態圖上事件的名稱,不是結合 px 而建立的名稱。 將 ev 連結至 p.x 透過輸入 xev 實現。
  4. 對於每個這種 p.x,可以定義作用中作業,以用作 p.x 的佇列器。 作用中作業的實作是要呼叫 receiveAndHandleEvent_p_x()。 此步驟對於執行時期環境管理的模式和 Rhapsody 管理的模式是相同的。 差異是 Rhapsody 針對 receiveAndHandleEvent_p_x() 產生的程式碼。

意見回饋