嵌入式驱动
文章平均质量分 68
GangsterPan
这个作者很懒,什么都没留下…
展开
-
在Ubuntu 11.10 编译android的改动
1.host Prebuilt: monkeyrunner (out/host/linux-x86/obj/EXECUTABLES/monkeyrunner_intermediates/monkeyrunner)host C++: obbtool :0:0: 错误: “_FORTIFY_SOURCE”重定义 [-Werror]:0:0: 附注: 这是先前定义的位置cc1plus:所原创 2012-02-21 11:16:07 · 787 阅读 · 0 评论 -
proximity sensor driver解析
1. i2c_add_driver();2. .probe() 2.1 get Platform_data 2.2 i2c_set_clientdata() 2.3 input device init and register 2.4 input_set_drvdata() 2.5 INIT_WORK(xx,work_func)----------原创 2012-04-24 15:40:42 · 1677 阅读 · 0 评论 -
Linux 内存管理
概述 物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab slub slob分配器 分配非连续内存块的vmalloc机制----------------伙伴系统 slab slub slob分配器是否是联系内存??? 进程的地址空间(N)UMA 一致内存访问 uniform memory access 内存划分为结点,结点(pglist_da原创 2012-04-16 17:08:41 · 848 阅读 · 0 评论 -
Logcat 的使用方法
OPhoneLogcat是我们常用的Debug工具,我们通常使用它来查找和定位缺陷信息。 如果我们能够更有效的从大片的Logcat信息中找到对自己有用的部分,就能够更快速准确的找到问题所在,进而完善自己的OPhone应用程序。我们先来建立一个短小的工程logcat:view plaincopy to clipboardprint?package com.bo转载 2012-05-31 10:25:02 · 5381 阅读 · 0 评论 -
camera插值
插值(Interpolation),有时也称为“重置样本”,是在不生成像素的情况下增加图像像素大小的一种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩。有些相机使用插值,人为地增加图像的分辨率在扫描过程中,根据所需的已知数值制作出估计的像素值,这一过程叫做插值。当我们要求扫描分辨率和放大率与扫描仪的光学分辨率和1:1的放大率不同时,扫描仪必须做出某种形式的插值和缩放。在扫描时转载 2012-08-31 14:10:34 · 3847 阅读 · 3 评论 -
linux pipe理解和父子进程
对于写管道: 写入管道的数据按到达次序排列。如果管道满,则对管道的写被阻塞,直到管道的数据被读操作读取。对于写操作,如果一次write调用写的数据量小于管道容量,则写必须一次完成,即如果管道所剩余的容量不够,write被阻塞直到管道的剩余容量可以一次写完为止。如果write调用写的数据量大于管道容量,则写操作分多次完成。如果用fcntl设置管道写端口为非阻塞方式,则管道满不会阻塞转载 2012-10-12 09:23:01 · 3313 阅读 · 0 评论 -
linux socket理解
1.server_socket.c//====================================================================#include // for sockaddr_in#include // for socket#include // for socket#include //转载 2012-10-12 09:29:49 · 809 阅读 · 0 评论 -
Linux中的completion
一般信号量的的处理会限制在一个函数内,但是有时会函数A的处理的前提条件是函数B,A必须等待B处理后才能继续,可以用信号量来进行处理,但linux kernel提供complete的方式。使用方式如下:•头文件#include ,数据结构为struct completion ,初始化为init_completion(struct completion * comp ) ,也可以直接使用DEC转载 2012-11-29 10:12:29 · 1652 阅读 · 0 评论 -
高级字符驱动学习--阻塞型I/0
提出问题:若驱动程序无法立即满足请求,该如何响应? 比如:当数据不可用时调用read,或是在缓冲区已满时,调用write解决问题:驱动程序应该(默认)该阻塞进程,将其置入休眠状态直到请求可继续。 休眠:当一个进程被置入休眠时,它会被标记为一种特殊状态并从调度器运行队列中移走,直到某些情况下修改了这个状态,才能运行该进程。安全进入休眠两原则:1.永远不转载 2012-11-29 10:41:41 · 681 阅读 · 0 评论 -
Android自动化测试初探(五): 再述模拟键盘鼠标事件(adb shell 实现)
1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列:命令格式2:adb shell sendevent [device] [type] [code] [value] 如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下m转载 2013-02-26 16:28:28 · 1084 阅读 · 0 评论 -
打开Android C文件中的LOG
可以一次打开LOGV,LOGI,LOGD,也可以分别打开:#undef NDEBUG //open LOGV/LOGI/LOGD#define LOG_NDEBUG 0 //open LOGV#define LOG_NIDEBUG 0 //open LOGI#define LOG_NDDEBUG 0 //open LOGD举例举例,如果要看AndroidRunt转载 2012-02-23 15:44:02 · 775 阅读 · 0 评论 -
Android Sensor 架构深入剖析
1、Android sensor架构Android4.0系统内置对传感器的支持达13种,它们分别是:加速度传感器(accelerometer)、磁力传感器(magnetic field)、方向传感器(orientation)、陀螺仪(gyroscope)、环境光照传感器(light)、压力传感器(pressure)、温度传感器(temperature)和距离传感器(proximity)等。转载 2013-04-07 14:36:50 · 2428 阅读 · 0 评论 -
Android JNI知识简介
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Ja转载 2013-04-07 14:38:07 · 744 阅读 · 0 评论 -
Lniux JNI
定义使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下 JNI这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java虚拟机实现下。设计目的·标准的java类库可能不支持你的程序所需的特性。 JNI·或许你已经有了一个用其他语言写转载 2013-04-07 14:40:09 · 829 阅读 · 0 评论 -
解决vim中文乱码问题
由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vim支持gb编码就好了。$vim ~/.vimrclet &termencoding=&encodingset fileencodings=utf-8,gbk$:wq转载 2013-04-23 15:25:26 · 638 阅读 · 0 评论 -
Linux ASM debug
sudo apt-get install dosemudosemu执行后跳出debug对话框,输入debug然后可以-r -d-u -t等参数调试原创 2013-05-07 19:17:36 · 852 阅读 · 0 评论 -
container_of()
问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the t转载 2012-04-13 15:22:44 · 436 阅读 · 0 评论 -
shell scritp---mail to myself
#!/bin/bashsvn_info() { cd /home/andy/Project/svn svn update TEMP=`svn status|awk '{print $2}'|grep "$1"`}send_long_wait_warning_mail() { CTP_VENDOR="$1"原创 2012-04-24 14:25:38 · 1893 阅读 · 0 评论 -
shell script
1. grep -n -A100 "DOWN" NFR.temp|grep "Pressure=1.0"|awk -F "(" '{print $3}'|awk -F ")" '{print $1}'|head -n "$i"00|tail -n 100>>nfr.txt 解析 1. 1 grep -n -A100 "DOWN" NFR.temp 查找包含“DOWN”的后面100行(包括原创 2012-04-11 14:32:16 · 427 阅读 · 0 评论 -
adb shell 无法启动 (insufficient permissions for device)
出现如下错误信息:shily@hh-desktop:~$adb shellerror: insufficient permissions for deviceshily@hh-desktop:~$ adb devicesList of devices attached ???????????? no permissions[请直接阅读下面的更新部分]不知为何,转载 2012-02-22 11:13:38 · 669 阅读 · 0 评论 -
WARNING: modpost: Found 1 section mismatch(es).
对于已经可以正常编译的内核linux-2.6.28.4,在加了自己写的一个rtc驱动后,再编译,出现warning:make ARCH=arm; make ARCH=arm uImage.......WARNING: modpost: Found 1 section mismatch(es).To see full details build your kernel with:转载 2012-02-29 16:07:37 · 6653 阅读 · 1 评论 -
QCom Camera Development
第一部分 Camera概述 Android的Camera包含取景器(viewfinder)和拍摄照片的功能。目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。 以开源的Android为例,Camera的代码主要在以下的目录中:Camera的JAVA程序的路径:pack转载 2012-02-21 19:24:18 · 1608 阅读 · 0 评论 -
·LINUX设备驱动之tty及console驱动(一)
Tty用于表示各种终端,这些终端包括串行端口终端(/dev/ttySn)、伪终端(/dev/pty/)、控制台终端(/dev/ttyn, /dev/console)等,tty驱动架构中,包括tty核心、tty线路规程、tty驱动层概念,用户空间通过文件操作与tty_core交互,tty_core根据文件操作的类型选择line discipline(如read和write操作)或直接跟tty_dri转载 2012-03-27 14:06:00 · 5356 阅读 · 0 评论 -
·LINUX设备驱动之serio总线(二)
三.serio驱动的注册serio驱动注册的函数为serio_register_driver():static inline int __must_check serio_register_driver(struct serio_driver *drv){ return __serio_register_driver(drv, THIS_MODULE, KBUILD_M转载 2012-03-27 14:11:13 · 1154 阅读 · 0 评论 -
LINUX设备驱动之platform总线
Platform总线是kernel中的一种虚拟总线,2.6版本很多驱动都用它来实现。一.Platform初始化系统启动时初始化时创建了platform_bus设备和platform_bus_type总线:内核初始化函数kernel_init()中调用了do_basic_setup() ,该函数中调用driver_init(),该函数中调用platform_bus_init(),我们看看转载 2012-03-27 14:12:52 · 2634 阅读 · 0 评论 -
LINUX设备驱动之设备模型四--device&driver&bus(二)
接上一篇文章,在往总线注册注册设备前要先创建device,我们可以静态的定义device结构变量,然后调用device_register()将其注册,或者通过内核提供的device_create()接口函数创建和注册device。先看看device的数据结构定义:struct device { struct device *parent;转载 2012-03-27 14:14:17 · 621 阅读 · 0 评论 -
LINUX设备驱动之设备模型三--device&driver&bus(一)
在清楚了kobject之后,就可以继续分析device、driver、bus了,这三者是设备驱动程序的基本数据结构。我们可以这样理解,内核用device来表示各种设备,然后用driver来表示它的驱动,而设备有很多种,也属于相同类型或不同类型,而其对应的驱动可能同时也是另外一个设备的驱动,为了管理这些设备和驱动,就引入了总线bus_type,总线上有两个集合(也可以理解为两转载 2012-03-27 14:14:54 · 812 阅读 · 0 评论 -
LINUX设备驱动之输入子系统(三)
三.input_event事件的处理事件的处理处理的接口函数为input_event,在\linux\input.h中还定义了、input_report_key、input_report_rel、input_report_abs、input_report_ff_status、input_report_switch、input_sync、input_mt_sync等函数,这些函数都是input_转载 2012-03-27 14:06:56 · 1180 阅读 · 0 评论 -
LINUX设备驱动之输入子系统(二)
二.Input handler的注册在Input device的注册中存在下列疑问:1, 匹配dev和handler时,input_handler_list上的handler是什么时候挂上去的呢?2, 匹配成功后会调用相应handler的connect函数,此函数做了什么事?带着这两个疑问,我们以键盘为例进行分析。在系统启动初始化vty(vty_init函数,tty、vty转载 2012-03-27 14:07:29 · 652 阅读 · 0 评论 -
LINUX设备驱动之设备模型二--kset
我们已经知道了kset内嵌了kobject来表示自身的节点,创建kset就要完成其内嵌kobject,注册kset时会产生一个事件,事件而最终会调用uevent_ops字段指向结构中的函数,这个事件是通过用户空间的hotplug程序处理。下面我们一步一步分析。内核同样提供了创建和注册kset的函数kset_create_and_add()struct kset *kset_create_a转载 2012-03-27 14:15:39 · 820 阅读 · 0 评论 -
LINUX设备驱动之输入子系统(一)
在前面键盘驱动的分析中已经接触到了输入子系统,本文将结合键盘驱动,系统分析输入子系统。 回想一下,在设备驱动匹配成功时,创建了一个input_dev并注册到输入子系统;在键盘中断处理例程中向输入子系统上报事件。 输入子系统是所有I/O设备驱动的中间层,如何为下层众多各式各样的输入设备提供接口以及为上层提供了一个统一的界面? 根据内核代码,输入子系统中存在两个链表:input转载 2012-03-27 14:10:26 · 795 阅读 · 0 评论 -
LINUX设备驱动之serio总线(一)
serio总线也是kernel中的一种虚拟的串行输入输出总线,源码\drivers\input\serio目录下有很多与之相关的驱动程序。一.serio初始化和之前分析platform总线一样,在系统启动时初始化时也创建了serio_bus总线:static int __init serio_init(void){ int error; err转载 2012-03-27 14:11:55 · 1493 阅读 · 0 评论 -
LINUX设备驱动之设备模型五--device&driver&bus(三)
接上一篇文章,继续device_add()中的代码: error = bus_add_device(dev); if (error) goto BusError;在对应总线目录下的device目录下创建几个到device的链接文件。 error = dpm_sysfs_add(dev); if (err转载 2012-03-27 14:13:35 · 980 阅读 · 0 评论 -
在Ubuntu 10.04系统 32位机上安装编译Android2.3源码
,其步骤和注意事项如下:1.安装JDK6对于Android2.3系统,不要安装JDK5,应该安装最新的JDK6。如果安装了JDK6,Android会自动按64位编译,如果系统是32位的,会有编译错误,后面会说如何修改这个错误。sudo add-ap转载 2011-10-19 15:56:43 · 677 阅读 · 0 评论