本發(fā)明涉及安全芯片處理機制技術(shù)領(lǐng)域,尤其涉及一種利用cic61508的喂狗機制實現(xiàn)多任務(wù)監(jiān)控的方法。
背景技術(shù):
在需要實現(xiàn)功能安全的汽車控制系統(tǒng)中,普遍采用專用的安全芯片來實現(xiàn)系統(tǒng)監(jiān)控,主控芯片mcu需要周期性的與專用安全芯片進行通訊握手,以告知安全芯片主控芯片mcu的運行狀態(tài)。但是隨著控制系統(tǒng)越來越復(fù)雜,一個mcu在操作系統(tǒng)的支持下往往會有多個關(guān)鍵任務(wù)。如何判斷mcu內(nèi)的所有關(guān)鍵任務(wù)都在正常工作,成為一個難點。
目前常用的方式有下面兩種形式:
(1)單獨使用一個任務(wù)來與安全芯片通訊:參見圖1,這種模式下,喂狗任務(wù)是孤立的運行,只要操作系統(tǒng)正常調(diào)度,喂狗任務(wù)就與安全芯片進行定時握手。第(1)種模式的缺點顯而易見,只要操作系統(tǒng)正常,喂狗任務(wù)就會不斷的與安全芯片通訊,即使此時有關(guān)鍵任務(wù)發(fā)生了異常,并不能通過安全芯片復(fù)位mcu。
(2)單獨使用一個任務(wù)來與安全芯片通訊,但是關(guān)鍵任務(wù)需要向喂狗任務(wù)報告關(guān)鍵任務(wù)的執(zhí)行:參見圖2,在這種模式下,關(guān)鍵任務(wù)每執(zhí)行一次,就向喂狗任務(wù)報告一次,喂狗任務(wù)需要統(tǒng)計每個關(guān)鍵任務(wù)的執(zhí)行頻率是否正常,如果正常,就繼續(xù)與安全芯片定時握手,如果不正常,取消握手或者是直接復(fù)位mcu。第(2)種模式喂狗任務(wù)定時統(tǒng)計每個關(guān)鍵任務(wù)的執(zhí)行頻率,在一定程度上避免了任務(wù)出錯并終止后,喂狗任務(wù)繼續(xù)與安全芯片握手的問題。但是關(guān)鍵任務(wù)只是簡單的報告自己有沒有被正常執(zhí)行(或者被正常調(diào)度),如果關(guān)鍵任務(wù)的狀態(tài)機本身設(shè)計上有缺陷,進入了未預(yù)期的狀態(tài),并不能終止喂狗任務(wù)的通訊握手?;诖?,現(xiàn)研究一種利用cic61508的喂狗機制實現(xiàn)多任務(wù)監(jiān)控的方法,很好的解決了這個問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供了一種利用cic61508的喂狗機制實現(xiàn)多任務(wù)監(jiān)控的方法。
本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:一種利用cic61508的喂狗機制實現(xiàn)多任務(wù)監(jiān)控的方法,多任務(wù)包括喂狗任務(wù)、關(guān)鍵任務(wù)ⅰ、關(guān)鍵任務(wù)ⅱ、關(guān)鍵任務(wù)ⅲ,所述喂狗任務(wù)通過通訊命令從安全芯片cic61508獲得請求碼,所述關(guān)鍵任務(wù)ⅰ通過一定的算法f1(si,so,x)與關(guān)鍵任務(wù)ⅰ的狀態(tài)信息對請求碼進行處理,處理結(jié)果為y1;所述關(guān)鍵任務(wù)ⅱ通過特定的算法f2(si,so,x)與關(guān)鍵任務(wù)ⅱ的狀態(tài)信息對y1進行處理,處理結(jié)果為y2;所述關(guān)鍵任務(wù)ⅲ通過特定的算法f3(si,so,x)與關(guān)鍵任務(wù)ⅲ的狀態(tài)信息對y2進行處理,處理結(jié)果為y3,所述處理結(jié)果y3為應(yīng)答碼,所述喂狗任務(wù)接收應(yīng)答碼并發(fā)送給安全芯片cic61508。
作為本發(fā)明的優(yōu)選方式之一,該方法包括以下步驟:
(1)喂狗任務(wù)通過通訊命令從安全芯片cic61508獲得請求碼,并將得到的請求碼寫入指定內(nèi)存中去;
(2)關(guān)鍵任務(wù)i發(fā)現(xiàn)請求碼x1有更新,結(jié)合本任務(wù)的狀態(tài)輸入si1、輸出so1,通過一定的算法f1(si,so,x),得到結(jié)果y1;
(3)關(guān)鍵任務(wù)ii發(fā)現(xiàn)結(jié)果x2即上一級任務(wù)的運算結(jié)果y1有更新,結(jié)合本任務(wù)的狀態(tài)即輸入si2、輸出so2,通過一定的算法f2(si,so,x),得到結(jié)果y2;
(4)關(guān)鍵任務(wù)iii發(fā)現(xiàn)結(jié)果x3即上一級任務(wù)的運算結(jié)果y2有更新,結(jié)合本任務(wù)的狀態(tài)即輸入si3、輸出so3,通過一定的算法f3(si,so,x),得到結(jié)果y3;
(5)喂狗任務(wù)等待一定時間后,將應(yīng)答碼y3發(fā)送到安全芯片,完成一次通訊握手。
作為本發(fā)明的優(yōu)選方式之一,所述一定的算法y=f(si,so,x)為根據(jù)任務(wù)的實際情況而定。
作為本發(fā)明的優(yōu)選方式之一,當(dāng)所述關(guān)鍵任務(wù)用于行車?yán)^電器的控制時,y=f(si,so,x):
si表示車輛狀態(tài),4表示充電,so表示電機主繼電器。
作為本發(fā)明的優(yōu)選方式之一,當(dāng)所述關(guān)鍵任務(wù)用于pid計算時,y=f(si,so,x):
si表示pid的采集值,so表示pid的設(shè)定值,err表示正常工作下誤差的最大范圍。
作為本發(fā)明的優(yōu)選方式之一,所述請求碼為1個字節(jié)。
作為本發(fā)明的優(yōu)選方式之一,所述應(yīng)答碼為4個字節(jié)。
本發(fā)明相比現(xiàn)有技術(shù)的優(yōu)點在于:因為應(yīng)答碼需要各個關(guān)鍵任務(wù),結(jié)合自己的輸入輸出狀態(tài),用一定的算法,通過接力的方式在給定時間內(nèi)計算出來。這其中任何一環(huán)出錯,都會造成應(yīng)答碼出錯,最終mcu被復(fù)位。采用該方案,可以方便的發(fā)現(xiàn)系統(tǒng)的以下問題:(1)任何一個關(guān)鍵任務(wù)在指定周期內(nèi)沒有被執(zhí)行(2)任何一個關(guān)鍵任務(wù)的輸入輸出條件(狀態(tài))不正確。
附圖說明
圖1是相比較于本發(fā)明的現(xiàn)有模式1處理流程圖;
圖2是相比較于本發(fā)明的現(xiàn)有模式2處理流程圖;
圖3是本發(fā)明的處理流程圖。
具體實施方式
下面對本發(fā)明的實施例作詳細(xì)說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
相對于其他看門狗,安全芯片cic61508的喂狗機制比較特別,mcu如果需要進行通訊握手,需要從cic61508獲取一個請求碼(一個字節(jié))。請求碼的值與安全芯片的狀態(tài)有關(guān),與mcu無關(guān)。mcu獲得這個請求碼后,根據(jù)表格找到對應(yīng)的應(yīng)答碼(四個字節(jié)),將應(yīng)答碼發(fā)送到安全芯片后,便完成了一次通訊握手。每次成功握手后,安全芯片下一次的請求碼會發(fā)生改變。
一般來說,請求碼對應(yīng)的應(yīng)答碼用表格的形式在mcu的flash中保存,并且通過配置工具同步到安全芯片cic61508的flash中。只要兩個表格一致,通訊握手便可正常進行。
本發(fā)明不在mcu的flash中保存這個表格,而是必須通過一系列的算法來動態(tài)的計算請求碼對應(yīng)的應(yīng)答碼。
完整的流程如圖3所示:
實施例一:當(dāng)所述關(guān)鍵任務(wù)用于行車?yán)^電器的控制時,y=f(si,so,x):
si表示車輛狀態(tài),4表示充電,so表示電機主繼電器;
一種利用cic61508的喂狗機制實現(xiàn)多任務(wù)監(jiān)控的方法,多任務(wù)包括喂狗任務(wù)、關(guān)鍵任務(wù)ⅰ、關(guān)鍵任務(wù)ⅱ、關(guān)鍵任務(wù)ⅲ,所述喂狗任務(wù)通過通訊命令從安全芯片cic61508獲得請求碼,所述關(guān)鍵任務(wù)ⅰ通過一定的算法f1(si,so,x)與關(guān)鍵任務(wù)ⅰ的狀態(tài)信息對請求碼進行處理,處理結(jié)果為y1;所述關(guān)鍵任務(wù)ⅱ通過特定的算法f2(si,so,x)與關(guān)鍵任務(wù)ⅱ的狀態(tài)信息對y1進行處理,處理結(jié)果為y2;所述關(guān)鍵任務(wù)ⅲ通過特定的算法f3(si,so,x)與關(guān)鍵任務(wù)ⅲ的狀態(tài)信息對y2進行處理,處理結(jié)果為y3,所述處理結(jié)果y3為應(yīng)答碼,所述喂狗任務(wù)接收應(yīng)答碼并發(fā)送給安全芯片cic61508,本發(fā)明的mcu不直接保存請求碼對應(yīng)的應(yīng)答碼。應(yīng)答碼需要各個關(guān)鍵任務(wù),結(jié)合自己的輸入輸出狀態(tài),用一定的算法,通過接力的方式在給定時間內(nèi)計算出來;
該方法包括以下步驟:
(1)喂狗任務(wù)通過通訊命令從安全芯片cic61508獲得請求碼,并將得到的請求碼寫入指定內(nèi)存中去;
(2)關(guān)鍵任務(wù)i發(fā)現(xiàn)請求碼x1有更新,結(jié)合本任務(wù)的狀態(tài)輸入si1、輸出so1,通過一定的算法f1(si,so,x),得到結(jié)果y1;
(3)關(guān)鍵任務(wù)ii發(fā)現(xiàn)結(jié)果x2即上一級任務(wù)的運算結(jié)果y1有更新,結(jié)合本任務(wù)的狀態(tài)即輸入si2、輸出so2,通過一定的算法f2(si,so,x),得到結(jié)果y2;
(4)關(guān)鍵任務(wù)iii發(fā)現(xiàn)結(jié)果x3即上一級任務(wù)的運算結(jié)果y2有更新,結(jié)合本任務(wù)的狀態(tài)即輸入si3、輸出so3,通過一定的算法f3(si,so,x),得到結(jié)果y3;
(5)喂狗任務(wù)等待一定時間后,將應(yīng)答碼y3發(fā)送到安全芯片,完成一次通訊握手。
因為應(yīng)答碼需要各個關(guān)鍵任務(wù),結(jié)合自己的輸入輸出狀態(tài),用一定的算法,通過接力的方式在給定時間內(nèi)計算出來。這其中任何一環(huán)出錯,都會造成應(yīng)答碼出錯,最終mcu被復(fù)位。采用該方案,可以方便的發(fā)現(xiàn)系統(tǒng)的以下問題:任何一個關(guān)鍵任務(wù)在指定周期內(nèi)沒有被執(zhí)行。任何一個關(guān)鍵任務(wù)的輸入輸出條件(狀態(tài))不正確。
實施例二:當(dāng)所述關(guān)鍵任務(wù)用于pid計算時,y=f(si,so,x):
一種利用cic61508的喂狗機制實現(xiàn)多任務(wù)監(jiān)控的方法,多任務(wù)包括喂狗任務(wù)、關(guān)鍵任務(wù)ⅰ、關(guān)鍵任務(wù)ⅱ、關(guān)鍵任務(wù)ⅲ,所述喂狗任務(wù)通過通訊命令從安全芯片cic61508獲得請求碼,所述關(guān)鍵任務(wù)ⅰ通過一定的算法f1(si,so,x)與關(guān)鍵任務(wù)ⅰ的狀態(tài)信息對請求碼進行處理,處理結(jié)果為y1;所述關(guān)鍵任務(wù)ⅱ通過特定的算法f2(si,so,x)與關(guān)鍵任務(wù)ⅱ的狀態(tài)信息對y1進行處理,處理結(jié)果為y2;所述關(guān)鍵任務(wù)ⅲ通過特定的算法f3(si,so,x)與關(guān)鍵任務(wù)ⅲ的狀態(tài)信息對y2進行處理,處理結(jié)果為y3,所述處理結(jié)果y3為應(yīng)答碼,所述喂狗任務(wù)接收應(yīng)答碼并發(fā)送給安全芯片cic61508,本發(fā)明的mcu不直接保存請求碼對應(yīng)的應(yīng)答碼。應(yīng)答碼需要各個關(guān)鍵任務(wù),結(jié)合自己的輸入輸出狀態(tài),用一定的算法,通過接力的方式在給定時間內(nèi)計算出來;
該方法包括以下步驟:
(1)喂狗任務(wù)通過通訊命令從安全芯片cic61508獲得請求碼,并將得到的請求碼寫入指定內(nèi)存中去;
(2)關(guān)鍵任務(wù)i發(fā)現(xiàn)請求碼x1有更新,結(jié)合本任務(wù)的狀態(tài)輸入si1、輸出so1,通過一定的算法f1(si,so,x),得到結(jié)果y1;
(3)關(guān)鍵任務(wù)ii發(fā)現(xiàn)結(jié)果x2即上一級任務(wù)的運算結(jié)果y1有更新,結(jié)合本任務(wù)的狀態(tài)即輸入si2、輸出so2,通過一定的算法f2(si,so,x),得到結(jié)果y2;
(4)關(guān)鍵任務(wù)iii發(fā)現(xiàn)結(jié)果x3即上一級任務(wù)的運算結(jié)果y2有更新,結(jié)合本任務(wù)的狀態(tài)即輸入si3、輸出so3,通過一定的算法f3(si,so,x),得到結(jié)果y3;
(5)喂狗任務(wù)等待一定時間后,將應(yīng)答碼y3發(fā)送到安全芯片,完成一次通訊握手。
因為應(yīng)答碼需要各個關(guān)鍵任務(wù),結(jié)合自己的輸入輸出狀態(tài),用一定的算法,通過接力的方式在給定時間內(nèi)計算出來。這其中任何一環(huán)出錯,都會造成應(yīng)答碼出錯,最終mcu被復(fù)位。采用該方案,可以方便的發(fā)現(xiàn)系統(tǒng)的以下問題:任何一個關(guān)鍵任務(wù)在指定周期內(nèi)沒有被執(zhí)行。任何一個關(guān)鍵任務(wù)的輸入輸出條件(狀態(tài))不正確。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。