一、说明:
看门狗,又叫watchdog timer,主要用来监控、管理CPU的运行状态,并对处于异常状态中的CPU进行复位操作,使其能重新工作。
看门狗可分为硬件看门狗和软件看门狗两种。

喂狗操作:WDI(Watchdog Input)的电平信号超过1.6S不发生跳变时,就会让系统重启,所以只需让WDI在每个1.6s内遇到一个上升沿或者下降沿即可。 
其他更详细的内容请自己在网上查找。
二、uboot代码修改
1、 
在include/watchdog.h文件中有宏定义 
#ifdef CONFIG_HW_WATCHDOG 
       #if defined(ASSEMBLY
               #define WATCHDOG_RESET bl hw_watchdog_reset 
       #else 
               extern void hw_watchdog_reset(void); 
               #define WATCHDOG_RESET hw_watchdog_reset 
       #endif 
所以,需要打开CONFIG_HW_WATCHDOG开关以及实现hw_watchdog_reset喂狗函数。 
2、 
在板级头文件中include/configs/am335x_evm.h文件中加上宏定义 
#define CONFIG_HW_WATCHDOG 1 
#define GPIO_WATCHDOG         23
然后在板级文件board/ti/am335x/evm.c中加入喂狗函数hw_watchdog_reset 
#ifdef CONFIG_HW_WATCHDOG 
#include  
void gpio0_23_watchdog(void) 

      enable_gpio0_23_pin_mux(); 
      gpio_request(GPIO_WATCHDOG, “gpio_watchdog”); 
      gpio_direction_output(GPIO_WATCHDOG,0); 

