圖解AUTOSAR_CP_WatchdogDriver

AUTOSAR WatchdogDriver模塊詳解

AUTOSAR MCAL層看門狗驅動模塊詳細解析

目錄

  • 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模塊進行交互。該模塊主要包含以下組件關系:

  1. 上層關系

    • 應用軟件組件通過WdgM調用看門狗功能
    • WdgM通過WdgIf調用WatchdogDriver的API
  2. 同層關系

    • Det模塊交互,用于報告開發錯誤
    • Dem模塊交互,用于報告診斷事件
  3. 下層關系

    • 內部看門狗驅動直接訪問微控制器內部的看門狗硬件
    • 外部看門狗驅動通過SPIDIO接口訪問外部看門狗芯片

3. 主要功能

WatchdogDriver模塊提供以下主要功能:

  1. 初始化看門狗硬件

    • 配置默認模式和超時設置
    • 設置初始觸發條件
  2. 模式管理

    • 支持多種運行模式:快速模式、慢速模式、關閉模式
    • 根據模式切換看門狗的超時周期和刷新頻率
  3. 觸發條件設置

    • 設置看門狗的超時周期
    • 處理看門狗的觸發機制
  4. 錯誤處理

    • 檢測和報告開發錯誤
    • 處理看門狗相關的診斷事件

4. API接口

WatchdogDriver模塊提供以下API接口:

  1. Wdg_Init(const Wdg_ConfigType* ConfigPtr)

    • 功能:初始化看門狗模塊和硬件
    • 參數:配置數據指針
    • 返回:無
  2. Wdg_SetMode(WdgIf_ModeType Mode)

    • 功能:切換看門狗模式
    • 參數:目標模式
    • 返回:E_OK (成功) 或 E_NOT_OK (失敗)
  3. Wdg_SetTriggerCondition(uint16 Timeout)

    • 功能:設置看門狗觸發條件
    • 參數:超時值
    • 返回:無
  4. Wdg_GetVersionInfo(Std_VersionInfoType* VersionInfo)

    • 功能:獲取模塊版本信息
    • 參數:版本信息結構體指針
    • 返回:無

5. 配置參數

WatchdogDriver模塊的主要配置參數包括:

  1. 通用配置

    • WdgDevErrorDetect:開啟/關閉開發錯誤檢測
    • WdgDisableAllowed:是否允許運行時禁用看門狗
    • WdgIndex:模塊實例ID
    • WdgInitialTimeout:初始化時的超時設置
    • WdgMaxTimeout:最大允許的超時設置
    • WdgVersionInfoApi:是否啟用版本信息API
    • WdgRunArea:執行區域(RAM/ROM)
  2. 模式配置

    • WdgDefaultMode:默認模式設置
    • WdgSettingsFast:快速模式配置
    • WdgSettingsSlow:慢速模式配置
    • WdgSettingsOff:關閉模式配置
  3. 外部看門狗配置

    • WdgExternalConfiguration:外部看門狗硬件配置
    • WdgExternalContainerRef:外部接口引用(SPI/DIO)

5.1. 配置模型

WatchdogDriver的配置模型如下圖所示:
在這里插入圖片描述

配置模型主要包含以下幾個部分:

  1. Wdg

    • 頂層配置容器,包含所有看門狗驅動的配置參數
    • 包含WdgGeneralWdgPublishedInformationWdgSettingsConfigWdgDemEventParameterRefs子容器
  2. WdgGeneral

    • 包含通用配置參數,如錯誤檢測開關、禁用允許標志等
    • 定義了看門狗的基本行為和特性
  3. WdgSettingsConfig

    • 包含不同模式的配置參數
    • 定義了快速模式、慢速模式和關閉模式的具體設置
    • 可能包含外部看門狗的配置引用
  4. WdgDemEventParameterRefs

    • 包含診斷事件的引用配置
    • 定義了看門狗相關的診斷事件處理方式

6. 錯誤代碼

WatchdogDriver模塊定義了以下錯誤代碼:

  1. 開發錯誤

    • 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):初始化失敗
  2. 診斷事件

    • WDG_E_DISABLE_REJECTED:禁用看門狗被拒絕
    • WDG_E_MODE_FAILED:模式切換失敗

7. 狀態管理

