- 博客(57)
- 资源 (4)
- 收藏
- 关注
转载 android关于GPS hal层的分析
主控: Samsung Cortex ARM A8 smdkc110 1GGps: Ublox-G6010系统: android 2.3以下篇幅都是本人的一些建议以及做法在android里关于普通GPS模块(俗称硬GPS)相对来说是比较简单的,因为android都帮你封装好了,我们要做的稍后做详解。1、 首先拿到一个GPS模块我们先判断是
2013-12-19 15:16:12
447
转载 kernel与用户层接口之字符设备接口
kernel与用户层接口之字符设备接口:两种方法: 1. register_chrdev方法2. platform_driver方法platform_driver方法原理:platform_driver和platform_device的name名字名字必须匹配才能实现device和driver的绑定?(1)在内
2013-10-11 11:15:35
309
转载 Linux设备驱动之Ioctl控制
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/ 用户程序所作的只是通过命令码告诉驱动程序它想做什么,
2013-10-11 11:07:30
265
转载 Linux高级字符设备之Poll操作
在用户程序中,select()和poll()也是与设备阻塞与非阻塞访问息息相关的,使用非阻塞I/O的应用程序通常会使用select和poll系统调用查询是否可对设备进行无阻塞的访问。select系统调用最终会引发设备驱动中的poll函数被执行。一、select()系统调用:用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。1.select()原型:in
2013-10-11 11:05:11
286
转载 linux设备驱动程序中的阻塞机制
阻塞与非阻塞是设备访问的两种方式。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。一、阻塞与非阻塞 阻塞调用是指调用结果返回之前,当前线程会被挂起,函数只有在得到结果之后才会返回。 非阻塞指不能立刻得到结果之前,该函数不会阻塞当前进程,而会立刻返回。 对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但并不是一一对应的。阻塞对象上可以有非阻塞的调用方式,我们可以通过
2013-10-11 11:01:58
338
1
转载 linux驱动程序中的并发控制
现代操作系统有三大特性:中断处理、多任务处理和多处理器。这些特性导致当多个进程、线程或者CPU同时访问一个资源时,可能发生错误,这些错误是操作系统运行所不允许的。在操作系统中,内核需要提供并发控制机制,对共享资源进行保护。 在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并发容易
2013-10-11 11:00:12
255
转载 linux设备驱动程序之简单字符设备驱动
一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:1、字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。2、块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每一
2013-10-11 10:58:05
691
转载 Linux设备驱动之mmap设备操作
1.mmap系统调用void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write;参数:addr:映射的起始地址,设为NULL由系统指定;len
2013-10-11 10:54:14
291
转载 Android uevent分析
一、Android uevent架构 Android很多事件都是通过uevent跟kernel来异步通信的。其中类UEventObserver是核心。 UEventObserver接收kernel的uevent信息的抽象类。 1、server层代码 1)battery server: frameworks/framew
2013-10-09 21:46:12
277
转载 Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
熟悉Android系统的读者,应该能想到应用程序框架中的基于Java语言的Binder接口是通过JNI来调用基于C/C++语言的Binder运行库来为Java应用程序提供进程间通信服务的了。JNI在Android系统中用得相当普遍,SDK中的Java接口API很多只是简单地通过JNI来调用底层的C/C++运行库从而为应用程序服务的。 这里,我们仍然是通过具体的例子来说明Bind
2013-10-09 21:32:26
497
转载 用Android代码实现自动打开USB调试
打开Android手机的USB调试对于使用豌豆夹、调试程序等来说很重要。下面说说如何用代码自动打开USB调试。先分析USB调试的相关源代码。在 packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java 找到关于 USB Debug Enable 的代码:[java] view pla
2013-10-09 21:28:18
622
转载 android的消息处理机制(图+源码分析)——Looper,Handler,Message
作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想。android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了。这不,前几天为了了解android的消息处理机制,我看了Looper,Handler,Message这几个类的源码,结果又一次被g
2013-10-09 21:23:53
343
1
转载 android学习笔记 按电源键屏幕唤醒和屏幕睡眠流程(从上层到kernel)
一. 屏幕的唤醒 首先inputread在读取到有keyboard事件上报后,会调用到keydispatch的notifykey,去询问wm是否会对这次按键特殊处理,如果WM不处理,则此处会点亮或者熄灭屏幕。 inputReader.cpp KeyboardInputMapper::processKe
2013-10-09 20:29:43
408
转载 android TP虚拟按键
在TP的driver中,报虚拟按键的方法常见的有两种:1.直接报键值(kernel的)2.报一个坐标,上层通过KL的解析来判定是哪个键。下面说下第二种:TP的kl被存放在/sys/board_properties/virtualkeys.devicename中,pull出来后可以看看内容:0x01:139:100:900:40:60:
2013-10-09 20:27:02
421
转载 Input子系统的研究与分析
Linux内核为所有的输入事件架构了一个input子系统,在input子系统中,集成了所有的输入事件的处理,包括按键、触摸屏、键盘和鼠标等。Input系统由驱动层、核心层和事件处理层三部分组成。如下是一张事件的处理顺序图,图中驱动层部分捕捉到事件输入,如按键、移动鼠标等,然后将事件传递至核心层,接着核心层将事件交由事件处理层处理,最后再传递至用户空间层。在内核中
2013-10-09 20:24:36
317
转载 Android关机流程
Android关机流程今天研究学习了Android的关机流程。大家都知道,当长按power按键时,手机就会弹出一个对话框,从对话框中我们可以选择“关机”选项。此功能是在PhoneWindowManager.java中实现完成(frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.
2013-10-09 20:16:19
403
转载 Android Sensor传感器系统架构初探
1. 体系结构2. 数据结构3. 四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1. 体系结构 Android的体系结构可分为4个层次。第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此第二层次 Android标准
2013-10-09 15:51:37
429
转载 android input system(frameworks) analysis -- InputManager
对input系统在framework层的分析从一次触摸屏丢失上报事件开始:由于设备节点/dev/input/input0存在,而且getevent能响应点触摸屏的动作,所以把问题定位到了EventHub和InputManager这一层。InputManager的结构很简单,对外开放[plain] view plaincopy
2013-10-09 15:18:51
510
转载 Android UEventObserver
UEventObserver是android Java层利用uevent与获取Kernel层状态变化的机制。通过grep发现framework有如下模块使用UEventObserver的功能来提供服务:电池状态:services/java/com/android/server/BatteryService.java耳机状态:services/java/com/android
2013-10-09 15:13:24
407
转载 android滑动开关控件
初始时是关闭的状态: 向右滑动打开: 向左滑动关闭: 滑动控件所用图片: sild_bg_on sild_bg_off sild_bg_btn Activity: Java代码 package com.amaker.Activity; imp
2013-09-23 21:11:44
1610
1
转载 回调函数的概念及其使用
1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户
2013-09-23 21:08:25
271
转载 adb shell 模拟按键,触摸事件
1 发送按键事件(KEY):命令格式:adb shell sendevent [device] [type] [code] [value]如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu键adb shell sendevent /dev/input/event0 1 229 0 代表按下松开m
2013-09-23 15:00:36
2384
转载 几行让Android进入休眠的C代码
让Android进入休眠的C代码:static void gotoSleep(){//echo standby >/sys/android_power/request_statechar *standby="standby" ;int fd = open("/sys/android_power/request_state", O_WRONLY, 0);
2013-09-22 22:05:00
367
转载 ANDROID HALL KEY DEMO以及SC6820实现
1.HALL开关原理及手机应用 手机中HALL传感器由一个开关型HALL元件和两个电源开关控制管组成。其导通与否完全受到手机CPU输 出的HALL高电平信号控制,电源则来自于电池。当翻盖合上时装在翻盖中的磁铁的磁场作用于HALL传感器 (一般翻盖/折叠手机都把磁铁安装在翻盖上),HALL电路中的三极管导通,从传感器的引脚输出低电平,如果是在通话后则作为“
2013-08-10 16:09:13
797
转载 关于支持多个片选的大容量NANDFLASH简记
很多处理器,都支持大容量的NAND,拿三星6410处理器来讲,从资料上看,支持大容量8G NANDFLASH,也说明了需要加片选来控制,这次做的是2GNAND的支持,需要2个片选。OK ~~~~~~~硬件上,NANDFLASH上增加一路片选信号,增加一路R/B控制。我这个是由2个8G08构成的2GNAND 软件上调整: 1, 让系统判断出NAND的容量大
2013-08-02 14:23:36
381
转载 Android串口操作,简化android-serialport-api的demo(附源码)
最近在做android串口的开发,找到一个开源的串口类android-serialport-api。其主页在这里http://code.google.com/p/android-serialport-api/ ,这里可以下到APK及对源码。 但是下载源码之后发现源码不能直接使用,而且源码结构较为复杂。关于串口的操作不外乎几步: 1.打开串口(及配置串口);
2013-08-02 14:19:45
1578
3
转载 Android hardware按键触感功能实现
笔者在最近一个项目中遇到一个问题就是客户要求硬件的几个key需要在触感功能打开的情况下使用有触感,android对于key是不做触感的,就是没有震动的。 办法还是有的,感觉好别扭,把key转化成虚拟按键的坐标报上去就可以了。 现在ctp上大多都有几个触摸键,可是客户选择的ctp为了降低成本统一结构,没有这几个键,而是用另外一个小模块来实现这几个键,这个几个键通过IIC读出来就是实际的键值不是坐标。
2013-08-01 22:38:35
223
转载 添加自定义按键:作唤醒功能
最近需要做个唤醒功能,当按键的时候android系统唤醒并点亮屏,在长按键中,系统不能在进入睡眠。[cpp] view plaincopyprint?驱动方面: 1:在平台设备文件中添加 一个按键,定义为唤醒源! \arch\arm\mach-s5pv210 static struct gpio_keys_button gpio_buttons[] = {{ .
2013-08-01 22:30:55
411
转载 GPIO中断模拟普通按键控制静音等功能
如何设计GPIO中断模拟普通按键控制静音等功能[Solution]参考设计思路:Kernel 底层可以参考kpd.c的POWEY USE EINT 的方式设计:把Key_MUTE送到framework1.声明中断下半程的tasklet#if KPD_PWRKEY_USE_EINTstatic void kpd_pwrkey_handler(unsigned long dat
2013-08-01 22:29:20
468
转载 Android中通过按键旋转屏幕
Q5有个功能,通过长按menu按键,可以旋转屏幕方向(0°或者90°),这个功能有时蛮有用的,下面来看看是如何实现的: 1 修改按键处理程序frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java函数 public boolean interceptKey
2013-08-01 22:28:01
243
转载 Android按键驱动开发实例
实例1:我们实际修改开发板上已有一个按键的功能来练习。要达到的效果:在开发板上的一个按键,做成数字“1”键,也就是在进到android后,对某个编辑框,按这个键,能输入数字“1” 一、查数字键“1”对应的codelinux-2.6.36-android/include/linux/input.h#define KEY_1 2#define KEY_
2013-08-01 22:26:15
362
转载 Android通过JNI操作串口
1. 本地类TtyNativeControlpackage com.notioni.uart.manager; import java.lang.ref.WeakReference; import android.os.Handler;import android.os.Looper;import android.os.Mes
2013-07-26 14:10:25
746
转载 Android WIFI模块测试
什么是WIFIWIFI是一种无线连接技术,可用于PC,PDA,手机等终端。WIFI的目的是改善基于IEEE802.11标准的无线网络产品之间的互通性,也就是说WIFI是基于802.11标准的,但WIFI不等同无线网络。android平台下的WIFI模块简单介绍一下,WIFI模块的基本功能:开关WIFI除了在WIFI设置界面
2013-07-25 11:09:08
835
1
转载 展讯三种链接内核方式之二(修改lsensor)
(注意:展讯平台链接内核两种方式区别:方式一(举例)、\3rdparty\lcd\lcd_ili9486\kernel固定目录,决定了也要要相应的\customize\customer_cfg\sp8810ga\kernel\lcd\lcd_cfg.c下添加结构体,这种方式的好处就是可以在sp8810ga.mak文件下添加多个同样设备,相同的camera也采用这种方式,支持多个同样摄像头,相反的T
2013-07-17 20:56:52
527
转载 vibrator振荡器调试&&按键LED亮度调节
vibrator振荡器调试一、问题:软键振动太小1)改变振动时间和频率:如下网址所示http://blog.sina.com.cn/s/blog_60ffec970100ejow.html程序起动后等待3秒后,振动1秒,再等待2秒后,振动5秒,再等待3秒后,振动1秒(路径:\packages\apps\Phone\src\com\android\phone\Ha
2013-07-17 20:54:58
333
转载 linux下jiffies定时器和hrtimer高精度定时器
一、jiffies定时器,HZ=100,精度只能达到10ms。注:采用jiffies+msecs_to_jiffies(xx ms);可做到ms级,不过精度不够 #include //DO-->jiffies调用头文件#include //DO-->timer_list结构体static struct timer_list ms_timer;//DO-->定
2013-07-17 20:53:25
303
转载 基于展讯平台下调LCD各文件路径关联总结
2012-08-04 14:44 基于展讯平台下调LCD各文件路径关联总结以下各层为从上往下调用关系:用户空间——>内核空间——>硬件一、用户空间——应用程序二、内核空间:1)kernel/driver/video/fbmem.c(母目录,一律注册字符设备,不针对平台)作用:a. 定义结构体file_operations包括fb_read()、fb_write(
2013-07-17 20:46:11
312
转载 从文件到字符设备
在/dev下面有很多设备,其中也有大家广为使用的字符设备,呢里面的文件是如何与字符设备挂钩的呢~ 平时我们使用的open函数是如何动态加载字符设备的操作集的呢~下面就让我们慢慢剖析~ (以内核2.6.26为参考)一.首先是文件系统~ 需要动态解析文件路径名 像/dev/ts0 在文件系统里分为3个部分 1./(根文件目录) 2.dev(根文件目录下的dev目录
2013-07-17 14:02:37
216
转载 make menuconfig/.config/Kconfig解析
在对linux进行编译,常用的命令是make menuconfig,使用图形界面来对整个系统进行裁剪。当然,除了这条指令,还包括很多配置命令,比如make defconfig, make oldconfig等。这里主要就make menuconfig的执行过程进行解析。一.准备工作包括(交叉)编译环境的建立,linux源码的下载与解压等。二.初步介绍
2013-07-17 14:01:12
198
转载 devfs、sysfs、udev
一、devfs linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。 在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候
2013-07-17 14:00:04
201
android-serialport-api的demo (附源码)
2013-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人