自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 A Coin Game

Suppose you play the following game with your opponent:There is a sequence of n coins with values v[1], v[2], …, v[n] in a queue which are known in advance. Now each player takes alternate turn to p

2012-06-22 18:04:54 837

转载 awk引用shell中变量的几种方法

一:"'$var'"这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:var="test"awk'BEGIN{print "'$var'"}'这种写法其实就是把一对单引号分成了两段单引号,中间的shell变量直接按照shell变量的引用方式即可,

2011-09-07 16:27:21 10202

原创 u-boot命令处理机制

<!--@page {margin:2cm}h3 {margin-top:0.46cm; margin-bottom:0.46cm; line-height:173%; page-break-inside:avoid}h3.western {f

2011-08-04 11:20:20 1095

转载 【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的

几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。     ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。     我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq

2011-08-03 14:21:35 507

转载 Linux驱动中,probe函数何时被调用

Linux驱动中,probe函数何时被调用声明:以下主要内容参考自:关于struct device_driver结构中的probe探测函数的调用http://blog.chinaunix.net/u2/71164/showart.php?id=1361188用SourceInsi

2011-07-07 09:47:50 1458 1

原创 静态连接时undefindereference错误原因及解决方法

<!-- @page { margin: 2cm } H2 { margin-top: 0.46cm; margin-bottom: 0.46cm; line-height: 173%; page-break-inside: avoid } H2.western {

2011-07-06 20:56:34 1297

转载 对象文件格式分析工具: objdump, nm,ar

前言如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar。当然,本文不可能非常详细的说明它们的使用方法和功能。如果你觉得本文不够清楚,你可以使

2011-07-06 08:28:47 577

转载 Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据

引子AndroidFramework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放,目前Android的Froyo版本设定了同时最多可以创建32个音频流,也就是说,M

2011-06-28 17:37:00 725

转载 Android Display System --- Surface Flinger

SurfaceFlinger是Android multimedia的一个部分,在Android的实现中它是一个service,提供系统范围内的surface composer功能,它能够将各种应用程序的2D、3D surface进行组合。在具体讲SurfaceFlinger之前,我们先来看一下有关显示方面的一些基础知识

2011-06-27 16:44:00 728

转载 [转载]stagefright框架(四)-Video Buffer傳輸流程

這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來status_t O

2011-06-20 17:18:00 784

转载 stagefright之OpenMax实现

http://disanji.net/2011/03/07/stagefright-openmax0realization/ 

2011-06-20 15:05:00 774

转载 stagefright + omx小结

看了将近1个多月的stagefright和OMX IL,感觉对框架有了一点感觉,趁感觉还在,记录下来和大家分享,由于本人也是刚开始看多媒体框架,有认识不当的地方还请务必指正.由于stagefright和openmax运行在两个不同的进程上,所以他们之间的通讯要经过openBinder进行处理,对openBinder这一块还没有了解,所以恕stagefright和openmax之间的

2011-06-20 11:14:00 999

转载 块设备驱动编写总结

简介:这是块设备驱动编写总结的详细页面,介绍了和linux,有关的知识、技巧、经验,和一些linux源码等。<br />前一段时间一直在Linux下搞块设备驱动的开发,实现了多个块设备模块,现将块设备驱动开发的一些方法总结一下。块设备与字符设备的区别<br />1、从字面上理解,块设备和字符设备最大的区别在于读写数据的基本单元不同。块设备读写数据的基本单元为块,例如磁盘通常为一个sector,而字符设备的基本单元为字节。所以Linux中块设备驱动往往为磁盘设备的驱动,但是由于磁盘设备的IO性

2011-05-09 14:06:00 659

转载 RamDisk块设备驱动实例开发讲解一

扇区(Sectors):任何块设备硬件对数据处理的基本单位。通常,1个扇区的大小为512byte。 块(Blocks):由Linux制定对内核或文件系统等数据处理的基本单位。通常,1个块由1个或多个扇区组成。 段(Segments):由若干个相邻的块组成。是Linux内存管理机制中一个内存页或者内存页的一部分。 <br />    页、段、块、扇区之间的关系图如下:<br /><br />综合上描述:块设备驱动是基于扇区(sector)来访问底层物理磁盘,基于块(block)来访问上层文件系统。扇区

2011-05-09 13:57:00 755

转载 Android-与Android IPC有关的问题

<br />1.文件描述符是如何在进程之间传递的?<br />我们知道文件描述符,就像虚拟内存的地址一样,是进程私有的资源。在一个进程中文件描述符,在另外一个进程中,可能是无效的,也可能是对应另外一个文件。Android却可以把文件描述符从一个进程传到另外一个进程。第一次发现这种情况时,让我感到很惊奇,所以花了点时间去研究。看明白之后,发现其实现也很简单:1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />

2011-05-03 15:49:00 583

转载 Android的IPC机制Binder的各个部分

1. Binder的组成1.1. 驱动程序部分<br />驱动程序的部分在以下的文件夹中:show sourceview sourceprint?1kernel/include/linux/binder.h2kernel/drivers/android/binder.c<br />binder驱动程序是一个miscdevice,主设备号为10,此设备号使用动态获得(MISC_DYNAMIC_MINOR),其设备的节点为:show sourceview sourceprint?1/dev/binder/dev

2011-05-03 14:16:00 642

转载 如何撰寫自己的第一個核心服務呢?

<br /><br />1. 要點:<br />l           核心服務通常在獨立的進程(Process)裡執行。<br />l           必須提供IBinder介面,讓應用程式可以進行跨進程的綁定(Binding)和呼叫。<br />l           因為共用,所以必須確保多線裎安全(Thread-safe)。<br />l           以C++類別定義,誕生其物件,透過SM之協助,將該物件參考值傳給IServiceManager::addService()函數,就加入到B

2011-05-03 11:02:00 607

转载 Java对象的强、软、弱和虚引用

<br /><br />在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。<br /><br />   但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之可惜。这种物品现在已经无用了,保留它会占空间,但是立刻扔掉

2011-05-02 13:28:00 436

转载 Android IPC框架分析 Binder,Service,Service manager

<br /><br />我首先从宏观的角度观察Binder,Service,ServiceManager,并阐述各自的概念。从Linux的概念空间中,Android的设计Activity托管在不同的的进程,Service也都是托管在不同的进程,不同进程间的Activity,Service之间要交换数据属于IPC。Binder就是为了Activity通讯而设计的一个轻量级的IPC框架。<br />  在代码分析中,我发现Android中只是把Binder理解成进程间通讯的实现,有点狭隘,而

2011-05-02 11:28:00 756

转载 Android Binder设计与实现 - 设计篇

<br />Binder Android IPC Linux 内核驱动<br />摘要<br />Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system VIPC,socket等IPC手段,却还要倚赖Binder

2011-04-29 17:08:00 977

转载 Linux用户进程内存分配及二级页表PTE的二三事

<br />Linux用户进程内存分配及二级页表PTE的二三事<br />我们在用调试器看Linux用户进程代码时,发现了一件很有意思的事情,在一段内存空间中,有一整页(4K)都是data abort,如下:<br />第一页4011c000数据正常<br />... ...<br />4011cfec[0xe28dd014]   add      r13,r13,#0x14<br />4011cff0[0xe8bd40f0]   ldmfd    r13!,{r4-r7,r

2011-04-29 11:32:00 4371

转载 Android深入浅出之Binder机制

Android深入浅出之Binder机制一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Binder的使用:l         ServiceManager,这是Android OS的整个服务的管理程序l         MediaService,这个程序里边注册了提供媒体播放的服务程序Me

2011-04-29 09:31:00 790

转载 SD/MMC卡块设备驱动程序

<br />SD/MMC卡组成的存储系统是许多嵌入设备的主要存储设备,相当于PC机的硬盘,在嵌入设备上的SD/MMC卡控制器通过MMC协议来解析命令控制SD/MMC卡的操作。SD/MMC卡上有一些寄存器来控制卡的状态及读写操作。MMC协议规定的寄存器有:CID寄存器,128位,是卡的鉴别寄存器,存有卡的鉴别信息;RCA寄存器是16位,存有卡的本地系统的相对地址,在初始化时由控制器动态指定。DSR寄存器是16位,是配置卡的驱动程序的寄存器,是可选的。CSD寄存器是卡特定数据信息描述寄存器,是可

2011-04-27 09:36:00 12645 2

转载 基于S3C2410的SD卡linux驱动工作原理(二)

Linux SD

2011-04-27 09:31:00 1231

转载 基于S3C2410的SD卡linux驱动工作原理(一)

linux sd mmc

2011-04-27 09:28:00 1153 1

转载 linux-bus,device,driver,class

<br />总线<br />总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。<br />在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 <linux/device.h> : <br />struct bus_type {<br />    const char        * name;/*总线类型名称*/<br />    s

2011-04-27 09:15:00 1233

转载 Linux 工作队列

<br />走入Linux的殿堂已经有一年有余了,在这里我想将Linux的各种实现机制分析一遍,一方面对自己来说也是温故而知新,另一方面,促进大家的交流,最好能够给大家一些抛砖引玉的启迪。我是硬件出身,搞硬件已经好多年了,从是专门软件开发也接近两年了,在这一段时间内我越发认为软硬件协同设计是未来发展的主流,软硬件的界限越来越模糊,软硬件的设计思想是相通的,实现方法是各异的,实现的结果上当然也存在较大差别,因此,很有必要做好软硬件的协同设计。本着这样的想法,我想将我所认识的Linux分析一遍,特别

2011-04-27 09:01:00 1111

转载 SD卡的命令格式及解析

<br />SD卡的命令格式:<br /> <br />SD卡的指令由6字节(Byte)组成,如下:<br />Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)<br />Byte2-5:Command Arguments,命令参数,有些命令没有参数<br />Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0

2011-04-26 13:12:00 11272

转载 SD 卡初始化流程

SD卡调试关键点:1.      上电时要延时足够长的时间给SD卡一个准备过程,在我的程序里是5秒,根据不同的卡设置不同的延时时间。SD卡初始化第一步在发送CMD命令之前,在片选有效的情况下首先要发送至少74个时钟,否则将有可能出现SD卡不能初始化的问题。2.      SD卡发送复位命令CMD0后,要发送版本查询命令CMD8,返回状态一般分两种,若返回0x01表示此SD卡接受CMD8,也就是说此SD卡支持版本2;若返回0x05则表示此SD卡支持版本1。因为不同版本的SD卡操作要求有不一样的地方,所以务

2011-04-26 12:13:00 7593 1

空空如也

空空如也

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

TA关注的人

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