所謂看門狗就是檢測功能性軟件是否還在運轉的軟件或硬件模塊。當它檢測到軟件沒有在工作時,就會重啓機器,使得軟件在重啓之後能夠繼續工作。它的檢測方式很簡單,就讓功能性軟件定時的發信號給它(所謂的餵狗),一旦一定時間內沒有接收到信號,那麼就認爲軟件已經停止運行了,系統就需要重啓了。在樹莓派的硬件中就有看門狗的功能。下面我們就來玩玩這條狗。
教程目的:
用腳本的方式來餵狗,並試驗當腳本停止餵狗後,樹莓派會重啓。(網上大量流傳着下載watchdog這個軟件來進行餵狗工作,本教程是自己寫shell來餵狗的。當然,也是很簡單的。)
教程器材及軟件:
- 樹莓派的板子。
- SD卡(已經有鏡像刷入)。
- 電源線及USB充電器。
- U盤或USB硬盤
- putty和psftp。
- 有DHCP的網線。
步驟:
- 先打開內核模塊中的看門狗功能:
(如果,你要在樹莓派啓動的時候,就啓動看門狗功能。那麼你需要在/etc/modules文件中加入,一行:bcm2708_wdog)sudo modprobe bcm2708_wdog
- 開啓這個之後,你就可以在/dev目錄下看到一個叫watchdog的文件。
- 執行完上面的命令,狗還不需要喂。但是一旦,你打開了這個文件(所謂,打開一種是c語言裏的fopen,另一種就是等價的在shell中使用讀寫該文件的命令),就需要開始餵狗。餵狗的方式就是輸入任何字符後數字除了V以外。此時,哪怕你關閉了文件,狗還是需要喂的。知道你輸入V,纔可以停止餵狗。有了這樣子的原理,寫一個餵狗的腳本就容易了。
#!/bin/bash while((1)) do sleep 3 echo "Feed the dog" echo "Feed the dog!" > /dev/watchdog done
- 然後,運行這個腳本一段時間,一直餵狗,然後中斷他。(Ctrl+C)
- 過了一會,樹莓派就重啓了。
參考:
這篇文章寫得非常清楚,內容也更有深度。我懷疑其它文章都是從這個地方來的。(英文)http://binerry.de/post/28263824530/raspberry-pi-watchdog-timer
中文文章一搜一大把,就不貼了。
備註:
此爲浙江大學計算機學院嵌入式系統課程擴展實驗實驗報告。