Linux boot parametrelerini değiştirdiğinizde, (yeni driver yüklemesi
vb...) sistem boot ederken bazen resetlenmeye başladıysa WATCHDOG tan
reset yemeye başladınız demektir.
DNW den debug edince aşağıdaki mesajı görürsünüz.
"unexpected close, not stopping watchdog."
Nedeni;
CONFIG_S3C2410_WATCHDOG_ATBOOT parametresi set edildiği için boot ederken watchdog çalışıyor.
CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME
parametresi default olarak 15'e set edildiği için boot süresi 15 sn yi
geçtiğinde watchdog reset yiyorsunuz.
Çözüm 1- Boot ederken bir
süre sonra watchdog sayacını sıfırlamalısınız (feed the dog). Bunun için
küçük bir program yazıp “/etc/init.d/rcS" nin herhangi bir yerinde (15
sn den önce) bu programı çağırmalısınız.
Örnek:
...
...
fd = open("/dev/watchdog",O_RDONLY );
if(fd < 0) {
perror("/dev/watchdog");
return -1;
}
for(;;) {
ioctl(fd,WDIOC_KEEPALIVE); //keep feeding dog
sleep(3);
}
close(fd);
return 0;
}
...
...
Çözüm 2-"/opt/FriendlyARM/mini2440/linux-2.6.32.2/drivers/watchdog/s3c2410_wdt.c" dosyasinda 50. satir;
#define CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME (15) tanımını değiştirmelisiniz. Ben 30 yaptığımda sorun çözüldü.
Hiç yorum yok :
Yorum Gönder