kernel-2.6.13的watchdog驱动模块并没有在配置文件中选上。
编译它,下载到板子,insmod
[root@FriendlyARM misc]# pwd
/dev/misc
[root@FriendlyARM misc]# ls -l
crw-r----- 1 root root 10, 134 Jan 1 00:00 apm_bios
crw-r----- 1 root root 10, 135 Jan 1 00:00 rtc
crw-r----- 1 root root 10, 130 Jan 1 00:00 watchdog
[root@FriendlyARM misc]#
看门狗是混杂设备,所以主设备号是10,/linux/miscdevice.h 中定义他的次设备号为130
#define WATCHDOG_MINOR 130 /* Watchdog timer */
#define TEMP_MINOR 131 /* Temperature Sensor */
#define RTC_MINOR 135
#define EFI_RTC_MINOR 136 /* EFI Time services */
#define SUN_OPENPROM_MINOR 139
#define DMAPI_MINOR 140 /* DMAPI */
这似乎是硬性的规定。
# insmod s3c2410_wdt.ko soft_noboot=1
<6>S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
# echo a>/dev/misc/watchdog
<2>s3c2410-wdt: Unexpected close, not stopping watchdog!
<6>s3c2410-wdt: Watchdog timer expired!
<6>s3c2410-wdt: Watchdog timer expired!
<6>s3c2410-wdt: Watchdog timer expired!
<6>s3c2410-wdt: Watchdog timer expired!
<6>s3c2410-wdt: Watchdog timer expired!
测试正常,如果soft_noboot为0(默认的)
# insmod s3c2410_wdt.ko
当
# echo a>/dev/misc/watchdog
后若干时间没有操作,系统就会重启了,如果一个尽的往/dev/misc/watchdog写东西,也不会重启。
写V,会停止看门狗,当然以后系统也不会重启了。
我才发现,原来看门狗的到时中断 和 到时重启 要互斥。
可以想象,如果到时了,又发生中断,又重启,那么中断的意义就没有了。
如果到时了,没有中断也没有重启,那么看门狗的意义就没有了。
呵呵,所以要么到时就重启,表示软件的失控,
要么到时发生中断,通过中断来指示软件运行正常与否。
阅读(4112) | 评论(0) | 转发(0) |