设备驱动开发前奏
来源:互联网 发布:淘宝用了优惠券退款吗 编辑:程序博客网 时间:2024/04/29 19:09
1.linux驱动分类
字符设备、块设备、网络设备
字符设备是一种按字节来访问的设备,字符驱动负责驱动字符设备。最小访问和写入的数据量为字节,通过文件方式完成对字符设备的访问。
块设备以块(通常是512字节或者512字节的倍数)为最小传输单位的设备,块设备不接受字节处理数据
网络接口设备可以是硬件设备:eth0;也可以是纯粹的软件设备(L0+loop),网络接口负责发送和接收数据。
总线分类法
USB总线,PCI总线,平台总线设备。
2.驱动学习方法3步
1.驱动程序模型
2.硬件操作实现
3.驱动程序测试
2.1.1分析范例代码
2.1.2制作思维导图
2.1.3自己编写代码
2.1.4驱动程序框架代码
2.1.5填充裸机驱动
3.硬件访问技术
3.1.访问流程
3.2.地址映射
3.3.寄存器的读写
3.1访问流程
驱动程序控制设备,主要是通过访问设备内的寄存器来达到控制的目的,因此我们讨论如何访问硬件,就成了如何访问这些寄存器,所以就可分为地址映射和读写寄存器。
3.2地址映射
裸机访问地址为物理地址,动态映射是指在驱动程序中采用ioremap函数将物理地址映射为虚拟地址
void *ioremap(physaddr,size)
参数:
physaddr:待映射的物理地址
size:映射的区域长度
返回值:映射后的虚拟地址
静态映射:是指linux系统根据用户事先指定的映射关系,在启动内核自动将物理地址映射为虚拟地址
在静态映射中,用户是通过map_desc结构来指明物理地址与虚拟地址的映射关系。
1.事先指定映射关系
struct map_desc{
unsigned long virture;//虚拟地址
unsigned long pfn;//物理地址
unsigned long length;//映射长度
unsigned int type;//映射的设备类型
};
pfn:利用__phys_to_pfn(物理地址)可以计算出物理地址所在的物理页帧号。
内核启动,在什么地方完成映射
寄存器
完成地址映射,就可以寄存器读写
unsigned ioread8(void *addr)
unsigned ioread16(void *addr)
unsigned ioread32(void *addr)
unsigned readb(address)
unsigned readw(address)
unsigned readl(address)
void iowrite8(u8 value, void *addr)
void iowrite16(u16 value, void *addr)
void iowrite32(u32 value, void *addr)
void writeb(unsigned value, address)
void writew(unsigned value, address)
void writel(unsigned value, address)
- 设备驱动开发前奏
- linux驱动开发前奏
- linux驱动开发前奏
- Linux驱动开发前奏
- 9.Linux驱动开发前奏(1)-驱动开发概述
- Linux 驱动开发前奏---驱动开发概述、硬件访问技术
- 嵌入式学习-驱动开发前奏-lesson1-内核模块相关知识
- 嵌入式学习-驱动开发前奏-lesson3-linux内核链表
- 9.Linux驱动开发前奏(2)-硬件访问技术
- Linux设备驱动开发
- PCI设备驱动开发
- PCI设备驱动开发
- PCI设备驱动开发
- PCI设备驱动开发
- PCI设备驱动开发
- PCI设备驱动开发
- PCI设备驱动开发
- 设备驱动开发 一
- Tomcat启动时出现java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.45\webapps\XXX doe
- Java中设置classpath、path、JAVA_HOME的作用
- applicationIconBadgeNumber
- Centos nginx负载均衡实现
- Kotlin开发Android笔记5:Anko for Android
- 设备驱动开发前奏
- PHP流程控制break和continue小练
- Jquery中.css()与.addClass()两种方法设置样式的区别
- MySQL批量SQL插入性能优化
- POJ2049——Finding Nemo
- 【编程之法】2.6 不改变正负数相对顺序的重新排列
- 2016.8.3 HTML标签marquee实现滚动效果
- 压缩感知重构算法之正交匹配追踪(OMP)
- mysql 建立多个索引,加快查询速度