- 博客(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
the+Android+and+its+Impact+of+Mobile+Computings
2022-05-01
Discovering Template Method Pattern in Google Android framework
2022-05-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人