
linux驱动学习
blrk
这个作者很懒,什么都没留下…
展开
-
系统调用 -- mmap
mmap系统调用 作用:把文件内容映射到进程的虚拟内存空间 void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); prot: 映射区的保护方式, PROT_EXEC PROT_READ PROT_WRITE flags: MAP_SHARED 写回原创 2011-12-21 14:56:28 · 1282 阅读 · 0 评论 -
Linux s3c2410 DMA驱动开发
网上介绍LINUX下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几;近期zhaoyang因工作需要,花了几日时间开发了某设备在S3C2410处理器Linux下DMA通信的驱动程序,有感于刚接手时无资料借鉴的茫然,故写点介绍,期待能给有DMA开发任务的网友们一点帮助。 本文将包括如下内容: DMA驱动主要函数功能 驱动中关键技术分析 具体的DMA实例分析 申转载 2011-12-26 16:16:19 · 1117 阅读 · 0 评论 -
Linux设备模型 -- 总线、设备、驱动程序和类(机制理解)
文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。 提示:在学习这部分内容是一定要分析所有介绍的源代码,知道他们与上一部分内容(kobject、kset、attribute等等)的关系,最好要分析一个实际的“flatform device”设备,不然会只学到表象,到后面会不知所云的。 总线 总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连转载 2011-12-22 18:18:33 · 894 阅读 · 0 评论 -
linux共享中断的处理
Linux可以让多个设备共享一个中断号,而且共享同一中断的中断处理程序形成一个链表,内核对每个中断处理程序都要执行,那么,没有产生中断的设备本 该靠边站的,它的中断处理程序也被执行了?到底是怎么会事?实际上: 共享的处理程序与非共享的处理程序在注册和运行方式上比较相似,但差异主要有以下三处: * request_irq()的参数flags必须设置SA_SHIRQ标志转载 2011-12-22 17:52:50 · 1890 阅读 · 0 评论 -
linux2.6 总线设备驱动模型
总线设备驱动模型:其中的设备,驱动是什么关系?与真实的物理设备是如何对应的? 欢迎留言讨论。 总线由bus_type描述: struct bus_type my_bus_type = { .name = "my_bus", .match = my_match, // 当一个新设备或者驱动被添加到这个总线时,该方法被调用,用于判断指定的驱动程序与指定原创 2011-12-22 11:02:54 · 1124 阅读 · 0 评论 -
Linux设备模型--总线、驱动、设备、设备类 (相关结构介绍)
前面的文章分析设备模型中的最基础部分,下面就要更跨入现实,看看如何在这些基础之上构建整个设备驱动子系统。谈到设备驱动,总会涉及到三个概念:总线、驱动、设备。而在Linux中,为了便于用户管理一些功能不同但是使用方式却很接近的设备,开发者们定义了一个设备类的概念。 总线 ? structbus_type { constchar转载 2011-12-22 18:00:53 · 886 阅读 · 0 评论 -
platform总线
platform总线是linux2.6内核加入的一种虚拟总线。platform机制的本身使用并不复杂,由两部分组成:platform_device和platform_driver。 platform驱动与传统的设备驱动模型相比,优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性。 通过platform机制开发原创 2011-12-22 17:12:05 · 1030 阅读 · 0 评论 -
kobject和kset
kobject和kset实现了基本的面向对象管理机制,是构成linux2.6设备模型的核心结构。它与sysfs文件系统紧密相联,在内核中注册的每个kobject对象对应sysfs文件系统中的一个目录。 kset是kobject的集合,kobject只能包含属性(在sysfs中即为文件),kset可以包含目录(亦即kobject)。 linux2.6 引入了sysfs文件系统,与proc文件原创 2011-12-21 15:40:41 · 1024 阅读 · 0 评论 -
I/O端口与I/O内存
寄存器与ram的区别: 寄存器的操作有副作用(side effect),如有些状态寄存器,读取后便会自动清零。 X86:支持I/O空间,支持内存空间 ARM,MIPS,POWERPC:只支持内存空间 I/O端口:一个寄存器或内存位于I/O空间 I/O内存:一个寄存器或内存位于内存空间 I/O端口的操作: (1)申请 request_reg原创 2011-12-21 15:21:49 · 1232 阅读 · 0 评论 -
内核空间和用户空间,内核态和用户态,进程上下文和中断上下文
内核空间和用户空间 Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间)。因为每个进程可以转载 2011-12-29 11:33:47 · 1025 阅读 · 0 评论