自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (5)
  • 收藏
  • 关注

转载 linux内核中断内幕

么是中断Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。第一种方案会让内核做不少的无用功,因为

2014-10-19 08:19:47 685

原创 Linux设备驱动开发-linux驱动中的阻塞访问方式

阻塞与非阻塞是设备访问的两种不同的模式。什么是阻塞操作呢?其是指在执行设备操作的时候,如果不能获得资源,则挂起进程直到满足可操作的条件后再进行操作.而非阻塞操作则是在进程不能进行设备操作时,并不挂起到等待队列,而是放弃或者不断的查询,直到能够进行操作。应用程序以阻塞的方式进行read操作的时候,会调用一个system call,将系统的控制权交给kernel后就进入等待状态,等kernel

2014-07-13 15:12:59 614

转载 Linux下I2C接口触摸屏驱动分析

linux下触摸屏驱动的移植主要包括这几个步骤: (1)确定触摸屏IC接口,了解对应接口的API函数,注册设备并加入到相应总线上 (2)关联设备与驱动,并编写具体的驱动代码 (3)熟悉linux 输入设备驱动,在驱动代码中分配一个输入设备并初始化相应数据结构,在驱动实现中引用 这里对应上面几部分,分析I2C接口下触摸屏驱动的实现。先介绍linux下I2C接口与输入子系统架构,然后基于FT5x0x源

2014-07-13 15:07:51 754

转载 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 487

原创 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 2689

原创 repo git

Repo和Git 版本管理常用命令博客分类:Linuxrepogit转载一则:Git命令快速参考Git Command Quick Reference本附录为Git常见命令快速参考。每节介绍一种操作类型。这里会列出很多命令,而相应的解释却不多。对于还不熟悉Git的读者,可回头翻阅第1章“Git的版本控制之道”(第3页)。A.1安装和初始化

2013-12-09 13:25:21 846

转载 uboot环境变量

http://blog.csdn.net/ying_seven/article/details/6452779 看到这个标题,可能觉得这个并没有什么的,其实不然,编好了u-boot了,但是如何来使用确不是那么简单的,想当初我将uboot制作出来后以为全部都搞定了,屁颠屁颠的烧到板子上后可系统就是起不来,为什么了,折腾了很久以后才发现是u-boot的环境变量设置错误,在后来的工作中,我发现一

2013-11-29 10:39:50 481

转载 USB驱动之几个重要结构体分析

USB设备其实很复杂,但是Linux内核提供了一个称为USB core的子系统来处理了大部分的复杂工作,所以这里所描述的是驱动程序和USB core之间的接口。在USB设备组织结构中,从上到下分为设备(device)、配置(config)、接口(interface)和端点(endpoint)四个层次。对于这四个层次的简单描述如下:    设备通常具有一个或多个的配置    配置经常

2013-11-26 18:40:12 814

转载 [Android]adb网络调试模式

一直在为windows 7 64bit下面没有adb驱动而烦扰,前些天还被万恶的USB adb驱动给困扰,后来虽然东拼西凑的把adb驱动弄好了,不过万恶的也只能跑在虚拟机或者Linux下面,昨天把那台式机装了Ubuntu,但其配置过差,速度真的不尽人意。还好,今天一个偶然的机会看了adb的命令帮助,发现其可以使用adb connect连接上设备进行调试,既然走网络路线,那么就不用跟驱动打架了,

2013-11-26 18:38:24 2779

转载 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 2359

原创 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 629

转载 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 2401

转载 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 636

原创 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 848

原创 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 613

转载 ramdisk.img及boot.img的生成过程

http://blog.csdn.net/hnzzh1986/article/details/7056780ramdisk.imgramdisk.img是组成boot.img的重要部分,从Android/build/core/Makefile中可以看到ramdisk.img的生成该过程.    # the ramdisk    INTERNAL_RAMDISK_

2013-11-20 11:37:02 6425

转载 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 2329

原创 深入浅出Linux设备驱动之阻塞与非阻塞

深入浅出Linux设备驱动之阻塞与非阻塞阻塞与非阻塞阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。在Linux驱动程序中,我们可以使用等待队列(wait queue)来实现阻塞操作。wait queu

2013-10-18 12:11:03 521

原创 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 664

转载 SurfaceFlinger启动过程分析

