at91看门狗驱动修改指南概要1.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
at91看门狗驱动修改指南概要1

附录一、 驱动程序:at91sam9g20核心板的看门狗驱动 看门狗的驱动一般来说比较简单,只要做寄存器的设置实现开启、关闭、喂狗功能。本项目中我们使用的是at91sam920处理器,带有看门狗定时器。这个看门狗的驱动却比较复杂,应用层想用它的话,将涉及到boot引导设置,uboot配置及驱动,改写驱动程序。下面将逐步说明。 1、boot引导(bootstrap-v1.15) 由于该看门狗的MR寄存器只能写一次(Only a processor reset resets it.),而默认情况下看门狗在boot引导程序中被关闭了,所以在boot引导程序中我们要开启看门狗。在board/at91sam9g20ek/at91sam9g20ek.c文件的硬件初始化函数hw_init中注释掉下面的配置即可开启看门狗: /* writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); */ 为了功能设置:我们配置如下: writel(AT91C_WDTC_WDV | AT91C_WDTC_WDD | AT91C_WDTC_WDRSTEN | AT91C_WDTC_WDFIEN, AT91C_BASE_WDTC + WDTC_WDMR); 2、uboot配置及驱动(uboot-v1.3.4): 默认情况下,看门狗在uboot中没有配置,需要手动添加配置,在文件include/configs/at91sam9g20ek.h中添加如下配置 #define CONFIG_HW_WATCHDOG 1 #define CONFIG_AT91SAM9_WATCHDOG 1 此时编译uboot,会提示你找不到hw_watchdog_reset复位函数,这是因为虽然我们配置看门狗,但看门狗的uboot驱动并不存在,下面就来添加uboot下的看门狗驱动。 1)添加 include/asm-arm/arch-at91sam9/at91_wdt.h,内容如下 /* * [origin: Linux kernel arch/arm/mach-at91/include/mach/at91_wdt.h] ?* * Copyright (C) 2008 Jean-Christophe PLAGNIOL-VILLARD plagnioj at * Copyright (C) 2007 Andrew Victor * Copyright (C) 2007 Atmel Corporation. * * Watchdog Timer (WDT) - System peripherals regsters. * Based on AT91SAM9261 datasheet revision D. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #ifndef AT91_WDT_H #define AT91_WDT_H #define AT91_WDT_CR (AT91_WDT + 0x00) /* Watchdog Control Register */ #define AT91_WDT_WDRSTT (10) /* Restart */ #define AT91_WDT_KEY (0xa5 24) /* KEY Password */ #define AT91_WDT_MR (AT91_WDT + 0x04) /* Watchdog Mode Register */ #define AT91_WDT_WDV (0xfff 0) /* Counter Value */ #define AT91_WDT_WDFIEN (1 12) /* Fault Interrupt Enable */ #define AT91_WDT_WDRSTEN (1 13) /* Reset Processor */ #define AT91_WDT_WDRPROC (1 14) /* Timer Restart */ #define AT91_WDT_WDDIS (1 15) /* Watchdog Disable */ #define AT91_WDT_WDD (0xfff

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档