netdaqdev.c~

来自「at91rm9200双端口RAM驱动及测试程序」· C~ 代码 · 共 117 行

C~
117
字号
#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 + =
减小字号Ctrl + -
显示快捷键?