WatchdogDriver模塊維護以下狀態:

  1. 模塊狀態

    • 未初始化:模塊尚未初始化
    • 已初始化:模塊已初始化并可操作
  2. 運行狀態

    • WDG_IDLE:空閑狀態,可接受新請求
    • WDG_BUSY:忙狀態,正在處理模式切換
  3. 模式狀態

    • 快速模式:較短的超時周期,較高的刷新頻率
    • 慢速模式:較長的超時周期,較低的刷新頻率
    • 關閉模式:看門狗功能禁用(僅當允許時)

7.1. 狀態機

WatchdogDriver的狀態轉換如下圖所示:
在這里插入圖片描述

狀態機主要包含以下幾個部分:

  1. 初始化狀態轉換

    • 系統上電后,模塊處于未初始化狀態
    • 調用Wdg_Init()成功后,模塊進入已初始化狀態
    • 如果初始化失敗,模塊保持在未初始化狀態
  2. 運行狀態轉換

    • 在已初始化狀態下,模塊默認處于WDG_IDLE狀態
    • 調用Wdg_SetMode()時,模塊進入WDG_BUSY狀態
    • 模式切換完成后,模塊返回WDG_IDLE狀態
  3. 模式狀態轉換

    • 模塊可以在快速模式、慢速模式和關閉模式之間切換
    • 只有當WdgDisableAllowedTRUE時,才能切換到關閉模式
    • 模式切換通過Wdg_SetMode()函數實現

8. 處理流程

8.1. 活動流程

WatchdogDriver的主要處理流程如下圖所示:
在這里插入圖片描述

活動流程主要包含以下幾個部分:

  1. Wdg_Init流程

    • 接收配置指針并進行參數檢查
    • 如果開發錯誤檢測開啟且配置指針為NULL,報告錯誤并退出
    • 設置默認模式,如果默認模式為OFF且禁用不允許,報告錯誤并返回E_NOT_OK
    • 初始化看門狗硬件,設置模塊狀態為已初始化,返回E_OK
  2. Wdg_SetMode流程

    • 接收模式參數并進行參數檢查
    • 如果開發錯誤檢測開啟,檢查模塊狀態和模式參數的有效性
    • 如果模式為OFF且禁用不允許,報告錯誤并返回E_NOT_OK
    • 設置模塊狀態為WDG_BUSY,根據模式參數設置看門狗硬件
    • 設置模塊狀態為WDG_IDLE,返回E_OK
  3. Wdg_SetTriggerCondition流程

    • 接收超時參數并進行參數檢查
    • 如果開發錯誤檢測開啟,檢查模塊狀態和超時參數的有效性
    • 計算觸發條件,如果觸發計數器為0,不執行任何操作
    • 否則,更新激活碼并觸發看門狗硬件

9. 操作序列

9.1. 典型操作序列

WatchdogDriver的典型操作序列如下圖所示:
在這里插入圖片描述

操作序列主要包含以下幾個部分:

  1. 看門狗初始化序列

    • WdgM調用WdgIf_Init()WdgIf調用Wdg_Init()
    • Wdg檢查配置指針,如果為NULL且開發錯誤檢測開啟,報告錯誤
    • Wdg設置默認模式,如果默認模式為OFF且禁用不允許,報告錯誤并返回E_NOT_OK
    • 否則,初始化看門狗硬件并返回E_OK
  2. 看門狗模式切換序列

    • WdgM調用WdgIf_SetMode()WdgIf調用Wdg_SetMode()
    • Wdg檢查模式參數,如果無效且開發錯誤檢測開啟,報告錯誤
    • 如果模式為OFF且禁用不允許,報告錯誤并返回E_NOT_OK
    • 否則,設置看門狗硬件模式并返回E_OK
  3. 觸發條件設置序列

    • WdgM調用WdgIf_SetTriggerCondition()WdgIf調用Wdg_SetTriggerCondition()
    • Wdg檢查超時參數,如果超出范圍且開發錯誤檢測開啟,報告錯誤
    • Wdg設置看門狗硬件的觸發條件

10. 硬件抽象

WatchdogDriver模塊支持兩種類型的看門狗硬件:

  1. 內部看門狗

    • 直接訪問微控制器內部的看門狗硬件
    • 通常通過寄存器操作實現
  2. 外部看門狗

    • 通過SPIDIO接口訪問外部看門狗芯片
    • 需要額外的驅動支持

