自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 资源 (78)
  • 收藏
  • 关注

转载 FAT32文件系统详细介绍

<br />通过使用DiskEditor对硬盘的分析,现对硬盘的MBR区及FAT32文件系统做一个详细的介绍。<br /> <br />新硬盘->低格后         变化:所有扇区中的字节数据填充为0x00<br />低格后->分区后         变化:写硬盘的MBR(主引导扇区)区<br />分区后->格式华         变化:写硬盘的FAT(文件分配表)区<br /> <br />MBR区介绍:<br />       起始位置:0柱面0磁头1扇区(硬盘的第一个扇区)<br />      

2011-04-09 09:46:00 1651

转载 高手进阶 Linux系统下MTD/CFI驱动介绍

<br /> 高手进阶 Linux系统下MTD/CFI驱动介绍<br />某些Intel的FLASH芯片(如StrataFlash系列)支持多分区,也就是各个分区可以同时进行操作。应该说这是不错的特性,但是也会带来些问题。记得当初移植Linux-2.4.21,挂JFFS2文件系统的时候,经常会报一些"Magic bitmask not found"之类的错误,跟进去发现FLASH读出来的都是些0x80之类的数据,查看资料发现该款FLASH有分区的特性,而Linux的FLASH驱动只用一个状态变量表示整个FL

2011-04-09 09:44:00 788

转载 framebuffer驱动全篇

<br />framebuffer驱动全篇<br />   <br />在后续的几篇里面会详细介绍如何编写一个显卡的驱动程序。<br />framebuffer device在内核里面作为显卡驱动模型,许多函数和数据结构都是特定,正是这些特定的东西为我们的编程提供了方便。<br />要开发frame buffer device驱动,你应该阅读Source/Source/Documentation/fb下面的说明文件,三个重要文件00-INDEX,framebuffer.txt,internals.txt,其

2011-04-09 09:33:00 1003

转载 Linux lcd 帧缓冲驱动详解

<br />Linux lcd 帧缓冲驱动详解<br />(1)Linux的帧缓冲设备(Framebuffer)简介<br />帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。<br />帧缓冲驱动的应用广泛,在linux的桌面系统中,Xwindow服务器就是利用帧缓冲进行窗口的

2011-04-08 11:11:00 1423

转载 Linux I2C核心、总线与设备驱动

第十五章  Linux I2C核心、总线与设备驱动 本章导读 I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。 Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。这3部分相互协作,形成了非常通用、可适应性很强的I2C框架。 本章第1节将对Linux

2011-04-08 11:08:00 657

转载 linux设备模型深探

linux设备模型深探 一:前言 Linux设备模型是一个极其复杂的结构体系,在编写驱动程序的时候,通常不会用到这方面的东西,但是。理解这部份内容,对于我们理解linux设备驱动的结构是大有裨益的。我们不但可以在编写程序程序的时候知其然,亦知其所以然。又可以学习到一种极其精致的架构设计方法。由于之前已经详细分析了sysfs文件系统。所以本节的讨论主要集中在设备模型的底层实现上。上层的接口,如pci.,usb ,网络设备都可以看成是底层的封装。 二:kobject ,kset和ktype Kobjec

2011-04-08 11:01:00 505

转载 Linux那些事儿之我是Sysfs

Linux那些事儿之我是Sysfs "sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel data structures, their attributes, and the linkages between them to userspace.” --- documentation/filesystems/sysfs.txt 可以先把documentation/f

2011-04-08 10:59:00 778

转载 Linux设备模型(底层原理简介)

Linux设备模型(底层原理简介) 以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LDD3》上有教程,有时还要自己研究它的子系统构架,甚至要自己添加一个新的总线类型。 对于这方面的学习,我推荐几个网页,这些也是我这部分

2011-04-08 10:52:00 628

转载 Linux-2.6.20的LCD驱动分析

