- 博客(132)
- 资源 (16)
- 收藏
- 关注
原创 步进电机使用总结
步进电机使用总结1、步进电机励磁顺序 2、驱动电路 3、步进电机驱动芯片UPA1759G 为NMOS。4、需要注意的几点: 1) 我们使用的步进电机 800pps为最佳。 2) 使用定时器定时880pps即1250us执行一拍3) 步进电机为共阳极,驱动器为NMOS的UPA1759G。软件处理时需要反向驱动处
2016-02-24 09:37:40
5353
1
原创 GPIO调用方法的实现流程
GPIO调用方法的实现流程上文中虽然讲述了如何实现IO空间的静态映射方法,但调用s3c_gpio_cfgpin、s3c_gpio_setpull、gpio_direction_output就可以访问IO空间,这又是如何实现的呢?本文就来讲述一下实现过程。回到smdkv210_map_io函数中staticvoid __init smdkv210_map_io(void){
2014-05-29 12:18:56
2882
原创 IO空间的静态映射基本过程
1、前言IO端口与IO内存的概念:外设中的寄存器称为是IO端口,外设中的内存称为是IO内存。二者统称为IO空间。Linux内核是通过虚拟地址访问外设的。所以需要先将虚拟地址映射到相应外设的物理地址上,linux的映射方式有两种:静态映射(map_desc)和动态映射(ioremap),其实也是内核访问外设资源的方式。2、静态映射基本过程:在驱动中配置寄存器,可以调用类似于s3c_gpi
2014-05-29 12:04:07
1836
原创 android_wifi读书笔记之8-SDIO驱动架构
本文为读书笔记,整理自网络文献和源码8、SDIO驱动架构size:10� � ;H�~�u-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calib
2014-05-27 13:51:35
5050
原创 android_wifi读书笔记之7-wifi驱动解析
7、wifi驱动解析7.1、WIFI内核实现的大致框架 Linux下已经支持了市面上的大多数wifi卡的驱动•每种wifi卡都是需要固件(firmware)才能驱动的,并且同一种卡工作在不同接口时对应的firmware是不一样的•需要注意的是:很多firmware都是要花钱的•固件通过其驱动下载到无线卡中,才能驱动起来 (10)wifi驱
2014-05-27 13:45:06
2808
原创 android_wifi读书笔记之6-wpa_supplicant 与kernel交互
本文为读书笔记,整理自网络文献和源码6 wpa_supplicant 与kernel交互源码位置:external/wpa_supplicant_8/wpa_supplicant与kernel交互的操作,一般需要先明确驱动接口,以及用户态和kernel态的接口方法,以此来进行调用操作。这里分为4个步骤。1.首先需要明确指定的驱动接口。因为有较多的驱动接口可以使用,如wext、nl8
2014-05-27 13:36:59
2571
原创 android_wifi读书笔记之5-WPA_SUPPLICANT分析
本文为读书笔记,整理自网络文献和源码5 WPA_SUPPLICANT分析5.1、WPA_SUPPLICANT 分析1:参考文献:http://www.cnblogs.com/chenbin7/p/3266032.htmlhttp://blog.chinaunix.net/uid-26585427-id-4051479.htmlwpa_supplicant软件架构分析http
2014-05-27 13:34:29
2449
原创 android_wifi读书笔记之4-HAL层分析
本文为读书笔记,整理自网络文献和源码4 HAL层分析Hardware/libhardware_legacy/wifi/wifi.c这个文件主要是实现驱动的加载和卸载,wpa_supplicant的开启和关闭4.1 驱动的加载卸载:wifi_load_driver():驱动的加载。wifi驱动是编译成ko文件, ko文件储存的位置#defineWIFI_DRIVER_MODULE
2014-05-27 13:32:23
2829
原创 android_wifi读书笔记之3-JNI层 分析
本文为读书笔记,整理自网络文献和源码 3 JNI层分析frameworks/base/core/jni/android_net_wifi_Wifi.cpp这个文件里面是调用HAL层的wifi.c里面对应方法的接口的集合,提供给frameswork层的类Wifinative里面的方法调用
2014-05-27 13:31:39
1435
原创 android_wifi读书笔记之2-wifi framework分析
本文为读书笔记,整理自网络文献和源码2 wifi framework分析WIFI Settings应用程序位于packages/apps/Settings/src/com/android/settings/wifi/涉及到的文件:WifiSettings.java frameworks部分:frameworks/base/services/java/com/andr
2014-05-27 13:29:51
1255
原创 android_wifi读书笔记之1-wifi简介
1、wifi简介1.1 物理简介wlan:无线局域网,802.11协议wifi主要物理组件: 工作站(station)、接入点AP(access point)、无线媒介(wirelessmedium)、分布式系统(distribution system)Wifi可工作在station模式和AP模式。station模式的结构:Ap模式:
2014-05-27 13:26:58
1322
原创 关于 Caused by:.. /proc/net/xt_qtaguid/stats:open failed: ENOENT (No such file or directory)问题的解决
W/PowerUI ( 2092): unknownintent: Intent { act=android.intent.action.ACTION_POWER_CONNECTEDflg=0x10000010 }D/dalvikvm( 2027): GC_CONCURRENTfreed 483K, 13% free 8876K/10119K, paused 2ms+3msF/Batter
2014-04-18 09:08:54
5015
2
转载 DDR工作原理
DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。本文只着重讲讲DDR的原理和DDR SDRAM相对于传统SDRAM(又称SDR SDRAM)的不同。 DDR的核心频率、时钟频率和数
2013-12-30 11:11:09
1340
转载 hash表
哈希表 基本知识 Hash,一般翻译做“散列”,也有直接音译为”哈希“的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函
2013-10-18 11:55:16
960
原创 source insight 函数名出现乱码的解决办法
标记一下,提醒自己:安装了source insight之后,载入源文件,发现里面的函数名是乱码,其它都正常。解决办法:双击某个函数名,然后右键,选则Style Properties,进入Style Properties之后,点击reset按钮。
2013-10-12 13:11:33
2839
2
转载 为Android SDK增加应用案例实现
为Android SDK增加应用案例实现是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK的内容来看本文详解。在开发Android开发应用的过程中,通常有两种方式:NDK和eclipse,或者直接在Android SDK增加。这里介绍如何在Android SDK环境中增加一个应用程序。其中涉及到JNI,JAVA对JNI的调用,其中JNI代
2013-10-08 09:20:58
573
转载 Android中深入研究Service
关于Service,不管是Windows还是linux系统,相信大家应该遇到过很多自己解决不了的问题吧,那么本文来讲述一下Android手机系统中的Service .1 Service本质结构我们还是从Service的根本意义分析入手,服务的本质就是响应客户端请求。要提供服务,就必须建立接收请求,处理请求,应答客服端的框架。我想在Android Service设计者也会无时不刻
2013-09-29 10:52:08
636
转载 Android开机启动流程初探
l Init进程Android系统在启动时首先会启动Linux系统,引导加载Linux Kernel并启动init进程。Init进程是一个由内核启动的用户级进程,是Android系统的第一个进程。该进程的相关代码在platform\system\core\init\init.c。在main函数中,有如下代码: open_devnull_stdio(); log_i
2013-09-28 10:49:49
697
转载 Android重量级开发之--提高android启动速度研究
大家都知道启动速度慢是智能操作系统的一个通病,Android也不例外,启动速度大概在1分钟左右,虽然日本有一个叫quick boot的一秒启动android的产品,但是毕竟是旁门左道。所以从常规来提高android的启动速度成了大家研究的重点,也是难点。下面将初步研究的一下经验跟大家分享一下。 首先看一下android系统的启动流程:bootloa
2013-09-26 17:19:18
1620
转载 android init中的service
android的init进程初始化的时候,除了对系统作一些必要的初始化外,就是启动service了。而service是定义在init脚本中的,故很有必要了解一下,init中对service的处理。struct service 该数据结构保存了和service相关的信息。service下可以定义option,这些option被保存在这个结构体中;除此之外还保存了service的
2013-09-16 17:37:32
756
转载 linux进程的休眠(等待队列)
当进程以阻塞的方式通信,在得到结果前进程会挂起休眠。为了将进程以一种安全的方式进入休眠,我们需要牢记两条规则:一、永远不要在原子上下文中进入休眠。二、进程休眠后,对环境一无所知。唤醒后,必须再次检查以确保我们等待的条件真正为真简单休眠完成唤醒任务的代码还必须能够找到我们的进程,这样才能唤醒休眠的进程。需要维护一个称为等待队列的数据结构。等待队列就是一个进程链表,其中包含
2013-09-11 11:31:10
736
转载 linux内核的 等待队列 使用方法,wait_queue_head_t,进程休眠
当你在用户空间需要读写一大片数据的时候,这个就用上了。以下来自:http://www.yuanma.org/data/2006/1207/article_1916.htm假设我们在 kernel 里产生一个 buffer,user 可以经由 read,write 等 system call 来读取或写资料到这个 buffer 里。如果有一个 user 写资料到 buffer 时,此
2013-09-11 11:30:05
667
转载 Android中计算坐标变换速度的原理
采用最小二乘法对获取的坐标X,Y时间序列进行回归拟合。对于X时间序列(xi,ti):xi=b0+b1*ti+b2*ti^2+...+bm*ti^m,可得如下等式A*B=Y----------(1)其中,(带t的表示矩阵的转置) 矩阵B为拟合后要求解的系数矩阵(b0 b1 b2 ... bn)t
2013-09-03 11:28:17
1336
转载 sd卡受损修复办法
以后出现SD卡受损,千万不要再格式化内存卡了。修复过程:1、手机提示TF卡受损,需要格式化 。2、把TF卡插入读卡器,接到电脑USB后,电脑提示格式化,点取消。然后查看一下属性。直接使用属性中的 工具-开始检查。发现无法检查磁盘错误3、点电脑上的“开始菜单”--“运行”- chkdsk H:/F (H:就是你的SD卡盘符,/F是修复参数。)4、等待修复完成,DOS窗口会
2013-08-22 14:14:02
5589
1
转载 linux __attribute__ 分析
# define __user __attribute__((noderef, address_space(1)))__user这个特性,即__attribute__((noderef, address_space(1))),是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即这个变量地址必须是有效的,而且变量所在的地址空间必须是1,即用户程序空间的。这里
2013-07-18 11:10:12
1942
转载 U-Boot启动过程完全分析
1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能Ø 硬件设备初始化Ø 加载U-Boot第二阶段代码到RAM空间Ø 设置好栈Ø 跳转到第二阶段代码入口 (2)第二阶段的功能Ø 初始化本阶段使用的硬件设备Ø 检测系统内存映射Ø 将内核从Fla
2013-07-16 16:10:02
780
转载 android initlogo.rle 在32位LCD上显示
在S5PV210 ANDROID2.3 平台上做了一个initlogo.rle 显示不正常。原因是initlogo.rle是16位数据,而我们的LCD是32位的,需要将initlogo.rle转换位32位的。 源码路径:android_source/system/core/init/logo.c#define fb_size(fb) ((fb)->vi.xres * (fb)
2013-07-16 13:57:56
800
转载 Android平台开发-Bluez function porting-蓝牙功能移植
一、Bluez编译配置支持 在BoardConfig.mk中添加: BOARD_HAVE_BLUETOOTH := true。 二、启动hciattach BlueZ核心子系统使用hciattach守护进程添加指定的硬件串口驱动。 修改init.rc来启动hciattach: service hciatt
2013-07-09 12:00:08
1055
转载 Android 蓝牙状态机以及蓝牙启动状态机
Bluetooth状态转换图如下:[html] view plaincopy (BluetootOn)40 * | ^ -------------------->- | 41 * | |
2013-07-08 10:22:23
2451
转载 bcm4330蓝牙分析总结
对于蓝牙无论最底层的硬件驱动如何实现,都会在HCI层进行统一。也就是说,HCI在主机端的驱动主要是为上层提供统一接口,让上层协议不依赖于具体的硬件实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如UART,USB和SDIO等。 HCI层在所有的设备面前都被抽象为一个hci_dev结构体,因此,无论实际的设备是哪种蓝牙设备、通过什么方式连接到主机,都需要向HCI
2013-07-08 09:24:01
1298
1
转载 蓝牙耳机简单的流程分析
最近在关注蓝牙耳机方面的问题,做下简单的流程分析。解码后,在AudioFlinger里把音频数据写到设备里。这里主要看看AudioFlinger,AudioPolicyManager和external/bluetooth/bluez/audio里面的android_audio_hw.c和liba2dp.c。在AudioPolicyManager里有设备连接判断。status_t Aud
2013-07-02 18:07:50
2869
转载 android关机充电流程、充电画面显示
关键词:android电池关机充电androidboot.mode charger 关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4.0平台:S5PV310(samsungexynos 4210)电池的基本原理;android关机充电流程、充电画面显示;Android开机充电流程,电池电量、
2013-06-21 15:33:51
1364
转载 Uboot 源码分析----代码整体结构分析
1. 文件夹总体功能分析- board 目标板相关文件,主要包含SDRAM、FLASH驱动;- common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;- cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;- driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)- doc U-B
2013-06-19 14:22:12
852
转载 Android 4.0 虚拟按键、手机模式、平板模式
关键词:android 4.0 手机模式(phone) 平板模式(table) 虚拟按键 lcd_density平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsungexynos4210/4412) 三星新拿回来来的BSP,编译后没有“返回、最近打开应用、home”三个虚拟键。我们硬件在设计
2013-05-24 14:56:28
1072
转载 如何枚举产生i2c_client ,何时使用i2c_new_device
根据自己的理解翻译了http://lxr.linux.no/linux+v2.6.34/Documentation/i2c/instantiating-devices 中关于枚举建立i2c_client的文档。有异议或疑问请参照原文,毕竟内核的文档才是真正的精华。方法1:使用总线号声明设备。在内核的初始化中定义设备的信息。前提是内核编译的时候已经确定有哪些i2c设备和它们的地址,还
2013-05-13 15:51:23
985
转载 VMware下扩展Ubuntu根文件大小的方法
担心创建的虚拟机硬盘容量太大会占用真正的硬盘空间,把硬盘的容量设置得很小,可是等到给虚拟机装好系统后再装其他的软件,才发现硬盘容量不够用了。这就需要想办法扩展Ubuntu根文件目录,下面我来介绍这样一种方法。1.修改硬盘大小在WMware的安装目录下有名为vmware-vdiskmanager.exe的可执行文件,在windows下打开控制台并进入WMware的安装目录后,使用以下命令(假
2013-04-28 10:59:22
1681
转载 Android-2.2 display系统介绍-SW架构
Android-2.2display系统介绍-SW架构一、Overview上图的原型取自高通的文档,由于原图无法描述现有的架构,我在原图的基础了做了些修改,主要是增加了overlay部分,另外其他部分根据现有的软件也做了些许改动。下面先对上图做个大概的介绍,后面会针对重点部分做详细的分析。最上面一层为应用程序,根据数据类型以及应用的不同可以分为几种。第一种是最普通的应用,如UI
2013-04-27 15:29:17
666
转载 android中各种img文件的作用以及系统启动过程
首先通过编译,先将android内核编译成功。正常情况下,在目录out/target.product/generic/(但是有的就没有generic文件,如freescale和iriver;但是lonshinetech下面就有这个文件,依据情况而定,只要能找到生成的三个文件就可以。例如:~/freescale/R9.2/out/target/product/imx51_bbg$ )下会生成三个文件
2013-04-27 09:49:58
1013
原创 LPC1788单沿pwm原理和配置
LPC1788单沿pwm原理和配置 pwm的基本功能:以一定的周期频率,输出不同占空比可调的方波。 Lpc1788中的pwm的时钟(频率)来源于APB总线的时钟(频率),首先要进行分频,或者说预分频,不然直接由APB频率也太大了,肯定是需要通过分频才能达到我们需求的pwm周期频率。 寄存器PWMPR 和PWMPC两个寄存器提供了APB频率分
2013-04-18 12:03:28
2871
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人