哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文詳解AUTOSAR之Watchdog協(xié)議棧

jf_EksNQtU6 ? 來源: ADAS與ECU之吾見 ? 2023-08-22 09:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

正文

Watchdog基本功能

眾所周知,Watchdog,中文名為看門狗,就是為了實現(xiàn)在設備無人值守的情況下系統(tǒng)出現(xiàn)異常時能夠自動完成系統(tǒng)復位操作保證整個功能的持續(xù)使用。

看門狗功能對于關鍵安全系統(tǒng)是必須的,對于非關鍵安全系統(tǒng)也是很有必要的。

為什么這么講?原因是運行在硬件世界中的軟件會受到各種外界因素的影響,如硬件自身老化損壞,外部電磁干擾等,這些都有可能導致程序在運行過程中發(fā)生不可預知的行為,而這些不可預知的行為如果沒有看門狗,那么就完犢子了,要是你這個設備在人跡罕見的沙漠地帶,毫無疑問就增加了很多不必要的維護成本。

對于汽車上使用的諸多零部件,鑒于汽車環(huán)境的惡劣,各類ECU中的軟件均有可能遭受如外部電磁干擾,高溫等環(huán)境因素的影響,從而導致程序“跑飛”或者“死機”現(xiàn)象,此時如果有看門狗的存在,便可以主動觸發(fā)系統(tǒng)復位機制保證能夠再次正常使用,而不是只能眼睜睜的看著被送到4S店進行維修,影響產品口碑或是增加不必要的售后維護成本。

基于看門狗的實現(xiàn)邏輯,一般意義上我們可以將看門狗分為硬件看門狗與軟件看門狗。

顧名思義,硬件看門狗就是通過硬件自身的機制來實現(xiàn)看門狗功能,其本質也是通過定時器原理來實現(xiàn),只不過此時軟件的角色僅僅是使能定時器,定時器自身的變化與更新由硬件自身完成;軟件看門狗則是整個定時器的使能與更新完全由軟件來做,當然軟件也是通過定時器完成,只不過是間接方式。

硬件看門狗

如上所述,硬件看門狗依賴自身定時器來完成看門狗功能,俗稱“硬狗”。常見的硬件看門狗比如MCU內部自帶的看門狗,PMIC中內嵌的看門狗以及外部的獨立看門狗等。

至于選用何種的硬件看門狗,完全取決于自身系統(tǒng)設置需要,無法千篇一律。不過在使用硬件看門狗的時候需要特別考慮以下兩點:

該硬件看門狗的最大超時時間能否滿足系統(tǒng)設計需求,如果該超時時間過小,就會導致整個系統(tǒng)的不穩(wěn)定性,誤觸發(fā)看門狗;

該硬件看門狗是否可以進行關閉,對于關鍵安全系統(tǒng),一般都要求看門狗一旦打開將不允許被關閉;

該硬件看門狗系統(tǒng)上電后默認處于開狗還是關狗狀態(tài),如果是默認開狗,那么對于軟件而言,需考慮芯片上電后便要進行喂狗或者重置看門狗行為,同時設計一種在刷件或者調試軟件前的物理關狗動作。

該硬件看門狗是采用哪種方式進行喂狗,如通過GPIO,IIC或者SPI等通訊方式來喂狗,因為不同的通訊喂狗方式對芯片的硬件資源均有要求,盡可能采用相對簡單可靠的通訊方式來喂狗即可,小T認為GPIO優(yōu)于IIC,IIC優(yōu)于SPI。

如下圖1列舉了市面上存在的不同通訊方式喂狗的硬件看門狗:

GPIO喂狗硬件看門狗:

efa4ae2c-400b-11ee-ac96-dac502259ad0.png

IIC喂狗硬件看門狗:

efc994f8-400b-11ee-ac96-dac502259ad0.png

SPI喂狗硬件看門狗:

efe5d398-400b-11ee-ac96-dac502259ad0.png

圖1 各類喂狗方式硬件看門狗

軟件看門狗

軟件看門狗如上所述,屬于通過軟件定時器的方式來實現(xiàn)看門狗功能,俗稱“軟狗”。軟件看門狗的時間本質上也需要依賴硬件外設上的硬件定時器。

比如常見的我們會通過ostick的方式來進行記時功能,通過一個task運行軟狗監(jiān)控的定時器不斷遞減的主程序,其他task程序則是重置定時器,如果軟件監(jiān)控主程序某個task的定時器歸零,那么此時可以便可以判斷其他task并沒有被正常的執(zhí)行,此時便可以通過主動復位的方式來實現(xiàn)看門狗功能。

