Linux 驱动开发进阶
文章平均质量分 89
zqixiao_09
这个作者很懒,什么都没留下…
展开
-
Linux 设备驱动中的 I/O模型(一)—— 阻塞和非阻塞I/O
在前面学习网络编程时,曾经学过I/O模型原创 2016-03-15 21:04:05 · 5354 阅读 · 1 评论 -
Linux USB 驱动开发(三)—— 编写USB 驱动程序
Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。一、usb-skeleton 下面先看一下Linux内核源码中的一个usb-skeleton(就是usb驱动的骨架咯),其定义的设备结构体就叫做usb-skel:s原创 2016-03-26 15:10:13 · 26617 阅读 · 2 评论 -
Linux USB 驱动开发(二)—— USB 驱动几个重要数据结构
前面我们学习了USB 驱动的一个描述符,下面来学习 USB 驱动的几个重要数据结构一、struct usb_interface 接口函数struct usb_interface{ struct usb_host_interface *altsetting; struct usb_host_interface *cur_a原创 2016-03-26 15:03:27 · 8223 阅读 · 0 评论 -
Linux 设备驱动开发思想 —— 驱动分层与驱动分离
前面我们学习I2C、USB、SD驱动时,有没有发现一个共性,就是在驱动开发时,每个驱动都分层三部分,由上到下分别是:1、XXX 设备驱动2、XXX 核心层3、XXX 主机控制器驱动 而需要我们编写的主要是设备驱动部分,主机控制器驱动部分也有少量编写,二者进行交互主要时由核心层提供的接口来实现;这样结构清晰,大大地有利于我们的驱动开发,这其中就是利用了Linux设备驱动开发原创 2016-04-07 20:11:37 · 14456 阅读 · 0 评论 -
Exynos4412 中断处理流程详解
Linux 中,当外设触发中断后,大体处理流程如下:a -- 具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler;b -- machine driver对应的中断处理handler中会根据硬件的信息获取HW interrupt ID,并且通过irq domain模块翻译成IRQ number;c -- 调用该原创 2016-03-19 00:36:03 · 9257 阅读 · 0 评论 -
Linux 设备驱动开发 —— platform设备驱动应用实例解析
前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 —— platform 设备驱动 ,下面将通过一个实例来深入我们的学习。 一、platform 驱动的工作过程 platform模型驱动编程,需要实现platform_device(设备)与platform_driver(驱动)在platform(虚拟总线)上的注册、匹配,相互绑定,然后原创 2016-03-14 19:27:40 · 45528 阅读 · 25 评论 -
Linux 驱动面试题总结
1、 Linux设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。 块设备:和字符设备类似,原创 2016-03-20 20:51:11 · 23855 阅读 · 3 评论 -
Exynos4412 中断驱动开发相关问题总结
1、Linux 中如何标识一个外部中断? 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断:a -- IRQ number CPU需要为每一个外设中断编号,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。b -- HW interrupt ID原创 2016-03-18 21:43:41 · 2833 阅读 · 0 评论 -
Exynos4412 IIC 总线驱动开发相关问题总结
一 、问题1、IIC总线上的设备是怎么描述的?struct i2c_client{struct device dev;...};2、IIC总线上的驱动是怎么描述的?struct i2c_driver{struct device_driver driver;};3、IIC总线上的设备和驱动是怎么匹配的1)、对于 Cortex - A原创 2016-03-18 20:58:30 · 3409 阅读 · 0 评论 -
Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发
前面在Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析 中学习了IIC驱动的架构,下面进入我们的驱动开发过程, 首先看一张代码层次图,有助于我们的理解 上面这些代码的展示是告诉我们:linux内核和芯片提供商为我们的的驱动程序提供了 i2c驱动的框架,以及框架底层与硬件相关的代码的实现。 剩下的就是针对挂原创 2016-03-17 22:15:31 · 8714 阅读 · 4 评论 -
Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 —— IIC总线 ,下面回顾下 IIC 基础概念一、IIC 基础概念IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态原创 2016-03-17 20:45:18 · 15687 阅读 · 5 评论 -
Exynos4412 ADC 设备驱动开发
具体ADC硬件知识及裸机驱动请看: Exynos4412裸机开发 —— A/D转换器1、原理图如下:2、相关寄存器信息ADC_BASE 0x126C0000ADCCON 0x0000 1ADCDLY 0x0008 ADCDAT 0x000C原创 2016-03-17 20:35:56 · 7488 阅读 · 4 评论 -
Linux 设备驱动开发 —— 设备树在platform设备驱动中的使用
关与设备树的概念,我们在Exynos4412 内核移植(六)—— 设备树解析 里面已经学习过,下面看一下设备树在设备驱动开发中起到的作用 Device Tree是一种描述硬件的数据结构,设备树源(Device Tree Source)文件(以.dts结尾)就是用来描述目标板硬件信息的。Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本原创 2016-03-14 20:47:15 · 29222 阅读 · 9 评论 -
Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程
一、中断基础概念 所谓中断,指CPU在执行程序的过程中,出现了某些突发事件即待处理,CPU必须暂停当前的程序。转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。1、中断分类a -- 内部中断和外部中断 根据中断的的来源,中断可以分为内部中断和外部中断:内部中断,其中断源来自CPU内部(软件中断指令、溢出、除法错误等),例如,操作系统从原创 2016-03-16 20:45:31 · 7971 阅读 · 2 评论 -
Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
提到中断就必须了解到GIC,下面先了解一下GIC一、GIC概念 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器。GIC通过AMBA(Advanced Microcontroller Bus Architecture)这样的片上总线连接到一个或者多个ARM processor上。 下面是Exynos44原创 2016-03-17 19:10:38 · 13747 阅读 · 6 评论 -
Exynos4412 中断驱动开发(二)—— 中断处理流程分析
前面已经学习了中断的注册过程,下面由一张流程图来看一下当中断发生时的处理流程:中断发生之后处理流程a -- 具体的CPU architecture相关模块进行现场保护,然后调用machine driver执行对应的中断处理handler;b -- machine driver对应中断处理handler会根据硬件的信息获取HW interrupt id,然后通过irq原创 2016-03-16 21:58:56 · 4706 阅读 · 0 评论 -
Linux 设备驱动中的 I/O模型(二)—— 异步通知和异步I/O
阻塞和非阻塞访问、poll() 函数提供了较多地解决设备访问的机制,但是如果有了异步通知整套机制就更加完善了。 异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一原创 2016-03-16 19:54:06 · 2448 阅读 · 0 评论 -
Linux 设备驱动的并发控制
Linux 设备驱动中必须要解决的一个问题是多个进程对共享的资源的并发访问,并发的访问会导致竞态,即使是经验丰富的驱动工程师也常常设计出包含并发问题bug 的驱动程序。一、基础概念1、Linux 并发相关基础概念a -- 并发(concurrency) 并发指的是多个执行单元同时、并发被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访原创 2016-03-15 19:26:31 · 5978 阅读 · 2 评论 -
Linux 下wifi 驱动开发(一)—— WiFi基础知识解析
一、WiFi相关基础概念1、什么是wifi 我们看一下百度百科是如何定义的: Wi-Fi是一种可以将个人电脑、手持设备(如pad、手机)等终端以无线方式互相连接的技术,事实上它是一个高频无线电信号。[1] 无线保真是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有。目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性。有人把使用IEEE 802.原创 2016-04-09 19:09:28 · 56842 阅读 · 7 评论