日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

在多任务(RTOS)环境中使用看门狗

發(fā)布時間:2024/1/3 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 在多任务(RTOS)环境中使用看门狗 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在SEGGER的博客上看到一篇有關(guān)在實(shí)時操作系統(tǒng)使用看門狗的文章。從一個失敗的太空項(xiàng)目出發(fā),分析了看門狗的作用及使用,自我感覺很有啟發(fā),特此翻譯此文并推薦給各位同仁。為了閱讀方便,有些航天領(lǐng)域名詞本人添加了注釋,讀者也可自行搜索更詳細(xì)的解釋。當(dāng)然限于個人水平,有不當(dāng)之處懇請指正。大家也可以看原文:https://blog.segger.com/using-a-watchdog-in-a-multi-task-rtos-environment/。作者為Til Stork,其全文如下:

Clementine是美國航空航天局在1994年1月25日發(fā)射的空間環(huán)境下測試傳感器和航天器部件的衛(wèi)星。由于缺乏幾條看門狗程序,她的任務(wù)于1994年5月7日失效。

【注】Clementine是美國的一個航天器,官方稱為深度空間計(jì)劃科學(xué)實(shí)驗(yàn),由NASA和導(dǎo)彈防御組織聯(lián)合發(fā)射。

Clementine在連續(xù)兩個月進(jìn)行了月球測繪后,離開月球軌道并連續(xù)前往她的下一個目標(biāo)——近地球小行星Geographos。然而,Clementine所載電腦很快發(fā)生了故障,并切斷了NASA對航天器的有效操作,并導(dǎo)致其中一個推進(jìn)器不受控制。

【注】Geographos1620號小行星顆阿波羅型小行星離地球近時400余萬公里,其形狀為極規(guī)則長條形,長寬比為45倍。

NASA花了20分鐘試圖使系統(tǒng)得到恢復(fù),但是無濟(jì)于事。硬件復(fù)位命令終于使Clementine重新上線,但為時已晚。她已經(jīng)耗盡了所有的燃料,而任務(wù)的延續(xù)必須被取消。

在他們實(shí)施的軟件超時明顯失效時。負(fù)責(zé)Clementine軟件的開發(fā)團(tuán)隊(duì)希望他們使用了硬件的看門狗定時器。

看門狗有什么作用?

看門狗是一種直接集成到微控制器中或者外部連接到微控制器的硬件。其主要目的是在可以安全地假設(shè)系統(tǒng)已掛起或以其他方式執(zhí)行不正確的情況下執(zhí)行錯誤處理(通常為硬件復(fù)位)。

看門狗的主要組件是一個計(jì)數(shù)器,最初被配置為一個特定的值,然后倒數(shù)為零。軟件必須經(jīng)常將該計(jì)數(shù)器重新設(shè)置為其初始值,以確保其不會達(dá)到零。否則,會出現(xiàn)故障,通常會重置CPU。這表明看門狗是最后的手段,只有當(dāng)其他一切都失敗時才采取這種選擇。就像Clementine的情況一樣。

如何喂狗

然而,正確使用看門狗定時器并不像重新啟動計(jì)數(shù)器那樣簡單(通常被稱為喂狗或者踢狗)的過程。在其系統(tǒng)中運(yùn)行看門狗定時器時,開發(fā)人員必須仔細(xì)選擇看門狗的超時時間,以便看門狗在發(fā)生故障的系統(tǒng)可以執(zhí)行任何不可逆轉(zhuǎn)的惡意動作之前進(jìn)行干預(yù)。

在簡單的應(yīng)用中,特別是沒有使用RTOS,開發(fā)人員通常會從主循環(huán)中提供看門狗。該方法僅需要配置適當(dāng)?shù)某跏加?jì)數(shù)器值,它可以簡單地選擇任何超過整個主循環(huán)最壞的執(zhí)行時間的值,至少有一個計(jì)時器周期。這通常是一個非常有效的方法,雖然有一些系統(tǒng)需要立即恢復(fù),但更多系統(tǒng)只需要確保它們不會被無限期地掛起,這一方法能很好的實(shí)現(xiàn)之一目的。