一般而言,運行軟狗的主任務的優(yōu)先級不應設置比被監(jiān)控的任務優(yōu)先級低,跟硬件看門狗搭配在一起使用,一般將軟狗的主任務與硬件看門狗喂狗的主任務放入同一個任務,這樣可以保證如下圖2所示的這種層級關系:

f0086a66-400b-11ee-ac96-dac502259ad0.png

圖2 軟狗與硬狗層級關系圖

以上圖作為一個實踐案例,僅供大家參考,具體實現(xiàn)方式可以依照項目需求來定。圖中Task A,B ,C 優(yōu)先級均比Task D要低,如果在Task D中喂硬狗,那么有可能會出現(xiàn)Task D運行正常,其他任務掛死而系統(tǒng)始終運行正常的狀態(tài),這樣就起不到硬件看門狗的保護功能。

因此為了避免喂硬狗的任務優(yōu)先級過高,導致其他低優(yōu)先級任務掛死而無法察覺,因此有必要添加軟狗來實現(xiàn)對低優(yōu)先級任務的保護。

通過Task A,B,C針對各自的計數(shù)器來進行重置,該重置的值設定需要結合各自task的最大運行時間及周期來決定,Task D則是在運行軟狗監(jiān)控主體來實現(xiàn)各個Task計數(shù)器的遞減動作,如果在重置的值時間內所有task計數(shù)器都不等于0,也就意味著其他低優(yōu)先級任務運行正常,此時便可以正常通過GPIO或IIC或SPI進行喂硬狗,否則有任意計數(shù)器為0,那么就需要停止喂狗或者主動觸發(fā)復位行為。

AUTOSAR Watchdog協(xié)議棧介紹

其實,針對上述軟狗與硬狗相結合使用的應用場景,AUTOSAR架構也已經將其標準化考慮在整個Watchdog協(xié)議棧中來實現(xiàn),因此在實際項目的開發(fā)過程中,大家可以通過以下的學習來進一步了解基于AUTOSAR的Watchdog協(xié)議棧工作原理與使用方法。

如下圖3展示了AUTOSAR架構針對Watdog協(xié)議棧的軟件層級拓撲關系圖:

f02cda2c-400b-11ee-ac96-dac502259ad0.png

圖3 AUTOSAR架構下的Watchdog協(xié)議棧

如上圖3所示,在AUTOSAR架構下,Watchdog協(xié)議棧可以分為如下三個軟件模塊:

Watchdog Driver:用于實現(xiàn)針對硬件看門狗的寄存器操作與控制,可以分為MCU內部看門狗(Internal Watchdog)與外部看門狗(External Watchdog),該外部看門狗可以通過GPIO或者IIC或者SPI來實現(xiàn)喂狗;

Watchdog Interface:Watchdog If作為整個Watchdog Stack的一部分,其主要功能則是為了實現(xiàn)上層Watchdog Manager與底層Watchdog Driver的連接,當然其連接的底層Watchdog Driver可以存在多個,這在多核設計中較為常見。

Watchdog Manager:Watchdog Manger模塊作為整個看門狗協(xié)議棧中的服務層,Watchdog Manager的主體功能就是為了負責整個程序執(zhí)行的正確性,并觸發(fā)相應的硬件看門狗的喂狗動作,扮演了整個監(jiān)控的核心角色。

通過上述AUTOSAR架構下的三個模塊便可以實現(xiàn)整個AUTOSAR Watchdog Stack的功能,接下來小T將針對這三個模塊進行詳細講解,保證我們都能夠對這三個模塊有個較為清晰的認識與理解,更好的運用到實戰(zhàn)中。

理解Watchdog Driver模塊

該模塊提供了初始化硬件看門狗,改變操作模式,設置觸發(fā)看門狗喂狗方式等功能。同時,可以按照該看門狗是否位于芯片內部,可以將位于芯片內部的看門狗稱為內部看門狗,位于芯片外部的看門狗稱為外部看門狗。

不論是內部看門狗還是外部看門狗,對于Watchdog Driver而言其使用的看門狗驅動的API應始終保持一致。只不過內部看門狗而言,其驅動屬于MCAL層,而對于外部看門狗則屬于ECU硬件抽象層,該外部看門狗驅動需調用MCAL中其他驅動來實現(xiàn)喂狗動作,如GPIO,IIC或者SPI等驅動。

內部看門狗

內部看門狗如前所述為芯片內部的硬件看門狗,該內部看門狗驅動一般由芯片廠商提供,不過值得注意的是在使用芯片內部看門狗前需確認該看門狗觸發(fā)的復位動作是否是冷復位,是否存在復位不完全等場景,否則可能就達不到安全監(jiān)控的目的。

