- 博客(83)
- 资源 (5)
- 收藏
- 关注
转载 linux内核中断内幕
么是中断Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。第一种方案会让内核做不少的无用功,因为
2014-10-19 08:19:47
723
原创 Linux设备驱动开发-linux驱动中的阻塞访问方式
阻塞与非阻塞是设备访问的两种不同的模式。什么是阻塞操作呢?其是指在执行设备操作的时候,如果不能获得资源,则挂起进程直到满足可操作的条件后再进行操作.而非阻塞操作则是在进程不能进行设备操作时,并不挂起到等待队列,而是放弃或者不断的查询,直到能够进行操作。应用程序以阻塞的方式进行read操作的时候,会调用一个system call,将系统的控制权交给kernel后就进入等待状态,等kernel
2014-07-13 15:12:59
653
转载 Linux下I2C接口触摸屏驱动分析
linux下触摸屏驱动的移植主要包括这几个步骤: (1)确定触摸屏IC接口,了解对应接口的API函数,注册设备并加入到相应总线上 (2)关联设备与驱动,并编写具体的驱动代码 (3)熟悉linux 输入设备驱动,在驱动代码中分配一个输入设备并初始化相应数据结构,在驱动实现中引用 这里对应上面几部分,分析I2C接口下触摸屏驱动的实现。先介绍linux下I2C接口与输入子系统架构,然后基于FT5x0x源
2014-07-13 15:07:51
793
转载 Android.mk
文章参照:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译。因为所有的编译文件都在同一个 GNU MAKE 执行环境中进行执行,而Android.mk中所有的变量都是全局的。因此,您应尽量少声明变量,不要认为某些变量在解析过程中不会被定
2014-07-13 11:08:58
500
原创 MODULE_DEVICE_TABLE函数
在你的板子的linux内核有如下文件:/arch/arm/mach-xxxx/board_xxxx.c,该文件中,有struct i2c_board_info __initdata i2c_info,该结构体列表中,有你的这个 wifi driver的i2c信息,这两份信息,通过 wifi_rf_i2c_id 里面的 RDA_WIFI_RF_I2C_DEVNAME 名称来匹配,名称一致,则成功
2014-01-04 16:06:00
2765
原创 repo git
Repo和Git 版本管理常用命令博客分类:Linuxrepogit转载一则:Git命令快速参考Git Command Quick Reference本附录为Git常见命令快速参考。每节介绍一种操作类型。这里会列出很多命令,而相应的解释却不多。对于还不熟悉Git的读者,可回头翻阅第1章“Git的版本控制之道”(第3页)。A.1安装和初始化
2013-12-09 13:25:21
867
转载 uboot环境变量
http://blog.youkuaiyun.com/ying_seven/article/details/6452779 看到这个标题,可能觉得这个并没有什么的,其实不然,编好了u-boot了,但是如何来使用确不是那么简单的,想当初我将uboot制作出来后以为全部都搞定了,屁颠屁颠的烧到板子上后可系统就是起不来,为什么了,折腾了很久以后才发现是u-boot的环境变量设置错误,在后来的工作中,我发现一
2013-11-29 10:39:50
497
转载 USB驱动之几个重要结构体分析
USB设备其实很复杂,但是Linux内核提供了一个称为USB core的子系统来处理了大部分的复杂工作,所以这里所描述的是驱动程序和USB core之间的接口。在USB设备组织结构中,从上到下分为设备(device)、配置(config)、接口(interface)和端点(endpoint)四个层次。对于这四个层次的简单描述如下: 设备通常具有一个或多个的配置 配置经常
2013-11-26 18:40:12
873
转载 [Android]adb网络调试模式
一直在为windows 7 64bit下面没有adb驱动而烦扰,前些天还被万恶的USB adb驱动给困扰,后来虽然东拼西凑的把adb驱动弄好了,不过万恶的也只能跑在虚拟机或者Linux下面,昨天把那台式机装了Ubuntu,但其配置过差,速度真的不尽人意。还好,今天一个偶然的机会看了adb的命令帮助,发现其可以使用adb connect连接上设备进行调试,既然走网络路线,那么就不用跟驱动打架了,
2013-11-26 18:38:24
2822
转载 class_create,device_create ()详解
在驱动程序中初始化入口函数中,向内核注册一个设备后,往往要注册一个类例如static int __init mydriver_init(void) //驱动程序的初始化{ …… MYDRIVER_Major = register_chrdev(0, DEVICE_NAME, &mydriver_fops); //向内核注册一个设备,返回值为注册的主设备号
2013-11-26 18:35:26
2393
原创 Ubuntu12.04源列表
1、首先备份Ubuntu12.04源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表) 2、修改更新源sudo gedit /etc/apt/sources.list (打开Ubuntu 12.04源列表文件) 3、把里面的列表替换成下面的列表163源
2013-11-26 12:22:12
714
转载 ubuntu下安装andt出现error while loading shared libraries: libncurses.so.5: cannot open shared object file
案例:我在ubuntu下面安装配置android开发环境的时候,当我安装完ADT重启eclipse的时候,出现如下错误: /home/tiger/android-sdks/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No s
2013-11-26 12:20:47
2441
转载 Ubuntu12.04源列表
1、首先备份Ubuntu12.04源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表) 2、修改更新源sudo gedit /etc/apt/sources.list (打开Ubuntu 12.04源列表文件) 3、把里面的列表替换成下面的列表163源
2013-11-26 12:19:14
688
原创 Android文件系统创建-利用存在的ramdisk
1. 编译整个android 的souce code,在编译之后会生成 ramdisk.img, system.img, userdata.img 三个 image 文件。2. 解压 ramdisk.img : mv ramdisk.img ramdisk.gz mkdir out cd out && cpio -i -F ../ramdisk.gz
2013-11-20 12:39:15
863
原创 android文件系统的结构
以下内容转载1、android文件系统的结构android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到
2013-11-20 11:49:28
637
转载 ramdisk.img及boot.img的生成过程
http://blog.youkuaiyun.com/hnzzh1986/article/details/7056780ramdisk.imgramdisk.img是组成boot.img的重要部分,从Android/build/core/Makefile中可以看到ramdisk.img的生成该过程. # the ramdisk INTERNAL_RAMDISK_
2013-11-20 11:37:02
6479
转载 android kernel 与文件系统
android 系统上kernel与文件系统是打包到一块的。一般烧录文件的时候有kernel,system,userdata分区。 我们在编译之后,在out目录下生成了 如上图所示目录文件其中system分区如下所示:root分区如下所示:我们查看mk-ics.sh 在kernel编译的时候有这么一句make -j $JOBS uImage CONFIG
2013-11-20 10:25:12
2368
原创 深入浅出Linux设备驱动之阻塞与非阻塞
深入浅出Linux设备驱动之阻塞与非阻塞阻塞与非阻塞阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。在Linux驱动程序中,我们可以使用等待队列(wait queue)来实现阻塞操作。wait queu
2013-10-18 12:11:03
551
原创 android源码目录结构
|-- Makefile|-- bionic (bionic C库) |-- bootable (启动引导相关代码) 7 I' o) ~1 w+ C# D|-- build (存放系统编译规则及generic等基础开发包配置) . H- e# N+ I, t
2013-10-15 17:36:08
694
转载 SurfaceFlinger启动过程分析
转自:http://danielwood.cublog.cn转载时请注明出处和作者文章出处:http://danielwood.cublog.cn作者:Daniel Wood------------------------------------------------------------ 以下将讲讲surfaceflinger的启动过程,可以结合启动过程
2013-10-15 10:43:56
516
转载 workqueue-分析一
新work queue工作机制 工作队列(workqueue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。Linux的work queue在2.6.0 到2.6.19以及到2.6.36工作队列发生了一些变化。本文主要对新版本做一些分析。
2013-10-10 16:39:41
4918
转载 struct meminfo分析
Chipset:MSM8x25QCodebase:Android 4.1Linux Kernel: 3.4.0 在linux Kernel中,一开始内存相关的信息是由struct meminfo来保存的,每个物理连续的内存区域被保存为meminfo中的一个元素,也就是说在Linux使用中,整块物理内存可能是不连续的,可能其中某一中间区域是被其他cpu给使用掉了。
2013-10-10 15:57:08
576
转载 memory pool 原理及使用
chipset: msm8x25codebase: android4.1[html] view plaincopy一、 初始化: int __init memory_pool_init(void) { int i; alloc_root = RB_ROOT; mutex_init(&alloc_mutex);
2013-10-10 13:57:33
2190
转载 ION-中传
平台: MSM8x25Q系统: Android4.1从上一篇ION基本概念中,我们了解了heaptype, heap id, client, handle以及如何使用,本篇再从原理上分析下ION的运作流程。 MSM8x25Q平台使用的是board-qrd7627.c,ION相关定义如下:[html] view plaincopy/** *
2013-10-09 16:47:42
880
转载 ION-前传
chipset: MSM8X25Qcodebase: Android 4.1ION概念: ION是Google的下一代内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc), 虚拟地址连续但物理不连续内存(vmalloc), IOMMU等。用户空间和内核空间都可以使用ION,用户空间是通过/dev/ion来创建client的。
2013-10-09 15:27:04
1180
原创 LCD-驱动基础
基本原理 通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来; 驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LCD控制器; 驱动程序将显存的起始地址和
2013-09-27 14:41:24
756
原创 内核同步方法二
并发及其管理1、并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race condition)。 2、在设计自己的驱动程序时,第一个要记住的规则是,只要可能,就应该避免资源的共享。如果没有并发的访问,也就不会有竞态的产生。因此,仔细编写的内核代码应具有最少的共享。这种思想的最明
2013-09-22 10:57:56
795
转载 图文详解YUV420数据格式
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.htmlhttp://blog.youkuaiyun.com/sfrysh/article/details/7501713http://www.ibm.com/developerworks/cn/linux/l-cn-cncrrc-mngd-wkq/
2013-09-18 19:10:59
721
原创 getprop & setprop & watchprop
getprop 获取android系统属性在android系统中,它的根文件系统下有几个用于启动系统时需要的配置文件:/init.rc/default.prop/system/build.prop通常我们可以通过命令getprop获取,setprop设置。在使用这两个命令前,先看看build.prop里面到底有些什么东西:adb shell cat build.
2013-09-05 11:05:07
2063
原创 I2C分析四
Linux下i2c驱动的加载过程,分为i2c设备层、i2c adapter层与i2c核心层i2c设备驱动层也就是我们为特定i2c设备编写的驱动,下面是我自己理解的i2c驱动的注册过程在我们写的i2c设备驱动中,我们会调用i2c_add_driver()开始i2c设备驱动的注册,该函数调用i2c_register_driver完成所有注册操作static inline int i2c
2013-09-04 11:32:07
670
原创 I2C分析三
1 引言 IIC (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。笔者在开发基于MPC8250的嵌入式Linux系统的过程中发现I2C
2013-09-03 17:36:15
1303
转载 I2C分析二
2 I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。 2、I2C总线驱
2013-09-02 20:01:36
777
原创 内核LIST分析
由于经常对list里的函数使用不是很熟练,因此写此文作为备用和记录,也方便记不清怎么利用这些函数的同学的需要。1:list_for_each_entry()struct i2c_dev { struct list_head list; struct i2c_adapter *adap; struct device *dev;};struct i
2013-09-02 15:57:27
585
转载 I2C分析一
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而I2C是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可自行
2013-08-30 15:51:59
715
原创 android surfaceflinger研究----显示系统
一. android显示系统的建立 我们看SurfaceFlinger的定义就知道,它其实是一个Thread, 因此SurfaceFlinger的初始化工作就理所当然的放在了SurfaceFlinger线程中,详见readyToRun()@SurfaceFlinger.cpp SurfaceFlinger对于显示的管理是通过一个或多个GraphicPlane对象(目前andr
2013-08-30 10:30:39
594
原创 cdev函数
内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const st
2013-08-26 19:52:48
728
转载 tar.xz如何解压
XZ压缩最新压缩率之王xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数linux默认就带的一个压缩工具。 之前xz使用一直很少,所以几乎没有什么提起。 我是在下载phpmyadmin的时候看到这种压缩格式的,phpmyadmin压缩包xz格式的居然比7z还要小,这引起我的兴趣。 最新一段时间会经常听到xz被采用的声音,像是最新的archlinux某些东西就使用xz压缩
2013-08-26 13:44:40
687
原创 转android gralloc流程分析for msm8960
原文转载自http://blog.youkuaiyun.com/g_salamander/article/details/8424334增加了Gralloc模块的平台背景和功能概述部分。对原文针对msm8960 android display做了修正。增加了Surfaceflinger初始化FrameBufferNativeWindow的代码部分。平台中内存有ashmen、PMEM等多种内存类
2013-08-22 18:20:29
2744
转载 Android display架构分析-SW架构分析(1-8)
参考:Android display架构分析二-SW架构分析Android display架构分析三-Kernel Space Display架构介绍Android display架构分析四-msm_fb.c 函数和数据结构介绍高通Android平台下关于display部分的几个关键问题高通Qc FB驱动 以及 LCD调试过程Android中的Frame
2013-08-22 17:05:23
2608
转载 MSM MDP4驱动显示过程
记录了Qualcomm MSM8xxx MDP4上Overlay和Framebuffer显示过程,仅涉及驱动中部分,应用层参考Overlay HAL。Overlay设置和提交过程msmfb_overlay_set(struct fb_info *info, void __user *p)è mdp4_overlay_set(struct fb_info *info, struct md
2013-08-20 16:05:54
1339
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人