⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netdaqdev.z~

📁 at91rm9200双端口RAM驱动及测试程序
💻 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 + -