hi3521 watch dog
更新記錄
item | note |
---|---|
20150916 | 第一版 |
目錄
- 載入watch dog ko
- kernel介面如下
- 測試watch dog
- watchdog kernel 產生程序
- 使用echo
- hidog_write程式內容
- 使用busybox watchdog
- busybox 程式如下
- watchdog 測試方式
- 其它說明
HI3520D WatchDog
載入watch dog ko
- insmod ./wdt.ko default_margin=5
- 將產生每5秒hidog_feed
kernel介面如下
1 | #define HIDOG_EXIT 0 |
測試watch dog
- wdt-test
- 開啟/dev/watchdog,此時hidog_state會由HIDOG_SELFCLR切為HIDOG_EXTCLR
- 產生watchdog time out reboot
1 | #include <stdio.h> |
watchdog kernel 產生程序
- 當測試程式有while(1)時
- 開啟/dev/watchdog產生 kernel/open (即hidog_open)
- 此時hidog_state由HIDOG_SELFCLR改變為HIDOG_EXTCLR,將不會再產生hidog_feed
- 等到timeout時間到reboot
1 | hidog_keepalive entry, hidog_state:1 |
- 當測試程式無while(1)時
- 在關閉/dev/watchdog產生 kernel/release (即hidog_release)
- 將hidog_state由HIDOG_EXTCLR改變為HIDOG_SELFCLR,將會再次自動產生hidog_feed
1 | hidog_keepalive entry, hidog_state:1 |
使用echo
- 當採用echo ‘V’,將nowayout設定為1(即不能rmmod wdt.ko)
1 | # echo a > /dev/watchdog |
hidog_write程式內容
1 | static ssize_t hidog_write(struct file *file, const char __user *data, size_t len, loff_t *ppos) |
使用busybox watchdog
- insmod ./wdt-dd.ko default_margin=5 nodeamon=1
- 設定載入時不要自帶feed deamon
- watchdog -t 5 /dev/watchdog
- 由busybox的watchdog去feed
- 此時會產生watchdog processs,若將此process刪除將會於60S後產生timeout
1 | 1166 root 3180 S -sh |
- busybox watchdog feed會產生write訊息,就會產生hidog_keepalive
1 | # watchdog -t 5 /dev/watchdog |
busybox 程式如下
1 | int watchdog_main(int argc, char **argv) |
watchdog 測試方式
- 帶起watchdog之後,手動刪除watchdog(killall watchdog),再5秒後將會產生硬体動啟
1 | insmod ./wdt-dd.ko default_margin=5 nodeamon=1 |
其它說明
1 | BusyBox v1.16.1 (2013-07-17 17:28:26 CST) multi-call binary. |