1. 实验目的:设计s3c2410的linux看门狗驱动程序,内核版本linux-2.6.22.6
2. s3c2410看门狗定时器的相关寄存器
WTCON用于设置看门狗定时器时钟,使能或禁止看门狗定时器,使能或禁止看门狗中断,以及设置是否输出复位信号:
WTDAT用于设置看门狗的超时时间
、
WTCNT是看门狗计数器,看门狗启动后WTCNT值开始递减,为0后进行超时操作(产生看门狗中断或复位信号)
在程序正常运行时,我们需要在WTCNT减为0之前不断的为其写入新值(喂狗),使其值不为0,则系统不会复位;如果程序跑飞,没有继续喂狗,WTCNT递减为0后,就会复位系统。
3. 驱动程序设计框架
看门狗Linux驱动基于platform机制来设计。Linux的platform机制用platform_device和platform_driver这两个数据结构来管理相关设备,其优点在于将本身的硬件资源由内核统一管理,在驱动程序中可以通过platform机制提供的标准接口申请使用硬件资源,提高了驱动和资源管理的独立性,有较好的安全性和可移植性。
平台设备用platform_device结构体描述:
struct platform_device {
const char * name; //设备名
u32 id;
struct device dev;
u32 num_resources; //设备所使用各类资源数量
struct resource* resource; //资源
};
通过platform_add_devices()函数可以将平台设备添加到系统中:
int platform_add_devices(struct platform_device **devs, int num);
看门狗platform_device