內部看門狗由于其涉及到芯片內部本身,如果芯片本身硬件存在問題,可能會導致內部看門狗自身失效,從而出現(xiàn)自身難保的困境,所以從某種程度來講,對于關鍵安全系統(tǒng),僅使用內部看門狗顯得并不安全,此時還是需要依賴于外部看門狗來保證其功能安全。

外部看門狗

外部看門狗是位于被保護芯片外部的看門狗,該看門狗可以是獨立硬件看門狗,即該類看門狗僅提供看門狗功能,但是一般都是QM等級,還有一類便是集成在PMIC內部的看門狗,該類看門狗一般都可以達到ASIL B或者ASIL D功能安全等級要求。

外部看門狗對于關鍵安全系統(tǒng)而言,一般都是必需的,從某種意義上來講,內部看門狗其實可有可無,外部看門狗才至關重要。

看門狗控制模式

在AUTOSAR架構中,針對Watchdog Driver而言,定義了看門狗控制模式存在如下三種模式:

Off Mode:表示看門狗關閉狀態(tài),對于關鍵安全系統(tǒng),一般不能將其切換至Off狀態(tài),即一旦打開,將不能被關閉;

Slow Mode:表示看門狗的一個長時間喂狗窗口,該模式一般用于系統(tǒng)啟動初始化過程中;

Fast Mode:表示看門狗的正常喂狗窗口喂狗模式,該模式運用在系統(tǒng)正常運行的過程中。

看門狗喂狗時序

如下圖4所示為Watchdog初始化,觸發(fā)看門狗喂狗以及改變看門狗模式的的三類函數(shù)調用場景。

Watchdog初始化:通過EcuM模塊調用函數(shù)Wdg_Init來完成Watchdog的初始化配置;

觸發(fā)看門狗喂狗:通過WdgM模塊調用WdgIf模塊提供的函數(shù)WdgIf_SetTriggerCondition來觸發(fā)底層驅動進行喂狗動作;

改變看門狗模式:通過WdgM模塊調用WdgIf模塊提供的函數(shù)WdgIf_SetMode來實現(xiàn)看門狗模式的改變。

f048b328-400b-11ee-ac96-dac502259ad0.png

圖4 看門狗初始化,觸發(fā)看門狗以及設置看門狗模式時序圖

如下圖5為Wathdog 驅動與底層看門狗硬件交互的時序圖,從下圖可以看出WdgIf_SetTriggerCondition中會繼續(xù)調用Wdg驅動中函數(shù)Wdg_SetTriggerCondition來實現(xiàn)喂狗動作。

f07578fe-400b-11ee-ac96-dac502259ad0.png

圖5 看門狗驅動與底層硬件看門狗交互時序關系圖

常見函數(shù)API與配置參數(shù)

為了便于大家能夠快速的對這個模塊的重點函數(shù)調用,有個較為清楚的了解,小T通過表格的方式進行了如下總結:

f09d0ee6-400b-11ee-ac96-dac502259ad0.png

圖6 看門狗驅動模塊常用函數(shù)接口說明

f0b40f38-400b-11ee-ac96-dac502259ad0.png

圖7 看門狗驅動模塊常用配置參數(shù)說明

理解Watchdog If模塊

Watchdog If模塊功能描述

Watchdog If模塊全稱為Watchdog Interface接口,該接口作為底層Watchdog Driver的抽象,是為了實現(xiàn)底層硬件與軟件之間的解耦。

該模塊的基本功能僅僅作為底層驅動的抽象層來實現(xiàn)底層看門狗驅動與上層看門狗管理模塊的交互,底層看門狗驅動的特性,如窗口控制,時間周期等設置都不能通過Watchdog If模塊來完成。

如果超過一個看門狗驅動被上層Watchdog Manager進行管理,那么DeviceIndex將需要被檢查,如果出現(xiàn)錯誤,需要及時上報。

常見函數(shù)API與配置參數(shù)

為了便于大家能夠快速的對這個模塊的重點函數(shù)調用,有個較為清楚的了解,小T通過表格的方式進行了如下總結:

f0c998da-400b-11ee-ac96-dac502259ad0.png

圖8 Watchdog If模塊常用函數(shù)說明

f0e5f110-400b-11ee-ac96-dac502259ad0.png

圖8 Watchdog If模塊常用配置參數(shù)說明

理解Watchdog Manager模塊

Watchdog Manager模塊工作原理

Watchdog Manager可以理解為一種應用層軟狗機制,該軟件機制監(jiān)控的對象被稱為“監(jiān)控實體”。其監(jiān)控方式可以分為如下三種:

