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

📄 leddrv.c

📁 嵌入式 linux GPIO驱动 测试程序
💻 C
字号:
/**************************************************************** Institue of Automation,Chinese Academy of Sciences* Beijing Hyesco Embedded System Co.,Ltd.* www.hyesco.com* File Name: leddrv.c* Description: PC14、PC15 Control* Author: ***************************************************************/#include <linux/module.h>#include <linux/config.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/sched.h>#include <linux/fs.h>#include <linux/mm.h>#include <linux/poll.h>#include <linux/slab.h>#include <linux/ioport.h>#include <asm/uaccess.h>#include <asm/io.h>#include <linux/fcntl.h>#include <asm/arch/hardware.h>static int led_write(struct file *,const char *,int,loff_t *);//定义文件操作static struct file_operations led_fops={      write	:(void(*))led_write,};//定义模块名char led_name[]="leddrv";            //指定主设备号static int gmajor = 254;//注册函数static int __init leddrv_init_module(void){		int retv;      	//注册模块      	retv=register_chrdev(gmajor,led_name,&led_fops);      	if(retv<0)      	{      		printk("<1>Register Fail!\n");         	return retv;      	}      	printk("<1>Led device OK!\n");      	return 0;}//注销函数static void __exit leddrv_cleanup(void){      	int retv;      	//注销模块      	retv=unregister_chrdev(gmajor,led_name);      	if(retv<0)      	{        	printk("<1>UnRegister Fail!\n");        	return;      	}      	printk("<1>LEDDRV:GOOD-bye!\n");}static int led_write(struct file *led_file, const char *buf,int len,loff_t *loff){       	unsigned int iopdata;       	AT91PS_SYS sys = (AT91PS_SYS) AT91C_VA_BASE_SYS;         	//设定PC14、PC15口为输出       	//PIO Enable Register       	sys->PIOC_PER=(unsigned int)(1<<14)|(unsigned int)(1<<15);        	//PIO Output Enable Register       	sys->PIOC_OER=(unsigned int)(1<<14)|(unsigned int)(1<<15); 	       	//PIO Output Write Register       	sys->PIOC_OWER=(unsigned int)(1<<14)|(unsigned int)(1<<15);	                     	//从用户空间拷贝数据到内核空间       	if(copy_from_user((char*)&iopdata,buf,len))        	return -EFAULT;              	//PIO Output Data Register	       	sys->PIOC_ODSR=iopdata;               	return len;}module_init(leddrv_init_module);module_exit(leddrv_cleanup);/*end of leddrv.c*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -