• 正文
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

談?wù)効撮T(mén)狗優(yōu)先級(jí)

2023/09/13
2571
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

來(lái)源:公眾號(hào)【魚(yú)鷹談單片機(jī)

?前言

一個(gè)學(xué)員在學(xué)習(xí) uCOS 系統(tǒng)過(guò)程中,對(duì)看門(mén)狗任務(wù)的優(yōu)先級(jí)產(chǎn)生了疑惑,到底該把喂狗任務(wù)優(yōu)先級(jí)設(shè)置成最高還是最低好?

這里談?wù)勽~(yú)鷹個(gè)人看法,首先給出結(jié)論,最低,甚至是在空閑任務(wù)運(yùn)行(使用鉤子函數(shù))。

?理由

首先我們要知道看門(mén)狗的工作是什么?為什么要設(shè)置看門(mén)狗。

很多產(chǎn)品出廠時(shí),都會(huì)開(kāi)啟看門(mén)狗,這是產(chǎn)品運(yùn)行的最后保障,可以在出現(xiàn)軟件 bug 時(shí)(如hardfault,死循環(huán)等),及時(shí)恢復(fù)運(yùn)行,讓產(chǎn)品可以重新繼續(xù)工作下去,但這不意味著萬(wàn)事大吉,一旦發(fā)現(xiàn)了看門(mén)狗引起的復(fù)位問(wèn)題(可以通過(guò)寄存器標(biāo)志位查看因何復(fù)位),一定要找到問(wèn)題根因,否則出現(xiàn)了一次,后面一定還會(huì)不停出現(xiàn),用戶體驗(yàn)相當(dāng)不好。

那么我們應(yīng)該怎么設(shè)置看門(mén)狗的功能呢?這個(gè)學(xué)員準(zhǔn)備這么設(shè)計(jì):

1、超時(shí)時(shí)間 1s ,喂狗時(shí)間 500ms

2、看門(mén)狗任務(wù)優(yōu)先級(jí)最高

3、每個(gè)任務(wù)發(fā)送信號(hào)量給看門(mén)狗任務(wù),看門(mén)狗任務(wù)判斷是否收到了全部任務(wù)信號(hào)量,然后再?zèng)Q定是否喂狗。

看似合理,但其實(shí)有許多問(wèn)題,接下來(lái)一個(gè)一個(gè)討論。

?超時(shí)時(shí)間?

首先是超時(shí)時(shí)間問(wèn)題,設(shè)計(jì) 1s 超時(shí)時(shí)間,500ms 喂狗,這對(duì)喂狗功能本身來(lái)說(shuō)是沒(méi)有問(wèn)題的,但這顯得過(guò)于嚴(yán)苛了,因?yàn)橹灰隳硞€(gè)任務(wù)運(yùn)行超過(guò)了 1s,那很容易造成重啟現(xiàn)象,雖然說(shuō)一個(gè)任務(wù)持續(xù)運(yùn)行 1 s 也算是個(gè)不大不小的問(wèn)題,但你要知道,看門(mén)狗是應(yīng)對(duì)極其嚴(yán)重問(wèn)題下的緊急措施,這種運(yùn)行緩慢只是體驗(yàn)不好,如果經(jīng)常發(fā)生,在研發(fā)階段就應(yīng)該解決,如果是偶發(fā)的,那么對(duì)應(yīng)客戶來(lái)說(shuō),基本是感知不到的。

而這么短的時(shí)間就完成重啟,你可能很難從外部現(xiàn)象分清到底是因?yàn)?a class="article-link" target="_blank" href="/tag/%E7%94%B5%E6%BA%90/">電源、復(fù)位引腳還是看門(mén)狗導(dǎo)致的重啟,在沒(méi)有日志情況下,增大排查范圍。

如果我們能設(shè)置成10多秒的超時(shí)時(shí)間,那么我們很容易就能從表象發(fā)現(xiàn),產(chǎn)品停止工作了,然后我們有足夠的時(shí)間運(yùn)用魚(yú)鷹之前介紹的調(diào)試方法《BUG 終結(jié)者,現(xiàn)場(chǎng)抓獲!|顛覆認(rèn)知》抓取到現(xiàn)場(chǎng)環(huán)境,這對(duì)定位這種偶發(fā)性問(wèn)題非常有效(目前所待的兩個(gè)公司看門(mén)狗超時(shí)時(shí)間都設(shè)置在 10 s 以上)。

