驱动开发-字符设备2
来源:互联网 发布:mac chrome plugins 编辑:程序博客网 时间:2024/05/18 01:35
字符设备驱动2
- readl和writel 读寄存器的值,写寄存器的值
writel(readl(gpd0con) & (~(0xf << 0)) | (0x2 << 0));
void __iomen *timer_base
timer_base = ioremap(0x100,0x4);
timer_base += 0x4; 加多少就是多少
- 内存之间的拷贝(用户空间和内核空间)
memcpy(void * dest,const void * src,size_t n);
__must_check 必须判断返回值
__user 修饰的都是用户空间
- 从内核区中读取数据到用户区
static inline unsigned long __must _check copy_to_user(void __user *to,const void *from,unsigned long n);//1. void __user *to 用户空间//2. void *from 内核空间//3. long n 拷贝的大小static inline unsigned long __must_check copy_from_user(void *to,void __user *from,unsigned long n);//1. void *to 内核空间//2. void __user *from 用户空间//3. long n 拷贝的大小//成功返回0,失败返回未拷贝的字节数/*****************file_operations结构体****************///loff_t *loff --> 文件指针偏移的位置
- 用户空间与内核空间交互
/***********************用户空间************************/1. 无传参的命令发送 ioctl(int d,int request,void *argp); //1.文件描述符 //2.命令 // 32位的无符号整形 // 设备类型(8)--> 那一类设备'c' // 序列号(8) --> 这一类设备的第几个命令 // 方向(2) --> 读写判断 // 尺寸(14) --> 大小 内核已经定义量宏(命令) 没有数据传递使用的命令 _IO(taye,nr); 1.type 设备类型 2.nr 序列号 ioctl(fd,_IO('a',0));2. 有传参的命令发送 ioctl(int d,int request,void *argp);//1.文件描述符//2.命令// 32位的无符号整形// 设备类型(8)--> 那一类设备'c'// 序列号(8) --> 这一类设备的第几个命令// 方向(2) --> 读写判断// 尺寸(14) --> 大小//3.需要传递的数据 内核已经定义量宏(命令) 有数据传递的命令 _IOR(type,nr,size); _IOW(type,nr,size); _IOWR(type,nr,size); 1.type -- 设备类型 2.nr -- 序列号 3.size -- 数据类型 ioctl(fd,\_IO('a',0,int),&pre);
/***********************内核空间************************/1. 无传参的命令发送 long (*unlocked_ioctl) (struct file*,unsiged int,unsiged long); //1.文件描述符 //2.用户空间传的命令 //3.用户空间传递的参数 static long my_ctrl(struct file* file,unsiged int cmd,unsiged long arg) int data = 0; if(copy_from_user(&data,(void *)arg,sizeof(int))); switch(cmd)
- 获取一个或多个设备编号
static inline int register_chrdev(unsigned int major,unsigned int baseminor,unsigned int count,const char *name);//1. 主设备号//2. 次设备号//3. 次设备号数//4. 名字
0 0
- 驱动开发-字符设备2
- 字符设备驱动开发
- linux驱动开发-字符设备
- linux字符设备驱动开发
- 驱动开发-字符设备1
- 开发一个字符设备驱动
- Linux驱动开发-字符设备驱动笔记 2
- 字符设备驱动 2
- Linux 驱动开发-字符设备驱动
- 字符设备驱动 - linux驱动开发
- 【驱动】linux设备驱动·字符设备驱动开发
- Linux设备驱动开发详解-第6章字符设备驱动(二)-支持2个globalmem
- 《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
- 《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
- 《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
- Linux设备驱动开发详解-Note(13)--- 字符设备驱动(2)
- Linux字符设备驱动程序开发(2)-字符设备驱动模型分析
- Linux设备驱动开发详解--笔记6--字符设备驱动
- 线程池续
- 如何划分子网
- VI Package Manager与LABVIEW的连接问题小结
- 10.数值的整数次方(做第二遍时感觉仍有难度,第三次做就没有难度了)
- 数据结构—单链表—直接插入排序
- 驱动开发-字符设备2
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---nova的安装
- Spark组件之GraphX学习5--随机图生成和消息发送aggregateMessages以及mapreduce操作(含源码分析)
- 关于Ubuntu14.04 中文字体乱码问题
- mongodb 常用操作
- 欢迎使用CSDN-markdown编辑器
- 租房心经--教你如何租房子
- [NOI2004]郁闷的出纳员
- [剑指offer]整数中1出现的次数(从1到n整数中1出现的次数)