09 2013 档案
摘要:LayoutInflater的作用 LayoutInflater的作用类似于findViewById()。 不同点是: LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化为View类对象。 对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素,因为在一个Activity里对应的是setConentView()的那个layout里的组件。 通俗的说,inflate就相当于将一个xml中定义的布局找出来。 因此如果你的Activity里如果用到别的layout,比如对话框上的layout,你还要设...
阅读全文
摘要:关于OAuth验证 OAuth是当下流行的授权方案,twitter,facebook,google等大型网站的开放平台都支持了oauth验证模式,国内的新浪微博、腾讯微博、163微博的开放平台也相继支持了这种验证模式。 引用维基百科的相关说明 oauth是一个开放的标准,允许用户让第三方应用访问该用户放在某一个网站的私密资源,而无需将用户名和密码传递给第三方应用。 oauth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。 举例来说就是: 用户A在服务提供者B上存放了一些资源,B支持oauth授权模式,A在B上是注册用户,有用户名和密码,使用用户名和密...
阅读全文
摘要:何为idc idc(Input Device Configuration)为输入设备配置文件,它包含设备具体的配置属性,这些属性影响输入设备的行为。 对于touch screen设备,总是需要一个idc文件来定义其行为。 Android根据输入设备驱动汇报的事件类型和属性来检测和配置大部分输入...
阅读全文
摘要:名词解析 IP地址的作用是标示计算机的网卡地址,每台计算机都有一个IP地址; 端口是指计算机中为了标示在计算机中访问网络的不同程序而设的编号,并不是网卡接线的端口,而是不同程序的逻辑编号,并不是实际存在的; 域名是用来代替IP地址来标示计算机的一种直观名称,例如百度网站的IP地址是202.10...
阅读全文
摘要:Intent An intent is an abstract description of an operation to be performed 一个Intent就是一次对将要执行的操作的抽象描述。使用Service的方式 Started startService():调用者和服务之间没有联系,即使调用者退出了,服务仍然进行 [onCreate()-->onStart()-->startService()-onDestory()] Bound bindService():调用者和服务绑在一起,调用者一旦退出服务也就终止[onCreate()-->onBind()...
阅读全文
摘要:一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:lcw: error while loading shared libraries: libjson.so.0: cannot open shared object file: No such file or di...
阅读全文
摘要:Handler的定义 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发。 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示"强制关闭".这个时候我们需要把这些耗时的
阅读全文
摘要:JSON有两种结构 1.“名称/值”对的集合(Acollectionofname/valuepairs)。 不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。 2.值的有序列表(Anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。基础示例 简单地说,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在...
阅读全文
摘要:Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start...
阅读全文
摘要:MTD介绍 MTD,Memory Technology Device即内存技术设备 字符设备和块设备的区别在于前者只能被顺序读写,后者可以随机访问;同时,两者读写数据的基本单元不同。 字符设备,以字节为基本单位,在Linux中,字符设备实现的比较简单,不需要缓冲区即可直接读写,内核例程和用户态API一一对应,用户层的Read函数直接对应了内核中的Read例程,这种映射关系由字符设备的file_operations维护。 块设备,则以块为单位接受输入和返回输出。对这种设备的读写是按块进行的,其接口相对于字符设备复杂,read、write API没有直接到块设备层,而是直接到文件系统层,然...
阅读全文
摘要:HAL概述 以下是基于android4.0.3,对应其他低版本的代码,可能有所差异,但基本大同小异。 Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚。 思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一...
阅读全文
摘要:QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。 QT 支持下列平台:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、SGI IRIX;EMBEDDED- 支持 framebuffer 的 Linux 平台。伴随着 KDE 的快速发展和普及,QT 很可能成为 Linux 窗口平台上进行软件开发时的 GUI 首选...
阅读全文
摘要:Linux网络设备结构 首先看一下Linux网络设备的结构,如下图: 网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。这一层的存在使得上层协议独立于具体的设备。网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。设备驱动功能层各函数是网络设备接口层net_device数据结构的具体成员,是驱使网络设备硬件完成..
阅读全文
摘要:背景知识在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此LCD的应用很有实际意义!LCD工作的硬件需求:要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。如S3C2410通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。S3C2440内部LCD控制器结构图 根据数据手册...
阅读全文
摘要:I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。 因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。linux下的驱动思路 在linux系统下编写I2C驱动,目前主要有两种方法,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux下I2C驱动体系结构来完成。下面比较下这两种方法: 第一种方法: 优点:思路比较直接,不需要花很多时间去了解linux中复杂的I2C子系统的操作方...
阅读全文
摘要:linux操作系统下nand flash驱动框架 当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层的块设备。 而写驱动,就是要构建硬件与操作系统之间的联系,因此我们需要知道nand flash在Linux操作系统下的框架。 框架如下: 1.即使nand flash是一个块设备,它也能作为一个字符设备使用,因为说到底,也只是从寄存器内部读取值而已。 2.对于不同的文件系统,会有不同的文件组织形式。 3.由于块设备的硬件操作繁琐,就像nand flash的读写操作就需要发送地址跟命令...
阅读全文
摘要:总线设备驱动框架 总线设备驱动框架是一种类似于输入子系统的框架。 总线设备驱动,顾名思义,共有三个模块负责硬件资源的设备(device)负责处理硬件事务并且连接其他功能模块的驱动(driver)连接这两者的总线(bus)。以usb为例子展示总线设备驱动其过程分为以下步骤: 1.当加入一个设备时, 如果该设备支持中断唤醒线程,那么在中断处理程序内部就获取该设备的资源信息,然后构建device结构体,加入总线的device链表, 或者我们可以自己编写模块,在模块中填写该硬件的资源,然后构建device结构体,加入device链表。 2.对于新加入的device,通过比对driv...
阅读全文
摘要:大体上跟windows的消息处理机制差不多app所要做的事情 1.绑定信号处理函数 2.通知驱动该程序的pid,好让驱动能够通过pid返回信号 3.设置异步标志位驱动程序所要做的事情 1.添加.fasync函数 2.构造fasync_struct结构体指针,该结构体用于存放pid 3.中断处理函数内部调用kill_fasync,当中断到来的时候就会发送信号流程如下
阅读全文
摘要:input输入子系统整体流程 input子系统在内核中的实现,包括输入子系统(Input Core),事件处理层(Event Handler)和设备驱动层。 在开头部分会从设备驱动层做为线索,分析输入子系统和事件处理层是如何配合的,最后从用户角度出发,从“/dev/input/*”接口如何使用输入子系统提供的服务。 既然需要详细分析,有一个这样的流程图能够帮助我们在被绕进代码的过程中,找到出口,你能够知道你现在位于代码框架的什么位置,不会忘记正在分析的代码的“身份”。 设备驱动层注册到input子系统 以S3C2440触摸屏的驱动代码代例,初始化函数定义了struct input...
阅读全文