在之前我们介绍了如何实现一个简单的字符设备驱动,并介绍了简单的open,close,read,write等驱动提供的基本功能。但是一个真正的设备驱动往往提供了比简单读写更高级的功能。这一篇我们就来介绍一些驱动动中使用的一些高级的操作的实现。
大部分驱动除了提供对设备的读写操作外,还需要提供对硬件控制的接口,比如查询一个framebuffer设备能提供多大的分辨率,读取一个RTC设备的时间,设...
分类:
系统相关 时间:
2015-07-24 16:16:22
阅读次数:
196
在之前我们介绍了如何实现一个简单的字符设备驱动,并介绍了简单的open,close,read,write等驱动提供的基本功能。但是一个真正的设备驱动往往提供了比简单读写更高级的功能。这一篇我们就来介绍一些驱动动中使用的一些高级的操作的实现。大部分驱动除了提供对设备的读写操作外,还需要提供对硬件控制的...
分类:
系统相关 时间:
2015-07-24 16:06:37
阅读次数:
148
语言无关类操作系统开源世界旅行手册鸟哥的Linux私房菜(简体)Linux 系统高级编程The Linux Command Line(中英文版)Linux 设备驱动(第三版)深入分析Linux内核源码UNIX TOOLBOXDocker中文指南Docker —— 从入门到实践FreeRADIUS新手...
分类:
其他好文 时间:
2015-07-22 17:50:53
阅读次数:
127
1.驱动概述和开发环境搭建
1.1驱动设备的作用
对设备驱动最通俗的解释就是“驱动硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮训、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。...
分类:
系统相关 时间:
2015-07-21 20:41:36
阅读次数:
747
亲爱的朋友,我这里有一组当然想和大家分享,假设有兴趣在这个过程中,可以加我QQ2059055336和我联系。课程章节分布:第一部分嵌入式C与数据结构篇(20讲)第二部分ARM裸机开发篇(43讲)第三部分Linux应用开发(28讲)第四部分Linux系统移植(5讲)第五部分Linux设备驱动(13讲)...
分类:
移动开发 时间:
2015-07-21 12:09:52
阅读次数:
188
一个设备驱动的主要任务有两个:
1. 存取设备的内存
2. 处理设备产生的中断对于第一个任务,UIO 核心实现了mmap()可以处理物理内存(physical memory),逻辑内存(logical memory),
虚拟内存(virtual memory)。UIO驱动的编写是就不需要再考虑这些繁琐的细节。第二个任务,对于设备中断的应答必须在内核空间进行。所以在内核空间有一小部分代码...
分类:
系统相关 时间:
2015-07-17 10:06:47
阅读次数:
402
一个设备驱动的主要任务有两个:
1. 存取设备的内存
2. 处理设备产生的中断对于第一个任务,UIO 核心实现了mmap()可以处理物理内存(physical memory),逻辑内存(logical memory),
虚拟内存(virtual memory)。UIO驱动的编写是就不需要再考虑这些繁琐的细节。第二个任务,对于设备中断的应答必须在内核空间进行。所以在内核空间有一小部分代码...
分类:
系统相关 时间:
2015-07-17 10:06:45
阅读次数:
226
【摘要】linux用户态的设备驱动开发:并不是所有的设备驱动程序都要在内核编写,有些情况下,在用户空间编写驱动程序能够更好地解决遇到的问题。本文对用户态驱动优缺点进行分析。1、用户空间驱动程序的优点1、可以和整个C库链接。2、在驱动中可以使用浮点数,在某些特殊的硬件中,可能需要使用浮点数,而linux内核并不提供浮点数的支持。如果能在用户态实现驱动,就可以轻松解决这一问题。
3、驱动问题不会导致整...
分类:
系统相关 时间:
2015-07-17 10:06:11
阅读次数:
904
在linux使用platform_driver_register() 注册 platform_driver 时, 需要在 platform_driver 的probe() 里面知道设备的中断号, 内存地址等资源。这些资源的描述信息存放在 resource 数据结构中, 相同的资源存放在一个树形树形数据结构中, 通过父节点, 兄弟节点, 子节点相连。 比如中断资源, IO端口资源, IO内存资源,...
分类:
系统相关 时间:
2015-07-17 10:03:50
阅读次数:
266
在目录的 Makefile 中关于 RTC_DRV_S3C 的编译脚本为: obj -$(CONFIG_RTC_DRV_S3C) += rtc-s3c.o 上述脚本意味着如果 RTC_DRV_S3C 配置选项被选择为“Y” 或“M”,即 obj-$(CONFIG_RTC_ DRV_S3C)等同于 o...
分类:
系统相关 时间:
2015-07-13 18:30:27
阅读次数:
184