Linux-2.6.20的LCD驱动分析 一、让LCD显示可爱的小企鹅 1. 添加s3c2410处理器的LCD控制寄存器的初始值,具体做法为在文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加struct s3c2410fb_mach_info类型的寄存器描述讯息,如下所示: static struct s3c2410fb_mach_info smdk2410_lcd_platdata = {     .fixed_syncs=0,     .type = S3C

2011-04-08 10:51:00 515

转载 linux下I2C驱动

linux下I2C驱动(-) by good02xaut 最近的一段时间,总结一下linux下开发I2C设备驱动的要点。内容随想,没有多加整理。 I2C协议规定了主机和从机的概念,在驱动中采用的多是适配器(主机)和设备(从机)。 首先,i2c规定 Bus    -> Algorithm  算法                Adapter   适配器   Device -> Driver             Client          从机设备 1。适配器是不是设备?

2011-04-08 10:42:00 2699

转载 linux spi子系统驱动分析

linux spi子系统驱动分析 2.6.18内核下已经添加了完整的spi子系统了,参考mtd的分析,将从下到上层,再从上到下层的对其进行分析。 以下先从下到上的进行分析: driver/spi下有两个底层相关的spi驱动程序: spi_s3c24xx.c和spi_s3c24xx_gpio.c 其中spi_s3c24xx.c是基于s3c24xx下相应的spi接口的驱动程序,spi_s3c24xx_gpio.c允许用户指定3个gpio口,分别充当spi_clk、spi_mosi和spi_miso接口

2011-04-08 10:41:00 593

转载 内核等待队列机制原理分析

内核等待队列机制原理分析 1. 等待队列数据结构 等待队列由双向链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue head),等待队列头是一个类型为wait_queque_head_t的数据结构: struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t;

2011-04-08 10:39:00 711

转载 Linux内核访问外设I/O资源的方式

Linux内核访问外设I/O资源的方式 我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。 Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。 一、动态映射(ioremap)方式 动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的ioremap函数动态创建一段外设I/O内存资源到内核虚拟地址的映射表,

2011-04-08 10:38:00 448

转载 Select函数实现原理分析

Select函数实现原理分析 select需要驱动程序的支持,驱动程序实现fops内的poll函数。select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用(如可读或写),如果有的话则返回可用资源的文件描述符个数,没有的话则睡眠,等待有资源变为可用时再被唤醒继续执行。 下面我们分两个过程来分析select: 1. select的睡眠过程 支持阻塞操作的设备驱动通常会实现一组自身的等待队列如读/写等待队列用于支持上层(用户层)所需的BLOCK或NONBLOCK操作。当应用程序通过

2011-04-08 10:37:00 480

转载 Linux tasklet 分析笔记

Linux tasklet 分析笔记     Chapter 1: 驱动程序在初始化时,通过函数task_init建立一个tasklet,然后调用函数tasklet_schedule将这个tasklet放在 tasklet_vec链表的头部,并唤醒后台线程ksoftirqd。当后台线程ksoftirqd运行调用__do_softirq时,会执行在中断向量表softirq_vec里中断号TASKLET_SOFTIRQ对应的tasklet_action函数,然后tasklet_action遍历 taskle

2011-04-08 10:36:00 614

转载 Linux Platform Device and Driver

Linux Platform Device and Driver 从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platfo

2011-04-08 10:35:00 389

转载 Linux USB设备驱动框架分析

Linux USB设备驱动框架分析 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。由于Linux的内核用c来编写,所以我们也按照这种结构化的思想来分析代码,但我还是希望从OO的角度来阐述这些细节。这个结构体的名字有驱动开发人员决定,比如说,鼠标可能有一个叫做mouse_dev的struct,键盘可能由一个keyboard_dev的stru

2011-04-08 10:33:00 579

转载 Request_irq和setup_irq的区别

Request_irq和setup_irq的区别 Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。 /* * Internal function to register an irqaction - typically used to * allocate special interrupts that are part of the architecture. */ int setup_i

2011-04-08 10:29:00 446

转载 Kernel中断处理模型

Kernel中断处理模型 Kernel中断处理模型 内核版本: Linux 2.6.18_pro500 (Montavista) Kernel中断处理模型结构图如下:

2011-04-08 10:28:00 507