11. 安全考慮

WatchdogDriver模塊包含以下安全機制:

  1. 禁用保護

    • 通過WdgDisableAllowed參數控制是否允許禁用看門狗
    • 安全關鍵應用通常不允許禁用看門狗
  2. 錯誤檢測

    • 開發錯誤檢測和報告
    • 診斷事件管理和報告
  3. 狀態檢查

    • 在API調用前檢查模塊狀態
    • 防止在不適當的狀態下執行操作

12. 與其他模塊的關系

WatchdogDriver模塊與以下模塊有交互:

  1. WdgIf (看門狗接口):

    • 提供統一的接口給上層模塊
    • 支持多個看門狗實例的管理
  2. WdgM (看門狗管理器):

    • 使用WdgIf調用WatchdogDriver的功能
    • 實現更高級的看門狗監控策略
  3. Det (開發錯誤跟蹤):

    • 報告開發錯誤
    • 用于調試和開發階段
  4. Dem (診斷事件管理器):

    • 報告診斷事件
    • 用于運行時監控和診斷

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73783.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73783.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux操作系統應用

Linux操作系統應用 一、用戶與用戶組管理1.1 管理用戶1.1.1 與用戶賬號相關的文件1.1.2 用戶管理命令1.1.3 任務實施 1.2 管理用戶組1.2.1 用戶組1.2.2 用戶組管理命令 1.3 查看用戶和用戶組狀態1.3.1 用戶查看命令 id、who、whoami1.3.2 用戶身份切換命令 su、sudo 二、文件管…

【大語言模型_5】xinference部署embedding模型和rerank模型

一、安裝xinference pip install xinference 二、啟動xinference ./xinference-local --host0.0.0.0 --port5544 三、注冊本地模型 1、注冊embedding模型 curl -X POST "http://localhost:5544/v1/models" \ -H "Content-Type: application/json" \…

Vector 的模擬實現:從基礎到高級

文章目錄 1. 引言2. vector的核心設計3. vector的常用接口介紹3.1 構造函數和析構函數3.1.1 默認構造函數3.1.2 帶初始容量的構造函數3.1.3 析構函數 3.2 拷貝構造函數和拷貝賦值運算符3.2.1 拷貝構造函數3.2.2 拷貝賦值運算符 3.5 數組長度調整和動態擴容3.5.1 調整大小&#…

深入理解 Linux 的 top 命令:實時監控系統性能

在 Linux 系統管理和性能優化中,top 命令是一個不可或缺的工具。它可以實時顯示系統的進程信息和資源使用情況,幫助管理員快速定位性能瓶頸。本文將詳細介紹 top 命令的輸出內容及其使用方法,幫助你更好地掌握系統性能監控。 一、top 命令簡介 top 是一個動態顯示系統狀態的…

拖拽實現+搖桿實現

拖拽實現 拖拽事件實現: 半透明漸變貼圖在ios設備下,使用壓縮會造成圖片質量損失,所以可以將半透明漸變UI切片單獨制作真彩色圖集 拖拽事件組 IBeginDragHandler:檢測到射線后,當拖拽動作開始時執行一次回調函數 IDragHandler:拖拽開始后&a…

xLua_001 Lua 文件加載

xLua下載 1、HelloWrold 代碼 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; // 引入XLua命名空間 public class Helloworld01 : MonoBehaviour {//聲明LuaEnv對象 private LuaEnv luaenv;void Start(){//實例化LuaEnv對象…

每天看一篇漏洞報告

前言: 內容來源于烏云漏洞 今日思考xss漏洞, 今天看到一篇文章,里面詳細說了xss的繞過技巧,雖然時間久了,沒有去嘗試,待會有時間去測試一下 以下是整理后的文章,原文在下面 文章鏈接&#…

【sql靶場】第18-22關-htpp頭部注入保姆級教程

目錄 【sql靶場】第18-22關-htpp頭部注入保姆級教程 1.回顧知識 1.http頭部 2.報錯注入 2.第十八關 1.嘗試 2.爆出數據庫名 3.爆出表名 4.爆出字段 5.爆出賬號密碼 3.第十九關 4.第二十關 5.第二十一關 6.第二十二關 【sql靶場】第18-22關-htpp頭部注入保姆級教程…

