📄 netdaqdev.z~
字号:
#ifndef __KERNEL__# define __KERNEL__#endif#ifndef MODULE# define MODULE#endif#include <linux/module.h>#include <linux/kernel.h>#include <linux/version.h>#include <linux/init.h>#include <linux/fs.h>#include <asm/uaccess.h>#include <linux/sched.h>#include <linux/types.h>#include <linux/fcntl.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/slab.h>#include <linux/vmalloc.h>#include <linux/mm.h>#include <linux/string.h>#include <asm/io.h>#include <linux/errno.h>#include <linux/tqueue.h>#include <linux/wait.h>#include <asm/irq.h>#include <asm/delay.h>#include <asm/arch/hardware.h>#include <asm/fiq.h>#include <asm/arch/AT91RM9200_SYS.h>#include "NetDaqDev.h"static ssize_t DaqDev_read(struct file *filp, char *buf, size_t count, loff_t *f_pos){
u16 usr_data; usr_data=readl(base_map); copy_to_user(buf, usr_data, 2); return 0;}static ssize_t DaqDev_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos){ u16 user_data; copy_from_user(user_data, (char *)buf, 2);
writel(user_data, base_map); return 0;}static int DaqDev_ioctl(struct inode *inode, struct file *filp, unsigned int ioctl_num, unsigned long ioctl_param){ return 0;}static int DaqDev_open(struct inode *inode, struct file *filp){ MOD_INC_USE_COUNT; printk("Daq device opened.\n"); return 0;}static int DaqDev_release(struct inode *inode, struct file *filp){ MOD_DEC_USE_COUNT; printk("Daq device closed.\n"); return 0;}static int __init DaqDev_init(void){ int ret; sys->EBI_SMC2_CSR[2] = (AT91C_SMC2_TDF & 0x000) | AT91C_SMC2_BAT | AT91C_SMC2_DBW_16 | AT91C_SMC2_WSEN | 1;//(AT91C_SMC2_NWS & 0xff); base_map = (u16 *)ioremap(NCS3, 0x1000*2); ret = register_chrdev(MAJOR_NUM, DEV_NAME, &DaqDev_fops); if (ret < 0) { printk("Error in register_chrdev with: %d!\n", ret); return ret; } printk("Registered the daq device succeed with major number: %d!\n", MAJOR_NUM); return 0;}static void __exit DaqDev_cleanup(void){ int ret; iounmap((u16 *)base_map); ret = unregister_chrdev(MAJOR_NUM, DEV_NAME); if (ret < 0) printk("Error in unregister_chrdev: %d!\n", ret); else printk("Leave daq device!\n");}module_init(DaqDev_init);module_exit(DaqDev_cleanup);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -