📄 watchdog.c
字号:
#include <linux/config.h>#include <linux/utsname.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/string.h>#include <linux/fcntl.h>#include <linux/timer.h>#include <linux/sched.h>#include <linux/tty.h>#include <linux/module.h>#include <linux/init.h>#include <linux/miscdevice.h>#include <linux/delay.h>#include <linux/spinlock.h>#include <asm/mach/irq.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/system.h>#include <linux/poll.h>#include <asm/arch/io.h>#include "44b.h"#define DEVICE_NAME "watchdog"#define MCLK 64000000void Test_WDTimer(void);void Feed_WDTimer(void);void Stop_WDTimer(void);void Stop_WDTimer(void)
{
rWTCON = ((MCLK/1000000-1)<<8) | (3<<3) | (0);}void Feed_WDTimer(void)
{
rWTCNT = 8448*2;}static void Watchdog_ISR(int irq,void* dev_id,struct pt_regs * regs){
rI_ISPC = BIT_WDT;
}void Test_WDTimer(void)
{
//rINTMSK = ~(BIT_GLOBAL | BIT_WDT);
//rWTCON = ((MCLK/1000000-1)<<8) | (3<<3) | (1<<2); rWTCON = ((MCLK/1000000-1)<<8) | (3<<3) | (1);
rWTDAT = 8448*3;
rWTCNT = 8448*3;
rWTCON = rWTCON | (1<<5);
}static int s3c44b0_wdg_open(struct inode *inode, struct file *filp){ //printk("Open successful\n"); return 0;}static int s3c44b0_wdg_release(struct inode *inode, struct file *filp){ //printk("Close successful\n"); return 0;}static int s3c44b0_wdg_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){ switch(cmd) { case 0: Test_WDTimer(); return 0; case 1: Feed_WDTimer(); return 0; case 2: Stop_WDTimer(); return 0; default: printk("ERROR\n"); } return 0;}static struct file_operations s3c44b0_fops = { open: s3c44b0_wdg_open, ioctl: s3c44b0_wdg_ioctl, release: s3c44b0_wdg_release,};int s3c44b0_wdg_init(void){ int ret; ret = register_chrdev(251, DEVICE_NAME, &s3c44b0_fops); if (ret < 0) { printk(DEVICE_NAME " can't get major number\n"); return ret; } else printk("OK\n"); if (request_irq(15,Watchdog_ISR,0,"watchdog",NULL))
{
printk(KERN_INFO"[FALLED: Cannot register Watchdog_Interrupt!]\n");
return -EBUSY;
}
else
printk("[OK]\n"); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -