
Linux驱动开发
文章平均质量分 80
jsn_ze
这个作者很懒,什么都没留下…
展开
-
Android.mk
开头参考过:http://www.cnblogs.com/langlang/ hardware\led\led\Android.mkLOCAL_PATH := $(call my-dir){ 首先需要指定LOCAL_PATH变量,用于查找源文件 上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径}#Android转载 2016-12-30 16:57:06 · 338 阅读 · 0 评论 -
Linux 设备模型--- Kobject
Sysfs 文件系统:" sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel data stuctures,their attributes,and the linkages between them to userspace."让用户知转载 2016-12-10 21:27:39 · 253 阅读 · 0 评论 -
Linux设备驱动程序学习(19)-USB 驱动程序(四)
http://blog.chinaunix.net/uid-25002135-id-2974292.html原创 2016-12-10 21:14:58 · 193 阅读 · 0 评论 -
Linux设备模型(热插拔、mdev 与 firmware)
Linux设备驱动程序学习(15)-Linux设备模型(热插拔、mdev 与 firmware)热插拔http://blog.chinaunix.net/uid-25002135-id-2974295.html有 2 个不同角度来看待热插拔: 从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。 从用户角度看,热插拔是内核和用户空间之间,通过调用用户转载 2016-12-10 21:13:41 · 283 阅读 · 0 评论 -
Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡
http://blog.chinaunix.net/uid-25002135-id-3046990.html摘要: 本文介绍了FLASH相关理论知识,旨在更好地设计文件系统。首先从原理和特点两方面介绍两种架构SLC和MLC,进而介绍了NOR和NAND FLASH工作原理,读写擦除原理,编址方式,进而导出NOR和NAND FLASH区别。最后顺带简单介绍下SD卡。转载 2016-12-10 21:07:21 · 1783 阅读 · 0 评论 -
Linux驱动mmap内存映射2
http://blog.chinaunix.net/uid-25002135-id-3046986.htmlmmap作为struct file_operations的重要一个元素,mmap主要是实现物理内存到虚拟内存的映射关系,这样可以实现直接访问虚拟内存,而不用使用设备相关的read、write操作,mmap的基本过程是将文件映射到虚拟内存中。在之前的一篇博客中谈到了mmap实现文件转载 2016-12-10 21:05:16 · 289 阅读 · 0 评论 -
Linux驱动mmap内存映射
mmap在linux哪里?http://blog.youkuaiyun.com/chenshengfa/article/details/50519916 谢谢大侠什么是mmap?上图说了,mmap是操作这些设备的一种方法,所谓操作设备,比如IO端口(点亮一个LED)、LCD控制器、磁盘控制器,实际上就是往设备的物理地址读写数据。但是,由于应用程序不能直接操作设备硬件地址,所转载 2016-12-10 21:03:07 · 973 阅读 · 1 评论 -
linux 内核分析之list_head
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的转载 2016-11-30 12:22:35 · 514 阅读 · 0 评论 -
linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟
linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这节的内容说不上是驱动,只是写个代码让触摸屏能够工作,随便介绍一下时钟子系统(我不知道这样叫合不合适),仅次而已。xxxxxxxxxx转载 2016-02-26 16:11:10 · 461 阅读 · 0 评论 -
linux设备驱动归纳总结(十二):简单的数码相框
linux设备驱动归纳总结(十二):简单的数码相框xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx其实代码很简单,实现lcd驱动,使lcd能够显示图片,当按下按键后切换图片。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx转载 2016-02-26 16:10:12 · 283 阅读 · 0 评论 -
linux设备驱动归纳总结(十二):简单的数码相框
linux设备驱动归纳总结(十二):简单的数码相框xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx其实代码很简单,实现lcd驱动,使lcd能够显示图片,当按下按键后切换图片。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx转载 2016-02-26 15:32:12 · 305 阅读 · 0 评论 -
linux设备驱动归纳总结(十一):写个简单的看门狗驱动
linux设备驱动归纳总结(十一):写个简单的看门狗驱动来自:http://blog.chinaunix.net/uid-25014876-id-112879.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx设备驱动的归纳已经差不多了,趁着知识转载 2016-02-26 15:06:07 · 1612 阅读 · 0 评论 -
linux设备驱动归纳总结(十):1.udev&misc
linux设备驱动归纳总结(十):1.udev&misc来自:http://blog.chinaunix.net/uid-25014876-id-111839.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx不知不觉我的总结已经写得七七八八了,转载 2016-02-26 15:03:21 · 246 阅读 · 0 评论 -
深入理解l内核v4l2框架之video for linux 2(一)
在看了很多关于v4l2驱动的例程之后,想深入研究下linux内核的v4l2框架,顺便把这些记录下来,以备查用。Video for Linux 2http://blog.youkuaiyun.com/ramon1892/article/details/8443668 随着一些视频或者图像硬件的复杂化,V4L2驱动也越来越趋于复杂。许多硬件有多个IC,在/d转载 2016-12-07 10:58:11 · 501 阅读 · 0 评论 -
likely()与unlikely()函数的意义
看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句,最初不解其意,现在有所了解,所以也想介绍一下。likely() 与 unlikely()是内核(我看的是2.6.22.6版本,2.6的版本应该都有)中定义的两个宏。位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __builtin_e转载 2016-12-09 16:00:07 · 882 阅读 · 0 评论 -
workqueue简介
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlo转载 2016-12-16 10:14:42 · 181 阅读 · 0 评论 -
Linux 驱动开发头文件总结
asm.current.h 定义全局项current ,其指向结构体struct task_structlinux/sched.h 定义结构体task_struct ,只要包含此头文件即可引用当前进程linux/modules.h 定义含有可装载模块需要的大量符号和函数linux/init.h 定义初始化和清楚函数linux/errno.h原创 2016-12-30 09:28:26 · 574 阅读 · 0 评论 -
Qualcomm Camera
1. Clue :Qualcomm HAL -> mm-camera-interface -> kernelkernel mm-camera(qcamserv&ctrl)2. Threads : Qcamsvr thread / mctl thread / HAL thread3. HAL : CameraHardwareInterfaceC转载 2016-12-28 11:10:52 · 312 阅读 · 0 评论 -
USB描述符
开发无线键鼠有2年多了,一直对HID这东西一知半解。赶在新项目需要重新编写USB描述符部分,开始搜集资料,深入学习。 枚举可以理解为主机按不定的顺序向USB设备讨要设备信息,好给它分配资源,若枚举不成功,就放弃分配资源,免得浪费资源。一般都是使用中断传输方式通信。 常用的描述符有以下几种:01H、设备描述符 02H、配置描述符 03H、字符串描述符 04转载 2016-12-27 12:53:02 · 326 阅读 · 0 评论 -
USB命令(请求)和USB描述符
from: http://blog.chinaunix.net/uid-7480243-id-2104825.html一、USB命令 在USB规范里,对命令一词提供的单词为“Request”,但这里为了更好的理解主机与设备之间的主从关系,将它定义成“命令”。 所有的USB设备都要求对主机发给自己的控制命令作出响应,USB规范定义了11个标准命令,它们分别是:C转载 2016-12-27 12:36:12 · 328 阅读 · 0 评论 -
USB 描述符详细解析,来自老外网站,比协议描述清晰
Universal Serial BusThe Universal Serial Bus was first introduced in 1994 with the intention of replacing various specialized interfaces, and to simplify the configuration of communication dev转载 2016-12-25 20:36:10 · 2261 阅读 · 0 评论 -
MSB&LSB与Endianness
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]MSB&LSB与Endianness参考资料http://www.merriam-webster.com/dictionary/positional%20notationhttp://www.buczynski.com/Proteus/msblsb.html ht转载 2016-12-25 20:19:27 · 426 阅读 · 0 评论 -
什么是workqueue
1. 什么是workqueueLinux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.工作队列(workqueue)是另外一种将工作推后执行的形式.工转载 2016-12-15 20:06:27 · 276 阅读 · 0 评论 -
HDMI之TMDS
HDMI采用和DVI相同的传输原理——TMDS(Transition Minimized Differential signal),最小化传输差分信号。TMDS支持高达225MHz的传输速率,一个传输链路能满足高达2048*1536分辨率的电视信号。 TMDS传输系统分为分为两个部分:发送端和接收端。TMDS发送端收到HDMI接口传来的表示RGB信号的24位并行数据(TMDS对每个像转载 2016-12-16 11:38:27 · 5255 阅读 · 0 评论 -
HDMI之HDCP
HDCP(High-bandwidth Digital Content Protection),即高带宽数字内容保护技术。HDTV时代已经来临,为了适应高清电视的高带宽,出现了HDMI。HDMI是一种高清数字接口标准,它可以提供很高的带宽,无损地传输数字视频和音频信号。为了保证HDMI或者DVI传输的高清晰信号不会被非法录制,就出现了HDCP技术。HDCP技术规范由Intel领头完成,当用户对高清转载 2016-12-16 11:37:10 · 6224 阅读 · 0 评论 -
HDMI的接口类型
按照电气结构和物理形状的差别,HDMI接口可以分为TypeA、TypeB、TypeC三种类型,如下图所示,从左到右依次为A、B、C类型。三种类型的相同点: 1.都使用5V低电压驱动。 2.阻抗都是100欧姆。 3.都可以提供可靠的TMDS连接。各自的特点: 1.TypeA型 A型是标准的19针HD转载 2016-12-16 11:36:05 · 2113 阅读 · 2 评论 -
HDMI支持的视频显示格式
首先计算一下HDMI接口提供的数据率: HDMI1.3版本以前,时钟为165MHz,支持24色深,3个数据通道1个时钟通道,每通道传输10bit(8位颜色数据、2位控制数据)。则一个HDMI连接的数据率是:165MHz×10bit×3=4950Mbit=4.95Gbps(令进制约等于1000),此外再加上控制数据, 从HDMI1.3版本开始,时钟提高到340MHz,支持转载 2016-12-16 11:34:53 · 8100 阅读 · 0 评论 -
HDMI之概述
http://blog.sina.com.cn/s/blog_679686370100vdbh.html HDMI的全称是“High Definition Multimedea Interface”,即高清晰度多媒体接口。2002年4月,来自电子电器行业的7家公司——日立、松下、飞利浦、Silicon Image、索尼、汤姆逊、东芝,共同组建了HDMI接口组织——HDMI F转载 2016-12-16 11:07:01 · 361 阅读 · 0 评论 -
linux设备驱动归纳总结(九):1.platform总线的设备和驱动
linux设备驱动归纳总结(九):1.platform总线的设备和驱动xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这一节可以理解是第八章的延伸,从这节开始介绍platform设备驱动。xxxxxxxxxxxxxxxxxxxxxxxxxx转载 2016-02-26 14:46:03 · 1192 阅读 · 0 评论 -
linux设备驱动归纳总结(八):4.总线热插拔
linux设备驱动归纳总结(八):4.总线热插拔xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍设备管理中的分层思想和面向对象思想(名字是我自己瞎编的)。接下来说一下热插拔的操作。xxxxxxxxxxxxxxxxxxxxxxxxx转载 2016-02-26 14:09:47 · 253 阅读 · 0 评论 -
linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想http://blog.chinaunix.net/uid-25014876-id-110738.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx前面的内容介绍了总线、设备和转载 2016-02-26 14:01:52 · 303 阅读 · 0 评论 -
linux设备驱动归纳总结(三):7.异步通知fasync
linux设备驱动归纳总结(三):7.异步通知fasynchttp://blog.chinaunix.net/uid-25014876-id-62725.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用s转载 2016-02-25 12:41:57 · 328 阅读 · 0 评论 -
linux设备驱动归纳总结(三):6.poll和sellct
inux设备驱动归纳总结(三):6.poll和sellctxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx接下来会讲系统调用select在驱动中的实现,如果对系统调用select不太懂的话,建议先看书补习一下。xxxxxxxxxxxxxxx转载 2016-02-24 17:10:02 · 244 阅读 · 0 评论 -
linux设备驱动归纳总结(三):5.阻塞型IO实现
linux设备驱动归纳总结(三):5.阻塞型IO实现http://blog.chinaunix.net/uid-25014876-id-60025.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、休眠简介:转载 2016-02-24 16:46:57 · 221 阅读 · 0 评论 -
linux设备驱动归纳总结(三):4.ioctl的实现
linux设备驱动归纳总结(三):4.ioctl的实现http://blog.chinaunix.net/uid-25014876-id-59419.html一、ioctl的简介:虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数。如CD-ROM的驱动,想要一个弹出光驱的操作,这种操作并转载 2016-02-24 16:32:57 · 302 阅读 · 0 评论 -
linux设备驱动归纳总结(三):3面向对象思想和lseek
linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现http://blog.chinaunix.net/uid-25014876-id-59418.html一、结构体struct file和struct inode在之前写的函数,全部是定义了一些零散的全局变量。有没有办法整合成到一个结构体当中?这样的话,看起来和用起来都比较方转载 2016-02-24 16:00:59 · 295 阅读 · 0 评论 -
linux设备驱动归纳总结(三):2open.close.read.write
linux设备驱动归纳总结(三):2.字符型设备的操作open、close、read、writehttp://blog.chinaunix.net/uid-25014876-id-59417.html一、文件操作结构体file_operations继续上次没讲完的问题,文件操作结构体到底是什么东西,为什么我注册了设备之后什么现象都没有?可以验证文件操作结构体转载 2016-02-24 15:47:06 · 434 阅读 · 0 评论 -
linux设备驱动归纳总结(三):1字符型设备之设备申请
linux设备驱动归纳总结(三):1.字符型设备之设备申请来自:http://blog.chinaunix.net/uid-25014876-id-59416.html操作系统:Ubunru 10.04实验平台:S3C2440 + linux2.6.29内核注:在今后驱动程序的学习中经常需要查看内核源代码,建议大家新加一个内核目录,去掉一些与S3C2440平台无关的转载 2016-02-24 13:52:46 · 275 阅读 · 0 评论 -
linux设备驱动归纳总结(二):模块的相关基础概念
linux设备驱动归纳总结(二):模块的相关基础概念来之:http://blog.chinaunix.net/uid-25014876-id-59415.html系统平台:Ubuntu 10.04开发平台:S3C2440开发板xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx转载 2016-02-24 12:52:29 · 325 阅读 · 0 评论 -
linux设备驱动归纳总结(一):内核的相关基础概念
linux设备驱动归纳总结(一):内核的相关基础概念来之:http://blog.chinaunix.net/uid-25014876-id-59413.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一.lin转载 2016-02-24 11:10:25 · 266 阅读 · 0 评论