Alive Supervision: 用于監(jiān)控周期性任務是否周期性運行;

Deadline Supervision:用于監(jiān)控事件型任務的運行時間是否超時;

logical supervision: 用于監(jiān)控任務的執(zhí)行時序是否正確;

通過在每個監(jiān)控實體中打上對應的Checkpoint,每一個監(jiān)控實體可以有一個或者多個Checkpoint,在一個監(jiān)控實體內部的Checkpoint及其轉換關系稱為內圖,如果是來自不同監(jiān)控實體的Checkpoint及其轉換關系則為外圖。

上述這三種監(jiān)控機制用于監(jiān)控每一個實體,每一個被監(jiān)控的實體可能會有其中一個或者多個甚至三個機制全部使能,這個取決于具體的需求?;谏鲜鋈N監(jiān)控機制的監(jiān)控結果,每一個監(jiān)控實體便可以計算得出,被稱為Local Status。

當每一個監(jiān)控實體的狀態(tài)得到確定,那么整個MCU的監(jiān)控結果便可以最終確定,這個最終確定的狀態(tài)被稱為Global Status。

Watchdog Manager具體工作流程:

S1:Watchdog Manager模塊負責通過Watchdog If以及Watchdog Driver來實現(xiàn)設置Watchdog Driver喂狗的觸發(fā)條件,該觸發(fā)條件就是通過Watchdog Manager的函數(shù)接口來重置Counter值;

S2:若Counter不為0,那么Watchdog Driver就會進行一次喂狗,同時將Counter值減一;

S3:若Counter值沒有被Watchdog Manager進行及時重置,那么就會減少至0,那么Watchdog Driver就會停止喂狗,從而看門狗就會觸發(fā)系統(tǒng)復位,否則繼續(xù)執(zhí)行S2;

值得注意的是如果觸發(fā)條件不滿足,沒法進行正常喂狗,那么存在兩種方式進行系統(tǒng)喂狗:

等待看門狗超時復位:停止喂狗,等待看門狗超時復位;

主動立即觸發(fā)系統(tǒng)復位:當Watchdog Manager發(fā)生錯誤時可以主動觸發(fā)系統(tǒng)復位;

上述兩種復位方式都是可以共存的,具體執(zhí)行哪個復位方式都可以按需執(zhí)行。

在使用Watchdog Manager時,Watchdog Driver初始化不能由Watchdog Manager來完成,而應該由EcuM模塊來完成,而Watchdog Manager初始化應該在OS開啟之后執(zhí)行。

Alive Supervision

如上所述,針對周期性任務的監(jiān)控實體,在給定的時間范圍內對應監(jiān)控實體執(zhí)行的次數(shù)是確定的,通過這個監(jiān)控機制可以用于檢測某些周期性任務運行太過頻繁或者過少。

在使用AliveSupervision過程中,有以下幾點需要注意:

對于一個監(jiān)控實體,采用Alive監(jiān)控機制,就不要超過1個checkpoit,當前僅支持一個Checkpoint。

根據(jù)如下四個參數(shù)進行調整使用來決定Alive Supervision如何進行監(jiān)控,如何有效。

f0fa55a6-400b-11ee-ac96-dac502259ad0.png

Deadline Supervision

如上所述,針對非周期性任務的監(jiān)控實體,其監(jiān)控實體對應的兩個checkpoint之間的時間應該在一定范圍內,從而可以通過判斷兩個checkpoint之間的時間是否位于設定的最小值與最大值之間。

在使用Deadline Supervision過程中,有以下幾點需要注意:

該監(jiān)控機制只能監(jiān)控到延遲,無法檢測到超時,如End Checkpoint未執(zhí)行;

該監(jiān)控機制不支持嵌套,如start 1,start2, end2, end1;

如下圖為Deadline Supervision 邏輯圖,通過計算兩個Checkpoint的時間差值來得到是否滿足設定的要求。

f10f2b02-400b-11ee-ac96-dac502259ad0.png

Logic Supervision

如前所述,logic supervision則用于來實現(xiàn)程序流運行時序是否正確,這對于滿足功能安全的ECU而言至關重要,通過將實際運行過程中的checkpoint之間的切換關系是否滿足設定的checkpoint切換關系來進行判斷,如果不在設定的checkpoint關系之內,那么就會上報錯誤,如果均在checkpoint之內,那么則一切運行正常。

如下圖為Logic Supervision的拓撲結構,通過識別兩兩checkpoint之間的切換關系是否屬于靜態(tài)配置的切換關系Group內,來決定是否執(zhí)行的是正常的序列行為。

