请问DM8168的看门狗驱动omap_wdt.c中ioctl函数中的参数都表示什么意思,其中switch(cmd)中,各个case值是怎么取的,我看了下头文件它们是宏定义,但是在应用函数中怎么把参数传进来呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你可以参考:\linux_lsp\example\watchdog\saWatchdog.c文件以及http://processors.wiki.ti.com/index.php/TI81XX_PSP_WDT_Driver_User_Guide
下面是一个例子:
int fd;
void catch_int(int signum)
{
signal(SIGINT, catch_int);
printf("In signal handler\n");
if(0 != close(fd))
printf("Close failed in signal handler\n");
else
printf("Close succeeded in signal handler\n");
}
int main(int argc, const char *argv[]) {
int sleep_time = atoi(argv[1]);
int data = 0;
int ret_val;
signal(SIGINT, catch_int);
fd=open("/dev/watchdog",O_WRONLY);
if (fd==-1) {
perror("watchdog");
return 1;
}
ret_val = ioctl (fd, WDIOC_GETTIMEOUT, &data);
if (ret_val) {
printf ("\nWatchdog Timer : WDIOC_GETTIMEOUT failed");
}
else {
printf ("\nCurrent timeout value is : %d seconds\n", data);
}
data = 10;
ret_val = ioctl (fd, WDIOC_SETTIMEOUT, &data);
if (ret_val) {
printf ("\nWatchdog Timer : WDIOC_SETTIMEOUT failed");
}
else {
printf ("\nNew timeout value is : %d seconds", data);
}
ret_val = ioctl (fd, WDIOC_GETTIMEOUT, &data);
if (ret_val) {
printf ("\nWatchdog Timer : WDIOC_GETTIMEOUT failed");
}
else {
printf ("\nCurrent timeout value is : %d seconds\n", data);
}
while(1)
{
if (1 != write(fd, "\0", 1))
{
printf("Write failed\n");
break;
}
else
printf("Write succeeded\n");
sleep(sleep_time);
}
if (0 != close (fd))
printf("Close failed\n");
else
printf("Close succeeded\n");
return 0;
}
关于WDT复位,你可以参考Datasheet(http://www.ti.com/lit/gpn/tms320dm8168) 和TRM(http://www.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=sprugx8b)手册相关章节。另外需要关注以下 WDT相关的 silicon errata(http://www.ti.com/litv/pdf/sprz329d):
Advisory 1.1.37 —Watchdog Timer (WDT): Default Timeout Period of 2 ms is Too Short.
Advisory 2.1.65 —Watchdog Timer (WDT): Watchdog Timer Generates Reset When Enabled For First Time After
Power-On Reset.
网口问题可能是我电脑网卡驱动有问题,这个问题先放一边。我想问一下GPIO的边沿检测寄存器需设置的是那些比如:GPIO_IRQENABLE_CLR_1寄存器用于使能中断,但是我不太明白GPIO1_LEVELDETECT0寄存器和GPIO1_FALLINGDETECT寄存器有什么区别,FALLINGDETECT寄存器检测下降沿,那么GPIO1_LEVELDETECT0是检测是么的呢,检测低电平么,还是什么,有GPIO边沿检测程序的例子么,我还想知道进入中断函数怎么写,谢谢!!
根据http://processors.wiki.ti.com/index.php/TI81XX_PSP_GPIO_Driver_User_Guide,GPIO是否是按顺序排列的,比如GP0[1]~GP0[31]那么GP1的32个管脚是否在函数中的值是从32到63?