Linux驱动开发
gqb666
专注于嵌入式驱动开发u-boot Vxworks Linux kernel
展开
-
Linux驱动开发之主设备号找驱动,次设备号找设备
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8805179,作者:gqb666一、引言 最近成都地震令大家心神不宁,可能过了今天就没明天了,导致早打算写的东西现在才发出来。不禁感叹:在自然灾害面前,人是那么渺小,人面对自然灾害就好像脚下的蚂蚁面对人,人不经意间就能踩死一片蚂蚁,自然原创 2013-04-26 11:13:12 · 7146 阅读 · 11 评论 -
手把手教你把Vim改装成一个IDE编程环境(图文)
手把手教你把Vim改装成一个IDE编程环境(图文)By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有转载 2013-10-23 10:16:20 · 2654 阅读 · 0 评论 -
Linux Framebuffer驱动框架之二软件架构(未完待续)
/**********************************************************************************************************************************/ 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/d原创 2013-10-21 21:32:01 · 9219 阅读 · 4 评论 -
Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置
接博文《Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)》。上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原理。内核版本在2.6.26以前的Linux,kgdb是通过补丁安装的,过程非常复杂,而且问题比较多.Linux内核从 2.6.26开始已经在内部集成kgdb,只需要配置kgdb并重新编译2.6.26(或更高)原创 2013-06-20 23:49:13 · 10660 阅读 · 2 评论 -
手把手教你把Vim改装成一个IDE编程环境(图文) -- 续1
手把手教你把Vim改装成一个IDE编程环境(图文)By:吴垠Date:2007-12-27Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章转载 2013-10-23 10:18:12 · 1771 阅读 · 0 评论 -
LinuxI2C子系统之一实例化IC2设备(Client)的四种方法(一、二)
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8668670,作者:gqb666 最近的项目工作中需要调试维护I2C控制的视频采集设备驱动代码,于是花了些时间来研究I2C驱动框架,发现其复杂度不亚于ALSA-ASOC驱动框架(仅个人感觉,勿怪)!并打算将自己的研究心得记录下来,一是自己想看时翻译 2013-03-20 11:38:15 · 3693 阅读 · 1 评论 -
LinuxI2C子系统之一实例化IC2设备(Client)的四种方法(三、四)
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8698856,作者:gqb666终于翻译完了,有不准确的地方,还请大家多多指教。上接博文:LinuxI2C子系统之一实例化IC2设备(Client)的四种方法(一、二) 原文件位置:linux源码目录\Documentation\i2c\翻译 2013-03-22 14:00:19 · 4073 阅读 · 0 评论 -
Linux中断(interrupt)子系统之五:软件中断(softIRQ)
软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/*******************************************************************************转载 2013-07-11 14:51:45 · 1853 阅读 · 0 评论 -
Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理
一、基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都是由帧缓冲设备驱动本身来完成。对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示,下一小节重点讲解各种原创 2013-07-18 23:07:48 · 20171 阅读 · 1 评论 -
Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)
如何单步调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大、逻辑复杂、与硬件交互的特性。因此,有着不同于应用程序的调试方法,据统计Linux内核开发者使用最普遍的调试方法是printk方法,而其他的方法大多是在特殊情况下才会使用。本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置断点,原创 2013-06-18 18:27:00 · 17674 阅读 · 1 评论 -
Android/Linux驱动开发之使用dev_dbg调试设备驱动
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8789807,作者:gqb6661、最近在写I2C下EEPROM的驱动程序,但发现使用i2c_new_probed_device函数无法枚举到设备,于是想调试该函数(位于driver/i2c/i2c-core.c内),看到其中有些调试信息如下:原创 2013-04-12 08:57:36 · 7059 阅读 · 1 评论 -
Makefile之Linux内核模块的Makefile写法分析
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8771621,作者:gqb666 六一快乐,作为从小学开始关注鲁能的山东鲁能球迷,等着今天晚上与广州恒大的天王山对决。不过说实话,以恒大目前的实力及状态,其他球队想在天河赢球真的很困难,不论如何能踢得精彩就行了。 言归正传,前些原创 2013-06-01 10:31:10 · 9744 阅读 · 0 评论 -
TI-Davinci开发系列之六CCS5.2调试Linux内核
使用CCS5.2远程调试内核时,只需导入Linux内核源码,而不需要编译内核,也就不会用到交叉编译链,同时不需要使用gdbserver,但需要仿真器XDS560V2,所以Windows和Linux都可以完成,但考虑Windows CCS5.2软件成熟,bug较少,且Windows易于操作,故本文推荐并主要介绍Windows版CCS5.2调试内核的方法。在介绍远程调试Linux之前,务必保证仿真器X原创 2014-01-13 23:37:35 · 6379 阅读 · 1 评论 -
Linux内核启动及根文件系统加载过程
检测机器码类型是在汇编子函数__lookup_machine_type (同样在文件head-common.S实现) 中完成的。与__lookup_processor_type类似,通过代码:“bl __lookup_machine_type”来实现对它的调 用。该函数返回时,会将返回结构保存放在r5、r6 和r7三个寄存器中。其中r5寄存器返回一个用来描述机器(也就是开发板)的结构体地址原创 2014-05-25 14:12:13 · 29275 阅读 · 2 评论 -
u-boot之u-boot-2009.11启动过程分析
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8931775,作者:gqb666注:本文使用的u-boot源码版本为u-boot-2009.11 u-boot同其他bootloader一样,其启动过程分为stage1和stage2两个阶段, stage1主要完成基本硬件设备初始化原创 2013-05-15 19:36:41 · 5686 阅读 · 0 评论 -
ARM Linux内核驱动异常定位调试--反汇编arm-linux-objdump
ARM Linux内核驱动异常定位方法分析--反汇编方式原文链接:http://blog.csdn.net/hunhunzi/article/details/7052032最近在搞Atmel 的SAM9x25平台,Linux系统,用于工业设备。这也是我首次参与工业设备的研发。在调试Atmel SAM9x25的Linux串口设备的时候,发现无论是读还是写,都会产生异常。相关的异常信息如下转载 2013-12-31 18:27:24 · 9196 阅读 · 0 评论 -
Linux Kbuild工作原理分析(以DVSDK生成PowerVR显卡内核模块为例)
Linux内核是一种单体内核,但是通过动态加载模块的方式,使它的开发非常灵活方便。那么,它是如何编译内核的呢?我们可以通过分析它的Makefile入手。以下是一个简单的hello内核模块的Makefile.ifneq ($(KERNELRELEASE),)obj-m:=hello.oelseKERNELDIR:=/lib/modules/$(shell uname原创 2013-07-09 13:46:37 · 5662 阅读 · 0 评论 -
Linux内核文档翻译之Squashfs文件系统
对于使用openwrt的嵌入式系统来说,因为硬件绝大多数采用Flash,因此一般使用squashfs文件系统和jffs2文件系统。前者是只读的,后者是可写的。我们一般会把jffs2 mount到某个目录下。这样就存在某些目录如/bin是只读的(squashfs),某些目录是可读写的(jffs2),这样对文件的操作会依赖于文件系统的属性和文件的路径。 openwrt使用了mini翻译 2013-10-27 22:37:31 · 12679 阅读 · 0 评论 -
Android/Linux内核驱动相关经典书籍大合集(Linux驱动工程师必备)
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8790680,作者:gqb666 博主从事嵌入式Linux内核驱动开发工作,在工作学习中收集了一些Linux内核驱动开发相关的经典书籍,最近将这些经典书籍陆续以资源的形式传到了CSDN上,希望能给同行以帮助,但因为博主下载积分级别关系,还有些经典书原创 2013-04-12 09:04:25 · 8386 阅读 · 14 评论 -
Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc转载 2013-07-11 14:51:26 · 1708 阅读 · 0 评论 -
Linux中断(interrupt)子系统之一:中断系统基本原理
这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变。 /****************************************************转载 2013-07-11 14:50:15 · 1722 阅读 · 0 评论 -
Linux中断(interrupt)子系统之三:中断流控处理层
1. 中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同转载 2013-07-11 14:50:48 · 1747 阅读 · 0 评论 -
嵌入式系统硬件电路的各种接地方法总结
转载日志——电路中的地 转至电子发烧友一、地的分类工程师在设计电路时,为防止各种电路在电路正常工作中产生互相干扰,使之能相互兼容地有效工作。根据电路的性质,将电路中“零电位”———“地”分为不同的种类,比如按交直流分为直流地、交流地,按参考信号分为数字地(逻辑地)、模拟地,按功率分为信号地、功率地、电源地等,按与大地的连接方式分为系统地、机壳地(屏蔽地)、浮地。不同的接地方式在电路中应用转载 2013-05-14 12:38:41 · 3575 阅读 · 0 评论 -
Linux中断(interrupt)子系统之二:arch相关的硬件封装层
Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;转载 2013-07-11 14:50:38 · 1603 阅读 · 0 评论 -
自己的经验知识杂记
先cat /dev/fb0 >a.dat生成一个不就行了?以后就拿这个a.dat测试shell脚本中${#0}表示第0个参数的长度,也就是命令的长度,${#1}表示第一个参数的长度。举例:./sub_str.sh hello 2 3刚${#0}=12 ${#1}=5${#2}=1 ${#3}=1 内核态调试神器:valgrind内存使用检测,包括: –原创 2013-10-19 09:26:53 · 3454 阅读 · 4 评论 -
Linux内核基础-container_of
/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the type of the container struct this is embedded in.* @membe转载 2013-09-03 10:22:10 · 1199 阅读 · 0 评论