f1267924-400b-11ee-ac96-dac502259ad0.png

如下圖9所示,為整個Watchdog Manager模塊的運行機理:

f14059e8-400b-11ee-ac96-dac502259ad0.png

圖9 Watchdog manager模塊作用機理

基于上述圖9,我們可以得出如下幾個重要的結論:

采用Alive Supervision的監(jiān)控實體,其判斷結果在WdgM_Mainfunction中得出;

采用Deadline Supervision或者Logical Supervision的監(jiān)控實體,其判斷結果則在函數(shù)WdgM_CheckpointReached中得出;

每個監(jiān)控實體均存在一個Local Status,該Local Status的最終結果將決定最終ECU的Global Status,因此有必要搞清楚WdgM的Local Status如何發(fā)生變化,如下圖10為Local Status狀態(tài)機:

f159d9b8-400b-11ee-ac96-dac502259ad0.png

圖10 Watchdog manager中Local Status變化狀態(tài)機/center> 通過上述圖10 ,我們可以得出如下幾個基本結論:

如圖中執(zhí)行序列10,在執(zhí)行完WdgM_Init函數(shù)后,便會將每個監(jiān)控實體的Local Status將會變成WDGM_LOCAL_STATUS_OK;

如圖中執(zhí)行序列11, 若在執(zhí)行WdgM_Init中,存在沒有被WdgMInitialMode參考的監(jiān)控實體,那么這些監(jiān)控實體的值將會被默認設置為WDGM_LOCAL_STATUS_DEACTIVATED;同時被WdgMInitialMode參考的監(jiān)控實體的WdgMInitialMode并沒有設置成WDGM_LOCAL_STATUS_OK,那么也會被設置成WDGM_LOCAL_STATUS_DEACTIVATED。

如果所有監(jiān)控實體的監(jiān)控結果都OK且監(jiān)控實體的Local Status都是WDGM_LOCAL_STATUS_OK,那么就會執(zhí)行序列1;

如果某監(jiān)控實體狀態(tài)為WDGM_LOCAL_STATUS_OK,但是其對應的Alive Supervision或者Deadline Supervision或者Logical supervision的結果為incorrect,那么狀態(tài)機就會執(zhí)行序列2;

由于監(jiān)控實體的Alive Supervision的結果允許存在錯誤門限值,因此若某監(jiān)控實體所有的Deadline Supervision或者Logical supervision的結果均為correct,但是存在某次Alive Supervision的結果錯誤但并沒有超出設定的錯誤門限值時,那么就會執(zhí)行序列3進入到WDGM_LOCAL_STATUS_FAILED。

若當前監(jiān)控實體(SE)的狀態(tài)處于WDGM_LOCAL_STATUS_FAILED狀態(tài),除了Deadline Supervision或者Logical supervision的結果均為correct以外,但至少存在一次Alive Counter錯誤卻并未超過錯誤門限值,那么就會執(zhí)行序列4;

若SE Local Status == WDGM_LOCAL_STATUS_FAILED狀態(tài),該SE的Alive Supervision均正確,且當前失敗的次數(shù)大于1,同時對應的Deadline Supervision或者Logical supervision的結果均為correct,那么就會繼續(xù)保持在WDGM_LOCAL_STATUS_FAILED狀態(tài),不過會將錯誤次數(shù)減1,如序列4;

若SE Local Status == WDGM_LOCAL_STATUS_FAILED狀態(tài),該SE的Alive Supervision均正確,且當前失敗的次數(shù)等于1,同時對應的Deadline Supervision或者Logical supervision的結果均為correct,那么就會在 WdgM_MainFunction中將狀態(tài)切換至WDGM_LOCAL_STATUS_OK狀態(tài),同時將錯誤次數(shù)減小至0,如序列5;

若SE Local Status == WDGM_LOCAL_STATUS_FAILED狀態(tài),該SE的Alive Supervision為incorrect,且當前失敗的次數(shù)大于其閾值,或者至少存在一個對應的Deadline Supervision或者Logical supervision的結果為incorrect,那么就會在 WdgM_MainFunction中將狀態(tài)切換至WDGM_LOCAL_STATUS_EXPIRED狀態(tài),如序列6;

若SE Local Status == WDGM_LOCAL_STATUS_OK狀態(tài),同時執(zhí)行了WdgM_SetMode切換狀態(tài)至OFF狀態(tài),那么就會改變狀態(tài)機狀態(tài)為WDGM_LOCAL_STATUS_DEACTIVATED狀態(tài),如序列7;

