基于at91sam9260芯片在u-boot下添加wdt on/off控制命令,需要进行如下修改:
/<span style="font-size:18px;">* * Driver for NAND support, Rick Bronson * borrowed heavily from: * (c) 1999 Machine Vision Holdings, Inc. * (c) 1999, 2000 David Woodhouse <[email protected]> * * Added 16-bit nand support * (C) 2004 Texas Instruments */ #include <common.h> #include <command.h> int do_wdt(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) { if((argc != 2)) { printf("Usae:\n%s\n",cmdtp->usage); return 1; } if(strlen(argv[1])) { setenv(argv[0],argv[1]); saveenv(); printf("setenv %s %s\n",argv[0],argv[1]); } return 0; } U_BOOT_CMD(wdt, 2, 1, do_wdt, "wdt - Watchdog control system\n", "on/off on/off the watchdog\n" "u-boot control the watchdog on/off\n");</span>其中U_BOOT_CMD ()参数如下:
1、wdt:命令单独表示符
2、2:代表两个参数
3、1:命令处理完成后是否返回,就是函数的返回类型
4、do_wdt:命令调用处理函数
5、"wdt - Watchdog control system\n",:简单的使用说明
6、"on/off on/off the watchdog\n"
"u-boot control the watchdog on/off\n":详细使用说明
打开common目录下的Makefile,添加如下代码:
<span style="font-size:18px;"> COBJS-$(CONFIG_CMD_FLASH) += cmd_wdt.o</span>
<span style="font-size:18px;">/* add the watchdog controll check function by pengrui,2015.08.28 remebber that the funtion must return */ static int wdt_controller(void) { char *buf; buf = getenv("wdt"); if(buf&&(strcmp(buf,"off")==0)) { (*(volatile unsigned long *)0xFFFFFD44) = 0x00008000; } return 0; }</span>
然后在init_sequence中加入处理函数,至此,我们就完成了u-boot下对at91sam9260芯片的wdt处理命令。