摘要:在Linux下opendir()、readdir()和closedir()这三个函数主要用来遍历目录。在使用这三个函数前必须先包括以下两个头文件:#include <sys/types.h>#include <dirent.h>opendir函数的原型为:DIR *opendir(const char *name);它返回一个DIR*类型,这就是一个句柄啦,你不用管它的内部结构是什么样的,只要知道这个句柄就是等一下要传给readdir()函数的参数就行了。readdir函数的原型为:struct dirent *readdir(DIR *dir);看它的参数就知道该参数
阅读全文
11 2010 档案
摘要:Android事件处理分析http://blog.csdn.net/linweig/archive/2010/02/27/5330391.aspx按键事件 对于按键事件,调用mDevices->layoutMap->map进行映射。映射实际是由 KeyLayoutMap::map完成的,KeyLayoutMap类里读取配置文件qwerty.kl ,由配置 文件 qwerty.kl 决定键值的映射关系。你可以通过修 改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系。 JNI 函数 在 frameworks/base/service
阅读全文
摘要:Android 事件处理--学习笔记2(金海建)目的:通过全面的分析Android的鼠标和键盘事件。了解Android中如何接收和处理键盘和鼠标事件,以及如何用代码来产生事件。主要学习内容:1. 接收并处理鼠标事件:按下、弹起、移动、双击、长按、滑动、滚动2. 接收并处理按键事件:按下、弹起3. 模拟鼠标/按键事件1. Android事件现代的用户界面,都是以事件来驱动的来实现人机交换的,而Android上的一套UI控件,无非就是派发鼠标和键盘事件,然后每个控件收到相应的事件之后,做相应的处理。如Button控件,就只需要处理Down、move、up这几个事件,Down的时候重绘控件,move
阅读全文
摘要:Udev 内核机制(kobject_uevent) 性能优化作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.com前言这两天遇到一些 udev 的问题, 顺便阅读了一下文档(见参考文档), 基本了解了 udev 的机制。 嵌入式系统性能很重要,于是对内核这一块进行了性能方面的研究。内核大概20多处会调用了 kobject_uevent 函数发送 KOBJ_ADD / KOBJ_REMOVE 等事件。其中我们最关心的就是在device_add/device_del 中向用户空间发送设备的添加、删除信息。kobject_uevent 直接调用 kobject_uevent
阅读全文
摘要:看LDD3中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。本文从四个方面来总结一些内容:1.底层数据结构:kobject,kset.2.linux设备模型层次关系:bus_type,device,device_driver.3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析.4.面向对象的思想在linux设备模型中的应用分析.一、底层数据结构:kobject,kset先说说模型的意义: 总体来说是为了系统地管理所有设备。kobject结合面向对象的思维。这个kobject属于最基础的结构,也就是最高抽象层(有点像java中的Cobject类)。任何一个设备模型如总
阅读全文
摘要:现在linux开发,大多采用远程服务器在本地客户端模式,在服务器上搭建好开发环境,在本地通过putty之类的端口登录远程服务器进行相应的控制,同时通过samba服务器,使得能够在windows环境下开发linux代码,然后同步在linux环境下编译。下面讲述在Ubuntu上搭建ssh和samba服务器的方法。 一.ssh服务器的搭建 ubuntu默认不带openssh server,而只有openssh client。 在命令窗口运行 sudo apt-get install openssh-server (sudo apt-get install ssh) 安装即可,然后sudo /etc.
阅读全文
摘要:分析这几个容易混淆的概念. 引用一段资料: 几乎每一种外设都是通过读写设备上的寄存器来进行操作的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。具体采用哪一种则取决于CPU的体系结构。 有些体系结构的CPU(如PowerPC、m68k等)通常只实现一个物理地址空间(RAM)。在这种情况下,外设I/O端口的物理地址就被映射到CPU的单一物理地址空间中,而成为内存的一部分。此时..
阅读全文
摘要:Linux内核中的platform机制从Linux2.6起引入了一套新的驱动管理和注册机制:platform_device和platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。Linuxplatformdriver机制和传统的devicedriver机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platformdevice提供的标准接口进行申请并使用
阅读全文
摘要:最近研究了一下Linux驱动的platform机制。从Linux2.6起,引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。Linux platform driver机制和传统的device_driver机制相比,一个十分明显的优势在于platform机制将本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform_device提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独
阅读全文
摘要:引言: 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示器…… 对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄存器(也称为端口),访问设备实际上是访问相关的端口,所有的信息会由接口转给它的设备。那么CPU会准备数据到数据总线,但是诸多接口,该发给谁呢?这时就须要为各接口分配一个地址,然后把地址放在地址总线上,需要的控制信息
阅读全文
摘要:今天我以fb设备的注册过程来分析platform设备的添加流程platform总线是kernel中最近加入的一种虚拟总线,它被用来连接处在仅有最少基本组件的总线上的那些设备.这样的总线包括许多片上系统上的那些用来整合外设的总线, 也包括一些"古董" PC上的连接器; 但不包括像PCI或USB这样的有庞大正规说明的总线.平台设备~~~~~~ 平台设备通常指的是系统中的自治体, 包括老式的基于端口的设备和连接外设总线的北桥(host bridges),以及集成在片上系统中的绝大多数控制器. 它们通常拥有的一个共同特征是直接编址于CPU总线上. 即使在某些罕见的情况下, 平台设备
阅读全文
摘要:在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value)也就是说 likely() 和 unlikely() 从阅读和理解代码的角度来看,是一样的!!!这两个宏在内核中定义如下:#define likely(x) __builtin_expect((x),1)#define unlikely(x) __builtin_expect((x),0)__builtin_expect()
阅读全文
摘要:大家都知道理做PCB板就是把设计好的原理图变成一块实实在在的PCB电路板,请别小看这一过程,有很多原理上行得通的东西在工程中却难以实现,或是别人能实现的东西另一些人却实现不了,因此说做一块PCB板不难,但要做好一块PCB板却不是一件容易的事情。微电子领域的两大难点在于高频信号和微弱信号的处理,在这方面PCB制作水平就显得尤其重要,同样的原理设计,同样的元器件,不同的人制作出来的PCB就具有不同的结果,那么如何才能做出一块好的PCB板呢?根据我们以往的经验,想就以下几方面谈谈自己的看法:一:要明确设计目标接受到一个设计任务,首先要明确其设计目标,是普通的PCB板、高频PCB板、小信号处理PCB板
阅读全文
摘要:摘要】本文详解了中断服务下半部之工作队列实现机制。介绍了工作队列的特点、其与tasklet和softirq的区别以及其使用场合。接着分析了工作队列的三种数据结构的组织形式,在此基础之上分析了工作队列执行流程。最后介绍了工作队列相关的API,如何编写自己的工作队列处理程序及定义一个work对象并向内核提交等待调度运行。【关键字】中断下半部,工作队列,workqueue_struct,work_struct,DECLARE_WORK,schedule_work,schedule_delayed_work ,flush_workqueue,create_workqueue,destroy_workq
阅读全文
摘要:多点触摸协议 ------------------------- Copyright (C) 2009 Henrik Rydberg <rydberg@euromail.se > 讨论: datangsoc@hotmail.com 简介 为了使用功能强大的多点触控设备,一种方案是上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。 使用说明 任何一个手指的触控数据都是打包成 ABS event 包按顺序发送,只有 ABS_MT event包能作为多点触控数据被识别,调用 input_mt_sync()函数可以产生一个 S
阅读全文
摘要:qemu/kvm使用-full-screen全屏启动时,有时报“Could not open SDL display”错误,然后kvm虚拟机退出。 原因是kvm的虚拟机的分辨率比较高。高分辨率指的是:(>= 1280x1024x16) 解决方案是在kvm启动时加上如下参数:qemu/lkvm的启动选项:‘-vgatype’‘std’Standard VGA card with Bochs VBE extensions. If your guest OS supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you w.
阅读全文
摘要:作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师。最近计划针对我们华清远见的教学开发一套PXA270系统,我把我的一些软、硬件开发过程记录下来和大家一起分享、讨论。有好的建议大家一定要及时交流,lht@farsight.com.cn。上一篇我写了“PXA270嵌入式系统设计一:电源管理部分”,今天接着写一下关于时钟及复位部分的内容,欢迎指正~~一、时钟部分 任何一款处理器都需要至少一个时钟源。在处理器的内部会有相应的时钟管理单元来为cpu及各个功能控制单元提供合适的时钟。PXA270处理器的需要两个外部振荡器,1个13M和1个32.768K。它们各自的作用:13M的时钟主要
阅读全文
摘要:最近计划针对我们华清远见的教学开发一套PXA270系统,我把我的一些软、硬件开发过程记录下来和大家一起分享、讨论。有好的建议大家一定要及时交流,lht@farsight.com.cn平台硬件功能要求:32M/64M nor flash、64M sdram、10M/100M自适应网口、串口、SD卡接口、USB主从口、实时时钟、4*4扫描键盘、I2C的e2rom、蜂鸣器、A/D、CAN总线接口、VGA接口、数字液晶接口、音频接口、电源管理等功能。平台嵌入式操作系统要求:1、linux:版本2.6.23 并可以运行google的android手机操作系统2、Wince:6.0电路板开发工具:capt
阅读全文
摘要:现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库。请记住,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的
阅读全文
摘要:1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。 下例表示说明一个联合a_bc: union a_bc{ int i; char mm; }; 再用已说明的联合可定义联合变量。 例如用上面说明的联合定义一个名为lgc的联合变量, 可写成: union a_bc lgc; 在联合变量lgc中, 整型量i和字...
阅读全文
摘要:在Ubuntu上搭建嵌入式Linux开发环境 我用的是Ubuntu8.10,是在windows xp上通过虚拟机VMware7安装的,这个过程比较简单。由于Ubuntu在安装后很多开发必备的软件都没有安装,下面详细讲解下这些软件的安装和配置过程。一.实现Ubuntu与windows的文件共享。如果虚拟机能和windows共享文件,能给开发带来很多方便,具体设置步骤如下。VM——>settings——>options——>sharedFolders——>AlwaysEnabled然后再下面的Folders中选择添加,在host选项通过浏览选项可以把windows下的一个文
阅读全文
摘要:Ubuntu命令技巧前言下面的命令大都需要在控制台 /终端/shell 下输入。控制台,终端,和shell意味着同样一件事-一个命令行界面,他可以用来控制系统。打开一个控制台:应用程序-->附件-->终端任何一个使用'sudo'作为前缀的命令都需要拥有管理员(或root)访问权限。所以你会被提示输入你自己的密码。安装升级查看软件xxx安装内容dpkg -L xxx 查找软件库中的软件apt-cache search 正则表达式
或
aptitude search 软件包显示系统安装包的统计信息apt-c...
阅读全文