Python----計算機視覺處理(Opencv:形態學變換)

一、形態學變化 形態學變換(Morphological Transformations)是一種基于形狀的圖像處理技術,主要處理的對象為二值化圖像。 形態學變換有兩個輸入和一個輸出:輸入為原始圖像和核(即結構化元素),輸…

對于memset(b, 1, sizeof b)賦值為16843009情況

memset(b, 1, sizeof b); 的行為看起來可能不符合預期,這是因為 memset 的工作方式和數據類型之間的差異導致的。下面詳細解釋這個問題。 1. memset 的作用 memset 是 C/C 中的一個標準庫函數,用于將一段內存區域的值設置為指定的字節值。它的函數原型如…

【最新版】智慧小區物業管理小程序源碼+uniapp全開源

一.系統介紹 智慧小區物業管理小程序,包含小區物業繳費、房產管理、在線報修、業主活動報名、在線商城等功能。為物業量身打造的智慧小區運營管理系統,貼合物業工作場景,輕松提高物業費用收繳率,更有功能模塊個性化組合,助力物業節約成本高效運營。 二.搭建環境 系統環…

C++模板進階

目錄 非類型模板參數 類模板的特化 分類 函數模板的特化 模板分離編譯 問題 解決方法 1)不對模板定義進行分離或對模板進行特例化; 2)將聲明和定義放在同一個文件 總結 關于C模板的使用在《C類和對象》中有介紹,本篇博客…

Ubuntu togo系統讀寫性能與原生系統測試

我前面把一個Ubuntu環境拷貝到了一個10Gbps的硬盤盒制作了一個Ubuntu togo的系統,帖子在這里,這篇文章主要用于測試使用Ubuntu togo的系統和原生系統的性能差異。 以下是測試Ubuntu togo系統與原系統性能差異的具體方案,結合移動硬盤特性及參…

【css酷炫效果】實現魚群游動動態效果

【css酷炫效果】實現小魚游動動態效果 緣創作背景css代碼創建div容器引入jquery引入魚群js完整代碼效果圖成品資源下載鏈接:點擊下載 緣 在開發系統功能的時候,無意間看到了小魚游動特效,感覺很有意思,就在網上找了相關教程,分享給大家。 創作背景 剛看到csdn出活動了…

停車場停車位數據集,標注停車位上是否有車,平均正確識別率99.5%,支持yolov5-11, coco json,darknet,xml格式標注

停車場停車位數據集,標注停車位上是否有車,平均正確識別率98.0%,支持yolov5-11, coco json,darknet,xml格式標注 數據集-識別停車場所有車輛的數據集 數據集分割 一共184張圖片 訓練組 89&am…

結合基于標簽置信度的特征選擇方法用于部分多標簽學習-簡介版

假設 部分多標簽學習(PML)假設:假設樣本的標簽集合中存在偽正標簽,即某些標簽可能是錯誤的。目標是從候選標簽集中識別出真實標簽。特征與標簽的關系假設:假設不同的標簽對應的特征子空間可能是不同的,而不…

Lora微LLAMA模型實戰

引言 本文介紹如何復現Alpaca-lora,即基于alpaca數據集用lora方法微調Llama模型。 環境準備 實驗環境用的是lanyun,新用戶點擊注冊可以送算力。 下載huggingface上的模型是一個令人頭疼的問題,但在lanyun上可以通過在終端運行source /etc…

Maven常見問題匯總

Maven刷新,本地倉庫無法更新 現象 This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced原因 因為上一次嘗試下載,發現對應的倉庫沒有這個maven配置…

什么是站群服務器?站群服務器應該怎么選?

站群服務器是專門用于托管和管理多個網站的服務器。通常用于SEO優化、內容分發、廣告推廣等場景,用戶可以通過一個服務器管理多個站點,提升效率并降低成本。選擇站群服務器時,需根據業務需求、性能要求、IP資源等因素進行綜合考慮。 什么是站…

分享一個項目中遇到的一個算法題

需求背景: 需求是用戶要創建一個任務計劃在未來執行,要求在創建任務計劃的時候判斷選擇的時間是否符合要求,否則不允許創建,創建的任務類型有兩種,一種是單次,任務只執行一次;另一種是周期&…