转载 深入分析request_irq的dev_id参数作用

深入分析request_irq的dev_id参数作用 注:若对kernel中断处理模型不是很清楚的话(如:irqaction的作用)可以先参考一下这篇文档: http://blog.chinaunix.net/u2/60011/showart.php?id=1079281 这里主要讲request_irq的参数dev_id的作用,内容会涉及到少许上面文档提到的内容。 Request_irq的作用是申请使用IRQ并注册中断处理程序。 request_irq()函数的原型如下: /* kerne

2011-04-08 10:27:00 464

转载 udev详解

udev详解 如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是文本要提到的udev

2011-04-08 10:26:00 670

转载 Linux I2C 驱动分析

转:Linux I2C 驱动分析 最近在看Linux 2.6.21内核的I2C驱动,也在网上查了一下资料,有错也有对,有些心得,记录下来吧。里面认识或许多有不当之处,还恳请指正。 1. I2C 协议 1.1  I2C总线工作原理       I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定) 1.2  I2C总线的几种信号状态       1.  空闲状态:SDA

2011-04-08 10:24:00 451

转载 platform _device和platform_driver注册过程

platform _device和platform_driver注册过程 platform_device_register()注册过程 /* arch/arm/mach-s3c2410/mach-smdk2410.c */ struct platform_device s3c_device_i2c = { .name = "s3c2410-i2c", .id = -1, .num_resources = ARRAY_SIZE(s3c_i2c_resource), .resource = s3c

2011-04-08 10:23:00 531

转载 分析kernel的initcall函数

分析kernel的initcall函数 先来看看这些initcall函数的声明: /* include/linux/init.h */ /* initcalls are now grouped by functionality into separate * subsections. Ordering inside the subsections is determined * by link order. * For backwards compatibility, initcall()

2011-04-08 10:23:00 506

转载 嵌入式Linux内核时钟初始化问题

嵌入式Linux内核时钟初始化问题 首先搞清楚RTC在kernel内的作用: linux系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时钟是要读取RTC时间来进行时间同步。并且在系统关机的时候

2011-04-08 10:19:00 791

转载 Kernel硬件中断的初始化流程

Kernel硬件中断的初始化流程 Porting kernel到一个全新的开发板时,通常hardware irq的初始化函数是要我们自己实现的。 那我们实现了自己硬件的中断初始化函数之后,内核是如何调用到它的呢?内核有自己的一套支持多平台的架构。 下面我们分析内核中断初始化的过程以及如何调用到一个新平台的irq初始化函数。 这里我们以s3c2410平台为例,他的中断初始化函数定义在: /* arch/arm/mach-s3c2410/irq.c */ void __init s3c24xx

2011-04-08 10:17:00 830

转载 struct resource 解析

/usr/src/linux-2.6.21.5/include/linux/ioport.h struct resource {     resource_size_t start;     resource_size_t end;     const char      *name;     unsigned long   flags;     struct resource *parent, *sibling, *child; }; struct resou

2011-04-08 10:16:00 3784

转载 how the Android IPC system works

<br />I will use call IAudioFlinger::setMode API as a sample scenario to show how the Android IPC <br />system works. AudioFlinger is a service in the media_server program <br />Service Manager Run<br />service_manager provide service manager service to ot

2011-03-31 15:02:00 803

转载 how the Android IPC system works

<br />I will use call IAudioFlinger::setMode API as a sample scenario to show how the Android IPC <br />system works. AudioFlinger is a service in the media_server program <br />Service Manager Run<br />service_manager provide service manager service to ot

2011-03-31 14:58:00 850

转载 使用GIT协同开发手册

使用GIT协同开发手册 v1.0 1. 下载git工程... 2 2. 同步git工程... 2 3. 导出要开发的基线源码... 3 4. 创建要开发的本地分支... 3 5. 切换到本地分支... 3 6. 修改源码... 4 7. 提交修改到本地分支... 4 8. 将本地分支提交到服务器... 4 由于目前工程需要同时开发多个功能,本文档希望能规范一些步骤来方便项目内各开发人员协同开发,提高项目开发效率。 每个负责开发功能的人员,需要向各自项目负责人索取一个项目开发基线版本(例如

2011-03-31 10:56:00 1241

转载 Git版本管理工具中文教程连载

Git版本管理工具中文教程连载1 Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的。 Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracin

2011-03-31 10:55:00 784

转载 GIT 入门

1. 安装 # apt-get install git git-core 2. 客户端使用 2.1. 导出版本 2.1.1. 获取一个版本 1.5版本 # git-clone ssh://172.16.10.210/usr/local/src/share/chui/android/git/mydroid_1.5 1.0版本 # git-clone ssh://172.16.10.210/usr/local/src/share/chui/android/git/cupcake 或 # gi

2011-03-31 10:54:00 1031

转载 菜鸟系列之一:在ubuntu linux下搭建android开发

菜鸟系列之一:在ubuntu linux下搭建android开发... 1 第一步:激活root用户... 1 第二步:设置网络确保可以上网... 1 一..若有DHCP服务器则默认可以上网;... 2 二..如果没有DHCP服务器则手动设置IP地址;... 2 (1)要为网卡配置静态IP地址... 2 (2)配置主机名... 2 (3)配置DNS服务器... 3 第三步:下载Android源代码... 3 方法一:直接下载... 3 方法二:从网络下载... 4 1.安装 git工具

2011-03-31 10:53:00 2256

转载 PVAuthor开发指南

目 录 1 引言.... 4 2 架构概述.... 4 2.1 PVAuthor架构... 4 2.2 整体顺序图... 5 3 PVAuthor状态机.... 6 4 创建和打开会话.... 6 5 数据源.... 6 5.1 创建和增加数据源... 6 5.2 数据源配置... 7 6 文件格式组成.... 7 6.1 composer选择... 7 6.2 composer配置... 8 6.2.1 3GPP 和 MPEG4 composer. 8 6.2.2 AMR 和

2011-03-31 10:52:00 550

转载 制作Android Root Ramdisk

制作Android Root Ramdisk 概 述 制作Android的Root Ramdisk,供linux挂载并运行 目 录 1. Android Root Ramdisk介绍... 3 2. Android Root Ramdisk的开发环境... 3 3. 制作Android Root Ramdisk.. 4 4. 使用Android Root Ramdisk 前提... 4 5. 现存的问题... 4 1. Android Root Ramdisk介绍

2011-03-31 10:42:00 1137

转载 活用Android的Message Queue

活用Android的Message Queue(1/3) 1. Message Queue的角色 l 在你的Android程式裡,新誕生一個線程,或稱執行緒(Thread)時,並不會自動建立其Message Loop。 l Android裡並沒有Global的Message Queue資料結構,例如,不同APK裡的物件不能透過Massage Queue來交換訊息(Message)。 l 一個線程可以誕生一個Looper之物件,由它來管理此線程裡的Message Queue。 l 你可以誕生Hand

2011-03-31 10:32:00 696

转载 高焕堂-上課講義

上課講義之 1: 高煥堂講解 Intent-based Programming Android的4種嫡系組件(即Activity、Service、IntentReceiver和ContentProvider)之間如何互相溝通呢?這4種嫡系組件都是由Android啟動的,並不是組件之間透過直接呼叫而啟動的。就像我們打手機去車行叫計程車,而不是直接到街道上叫車。我們送給行一個簡訊一通電話,表明我們的「意圖」(Intent),當車行經理接到此意圖,就依據你的意圖的內含條件而去挑選最合適的計程車,然後派遣它去接你

2011-03-30 20:25:00 2580

转载 Use Case分析與手機畫面佈局之規劃

Use Case分析與手機畫面佈局之規劃 By 高煥堂 2008/04/14 1.1 善用Use Case分析 一個手機系統通常會藉由多個畫面來與使用者溝通。那麼,一個系統到底需要幾個幕前的佈局(Layout)呢?而且需要多少個幕後的Activity類別呢?一般而言,這是需求分析的一環,而且Use Case是業界最流行的需求分析利器。 UML(Unified Model Language)的Use Case圖能有效表達使用者與Android應用程式的互動過程。從這互動過程中,引導出應用程式的畫面佈局

2011-03-30 20:24:00 2747

转载 Talking about Android process

Talking about Android process [First written by Steve Guo, please keep the mark if forwarding.] In this topic you will learn some information about Android process management. First let’s take a look at the launched processes during Android booting. US

2011-03-30 20:23:00 648

转载 Linux系统下Ramdisk的制作过程

Linux系统下Ramdisk的制作过程 一、在一个已建好的文件系统上进行修改。 设已建立好的文件系统压缩文件为ramdisk.gz 1.解压 #cd ramdisk.gz所在目录 #gunzip ramdisk.gz 在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件 2.镜象文件挂载 镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容 #mkdir /mnt/loop /* /mnt/loop 是文件系统要挂载到的目录 #mount –o loo

2011-03-30 20:17:00 487

認識Android 應用程式(Application)

認識Android 應用程式(Application)

2022-05-01

深刻解析 Android 的 AIDL 介面

深刻解析 Android 的 AIDL 介面

2022-05-01

ubuntu下建立Android的开发环境-update

ubuntu下建立Android的开发环境-update

2022-05-01

Tom_Kao_2008_APRI_UMLChina_OK

Tom_Kao_2008_APRI_UMLChina_OK

2022-05-01

the+Android+and+its+Impact+of+Mobile+Computings

the+Android+and+its+Impact+of+Mobile+Computings

2022-05-01

Talking about Android process

Talking about Android process

2022-05-01

Talking about Android Message Queue

Talking about Android Message Queue

2022-05-01

Simple Guide for Porting Android Kernel

Simple Guide for Porting Android Kernel

2022-05-01

RK28Linux-I2C

RK28Linux-I2C

2022-05-01

android qemu

android qemu

2022-05-01

android pvplayer

android pvplayer

2022-05-01

porting android

porting android

2022-05-01

Linux development 入门

Linux development 入门

2022-05-01

launcher apk

launcher apk

2022-05-01

Discovering Template Method Pattern in Google Android framework

Discovering Template Method Pattern in Google Android framework

2022-05-01

android strategy

android strategy

2022-05-01

build android doc

build android doc

2022-05-01

Binder Frequently Asked Questions

Binder Frequently Asked Questions

2022-05-01

Android的源代码结构

Android的源代码结构

2022-05-01

Android的多媒体框架OpenCore(PacketVideo)

Android的多媒体框架OpenCore(PacketVideo)

2022-05-01

Android底层库libutils介绍

Android底层库libutils介绍

2022-05-01

Android应用程序的Life Cycle

Android应用程序的Life Cycle

2022-05-01

Android应用开发环境搭建

Android应用开发环境搭建

2022-05-01

Android中各种JAVA包的功能描述

Android中各种JAVA包的功能描述

2022-05-01

AndroidManifest.xml+G+÷

AndroidManifest.xml+G+÷

2022-05-01

Android_Dalvik_VM_Internals_Google__

Android_Dalvik_VM_Internals_Google__

2022-05-01

Android 淺探(二):系統架構

Android 淺探(二):系統架構

2022-05-01

Android 文件系统移植总结

Android 文件系统移植总结

2022-05-01

Android 应用初始化及窗体事件的分发

Android 应用初始化及窗体事件的分发

2022-05-01

Android Surface

Android Surface

2022-05-01

Android RIL introduction

Android RIL introduction

2022-05-01

Android Power Management

Android Power Management

2022-05-01

Android Porting On Real Target

Android Porting On Real Target

2022-05-01

Android on OMAP

Android on OMAP

2022-05-01

Android Message Queue

Android Message Queue

2022-05-01

Android MediaPlayer

Android MediaPlayer

2022-05-01

Android Media Scanner Process

Android Media Scanner Process

2022-05-01

Android Initialization Process

Android Initialization Process

2022-05-01

Android IBinder

Android IBinder

2022-05-01

Android Cross Compiler

Android Cross Compiler

2022-05-01

空空如也

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

TA关注的人

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