嵌入式Linux驱动开发
深入嵌入式Linux底层驱动开发,u-boot,Linux Kernel,欢迎同行及同业共同交流学习。
gqb666
专注于嵌入式驱动开发u-boot Vxworks Linux kernel
展开
-
Linux内核启动及根文件系统加载过程
检测机器码类型是在汇编子函数__lookup_machine_type (同样在文件head-common.S实现) 中完成的。与__lookup_processor_type类似,通过代码:“bl __lookup_machine_type”来实现对它的调 用。该函数返回时,会将返回结构保存放在r5、r6 和r7三个寄存器中。其中r5寄存器返回一个用来描述机器(也就是开发板)的结构体地址原创 2014-05-25 14:12:13 · 29297 阅读 · 2 评论 -
TI-Davinci开发系列之八x-loader工作流程分析
DM3730仅集成了一个Nand Flash控制器,所以uboot镜像只能烧在Nand Flash上,通过Nand Flash启动,然而Nand Flash并不支持XIP(eXecute In Place,即芯片内执行)。所以针对Nand Flash的启动方式,一般在采用0x0地址挂载一个容量较小的SRAM(称为Steppingstone)。而且Nand Flash的第一页烧入的x-load,原创 2014-02-27 20:42:41 · 5142 阅读 · 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 · 6380 阅读 · 1 评论 -
用Buddy算法来改进uCos-ii内存管理方案
1 引言 内存管理是操作系统的中心任务之一,其主要任务是组织内存以容纳内核和待执行程序,跟踪当前内存的使用情况,在需要时为进程分配内存,使用完毕后释放并回收内存。目前嵌入式系统中常用的内存管理策略主要有两种—静态内存分配和动态内存分配。 静态内存分配—编译或链接时将将所需内存分配好,程序运行起来所分配的内存不释放。对于实时性和可靠性要求极高的系统,不允许延迟或者分配失原创 2013-11-29 09:35:17 · 5524 阅读 · 0 评论 -
Linux内核文档翻译之Squashfs文件系统
对于使用openwrt的嵌入式系统来说,因为硬件绝大多数采用Flash,因此一般使用squashfs文件系统和jffs2文件系统。前者是只读的,后者是可写的。我们一般会把jffs2 mount到某个目录下。这样就存在某些目录如/bin是只读的(squashfs),某些目录是可读写的(jffs2),这样对文件的操作会依赖于文件系统的属性和文件的路径。 openwrt使用了mini翻译 2013-10-27 22:37:31 · 12691 阅读 · 0 评论 -
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 · 5691 阅读 · 0 评论 -
Linux Framebuffer驱动框架之二软件架构(未完待续)
/**********************************************************************************************************************************/ 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/d原创 2013-10-21 21:32:01 · 9225 阅读 · 4 评论 -
Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理
一、基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都是由帧缓冲设备驱动本身来完成。对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示,下一小节重点讲解各种原创 2013-07-18 23:07:48 · 20177 阅读 · 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 · 4076 阅读 · 0 评论 -
LinuxI2C子系统之一实例化IC2设备(Client)的四种方法(一、二)
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8668670,作者:gqb666 最近的项目工作中需要调试维护I2C控制的视频采集设备驱动代码,于是花了些时间来研究I2C驱动框架,发现其复杂度不亚于ALSA-ASOC驱动框架(仅个人感觉,勿怪)!并打算将自己的研究心得记录下来,一是自己想看时翻译 2013-03-20 11:38:15 · 3697 阅读 · 1 评论 -
Makefile之Linux内核模块的Makefile写法分析
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8771621,作者:gqb666 六一快乐,作为从小学开始关注鲁能的山东鲁能球迷,等着今天晚上与广州恒大的天王山对决。不过说实话,以恒大目前的实力及状态,其他球队想在天河赢球真的很困难,不论如何能踢得精彩就行了。 言归正传,前些原创 2013-06-01 10:31:10 · 9744 阅读 · 0 评论 -
Arm-Linux根文件系统网络配置小结
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8802184,作者:gqb666 本文分三点来记录嵌入式Linux根文件的一些网络配置技巧:1、对开发板配置静态IP: 将根文件系统/etc/network/interface文件中auto eth0iface eth0 ine原创 2013-04-16 09:42:51 · 4293 阅读 · 0 评论 -
Linux驱动开发之主设备号找驱动,次设备号找设备
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8805179,作者:gqb666一、引言 最近成都地震令大家心神不宁,可能过了今天就没明天了,导致早打算写的东西现在才发出来。不禁感叹:在自然灾害面前,人是那么渺小,人面对自然灾害就好像脚下的蚂蚁面对人,人不经意间就能踩死一片蚂蚁,自然原创 2013-04-26 11:13:12 · 7151 阅读 · 11 评论 -
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 · 7062 阅读 · 1 评论 -
在ubuntu10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序)
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8260018 最近需要使用CCSV5使用gdbserver远程调试ARM cortex-a8的程序,移植成功gdbserve,使用的版本包是gdb-7.1,主机环境为ubuntu10.04,开发板挂载的nfs文件系统。CCSV5已经自原创 2012-12-05 15:00:14 · 4724 阅读 · 1 评论 -
Linux虚拟总线platform驱动框架之地址对齐省内存
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8351080,作者:gqb666 最近在学习Linux虚拟总线platform驱动框架,对其中为一字符串申请内存使用strlen时未加1有点疑惑,于是通过写几个demo把研究发现的心得,记录了下来,分享给大家,有理解不够准确的地方还请大家多原创 2012-12-20 18:52:35 · 2863 阅读 · 3 评论 -
关于CONFIG_LOCALVERSION_AUTO设置去掉内核版本号SVN后缀
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8444528,作者:gqb666最近在TI 的DVSDK下写驱动模块时老受linux内核svn版本号问题的困扰,如"2.6.37-svn41"、"2.6.37-svn51"等等,svn版本变一次,从上面取下的代码内核版本就要变一次,这样造成原来驱动模原创 2012-12-27 17:06:40 · 8059 阅读 · 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 · 5667 阅读 · 0 评论 -
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 · 10671 阅读 · 2 评论 -
Android/Linux内核驱动相关经典书籍大合集(Linux驱动工程师必备)
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8790680,作者:gqb666 博主从事嵌入式Linux内核驱动开发工作,在工作学习中收集了一些Linux内核驱动开发相关的经典书籍,最近将这些经典书籍陆续以资源的形式传到了CSDN上,希望能给同行以帮助,但因为博主下载积分级别关系,还有些经典书原创 2013-04-12 09:04:25 · 8390 阅读 · 14 评论 -
Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)
如何单步调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大、逻辑复杂、与硬件交互的特性。因此,有着不同于应用程序的调试方法,据统计Linux内核开发者使用最普遍的调试方法是printk方法,而其他的方法大多是在特殊情况下才会使用。本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置断点,原创 2013-06-18 18:27:00 · 17691 阅读 · 1 评论