转自:http://danielwood.cublog.cn转载时请注明出处和作者文章出处:http://danielwood.cublog.cn作者:Daniel Wood------------------------------------------------------------    以下将讲讲surfaceflinger的启动过程,可以结合启动过程

2013-10-15 10:43:56 500

转载 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 4819

转载 struct meminfo分析

Chipset:MSM8x25QCodebase:Android 4.1Linux Kernel: 3.4.0          在linux Kernel中,一开始内存相关的信息是由struct meminfo来保存的,每个物理连续的内存区域被保存为meminfo中的一个元素,也就是说在Linux使用中,整块物理内存可能是不连续的,可能其中某一中间区域是被其他cpu给使用掉了。

2013-10-10 15:57:08 547

转载 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 2121

转载 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 859

转载 ION-前传

chipset: MSM8X25Qcodebase: Android 4.1ION概念: ION是Google的下一代内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc), 虚拟地址连续但物理不连续内存(vmalloc), IOMMU等。用户空间和内核空间都可以使用ION,用户空间是通过/dev/ion来创建client的。

2013-10-09 15:27:04 1161

原创 LCD-驱动基础

基本原理       通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来;       驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LCD控制器;       驱动程序将显存的起始地址和

2013-09-27 14:41:24 739

原创 内核同步方法二

并发及其管理1、并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race condition)。 2、在设计自己的驱动程序时,第一个要记住的规则是,只要可能,就应该避免资源的共享。如果没有并发的访问,也就不会有竞态的产生。因此,仔细编写的内核代码应具有最少的共享。这种思想的最明

2013-09-22 10:57:56 774

转载 图文详解YUV420数据格式

http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.htmlhttp://blog.csdn.net/sfrysh/article/details/7501713http://www.ibm.com/developerworks/cn/linux/l-cn-cncrrc-mngd-wkq/

2013-09-18 19:10:59 647

原创 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 2044

原创 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 644

原创 I2C分析三

1 引言  IIC (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。笔者在开发基于MPC8250的嵌入式Linux系统的过程中发现I2C

2013-09-03 17:36:15 1263

转载 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 758

原创 内核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 560

转载 I2C分析一

一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而I2C是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可自行

2013-08-30 15:51:59 695

原创 android surfaceflinger研究----显示系统

一.  android显示系统的建立    我们看SurfaceFlinger的定义就知道,它其实是一个Thread, 因此SurfaceFlinger的初始化工作就理所当然的放在了SurfaceFlinger线程中,详见readyToRun()@SurfaceFlinger.cpp    SurfaceFlinger对于显示的管理是通过一个或多个GraphicPlane对象(目前andr

2013-08-30 10:30:39 580

原创 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 692

转载 tar.xz如何解压

XZ压缩最新压缩率之王xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数linux默认就带的一个压缩工具。 之前xz使用一直很少,所以几乎没有什么提起。 我是在下载phpmyadmin的时候看到这种压缩格式的,phpmyadmin压缩包xz格式的居然比7z还要小,这引起我的兴趣。 最新一段时间会经常听到xz被采用的声音,像是最新的archlinux某些东西就使用xz压缩

2013-08-26 13:44:40 674

原创 转android gralloc流程分析for msm8960

原文转载自http://blog.csdn.net/g_salamander/article/details/8424334增加了Gralloc模块的平台背景和功能概述部分。对原文针对msm8960 android display做了修正。增加了Surfaceflinger初始化FrameBufferNativeWindow的代码部分。平台中内存有ashmen、PMEM等多种内存类

2013-08-22 18:20:29 2701 3

转载 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 2564 1

转载 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 1310

门禁整个工程,含电路图,各模块代码

rc522射频芯片, stc11f32主控单片机,步进电机控制门

2012-04-22

Nrf24l01无线通信,代码

Nrf24l01无线通信,stc89c52单片机,串口显示收发数据,可直接使用

2012-04-22

1.8寸可调式电子时钟全部程序和电路图

用四块单1.8寸数码管分屏显示时钟,电子时钟,用74LS164驱动数码管,串行输入并行输出,可配合本工程下电路图,直接可以做出实物

2012-04-22

基于MCU的可调式电子时钟的电路图

基于MCU的可调式电子时钟的电路图,基于STC89C52主控单片机,数码管采用共阴方式,采用74HC573作为数码管驱动芯片。

2012-04-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除