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