U-Boot HW Watchdog
来源:互联网 发布:网络棋牌机器人反控制 编辑:程序博客网 时间:2024/06/03 19:03
U-Boot HW Watchdog
概述
include/watchdog.h文件中有宏定义
#ifdef CONFIG_HW_WATCHDOG
#else
所以,需要打开CONFIG_HW_WATCHDOG开关以及实现hw_watchdog_reset喂狗函数。
首先在include/configs/abing2440.h文件中打开CONFIG_HW_WATCHDOG
#define CONFIG_HW_WATCHDOG 1
然后在board/zhiyuan/abing2440/abing2440.c文件中实现喂狗函数hw_watchdog_reset
喂狗使用GPG7,
#ifdef CONFIG_HW_WATCHDOG
void hw_watchdog_reset(void)
{
}
#endif
另外,为了在其它地方调用WATCHDOG_RESET函数,可以将watchdog.h添加包含到common.h文件中:
//#if defined (CONFIG_HW_WATCGDOG)
#include <watchdog.h>
//#endif
然后进行调试,在合适的地方加入喂狗语句:
WATCHDOG_RESET();
U-Boot默认已经加入和很多喂狗函数,但是一些地方是没有喂狗的,比如NAND的驱动就没有加入喂狗的操作。
喂狗历程
(1)加上看门狗后,可以运行到NAND检测的地方:
U-Boot 1.3.4
DRAM: 64 MB
Flash: 2 MB
NAND: <--------------------------
跟踪到了drivers/mtd/nand/nand.c文件的nand_init函数:
void nand_init(void)
{
......
}
应该进入到nand_init_chip函数(drivers/mtd/nand/nand.c)中喂狗:
static void nand_init_chip(struct mtd_info *mtd, struct nand_chip *nand,
{
}
依然在NAND处复位,看来得进入board_nand_init中喂狗。
board_nand_init函数在cpu/arm920t/s3c24x0/nand.c文件中实现,没有长时间的操作,看来得进入nand_scan了。
在rivers/mtd/nand/nand_base.c文件的nand_scan函数末尾喂狗:
nand_scan(........) {
........
}
依然停在NAND这个地方,看来只有scan_bbt了。
scan_bbt很费时间,扫描坏块,个人觉得在bootloader阶段没有必要扫描,将最后一句直接改为return 0;减少喂狗操作,更加节省启动时间。
写NOR FLASH超时复位:
Writing data at 0x1ce800 -- 100% complete.
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...Erasing sector 4 ... ok.
Erased 1 sectors
Writing to Flash... <---------------------------
文件common/env_flash.c中。
进入到U-Boot命令提示符,如果不输入字符也会超时复位。
至此,U-Boot的喂狗暂时到这里,转而进行内核喂狗。
阅读全文
0 0
- U-Boot HW Watchdog
- [MIT 6.828] HW boot xv6
- hw
- hw
- HW
- HW
- hw
- U-BOOT
- u-boot
- U-boot
- U-Boot
- u-boot
- u-boot
- u-boot!!
- U-BOOT
- U-boot
- U-BOOT
- U BOOT
- 中国大学生编程第一人,清华姚班“楼教主”,Google、百度辞职后,自立门户进军无人驾驶界!
- Chrome 浏览器 必知必会的小技巧
- 百度开源 Linux 发行版 MesaLock Linux
- PCLint——Keil环境下使用方式
- 再完善的策略,也比不上良好的交易心理
- U-Boot HW Watchdog
- 42 Three.js高级几何体车床模型THREE.LatheGeometry
- 博客搬家啦
- 贪吃蛇
- TOJ 5138: 数字游戏
- Java内存区域
- MySql数据库备份与还原
- MFC导入位图的方法
- CSS3 元素的变形(transform)