若SE Local Status == WDGM_LOCAL_STATUS_FAILED狀態(tài),同時執(zhí)行了WdgM_SetMode切換狀態(tài)至抑制狀態(tài),那么就會改變狀態(tài)機狀態(tài)為WDGM_LOCAL_STATUS_DEACTIVATED狀態(tài),如序列8;

若SE Local Status == WDGM_LOCAL_STATUS_DEACTIVATED狀態(tài),WdgM_CheckpointReached以及WdgM_MainFunction函數(shù)將不會啟動任何監(jiān)控作用,如序列8;

若SE Local Status == WDGM_LOCAL_STATUS_DEACTIVATED狀態(tài),同時執(zhí)行了WdgM_SetMode切換狀態(tài)至激活狀態(tài),那么就會改變狀態(tài)機狀態(tài)為WDGM_LOCAL_STATUS_OK狀態(tài),如序列9;

在從其他狀態(tài)切換至WDGM_LOCAL_STATUS_EXPIRED狀態(tài)時,Watchdog Manager提供一定的時間保留機制能夠允許你做一些特別的操作,如設置看門狗模式或者寫入NVM數(shù)據(jù),復位原因等。

講完了上述監(jiān)控實體的Local Status 狀態(tài)機變換條件,接下來我們來進一步了解下監(jiān)控實體的Global Status狀態(tài)機,該狀態(tài)機如下圖11所示:

f16c4f94-400b-11ee-ac96-dac502259ad0.png

圖10 Watchdog manager中Global Status變化狀態(tài)機

如上圖10所示,對于整個受監(jiān)控的軟件,Watchdog Manager僅會存在唯一的一個Global Status。該狀態(tài)機的變化具體規(guī)則如下:

如果執(zhí)行了WdgM_Init函數(shù),那么Global Status == WDGM_GLOBAL_STATUS_OK,如序列13;

如果Global Status == WDGM_GLOBAL_STATUS_OK階段,執(zhí)行了函數(shù)WdgM_DeInit,那么就會導致狀態(tài)機切換:Global Status == WDGM_GLOBAL_STATUS_ DEACTIVATED,如序列14;

若Global Status == WDGM_GLOBAL_STATUS_OK,且所有SE的Local Status == WDGM_LOCAL_STATUS_OK或者WDGM_LOCAL_STATUS_DEACTIVATED,那么Global Status將保持不變,如序列1;

若Global Status == WDGM_GLOBAL_STATUS_OK,至少存在一個SE的Local Status == WDGM_LOCAL_STATUS_FAILED,且沒有SE的結果==WDGM_LOCAL_STATUS_EXPIRED,那么Global Status將會切換至WDGM_GLOBAL_STATUS_FAILED狀態(tài),如序列2;

若Global Status == WDGM_GLOBAL_STATUS_OK,至少存在一個SE的Local Status == WDGM_LOCAL_STATUS_EXPIRED且WdgMExpiredSupervisionCycleTol設置大于0,那么Global Status將會切換至WDGM_GLOBAL_STATUS_EXPIRED狀態(tài),如序列3;

若Global Status == WDGM_GLOBAL_STATUS_OK,至少存在一個SE的Local Status == WDGM_LOCAL_STATUS_EXPIRED且WdgMExpiredSupervisionCycleTol設置等于0,那么Global Status將會切換至WDGM_GLOBAL_STATUS_STOPPED狀態(tài),如序列4;

若Global Status == WDGM_GLOBAL_STATUS_FAILED,至少存在一個SE的Local Status == WDGM_LOCAL_STATUS_FAILED且不存在等于WDGM_LOCAL_STATUS_EXPIRED的SE時,Global Status狀態(tài)將保持不變,如序列5;

若Global Status == WDGM_GLOBAL_STATUS_FAILED,且所有SE的== WDGM_LOCAL_STATUS_OK或者WDGM_LOCAL_STATUS_DEACTIVATED,那么Global Status將切換成WDGM_GLOBAL_STATUS_OK,如序列6;

若Global Status == WDGM_GLOBAL_STATUS_FAILED,至少存在一個SE的Local Status == WDGM_LOCAL_STATUS_EXPIRED且WdgMExpiredSupervisionCycleTol設置大于0,那么Global Status將切換成WDGM_GLOBAL_STATUS_EXPIRED,如序列7;

若Global Status == WDGM_GLOBAL_STATUS_FAILED,至少存在一個SE的Local Status == WDGM_LOCAL_STATUS_EXPIRED且WdgMExpiredSupervisionCycleTol設置等于0,那么Global Status將切換成WDGM_GLOBAL_STATUS_STOPPED,如序列8;