在多任務(wù)(RTOS)環(huán)境中喂狗

然而,在更復(fù)雜的系統(tǒng)中,特別是多任務(wù)系統(tǒng),各種線程可能會因?yàn)楦鞣N原因潛在地掛起。一些線程可以長時間運(yùn)行,例如線程等待潛在的網(wǎng)絡(luò)通信。一個干凈的方法可以定期喂養(yǎng)看門狗,同時確保每個不同的過程都處于健康狀態(tài),成為這些系統(tǒng)開發(fā)人員面臨的主要挑戰(zhàn),例如需要關(guān)注的是:

操作系統(tǒng)是否正常執(zhí)行
高優(yōu)先級任務(wù)是否耗盡CPU,完全阻止低優(yōu)先級任務(wù)運(yùn)行
是否發(fā)生了阻止執(zhí)行一個或多個任務(wù)的死鎖
任務(wù)程序是否正確執(zhí)行

開發(fā)人員還需要確保對其源代碼執(zhí)行的任何修改(無論是專用監(jiān)視任務(wù)還是受監(jiān)視任務(wù)的特定修改)都必須很小,并針對效率進(jìn)行優(yōu)化,以將侵?jǐn)_性保持在最低限度。

RTOS增加看門狗支持

因此,最先進(jìn)的RTOS如SEGGER的embOS為客戶提供綜合的看門狗解決方案,以簡化看門狗處理,從而減少任何開發(fā)過程的時間花費(fèi)。

這些解決方案應(yīng)用的一般原則可能會因不同的RTOS而異。然而,在SEGGER,多功能性和易用性被認(rèn)為是首要的,同時在內(nèi)存使用和執(zhí)行時間內(nèi)將所需的占用空間最小化。因此,對于嵌入式專家來說,顯然需要一套全面的API函數(shù)來實(shí)現(xiàn):

單獨(dú)注冊任務(wù),計(jì)時器,甚至帶embOS看門狗模塊的ISR。
從任何所需的上下文靈活地測試預(yù)期看門狗狀態(tài)的可能性。

現(xiàn)在最終的實(shí)現(xiàn)只包括五個API函數(shù),但功能足以滿足任何預(yù)期的目的。

使用這些API函數(shù),一個任務(wù)可以簡單地將其自身注冊到embOS看門狗模塊,并可以單獨(dú)配置其超時時間。然后,任務(wù)可以通過調(diào)用一個簡單的embOS API函數(shù)來定期發(fā)出正確的執(zhí)行。所有被監(jiān)視的任務(wù)是否在指定的超時時間內(nèi)發(fā)出正確的執(zhí)行信號,隨后通過另一個單獨(dú)的embOS API調(diào)用進(jìn)行檢查,該調(diào)用可以在專用看門狗任務(wù)內(nèi)從OS_Idle()內(nèi)執(zhí)行,甚至從定期操作系統(tǒng)定時器中斷服務(wù)程序或任何其他ISR。

用戶只需要提供和注冊兩個功能:第一個執(zhí)行看門狗的硬件依賴的饋送,而另一個則在看門狗計(jì)數(shù)器達(dá)到零時指定進(jìn)一步的動作。例如,這可以將日志文件存儲到非易失性存儲器中,在執(zhí)行硬件復(fù)位或執(zhí)行任何其他操作之前,包含有關(guān)系統(tǒng)狀態(tài)的進(jìn)一步信息。

結(jié)論

當(dāng)開始設(shè)計(jì)和開發(fā)具有看門狗的應(yīng)用程序時,需要確保盡早決定如何使用它 。并考慮可以幫助您更快地實(shí)現(xiàn)的可用工具。至少,你不想被困在太空中,是嗎?

總結(jié)

以上是生活随笔為你收集整理的在多任务(RTOS)环境中使用看门狗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。