基于at91sam9260芯片在u-boot写添加看门狗控制命令
2015-08-28 20:14
351 查看
基于at91sam9260芯片在u-boot下添加wdt on/off控制命令,需要进行如下修改:
* Driver for NAND support, Rick Bronson
* borrowed heavily from:
* (c) 1999 Machine Vision Holdings, Inc.
* (c) 1999, 2000 David Woodhouse <dwmw2@infradead.org>
*
* 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":详细使用说明
<span style="font-size:18px;"> COBJS-$(CONFIG_CMD_FLASH) += cmd_wdt.o</span>
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>
注意:此处的函数wdt_controller将会添加至init_sequence[]结构体中处理,所以函数的返回值必须为int类型
然后在init_sequence中加入处理函数,至此,我们就完成了u-boot下对at91sam9260芯片的wdt处理命令。
1、在common目录下增加cmd_wdt.c文件,代码如下:
/<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 <dwmw2@infradead.org>
*
* 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":详细使用说明
2、修改编译文件Makefile
打开common目录下的Makefile,添加如下代码:<span style="font-size:18px;"> COBJS-$(CONFIG_CMD_FLASH) += cmd_wdt.o</span>
3、在lib_arm目录下的board.c文件中添加检测处理函数
<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>
注意:此处的函数wdt_controller将会添加至init_sequence[]结构体中处理,所以函数的返回值必须为int类型
然后在init_sequence中加入处理函数,至此,我们就完成了u-boot下对at91sam9260芯片的wdt处理命令。
相关文章推荐
- Flume监控目录并读取新添加的文件
- 新浪xweibo代码架构分析(二次开发)
- 从text-align和margin auto说开来
- Python中常见的数据类型总结
- 程序员推荐字体
- height、clientHeight、scrollHeight、offsetHeight区别
- Uva-122 - Trees on the level(二叉树与set)
- IOS中沙盒的基本介绍
- 栈(stack)和堆(heap)的区别
- 数据库多表操作事务处理
- mysql建表-主键-索引-外键
- IOS-笔记17(NSNotificaton,Application Lifecycle,UIApplication)
- Hibernate get和load区别
- 2015/8/10 Python基本使用(1)
- Ugly Number I II
- 【Java笔记】——有趣的递归算法
- c与c++的区别
- 新手用Linux做代理服务器 三招搞定
- MongoDB使用总结(C#版 潘鹏)
- java.lang.NoSuchFieldException: mThumbDrawable