void hw_watchdog_reset(void) 
{     
      gpio_set_value(GPIO_WATCHDOG, 1); 
      gpio_set_value(GPIO_WATCHDOG, 0);   

#endif

说明:喂狗使用的是GPIO0_23(根据自己的引脚配置修改) 
    (1)、在board/ti/am335x/mux.c中加上引脚初始化代码 
        static struct module_pin_mux gpio0_23_pin_mux[] = { 
             {OFFSET(gpmc_ad9), (MODE(7) | PULLUDEN)},   /* GPIO0_23 */ 
             {-1}, 
      };

void enable_gpio0_23_pin_mux(void) 
      { 
             configure_module_pin_mux(gpio0_23_pin_mux); 
      } 
   (2)在board/ti/am335x/common_def.h中加上函数声明 
       extern void enable_gpio0_23_pin_mux(void); 
3、 
在uboot启动过程中要执行gpio0_23_watchdog();函数 
我加在common/main.c中,也可以加在其他地方  
我加在arch/arm/lib/board.c中,也可以加在其他地方 
void board_init_f(ulong bootflag) 

            bd_t *bd; 
           init_fnc_t **init_fnc_ptr; 
           gd_t *id; 
            ulong addr, addr_sp; 
         /add gpio0_23 for watchdog by liuc of 2013-1-30
         #ifdef CONFIG_HW_WATCHDOG 
          gpio0_23_watchdog(); 
          #endif 
… 

4、然后编译,uboot烧写成功后,即可使用,用tftp烧写内核和文件系统是正常的。 
问题: 
用SD卡烧写文件系统即大文件的时候系统会重启,原因应该是读写SD卡文件的函数没有进行喂狗, 
解决办法: 
SD卡烧写文件系统时喂狗 
在drivers/mmc/omap_hsmmc.c文件中加上头文件 
#include  
修改函数如下: 
static int mmc_read_data(hsmmc_t *mmc_base, char *buf, unsigned int size) 

……………………………………… 
      while (size) { 
             /add gpio0_23 for watchdog by liuc of 2013-2-4
             WATCHDOG_RESET(); 
              
             ulong start = get_timer(0); 
             do { 
                    mmc_stat = readl(&mmc_base->stat); 
                    if (get_timer(0) - start > MAX_RETRY_MS) { 
                           printf("%s: timedout waiting for status! “, 
                                         func); 
                           return TIMEOUT; 
                    } 
             } while (mmc_stat == 0); 
………………………………. 

static int mmc_write_data(hsmmc_t *mmc_base, const char *buf, unsigned int size) 

……………………… 
while (size) { 
             /add gpio0_23 for watchdog by liuc of 2013-2-4
             WATCHDOG_RESET(); 
              
             ulong start = get_timer(0); 
             do { 
                    mmc_stat = readl(&mmc_base->stat); 
                    if (get_timer(0) - start > MAX_RETRY_MS) { 
                           printf(”%s: timedout waiting for status! ", 
                                         func); 
                           return TIMEOUT; 
                    } 
             } while (mmc_stat == 0);

………………………. 
}

uboot 看门狗喂狗相关推荐

  1. 海思Hi3520DV400 uboot看门狗喂狗

    看门狗的功能这里不再介绍,自行百度谷歌搜索.这里记录一下Hi3520DV400看门狗的喂狗设置.首先查 include/watchdog.h中的代码,可以发现,如果需要启用硬看门狗,需要定义宏:CON ...

  2. linux 喂狗时间,看门狗喂狗时间及程序

    什么是看门狗定时器 看门狗定时器(WDT,Watch Dog TImer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数.如果程序运行正常,过一段时 ...

  3. linux需要看门狗喂狗程序,多任务看门狗, 喂狗方法

    看门狗分和 软件看门狗.硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称"喂狗"),因此程序正常工作时, 定时器总不能溢出,也就 ...

  4. MSP430G2553 看门狗喂狗问题

    MSP430G2553编程用到看门狗,TI官方例程没有看门狗喂狗例程,上网搜了看门狗例程,有两个地方给出的看门狗初始化代码是WDTCTL = WDT_ARST_1000(1秒的看门狗),喂狗程序是WD ...

  5. Dog Whisper--报告狗班长——狗的心理专家

    He talks dogs!他能和狗对话!任何有坏习惯或毛病的狗,都能被他搞定! 他就是 Dog Whisper--Cesar Millan! 以上是国家地理亚洲频道近期经常出现的广告.从5月18号开 ...

  6. 腾讯与反腾讯联盟两大垄断集团之间的狗咬狗的搞笑互联网大战

    文 / 李博(光宇广贞) 腾讯的命掌握在中移动手中,这世界上也只有中移动能要腾讯的命.腾讯所有的联系人资料都无偿转给中移动了.关键看中移动最后是什么态度了. 这是指几年前的一场飞信和QQ的争夺,当时腾 ...

  7. 创业,不是狗咬狗—leo看赢在中国第三季 3

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版.作者信息和本声明.否则将追究法律责任.本文地址:http://blog.csdn.net/jobchanceleo/archiv ...

  8. 创业,不是狗咬狗—leo看赢在中国第三季(3)

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版.作者信息和本声明.否则将追究法律责任.本文地址:http://blog.csdn.net/jobchanceleo/archiv ...

  9. 335x uboot 看门狗喂狗

    一.说明:   看门狗,又叫 watchdog timer ,主要用来监控.管理 CPU 的运行状态,并对处于异常状态中的 CPU 进行复位操作,使其能重新工作.   看门狗可分为硬件看门狗和软件看门 ...

最新文章

  1. java 比较器comparator_Java中比较器的使用Compare和Comparator
  2. php返回结果判断,老司机在判断返回结果时翻了个身(ThinkPHP)
  3. 玩转Android之二维码生成与识别
  4. RAID之中的RAID5的创建及示例
  5. java中quicksort的参数_Java中的Quicksort
  6. python win32ui选取文件夹_最全 Python 算法实现资源汇总!
  7. facelets_不要在facelets中重复表情
  8. 【iCore3 双核心板】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
  9. cv图像翻转_涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南
  10. ARM(AM5728)板移植VSFTPD
  11. python中key_python属性和key的区别?
  12. 软件工程学习进度第六周暨暑期学习进度之第六周汇总
  13. 《Linux高性能服务器编程》——2.7 IPv6头部结构
  14. 测试一个链表是否为空表 C语言,【链表测试面试题】面试问题:C语言单链表的… - 看准网...
  15. PASCAL VOC2012数据集介绍与制作自己的数据集
  16. 干货,AES破解路程-生意参谋举例
  17. photoshop第九章:文字和场景效果的制作
  18. 基于shotgun蛋白质组学的MaxQuant质谱计算平台
  19. 【vue】生成条形码
  20. SQL sever 查询及格率

热门文章

  1. 冯 . 诺依曼体系结构对计算机发展的限制
  2. css3有哪些新增属性,CSS3新增属性
  3. ZOJ 3952 Fibonacci Sequence Chicken Edition
  4. 天馈线测试仪具备什么功能
  5. pandas数据分析读书笔记(四)
  6. [日志]电脑开不了机修理
  7. Java代码判断是否是回文数
  8. 学计算机的自述,计算机的自述作文范文
  9. 视频教程-OpenGLES萌谷手册(iOS2018版)-其他
  10. PMP 考试是一个骗局吗?