若Global Status == WDGM_LOCAL_STATUS_EXPIRED,且超時Counter計數(shù)小于WdgMExpiredSupervisionCycleTol設定的值,那么其狀態(tài)將保持不變,如序列9;

若Global Status == WDGM_LOCAL_STATUS_EXPIRED,且至少存在一個SE的計數(shù)大于WdgMExpiredSupervisionCycleTol,其狀態(tài)將切換成 WDGM_GLOBAL_STATUS_STOPPED,在這種狀態(tài)下,看門狗驅動將停止喂狗,等待看門狗超時復位,如序列10;

若Global Status == WDGM_GLOBAL_STATUS_STOPPED,其狀態(tài)將會一直保持不變,如序列11;

若執(zhí)行調用函數(shù) WdgIf_SetMode失敗,那么也會導致Global Status切換成WDGM_GLOBAL_STATUS_STOPPED狀態(tài),如序列12。

常見函數(shù)API與配置參數(shù)

為了便于大家能夠快速的對這個模塊的重點函數(shù)調用,有個較為清楚的了解,小T通過表格的方式進行了如下總結:

f1840102-400b-11ee-ac96-dac502259ad0.png

Watchdog與功能安全關系

在ISO26262中,程序流監(jiān)控是其中最為重要的一項,通過程序流監(jiān)控可以發(fā)現(xiàn)軟件運行過程中可能違法設計意圖的錯誤,從而采取相應的措施,確保行車安全。

在AUTOSAR軟件架構中,程序流的監(jiān)控功能實現(xiàn)主要由Watchdog 協(xié)議棧來實現(xiàn),自上而下包括WdgM模塊,WdgIf模塊以及Wdg驅動模塊,對于應用層而言,這三個模塊通過RTE給到應用層提供接口服務,由此來實現(xiàn)底層監(jiān)控應用層軟件的目的。

Watchdog使用實踐心得

通過EcuM模塊來完成看門狗初始化之后,剛開始設置的看門狗Counter初始值盡可能能夠Cover住Watchdog Driver初始化至Watchdog Manager初始化的時間,否則容易造成狗超時。

在OS shutdown之前Watchdog Manager去初始化,在去初始化過程中需要設置成較大的Timeout值,以確保能夠覆蓋住Watchdog Manager去初始化至系統(tǒng)power down或者再次reset的過程。

如果ECU支持休眠模式,如果在ECU休眠情況下看門狗仍保持在活躍狀態(tài),那么就需要在EcuM模塊中來完成看門狗的喂狗操作。

在系統(tǒng)初始化以及休眠兩個階段應重點考慮看門狗是否會存在超時的可能,如果底層硬件都無法來得及喂狗,將會對系統(tǒng)造成重大影響。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 看門狗
    +關注

    關注

    10

    文章

    611

    瀏覽量

    73180
  • 定時器
    +關注

    關注

    23

    文章

    3372

    瀏覽量

    124454
  • AUTOSAR
    +關注

    關注

    11

    文章

    406

    瀏覽量

    23751
  • GPIO
    +關注

    關注

    16

    文章

    1333

    瀏覽量

    56430
  • Watchdog
    +關注

    關注

    0

    文章

    12

    瀏覽量

    9740

