Linux 驱动程序
文章平均质量分 76
小飞鱼hubble
这个作者很懒,什么都没留下…
展开
-
LINUX中断机制与信号
LINUX中断机制与信号中断和异常 l 中 断(也称硬件中断)定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。分类 : 可屏蔽中断非可屏蔽中断来源: 间隔定时器和I/O l 异 常(也称软件中断)定义 :当指令执行时由 CPU控制单元 产生的,异常也称为“异步中断”是因为只有在 一条指令终止执行后C转载 2014-09-20 21:26:29 · 518 阅读 · 0 评论 -
Linux块设备驱动
块设备是与字符设备并列的概念,这两类设备在Linux中驱动的结构有较大差异,总体而言,块设备驱动比字符设备驱动要复杂得多,在I/O操作上表现出极大的不同,缓冲、I/O调度、请求队列等都是与块设备驱动相关的概念。本文将详细讲解Linux块设备驱动的编程方法。1.块设备的I/O操作特点字符设备与块设备I/O操作的不同如下:(1)块设备只能以块为单位接受输入转载 2015-08-04 10:55:09 · 465 阅读 · 0 评论 -
linux设备驱动中的并发控制
linux设备驱动中的并发控制并发控制的概念----并发指的是多个执行单元并行执行,而并发的执行单元对共享资源(硬件资源和----软件上的全局变量、静态变量等)的访问则很容易导致竞态。竞态发生的情况----对称多处理器(SMP)的多个CPU----单CPU内进程与抢占它的进程----中断(硬中断、软中断、Tasklet、底半部)与进程之间解决竞态问题的途径转载 2014-09-04 20:03:37 · 393 阅读 · 0 评论 -
理解驱动程序
驱动程序就是驱使硬件工作的程序,那么程序是如何驱使硬件工作呢?当然是操作CPU芯片内部提供的各模块控制器的控制寄存器,状态寄存器及数据寄存器,针对这些寄存器进行的读写操作就能够完全的控制硬件工作。对于只需要进行单任务循环的应用场合,就不需要使用操作系统。在没有操作系统的情况下,设备驱动的接口被直接提交给了应用软件工程师,应用软件没有跨越任何层次就直接访问了设备驱动的接口。驱动包含的接口函数也与原创 2015-05-14 15:10:20 · 1114 阅读 · 0 评论 -
Linux驱动程序之poll机制
使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行,所以我们的问题就集中到了如何编写设备驱动中的poll()函数就可以了。先来看看设备驱动中的poll()函数原型:unsigned int (*poll)(struct file *filp, struct poll_tab原创 2015-05-10 14:38:27 · 1544 阅读 · 0 评论 -
Linux设备访问机制
一.阻塞 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。通过读写函数中内嵌阻塞代码(信号量,等待队列)来实现不满足条件时的睡眠,等到满足条件了应用程序从睡眠中唤醒,继续下面的操作。 阻塞从字面上听起来似乎意味着低效率,实则不然,如果设备驱动不阻塞,则用原创 2014-09-05 17:24:01 · 485 阅读 · 0 评论 -
Linux内核空间和用户空间传递数据
通常情况下,应用程序通过内核接口访问驱动程序,因此,驱动程序需要和应用程序交换数据。Linux将存储器分为“内核空间”和“用户空间”。操作系统和驱动程序在内核空间运行,应用程序在用户空间运行,两者不能简单地使用指针传递数据。因为Linux系统使用了虚拟内存机制,用户空间的内存可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核提供了多个函数和宏用于内核空间和用户空间传转载 2014-09-13 12:55:47 · 2798 阅读 · 0 评论 -
Linux设备驱动模型
在Linux的设备驱动模型中,关心总线、设备和驱动这 3 个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的 Linux 设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SoC系统原创 2014-09-05 22:22:09 · 542 阅读 · 0 评论 -
Linux中断机制
一、中断上半部与底半部 所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。中断注册函数和中断注销函数:注册中断:int request_irq(unsigned int irq, irqreturn_t (* handler) (int, void* ,str原创 2014-09-19 21:12:46 · 453 阅读 · 0 评论 -
Linux内核与驱动面试要点
1. 实际经验:所开发驱动程序或内核模块的来龙去脉(需求、设计思想、实现方法、要点难点,特别是硬件调试过程中所遇到的特殊情况),所修复BUG的现象、调试手段、原因分析和解决方案。2. 驱动调试:内核的调试手段、应用程序的调试手段(内核Panic所dump的信息以及Panic的分析、应用程序core dump的分析)。3. 驱动基础:mknod与udev,module相关AP转载 2014-09-17 19:48:49 · 682 阅读 · 0 评论 -
linux 内存与I/O访问机制
内存与IO访问 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:(1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I转载 2014-09-05 15:24:50 · 705 阅读 · 0 评论 -
proc文件系统API
内核为创建proc文件提供了一套API,相关API如下:struct proc_dir_entry *proc_mkdir(constchar *name, struct proc_dir_entry *parent);该函数用于在proc文件系统中创建一个目录项,大多数时候,当我们期望实现自己的proc文件时,都要先创建一个自己的目录,然后在该目录里创建自己的文件,当然我转载 2015-09-14 11:23:51 · 843 阅读 · 0 评论