不過(guò)每種產(chǎn)品要求不同,對(duì)超時(shí)時(shí)間也不盡相同,所以自行決定即可(時(shí)間要求嚴(yán)格者,可考慮使用窗口看門(mén)狗)。

優(yōu)先級(jí)和信號(hào)量?

第二點(diǎn),優(yōu)先級(jí)最高?在魚(yú)鷹看來(lái),這絕對(duì)不行,這和把看門(mén)狗功能放在中斷中執(zhí)行沒(méi)什么兩樣。

這里和第三點(diǎn)結(jié)合一起討論。

通過(guò)每個(gè)任務(wù)設(shè)置信號(hào)量的方式,確實(shí)保證了每個(gè)任務(wù)都正常運(yùn)行,但真的合適嗎?

首先每個(gè)任務(wù)增加信號(hào)量,對(duì)系統(tǒng)資源是一大消耗,其次你能保證后續(xù)的開(kāi)發(fā)人員在增加任務(wù)時(shí)能遵照你的設(shè)計(jì)要求寫(xiě)代碼嗎?不一定吧。

一旦增加新任務(wù)而未增加這個(gè)喂狗信號(hào)量,那么這個(gè)新任務(wù)的死活,看門(mén)狗可就無(wú)能為力了。因?yàn)榭撮T(mén)狗任務(wù)優(yōu)先級(jí)最高,只要現(xiàn)有信號(hào)量接收到了,就一定會(huì)喂狗,那么新任務(wù)可監(jiān)控不了。

另外有些任務(wù)在設(shè)計(jì)時(shí),可能就是很長(zhǎng)時(shí)間才運(yùn)行一次(如外部中斷觸發(fā)),那么這種任務(wù)肯定要因?yàn)槟氵@個(gè)設(shè)計(jì)而不得不做出修改。

還有些任務(wù)走了異常分支,并沒(méi)有釋放CPU的行為(如delay),卻能正常釋放信號(hào)量,那么也是很難發(fā)現(xiàn)的。

而將看門(mén)狗任務(wù)優(yōu)先級(jí)設(shè)計(jì)成最低(建議在空閑任務(wù)執(zhí)行,這樣它一定是最低的,不會(huì)被人為修改),那么不管后面的人怎么添加新任務(wù),只要新任務(wù)死循環(huán),不釋放 CPU(低優(yōu)先級(jí)任務(wù)無(wú)法運(yùn)行,包括看門(mén)狗任務(wù)),那么一定會(huì)被感知到,從而使看門(mén)狗復(fù)位。

而為了保證一些關(guān)鍵代碼一定會(huì)被執(zhí)行,可以設(shè)計(jì)一個(gè)變量,每個(gè) bit 是一處關(guān)鍵代碼(在關(guān)鍵代碼執(zhí)行后置 1),這樣只要在喂狗前判斷這個(gè)變量相關(guān)位是否設(shè)置即可。就是要注意該變量的保護(hù),如關(guān)中斷。

這樣通過(guò)低優(yōu)先級(jí)+位域的方式,就保證了其它任務(wù)一定都能被執(zhí)行到,并且對(duì)關(guān)鍵代碼也做了進(jìn)一步運(yùn)行保證,使看門(mén)狗功能最大化。

以上就是魚(yú)鷹對(duì)看門(mén)狗的思考,如有疑問(wèn),歡迎留言討論。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
NC7WZ07P6X 1 Fairchild Semiconductor Corporation Buffer, LVC/LCX/Z Series, 2-Func, 1-Input, CMOS, PDSO6, 1.25 MM, EIAJ, SC-88, SC-70, 6 PIN
$0.28 查看
SFH756V 1 Infineon Technologies AG LED Emitter, Through Hole Mount
$13.92 查看
511BBA100M000BAG 1 Silicon Laboratories Inc LVDS Output Clock Oscillator,

ECAD模型

下載ECAD模型
$3.84 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