응용 프로젝트
글 수 34
2004.08.02 17:41:50 (*.110.112.55)
17053
워치독을 활성화하는 방법
------------------------
* make menuconfig
Character devices --->
Watchdog Cards --->
[*] Watchdog Timer Support
[*] Disable watchdog shutdown on close
<*> PXA250/210 watchdog
* menuconfig 옵션 설명
위치독을 설정하고 컴파일 하면 위치독은 실행되지 않는다.
어플에서 디바이스 드라이버를 오픈했을때 위치독이 활성화 되며 디바이스
드라이버가 닫히면 위치독은 작동하지 않는다
하지만 "Disable watchdog shutdown on close" 이 옵션을 켜놓으면
디바이스 드라이버가 닫혀도 위치독은 작동한다.
* EZ-X5 부트로더에서
ezboot> set
watchdog 메뉴에 초단위 시간을 설정한다.
이시간은 커널 복사전에 워치독을 활성화 하며 정해진 시간안에
워치독을 재설정하여야 한다. 즉 커널이 올라간 후 사용자 어플리케이션에서
워치독을 갱신하여야 한다.
* 타겟보드 linux
ez-x5> mknod /dev/watchdog c 10 130
ez-x5> ./sample_wdt
.......sample_wdt.c....................................................
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "/project/ez-x5/kernel/linux/include/linux/watchdog.h"
//----------------------------------------------------------------------------
// 설명 : Test Main
//----------------------------------------------------------------------------
int main( int argc, char **argv )
{
int dev;
int period_sec;
struct timeval tv;
fd_set readfds;
int rc, max_fd;
printf( "Test Start....
");
dev = open("/dev/watchdog", O_RDWR|O_NDELAY );
if (dev == -1 )
{
printf( "Device OPEN FAIL /dev/watchdog
");
printf( " mknod /dev/watchdog c 10 130
" );
return -1;
}
if (3 <= argc )
{
switch( argv[1][0] )
{
case 's' :
// 워치독 10초 설정
period_sec = strtoul( argv[2], NULL, 10 );
if ( 0 > ioctl( dev, WDIOC_SETTIMEOUT,
&period_sec ) )
printf( "Error
" );
else printf( "SET new Watchdog Time %d
",
period_sec );
}
}
// 워치독 reload
ioctl( dev, WDIOC_KEEPALIVE, 0 );
close(dev);
printf( "Test End
");
return 0;
}