原文標題:一文輕松理解AUTOSAR之Watchdog協(xié)議棧

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    存儲協(xié)議的Error流轉過程分析

    的是如何使用NvM存儲服務,以及使用過程中出現(xiàn)Error后如何快速定位和分析問題。NvM服務的使用可以參考 >,本文就來自低向上的分析AUTOSAR架構下存儲協(xié)議
    的頭像 發(fā)表于 09-04 09:53 ?2885次閱讀
    存儲<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>的Error流轉過程分析

    詳解AUTOSAR MCAL模塊

    在CanHardwareObject對CAN信號進行配置,該處配置需和DaVinci cfg的CanHardwareObject保持致,否則協(xié)議處理會出現(xiàn)信號錯位的問題。此處先講解如何配置,然后再詳細講解如何和DaVinci
    的頭像 發(fā)表于 01-21 11:12 ?1.5w次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳解</b><b class='flag-5'>AUTOSAR</b> MCAL模塊

    LwIP協(xié)議源碼詳解

    LwIP協(xié)議源碼詳解
    發(fā)表于 08-20 23:17

    STM32WB產品詳解及FUS無線協(xié)議升級

    STM32WB產品詳解及FUS無線協(xié)議升級2.4GHz無線雙核STM32WB, 采用SoC單芯片設計,支持多協(xié)議射頻。
    發(fā)表于 09-06 06:35

    DSPwatchdog教程

    DSPwatchdog教程,很好的DSP自學資料,快來學習吧。
    發(fā)表于 04-15 17:34 ?10次下載

    AUTOSAR CAN網絡管理協(xié)議

    AUTOSAR_SWS_CANNetworkManagement AUTOSAR CAN網絡管理協(xié)議,4.4.0版本
    發(fā)表于 08-01 11:09 ?18次下載

    AUTOSAR通信協(xié)議的幾個問題(

    最近在研究AUTOSAR通信協(xié)議的時候產生了以下幾個問題。
    的頭像 發(fā)表于 01-31 09:23 ?3323次閱讀

    AUTOSAR ComM功能及配置參數(shù)詳解

    AUTOSAR ComM模塊的分享分為ComM模塊概念詳解和ComM模塊配置及代碼分析
    的頭像 發(fā)表于 06-01 10:00 ?1.3w次閱讀
    <b class='flag-5'>AUTOSAR</b> ComM功能及配置參數(shù)<b class='flag-5'>詳解</b>

    解析AUTOSAR CAN網絡管理

    AUTOSAR CAN 網絡管理是個獨立于硬件的協(xié)議,只能在 CAN 上使用。它的主要目的是協(xié)調網絡的正常運行和總線休眠模式之間的轉換。
    的頭像 發(fā)表于 09-09 10:32 ?9924次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>解析<b class='flag-5'>AUTOSAR</b> CAN網絡管理

    AUTOSAR中通信協(xié)議配置詳解

    通訊協(xié)議幾乎是CP AUTOSAR中最龐雜的塊。由于其涉及的模塊比較多(僅實現(xiàn)CAN信號的收發(fā)就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP這么多模塊的協(xié)
    的頭像 發(fā)表于 09-21 10:02 ?1w次閱讀
    <b class='flag-5'>AUTOSAR</b>中通信<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>配置<b class='flag-5'>詳解</b>

    AUTOSAR實戰(zhàn)教程-通信協(xié)議介紹

    不同的DBC屬性決定不同功能的報文, 般實際項目中涉及的報文為4類:應用報文,診斷報文,網絡管理報文,XCP報文。不同作用的報文其在協(xié)議中的信號流路徑是不同的。
    的頭像 發(fā)表于 10-07 14:15 ?5961次閱讀
    <b class='flag-5'>AUTOSAR</b>實戰(zhàn)教程-通信<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>介紹

    AUTOSAR軟件AVB協(xié)議介紹

    以太網音視頻橋(AVB)協(xié)議 汽車以太網音視頻橋(AVB)協(xié)議種用于實現(xiàn)車載音視頻傳輸?shù)?b class='flag-5'>協(xié)議
    的頭像 發(fā)表于 10-27 16:44 ?4273次閱讀
    <b class='flag-5'>AUTOSAR</b>軟件AVB<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>介紹

    LwIP協(xié)議源碼詳解—TCP/IP協(xié)議的實現(xiàn)

    電子發(fā)燒友網站提供《LwIP協(xié)議源碼詳解—TCP/IP協(xié)議的實現(xiàn).pdf》資料免費下載
    發(fā)表于 07-03 11:22 ?7次下載

    AUTOSAR通信協(xié)議解析 如何實現(xiàn)AUTOSAR通信

    通信協(xié)議個復雜的系統(tǒng),它涵蓋了多種通信方式和模塊,以實現(xiàn)車內ECU之間的高效、可靠的數(shù)據(jù)交換。以下是對AUTOSAR通信協(xié)議的解析及實
    的頭像 發(fā)表于 12-17 14:54 ?4742次閱讀

    AUTOSAR通信實現(xiàn)中的常見問題

    AUTOSAR(Automotive Open System Architecture)汽車開放系統(tǒng)架構旨在實現(xiàn)汽車電子的軟硬件分離,降低ECU軟件開發(fā)的復雜度,提高軟件可重用性。 、通信協(xié)議
    的頭像 發(fā)表于 12-17 15:03 ?2107次閱讀
    兴宁市| 垦利县| 白水县| 喀什市| 秦安县| 蓬溪县| 巨野县| 青冈县| 清原| 普兰县| 佛山市| 兴国县| 镇赉县| 河东区| 射洪县| 凌海市| 扶风县| 太湖县| 清水县| 吉安市| 永靖县| 峡江县| 甘孜| 山东省| 罗城| 福清市| 萨嘎县| 通州市| 甘德县| 江源县| 梅州市| 花莲市| 松江区| 澄迈县| 盐池县| 牙克石市| 慈利县| 怀柔区| 嫩江县| 平舆县| 中江县|