AUTOSAR WatchdogDriver模塊詳解
目錄
- 1. 模塊概述
- 2. 架構位置
- 2.1. 組件架構
- 3. 主要功能
- 4. API接口
- 5. 配置參數
- 5.1. 配置模型
- 6. 錯誤代碼
- 7. 狀態管理
- 7.1. 狀態機
- 8. 處理流程
- 8.1. 活動流程
- 9. 操作序列
- 9.1. 典型操作序列
- 10. 硬件抽象
- 11. 安全考慮
- 12. 與其他模塊的關系
1. 模塊概述
WatchdogDriver (Wdg) 是AUTOSAR標準中的一個MCAL層模塊,負責管理和控制微控制器的看門狗硬件。看門狗是一種安全機制,用于在軟件異常時重置系統,確保系統能夠從故障狀態恢復。
2. 架構位置
- 層級:MCAL (微控制器抽象層)
- 上層接口:通過WdgIf (看門狗接口) 與上層模塊通信
- 主要調用者:WdgM (看門狗管理器)
- 依賴模塊:Det (開發錯誤跟蹤),Dem (診斷事件管理器)
2.1. 組件架構
WatchdogDriver在AUTOSAR架構中的位置及其與其他模塊的關系如下圖所示:
從上圖可以看出,WatchdogDriver模塊位于MCAL層,通過WdgIf與上層的WdgM模塊進行交互。該模塊主要包含以下組件關系:
-
上層關系:
- 應用軟件組件通過WdgM調用看門狗功能
- WdgM通過WdgIf調用WatchdogDriver的API
-
同層關系:
- 與Det模塊交互,用于報告開發錯誤
- 與Dem模塊交互,用于報告診斷事件
-
下層關系:
- 內部看門狗驅動直接訪問微控制器內部的看門狗硬件
- 外部看門狗驅動通過SPI或DIO接口訪問外部看門狗芯片
3. 主要功能
WatchdogDriver模塊提供以下主要功能:
-
初始化看門狗硬件:
- 配置默認模式和超時設置
- 設置初始觸發條件
-
模式管理:
- 支持多種運行模式:快速模式、慢速模式、關閉模式
- 根據模式切換看門狗的超時周期和刷新頻率
-
觸發條件設置:
- 設置看門狗的超時周期
- 處理看門狗的觸發機制
-
錯誤處理:
- 檢測和報告開發錯誤
- 處理看門狗相關的診斷事件
4. API接口
WatchdogDriver模塊提供以下API接口:
-
Wdg_Init(const Wdg_ConfigType* ConfigPtr)
- 功能:初始化看門狗模塊和硬件
- 參數:配置數據指針
- 返回:無
-
Wdg_SetMode(WdgIf_ModeType Mode)
- 功能:切換看門狗模式
- 參數:目標模式
- 返回:
E_OK
(成功) 或E_NOT_OK
(失敗)
-
Wdg_SetTriggerCondition(uint16 Timeout)
- 功能:設置看門狗觸發條件
- 參數:超時值
- 返回:無
-
Wdg_GetVersionInfo(Std_VersionInfoType* VersionInfo)
- 功能:獲取模塊版本信息
- 參數:版本信息結構體指針
- 返回:無
5. 配置參數
WatchdogDriver模塊的主要配置參數包括:
-
通用配置:
WdgDevErrorDetect
:開啟/關閉開發錯誤檢測WdgDisableAllowed
:是否允許運行時禁用看門狗WdgIndex
:模塊實例IDWdgInitialTimeout
:初始化時的超時設置WdgMaxTimeout
:最大允許的超時設置WdgVersionInfoApi
:是否啟用版本信息APIWdgRunArea
:執行區域(RAM/ROM)
-
模式配置:
WdgDefaultMode
:默認模式設置WdgSettingsFast
:快速模式配置WdgSettingsSlow
:慢速模式配置WdgSettingsOff
:關閉模式配置
-
外部看門狗配置:
WdgExternalConfiguration
:外部看門狗硬件配置WdgExternalContainerRef
:外部接口引用(SPI/DIO)
5.1. 配置模型
WatchdogDriver的配置模型如下圖所示:
配置模型主要包含以下幾個部分:
-
Wdg:
- 頂層配置容器,包含所有看門狗驅動的配置參數
- 包含WdgGeneral、WdgPublishedInformation、WdgSettingsConfig和WdgDemEventParameterRefs子容器
-
WdgGeneral:
- 包含通用配置參數,如錯誤檢測開關、禁用允許標志等
- 定義了看門狗的基本行為和特性
-
WdgSettingsConfig:
- 包含不同模式的配置參數
- 定義了快速模式、慢速模式和關閉模式的具體設置
- 可能包含外部看門狗的配置引用
-
WdgDemEventParameterRefs:
- 包含診斷事件的引用配置
- 定義了看門狗相關的診斷事件處理方式
6. 錯誤代碼
WatchdogDriver模塊定義了以下錯誤代碼:
-
開發錯誤:
WDG_E_DRIVER_STATE
(0x10):驅動狀態錯誤WDG_E_PARAM_MODE
(0x11):模式參數錯誤WDG_E_PARAM_CONFIG
(0x12):配置參數錯誤WDG_E_PARAM_TIMEOUT
(0x13):超時參數錯誤WDG_E_PARAM_POINTER
(0x14):指針參數錯誤WDG_E_INIT_FAILED
(0x15):初始化失敗
-
診斷事件:
WDG_E_DISABLE_REJECTED
:禁用看門狗被拒絕WDG_E_MODE_FAILED
:模式切換失敗
7. 狀態管理
WatchdogDriver模塊維護以下狀態:
-
模塊狀態:
- 未初始化:模塊尚未初始化
- 已初始化:模塊已初始化并可操作
-
運行狀態:
WDG_IDLE
:空閑狀態,可接受新請求WDG_BUSY
:忙狀態,正在處理模式切換
-
模式狀態:
- 快速模式:較短的超時周期,較高的刷新頻率
- 慢速模式:較長的超時周期,較低的刷新頻率
- 關閉模式:看門狗功能禁用(僅當允許時)
7.1. 狀態機
WatchdogDriver的狀態轉換如下圖所示:
狀態機主要包含以下幾個部分:
-
初始化狀態轉換:
- 系統上電后,模塊處于未初始化狀態
- 調用
Wdg_Init()
成功后,模塊進入已初始化狀態 - 如果初始化失敗,模塊保持在未初始化狀態
-
運行狀態轉換:
- 在已初始化狀態下,模塊默認處于
WDG_IDLE
狀態 - 調用
Wdg_SetMode()
時,模塊進入WDG_BUSY
狀態 - 模式切換完成后,模塊返回
WDG_IDLE
狀態
- 在已初始化狀態下,模塊默認處于
-
模式狀態轉換:
- 模塊可以在快速模式、慢速模式和關閉模式之間切換
- 只有當
WdgDisableAllowed
為TRUE
時,才能切換到關閉模式 - 模式切換通過
Wdg_SetMode()
函數實現
8. 處理流程
8.1. 活動流程
WatchdogDriver的主要處理流程如下圖所示:
活動流程主要包含以下幾個部分:
-
Wdg_Init
流程:- 接收配置指針并進行參數檢查
- 如果開發錯誤檢測開啟且配置指針為
NULL
,報告錯誤并退出 - 設置默認模式,如果默認模式為
OFF
且禁用不允許,報告錯誤并返回E_NOT_OK
- 初始化看門狗硬件,設置模塊狀態為已初始化,返回
E_OK
-
Wdg_SetMode
流程:- 接收模式參數并進行參數檢查
- 如果開發錯誤檢測開啟,檢查模塊狀態和模式參數的有效性
- 如果模式為
OFF
且禁用不允許,報告錯誤并返回E_NOT_OK
- 設置模塊狀態為
WDG_BUSY
,根據模式參數設置看門狗硬件 - 設置模塊狀態為
WDG_IDLE
,返回E_OK
-
Wdg_SetTriggerCondition
流程:- 接收超時參數并進行參數檢查
- 如果開發錯誤檢測開啟,檢查模塊狀態和超時參數的有效性
- 計算觸發條件,如果觸發計數器為0,不執行任何操作
- 否則,更新激活碼并觸發看門狗硬件
9. 操作序列
9.1. 典型操作序列
WatchdogDriver的典型操作序列如下圖所示:
操作序列主要包含以下幾個部分:
-
看門狗初始化序列:
- WdgM調用
WdgIf_Init()
,WdgIf調用Wdg_Init()
- Wdg檢查配置指針,如果為
NULL
且開發錯誤檢測開啟,報告錯誤 - Wdg設置默認模式,如果默認模式為
OFF
且禁用不允許,報告錯誤并返回E_NOT_OK
- 否則,初始化看門狗硬件并返回
E_OK
- WdgM調用
-
看門狗模式切換序列:
- WdgM調用
WdgIf_SetMode()
,WdgIf調用Wdg_SetMode()
- Wdg檢查模式參數,如果無效且開發錯誤檢測開啟,報告錯誤
- 如果模式為
OFF
且禁用不允許,報告錯誤并返回E_NOT_OK
- 否則,設置看門狗硬件模式并返回
E_OK
- WdgM調用
-
觸發條件設置序列:
- WdgM調用
WdgIf_SetTriggerCondition()
,WdgIf調用Wdg_SetTriggerCondition()
- Wdg檢查超時參數,如果超出范圍且開發錯誤檢測開啟,報告錯誤
- Wdg設置看門狗硬件的觸發條件
- WdgM調用
10. 硬件抽象
WatchdogDriver模塊支持兩種類型的看門狗硬件:
-
內部看門狗:
- 直接訪問微控制器內部的看門狗硬件
- 通常通過寄存器操作實現
-
外部看門狗:
- 通過SPI或DIO接口訪問外部看門狗芯片
- 需要額外的驅動支持
11. 安全考慮
WatchdogDriver模塊包含以下安全機制:
-
禁用保護:
- 通過
WdgDisableAllowed
參數控制是否允許禁用看門狗 - 安全關鍵應用通常不允許禁用看門狗
- 通過
-
錯誤檢測:
- 開發錯誤檢測和報告
- 診斷事件管理和報告
-
狀態檢查:
- 在API調用前檢查模塊狀態
- 防止在不適當的狀態下執行操作
12. 與其他模塊的關系
WatchdogDriver模塊與以下模塊有交互:
-
WdgIf (看門狗接口):
- 提供統一的接口給上層模塊
- 支持多個看門狗實例的管理
-
WdgM (看門狗管理器):
- 使用WdgIf調用WatchdogDriver的功能
- 實現更高級的看門狗監控策略
-
Det (開發錯誤跟蹤):
- 報告開發錯誤
- 用于調試和開發階段
-
Dem (診斷事件管理器):
- 報告診斷事件
- 用于運行時監控和診斷