- 博客(294)
- 资源 (801)
- 收藏
- 关注
原创 检查数组的每个单元对应的bit位是否相同为0,相同就set
for (i = 0;i { zerocount = 0; for (row = 0; row pdata->num_rows; row++) { if(!((new_data[row] >> i) & 0x01)) { zeroco
2011-09-02 07:52:19 945
原创 Hostapd简介
Hostapd简介 hostapd能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能,也就是我们说的软AP(Soft AP)。 Hostapd的功能就是作为AP的认证服务器,负责控制管理stations(通常可以认为带无线网卡的PC)的接
2011-08-12 01:42:02 16418 2
原创 BT 和WIFI的共存
蓝牙和WIFI的共存主要是解决蓝牙和WIFI的共用一根天线的问题。一般是3线模式,有3根线,分别是BT_ACTIVE WIFI_ACTIVE 和BT_priority当BT要用天线的时候BT_ACTIVE 信号有效,告诉WIFI,希望将天线却换到BT状态;
2011-08-12 01:24:13 10267
原创 手机modem信号流程
打电话发射信号的流程声音经过MIC,放大后经过基带芯片的ADC变成数字音频信号转换为基带I,Q信号,再通过transceiver,上变换为高频信号,通过信号切换开关进入功率放大后经过声表面滤波器后由天线发射出去到基站。打电话接收信号的流程基站的高频信号通过
2011-08-12 01:14:18 4540
原创 sdio 热插拔流程
sdio 热插拔流程 由于SD卡插槽采用的是机械式开关,在插拔卡的时候,机械开关断开、闭合.系统初始化时,开关检测引脚被设置为上升沿和下降沿触发,因此引脚电平发生变化时,都会有中断产生。当硬件产生中断时,系统进入核心ISR,对开关检测引脚进行检测,返回相应的中断标识码,对于是SD插入还是拔出,则由驱动程序的IST来处理。由于SD卡插槽采用的是机械式开关,在插拔卡的时候,机械开关
2011-08-05 07:14:37 7967 3
原创 如何改变只读的system或者根文件系统为读写
mount -o rw,remount /system 改变只读的system文件系统为读写mount -o rw,remount / 改变只读的根文件系统为读写修改了文件后要sync
2011-08-04 00:18:18 10778
原创 如何touch一个目录及其下所有嵌套子目录中的文件?
如何touch一个目录及其下所有嵌套子目录中的文件?touch `find 目录名 -name *.c`就可以了。
2011-08-04 00:14:59 11057
原创 WIFI的电源管理
iwconfig ps_mode 是设置设备与AP处于链接状态,不同通信的间隔来省电sleepmode 是将网卡进入deepsleep或者断电的模式来省电
2011-07-26 23:51:29 4573 1
原创 wifi移植
1,更改device目录的boardconfig.mk 增加驱动的环境变量2,更改kernel/arch/arm/mach-xxx/board-xxxx.c增加struct platform_device xxx_device_wifi= { .name = "ar-wifi",
2011-07-23 07:32:02 2967
原创 android WIFI 流程
android WIFI 流程 一、WIFI的基本架构 1、wifi用户空间的程序和库: external/wpa_supplicant/ 生成库libwpaclient.so和守护进程wpa_supplicant。 2、hardware/
2011-07-22 00:45:29 4639 2
原创 Trace32 Simulator for ARM工具。
Trace32 Simulator for ARM Trace32 ICD ARM USB能实时Debug程序在手机中的运行情况,需要连接Trace32硬件才可以工作。当机器crash死机后使用Trace32的WIN32版本,把手机Crash时的寄存器信息dump出来,就能在WIN32下定位到死在程序代码的那一行.Qualcomm QPST获取dump 手机死机时,按"#
2011-06-30 23:09:00 13657
原创 android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制
android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制=============================================================================================================libs/android_runtime/android_net_wifi_Wifi.cp
2011-06-30 00:24:00 5862 1
原创 android WIFI 架构和控制流程
一、WIFI的基本架构 1、wifi用户空间的程序和库: external/wpa_supplicant/ 生成库libwpaclient.so和守护进程wpa_supplicant。 2、hardware/libhardware_legary/wifi/是wifi管理库。 3、JNI部分: frameworks/base/
2011-06-29 22:11:00 8899
原创 wifi 流程
启动wifi的过程1. WIFI JAVA layer:1.1. 当android系统启动WIFI 模块时, 它将调用 Wifiserver 类的setWifiEnabledBlocking函数。1.2. 在该函数中,如果是使能WIFI, 它将做四件事: a. load wifi driver. b. 启动wpa_supplicant. c. 启动 event loop.
2011-06-29 22:02:00 3048
原创 wifi 层次
UI | |MMI (JAVA) | |hardware level (C++ /C) | |DRIVER (C) | |model hardware UI |wifi-manager |wifi.c |supplicant |driver
2011-06-28 23:49:00 1735
原创 Linux关于总线、设备、驱动的注册顺序
<br />Linux关于总线、设备、驱动的注册顺序<br /> 设备挂接到总线上时,与总线上的所有驱动进行匹配(用bus_type.match进行匹配),<br /> 如果匹配成功,则调用bus_type.probe或者driver.probe初始化该设备,挂接到总线上<br /> 如果匹配失败,则只是将该设备挂接到总线上。 <br />+----> devices<br />|<br />|<br />|<br />---------------------
2011-05-22 01:54:00 4089
原创 如何修改设备驱动的加载顺序
<br />内核启动的时候,各个驱动初始化的工作在文件init/main.c中的do_basic_setup()函数中做.------------------------------------------------------------------------------------------------------<br />static void __init do_basic_setup(void)<br />{<br /> /* drivers will send hotplu
2011-05-22 01:38:00 4390 2
原创 enable_irq_wake(irq);有嵌套层次
enable_irq_wake(irq);有嵌套层次,多次执行后如果去执行一次disable_irq_wake,结果不能够disable irq wake,要enable和disable的次数相同static inline int enable_irq_wake(unsigned int irq){ return set_irq_wake(irq, 1);}static inline int disable_irq_wake(unsigned int irq){ return set_irq_wake(
2011-05-15 03:01:00 5415
原创 android 的init rc 命名方法
<br />如果在root dir增加init。rc,由于init对其解析的时候要判断他的名字<br />所以有注意命名方法<br />比如原来平台的名字叫goldfish,如果你要增加init rc,<br />名字就要init.goldfish.autotest.rc <br />也就是init.平台名字.XXXX.rc<br />否则不会执行
2011-05-15 02:50:00 1317
原创 gpio键盘的原理1
<br />#define GPIO_EVENT_DEV_NAME "gpio-event"<br />1,定义<br />static struct gpio_keys_button gpio_keys_buttons[] = {<br /> {<br /> .code = SW_LID,<br /> .gpio = LID_SENSOR_GPIO,<br /> .desc = "Lid",<br /> .active_low =
2011-05-15 02:40:00 2598
原创 gpio键盘的原理
gpio键盘1,定义gpio键盘的设备数据结构platform_device#define RX51_GPIO_CAMERA_LENS_COVER 110#define RX51_GPIO_CAMERA_FOCUS 68#define RX51_GPIO_CAMERA_CAPTURE 69#define RX51_GPIO_KEYPAD_SLIDE 71#define
2011-05-15 02:25:00 6629
原创 android 启动过程
<br />1. Boot系统初始化, (system/core/init/Init.c)中的main函数,这时候,手机或者模拟器出现的画面是一个console,显示“ANDROID”msg。<br /> <br />2. 初始化成功后,就开始mounting系统,具体参见(system/core/mountd/Mountd.c) 中的main函数。<br /> <br />3.接下来运行ndroidRuntime,并开始启动java虚拟机dalvikvm。<br /> <br />4. Java虚拟机启
2011-05-09 02:39:00 1386
原创 android poweroff 流程
<br />android poweroff 流程<br />关机流程<br /> <br />android系统都有一个关机按键,长按这个按键系统会进行关机操作。具体实现流程如下:<br /> <br /> 在android层通过系统调用reboot(arg)调用内核中的sys_reboot,具体流程如下:<br /> reboot——>sys_reboot()——>kernel_power_off()——>machine_power_off()——>pm_power_off();<br />p
2011-05-09 02:33:00 2250
原创 bit操作
<br />#define BIT(nr) (1UL << (nr))<br />#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))<br />#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)<br />#define BITS_PER_BYTE 8<br />#define BITS_TO_LONGS(nr)
2011-04-24 22:20:00 1810
原创 ARM linux 内核gpio模拟I2C
gpio模拟I2CI2C是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。I2C是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位
2011-03-24 00:47:00 6331 2
原创 单片机看门狗的作用
看门狗的作用是系统CPU正常工作时定时给看门狗喂狗,复位定时器,如果系统出问题,没有给看门狗喂狗,看门狗就由于超时将CPU复位。系统用初始化后注册看门狗中断request_irq(WDT0_ACCSCSSNBARK_INT, wdog_bark_handler, 0, "apps_wdog_bark", NULL);和初始化看门狗的超时时间bark time, __raw_w
2011-03-22 23:26:00 12257
原创 android上层应用apk到G-sensor driver的大致流程
<br />android上层应用apk到G-sensor driver的大致流程:<br />Android HAL层,即硬件抽象层,是Google响应厂家“希望不公开源码”的要求推出的新概念<br />1,源代码和目标位置<br />源代码: /hardware/libhardware目录,该目录的目录结构如下:<br />/hardware/libhardware/hardware.c编译成libhardware.so,目标位置为/system/lib目录<br />/hardware/libhard
2011-03-19 01:27:00 11126 4
原创 延迟机制work_queue
<br />由于i2cbus的读写操作是可能休眠的,而中断中不允许调用可能休眠的函数,故通过linux提供的延迟机制work_queue来解决。<br />
2011-03-19 00:44:00 1632 2
原创 驱动调试基本条件和经验
驱动调试是要硬件相关的,经常要使用万用表,示波器,甚至逻辑分析仪检查问题。1,电源电压和电流要符合datasheet的规定范围,要多动手测试,特别是硬件刚刚准备开始调试的时候,电源要放在第一位。2,时钟要符合要求,工作频率和电平都要符合要求,幅度不能够过低或者过高,特别是不能够过低,否则不能够正常工作。3,复位电路是否正常,包括复位电平和复位的时间是否达到datasheet的要求。
2011-03-16 23:53:00 1444
原创 iphone红外传感器
红外距离感应原理 红外距离感应原理是通过发射特别短的光脉冲,并测量此光脉冲从发射到被物体反射回来的时间,通过测时间来计算与物体之间的距离。 红外距离感应器一般都需要两个感应装置,其中一个是发送一个则是接收。发送感应器先是垂直方向发送红外信号,当人的面部或其它靠近到有效范围时,红外信号通过面部进行反射,再将信号反射回接收部分从而实现距离感应功能。大家可以做个试验用通话时用一块透明的玻璃来遮挡距离感应部分,然后在用镜子(反光性最强)来遮挡,通过试验大家可以用看到玻璃遮挡是没有任何效果的,而镜
2011-03-12 01:21:00 9309
原创 linux gpio 键盘设备工作流程
<br />#####################################################################################################<br />以下以内核自带的gpio_keys驱动为例,介绍输入子系统的使用.<br />主要的原因是gpio_keys驱动比较简单易懂,另外不是没个人都有触摸屏,但键盘的话相信每一块开发板上都配有.,先从下到上的分析底层驱动是如何提交输入事件的:<br />###################
2011-03-11 01:48:00 3968 1
原创 耳机类型检测
耳机检测手机的耳机常见的3芯音频插头立体声耳机或带有麦克风的单声道耳机。可以用比较器区分出立体声和单声道+麦克风耳机。电路设计依据为:耳机电阻很低(通常为8Ω、16Ω或32Ω),而麦克风电阻很高(600Ω至10kΩ)。在一个3芯音频插孔中,“插头”前端在立体声耳机承载左声道音频信号,在带麦克风的单声道耳机中承载麦克风信号。对于立体声耳机,“金属环”位置连接右声道信号,“套筒”接地;对于带麦克风的单声道耳机,“金属环”连接单声道麦克风的输进音频通道,“套筒”接地。检测电路通过在比较器的输入端接2.2K的上拉电
2011-03-06 08:41:00 5770
原创 ARM的GPIO设置
ARM的GPIO设置主要1,设置GPIO的ID,设置哪一个gpio;2,设置GPIO的功能号,设置为那种模式,包括普通GPIO,特殊功能1,特殊功能2,。。。比如某个GPIO可以选择设置为普通gpio或者串口的输入,或者USB的D+功能之一,主要看datasheet的功能表3,设置GPIO方向为输入还是输出4,设置GPIO的驱动能力,1ma,2ma,3ma,4ma,5ma,6ma,
2011-03-06 01:36:00 11883 1
原创 RTC功能
<br />RTC的功能是日历功能和闹钟功能<br />设置和获取日历的年月日,时分秒<br />设置闹钟的年月日时分秒<br />设置闹钟步骤,<br />1,首先复位alarm,消除状态<br />2,关闭中断,<br />3,注册中断服务程序<br />4,将要设置的闹钟时间设置到RTC,如果给的alarm时间是相对的时间秒数,还要读出当前的时间,将alarm的相对秒数加上当前的时间的绝对秒数,在将年月日时分秒设置到RTC,如果给你参数是绝对的秒数,要成为年月日时分秒设置到RTC<br />5,当日历
2011-03-05 01:02:00 6749
原创 android boot.img 结构
android 的boot.img 包括 boot header,kernel, ramdisk首先来看看Makefile是如何产生我们的boot.img的:boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由boot header,压缩的内核,ramdisk以及second stage loader(可选)组成,可以从mkbootimg.h文件中看到。b
2011-03-02 23:15:00 28971 3
原创 LCD 背光
LCD的背光由驱动产生文件/sys/class/leds/lcdbacklight/brightness对LCD的背光亮度调整,原理是改变PWM信号的占空比来设置亮度一个参数是PWM信号的周期,另一个参数是PWM信号的占空比backlight_ops结构体定义如下:struct backlight_properties {int brightness;//当前亮度,最大值不能超过max_brightnessint max_brightness;//最大亮度,只读int power;//当前的电源模式int
2011-03-02 22:55:00 2113
原创 android虚拟按键
android虚拟按键android标准键盘是有 HOME,MENU,BACK,SEARCH等,但是同时要保持工业设计。nexus one没有用普通按键用触摸屏实现,显示屏是800X480,但是在电容触摸屏是8xx*480的就是比800要大的地方就变成了虚拟按键,模拟了android标准按键。1 方案要实现虚拟按键,在android里面是靠两层协助实现,底层要把虚拟按键在比显示屏多出的地方规定好虚拟按键的位置大小以及键值等,给上层一文件接口。上层java层启动一个服务来读取这一区域的按键响应,这样就
2011-02-27 20:11:00 16389 3
原创 工作队列的使用例子
<br />工作队列(work queue )是另外一种将工作推后执行的形式.<br />Linux 2.6内核使用了不少工作队列来处理任务,他在使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。<br />工作队列的使用又分两种情况,一种是利用系统共享的工作队列来添加自己的工作,这种情况处理函数不能消耗太多时间,这样会影响共享队列中其他任务的处理;另外一种是创建自己的工作队列并添加工作。<br />工作、工作队列和工作者线程<br />我们把推后执行
2011-02-26 04:11:00 5413 2
原创 cpufreq 五种模式
cpufreq是一个动态调整cpu频率的模块,系统启动时生成一个文件夹/sys/devices/system/cpu/cpu0/cpufreq/,里面有几个文件, 其中scaling_min_freq代表最低频率,scaling_max_freq代表最高频率,scalin_governor代表cpu频率调整模式,用它来控制CPU频率其中 1,performance :顾名思义
2011-02-21 01:16:00 31475 1
jdk-1_5_0_19-linux-i586.bin for linux
2014-12-30
How to use CPU frequency scaling
2012-05-16
Easy CD-DA Extractor
2012-05-06
utraedit-32 16.20
2012-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人