第一个驱动程序:at91sam9g45核心板的看门狗驱动

本文详细介绍了如何在AT91SAM9G45核心板上开发看门狗驱动,包括在boot引导、uboot配置和Linux内核中的设置。从关闭boot引导中的禁用设置,到uboot中添加配置和驱动,再到Linux内核的配置和驱动修改,每个步骤都进行了详尽的阐述,展示了看门狗驱动的完整流程。
摘要由CSDN通过智能技术生成

纪念第一个驱动程序:at91sam9g45核心板的看门狗驱动

看门狗的驱动一般来说比较简单,只要做寄存器的设置实现开启、关闭、喂狗功能。本项目中我们使用的是at91sam9g45处理器,带有看门狗定时器。这个看门狗的驱动却比较复杂,应用层想用它的话,将涉及到boot引导设置,uboot配置及驱动,改写驱动程序。下面将逐步说明。

1、boot引导(bootstrap-v1.14)

由于该看门狗的MR寄存器只能写一次(Only a processor reset resets it.),而默认情况下看门狗在boot引导程序中被关闭了,所以在boot引导程序中我们要开启看门狗。在at91sam9g45ekes.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/at91sam9m10g45ek.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 jcrosoft.com>

 * 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 (1    << 0) /* Restart */

#define AT91_WDT_KEY

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值