自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冰水寒SG的专栏

一个驱动初学者的总结

  • 博客(50)
  • 收藏
  • 关注

转载 G-sensor 架构分析

本文主要描述了在android2.3平台G-sensor相关软硬件的体系架构和实现原理,按照Applications、Framework、HAL、Driver和Hardware五大层次分别介绍。1.系统架构 (Architecture)1.1 Android体系架构图1.2 Sensor子系统架构图 · Applicati

2015-03-12 16:03:11 1527

转载 Gsensor的整个系统架构

Email:[email protected]:http://blog.csdn.net/yinwei520Author: YwwTime:2011-8-22一、首先建立这样一个全局的观念:    Android中sensor在Android系统架构中的位置及其工作。方框图如下:从以上方框图中,可以看出Android中sensor在系统分为四层:驱动层(Sensor D

2015-03-12 09:47:48 654

转载 Android Sensor 架构深入剖析

1、Android sensor架构Android4.0系统内置对传感器的支持达13种,它们分别是:加速度传感器(accelerometer)、磁力传感器(magnetic field)、方向传感器(orientation)、陀螺仪(gyroscope)、环境光照传感器(light)、压力传感器(pressure)、温度传感器(temperature)和距离传感器(proximity)等。

2015-03-11 16:07:46 453

转载 Android Sensor传感器系统架构初探

1. 体系结构2. 数据结构3. 四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1. 体系结构Android的体系结构可分为4个层次。第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此第二层次 Android标准C/C++库,包括硬件抽象层,An

2015-03-09 10:36:15 639

转载 linux内核中的GPIO系统之(2):pin control subsystem

一、前言在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况:(1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码。例如:在bootloader中建立一个大的table,描述各个引脚的配置和缺省状态。此外,由于SOC的引脚是可以复用的,因此在各个具体的driver中,也可能会对引脚进行的配置。这些工作都是比较繁琐的工作,

2014-11-12 14:03:19 1109

转载 信号量、互斥体和自旋锁

一、信号量      信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:   (1) 测试控制该资源的信号量。    (2) 若此信号量的值为正,则允许进行使用该资源。进程将信号量减1。   (3)

2014-11-05 13:40:32 364

转载 Android4.2蓝牙基础架构学习

本文不会涉及任何代码,主要对整个Android的蓝牙结构进行一个框架上的分析。Android4.2使用了Bluetooth.apk管理所有蓝牙相关的操作,Bluedroid作为蓝牙协议栈。整个蓝牙的关系架构如下图所示:下面逐一进行讲解:Applications:Android蓝牙应用程序,就是使用了蓝牙的API的程序java Framework:提供给应

2014-10-21 14:37:12 446

转载 android -- 蓝牙 bluetooth 入门

前段时间在 网上看了一些关于android蓝牙的文章,发现大部分是基于老版本(4.1以前含4.1)的源码,虽然无碍了解蓝牙的基本原理和工作流程,但对着4.2.2的代码看起来总是有些遗憾。所以针对4.2.2版本代码整理下相关知识,当然蓝牙工作的主干流程是没有变的,上电、加载驱动这些动作少不了的,只是这些功能的实现代码位置变了不少。希望本文可以让大家对android4.2的蓝牙部分代码有一个初步的了解

2014-10-21 14:32:10 860

转载 Linux输入子系统(Input Subsystem)

Linux 的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对 Linux 输入子系统进行详细的分析。一    前言                输入子系统又叫 input 子系统。其构建非常灵活,只需要调用一些简单的函数,就可以将一个输入设备的功能呈现给应用程序。                      

2014-10-08 16:17:16 431

转载 Input Core和evdev基本知识

1. 基本数据结构和使用示例input_event数据结构如下:[cpp] view plaincopystruct input_event {     struct timeval time;     __u16 type;     __u16 code;     __s32 value; }

2014-09-28 16:14:33 541

转载 linux内核input子系统解析

Android、X windows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系统了。一、input输入子系统框架下图是input输入子

2014-09-28 15:51:46 454

转载 Linux设备驱动之——input子系统

什么是INPUT   Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。linux中input系统主设备号是13次设备号:0-31     j

2014-09-28 10:45:17 343

转载 浅析Linux Input 子系统

在android中,定时alarm功能是很常用的,现在来分析下怎么实现的,这里将采用自下而上的方式讲解。输入子系统又叫input子系统。其构建非常灵活,只需要调用一些简单的函数,就可以将一个输入设备的功能呈现给应用程序。Input子系统 主要有下面几个结构:struct input_dev;         //表示一个输入设备,包含输入设备的一些相关信息(如支持的按键码,s设备的名称

2014-09-28 10:29:22 415

转载 container_of分析

1.container_of宏1> Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。2>接口:container_of(ptr, type, member)  ptr:表示结构体中member的地址 type:表示结构体类型 membe

2014-09-03 14:35:12 340

转载 android 电容屏(四):驱动调试之驱动程序分析篇 -- FocalTech

本人用的触摸屏IC是FocalTech公司的ft5306,是一款i2c的电容屏多点触控芯片。对于它的整体驱动官方已经给了,我们就触摸屏和按键部分的代码做相关说明。说明其中应该注意的地方。对于所有的input设备,报告input事件时候都分这么几部分,首先在probe文件中设置设备发送的事件类型、按键类型、设置设备一些属性信息。然后在发送事件时候要根据probe的设置来发送事件,否则就会被判为无

2014-09-02 19:47:24 497

转载 Linux驱动框架----hwmon

写在前面的话:对于框架,我觉得就是在一定规范的形式下去实现你要的功能。这里就涉及到一个变与不变的地方。你所要实现的功能会是千差万别的---这就是变的地方,而所谓既定的规范,包括建立目录和属性文件这是Linux系统已经为我们做好了的,我们只需要直接拿来引用就OK了。那么今天,我们就来看看hwmon框架是怎么样的。对hwmon而言,它是sysfs框架下的一个类,但是所有有关该类与sys

2014-08-19 15:37:59 1933

转载 Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt .

简介------------    为了发挥新近的多点触摸和多用户设备的强大功能,为多点触摸定义一种上报详细数据的方法(比如有多个物体直接接触到设备的表面),是非常有必要的。这篇文档描述了多点触摸协议(multi-touch,MT),是的内核驱动可以对多个随意数量的触控事件上报详细的数据信息。    基于硬件的能力,该协议被分为两种类型。对于只能处理匿名接触(type A)的设备,该协

2014-08-15 16:28:07 524

转载 linux gpio模拟i2c的使用/用GPIO模拟I2C总线-3

这个结构专门用于数据传输相关的addr为I2C设备地址,flags为一些标志位,len为数据的长度,buf为数据。这里宏定义的一些标志还是需要了解一下。I2C_M_TEN表示10位设备地址I2C_M_RD读标志I2C_M_NOSTART无起始信号标志I2C_M_IGNORE_NAK忽略应答信号标志回到for,这里的num代表有几个struct i2c_msg,进入for语句,接

2014-08-12 17:04:56 542

转载 linux gpio模拟i2c的使用/用GPIO模拟I2C总线-2 .

在drivers/i2c/busses下包含各种I2C总线驱动,如S3C2440的I2C总线驱动i2c-s3c2410.c,使用GPIO模拟I2C总线的驱动i2c-gpio.c,这里只分析i2c-gpio.c。i2c-gpio.c它是gpio模拟I2C总线的驱动,总线也是个设备,在这里将总线当作平台设备处理,那驱动当然是平台设备驱动,看它的驱动注册和注销函数。[html] vi

2014-08-12 17:03:31 917

转载 linux gpio模拟i2c的使用/用GPIO模拟I2C总线-1 .

linux kernel 中的i2c-gpio使用 在linux中,我们可以自己来使用gpio来模拟i2c,但是万能的linux中其实也已经有了i2c的东东了。 现在看看i2c-gpio.c文件中到底提供了哪些接口[cpp] view plaincopystatic void i2c_gpio_setsda_dir(void 

2014-08-12 17:01:16 522

转载 GPIO及中断API函数

#include // 标准 GPIO_API   int gpio_request(unsigned gpio, const char *label);    获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port,非空的lables指针有助于诊断。主要是告诉内核这地址被占用了。当其它地方调用同一地址的gpio_request就会报告错误,该地址已被申请。在/p

2014-08-06 16:53:47 371

转载 蓝牙的Baseband说明

蓝牙的radio部分使用2.4GHz的ISM段,2400 - 2483.5 MHz,通道间隔1MHz,GFS调制,采用跳频技术,每秒至少1600次。连接完成后的跳频次数为1600次/s,在inquiry和page时为3200次/s。1.时钟有三种是CLK,如下图:CLK是Master的时钟,代表某一个piconet的是时钟。slave根据下图来调整自己的时钟以达到和master

2014-01-06 14:14:03 831

转载 蓝牙的SDP协议总结

1.概念    SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性。SDP只提供发现服务的机制,不提供使用这些服务的方法。每个蓝牙设备都需要一个SDP Service,只做Client的蓝牙设备除外。2.ServiceRecord    每一个Service利用ServiceRecord来表示(具有唯一的32bit的Handle),每一个Service

2014-01-06 13:59:49 678

转载 Linux下Bluez的编程实现

[+]蓝牙的各个协议栈的简介蓝牙技术蓝牙协议栈蓝牙技术的特点蓝牙协议栈体系结构蓝牙协议栈低层模块软件模块蓝牙的一些ProfileBluez和D-BusBluez和D-Bus体系结构D-Bus介绍Bluez的安全接口Bluez适配器接口Bluez配对Bluez绑定Bluez编程实现蓝牙开发关键技术剖析连接机制分析自动连接时钟设计配对列表

2013-12-25 13:58:38 1969

转载 android init.rc语法标准

Android 初始化语言由四大类声明组成: 行为类(Actions), 命令类(Commands) ,服务类(Services), 选项类(Options).  * 初始化语言以行为单位,由以空格间隔的语言符号组成。C 风格的反斜杠转义符可以用来插入空白到语言符号。双引号也可以用来防止文本被空格分成多个语言符号。当反斜杠在行末时,作为折行符。  * 以# 开始( 前面允许有空格)

2013-12-03 14:35:36 379

转载 Android编译选项eng、user、userdebug的区别 .

eng:debug 版本user: release 版本userDebug版本:部分debug版本    要了解Android编译选项eng、user和userdebug的区别,需先了解下LOCAL_MODULE_TAGS这一Android.mk文件里的配置项,一般配置形式为LOCAL_MODULE_TAGS := user eng optional test这个样子。

2013-10-28 16:54:12 832

转载 INIT_DELAYED_WORK() 函数剖析

INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看见一些同志抱怨说最近某个模块编译失败了,说什么make的时候遇见这么一个错误:

2013-10-12 13:53:17 1066

转载 Linux中Workqueue机制分析

走入Linux的殿堂已经有一年有余了,在这里我想将Linux的各种实现机制分析一遍,一方面对自己来说也是温故而知新,另一方面,促进大家的交流,最好能够给大家一些抛砖引玉的启迪。我是硬件出身,搞硬件已经好多年了,从是专门软件开发也接近两年了,在这一段时间内我越发认为软硬件协同设计是未来发展的主流,软硬件的界限越来越模糊,软硬件的设计思想是相通的,实现方法是各异的,实现的结果上当然也存在较大差别,因此

2013-09-18 15:20:36 651 1

转载 v4l2 编程接口(一) — ioctl

在应用程序获取视频数据的流程中,都是通过 ioctl 命令与驱动程序进行交互,常见的 ioctl 命令有:[cpp]VIDIOC_QUERYCAP     /* 获取设备支持的操作 */ VIDIOC_G_FMT        /* 获取设置支持的视频格式 */ VIDIOC_S_FMT        /* 设置捕获视频的格式 */ VIDIOC_REQBUFS      /*

2013-09-17 14:57:20 1033

转载 linux 同步机制之complete

linuxLinuxLINUX同步在Linux内核中,completion是一种简单的同步机制,标志"things may proceed"。要使用completion,必须在文件中包含,同时创建一个类型为struct completion的变量。[cpp] view plaincopyprint?这个变量可以静态地声明和初始化:  DECLARE_CO

2013-09-12 14:54:52 677

转载 sh脚本语法_基础

1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编写脚本完成时,如果要执行该脚本,还必须使其可执行。要使编写脚本可执行:编译 chmod +x filename 这样才能用./filename 来运行2 注释在进行shell编程时,以

2013-08-07 10:58:07 579

转载 sysfs接口函数的建立_DEVICE_ATTR

说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)函数宏DEVICE_ATTR内封装的是__ATTR(_na

2013-07-08 14:42:24 515

转载 关于android蓝牙每次开机有时候打不开

最近在移植android4.0的蓝牙代码,发现蓝牙确实上了电,而且加载了firmware,但是还是打不开。经常一番苦苦查询才发现是蓝牙待机的问题:下面我分析下:在brcm_patchram_plus.c文件中,uchar hci_write_sleep_mode[] = { 0x01, 0x27, 0xfc, 0x0c,0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0

2013-07-08 10:01:14 2068

转载 linux i2c驱动分析

1.Linux的I2C驱动架 Linux中I2C总线的驱动分为两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其中总线驱动的职责,是为系统中每个I2C总线增加相应的读写方法。但是总线驱动本身并不会进行任何的通讯,它只是存在在那里,等待设备驱动调用其函数。设备驱动则是与挂在I2C总线上的具体的设备通讯的驱动。通过I2C总线驱动提供的函数,设备驱动可以忽略不同总线控制器的差异,不考

2013-05-23 09:45:30 557

转载 linux下bluetooth编程(八)SDP层编程

BlueZ提供的SDP API,常见的如下:1.sdp_session_t *sdp_create(int sk, uint32_t flags)参数1:sk: socket参数2:SDP flags. 取值如下:#define SDP_RETRY_IF_BUSY 0x01#define SDP_WAIT_ON_CLOSE 0x02#define SDP_NON_BLO

2013-05-20 19:22:11 513

转载 linux下bluetooth编程(七)SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。这个协议定义了

2013-05-20 19:18:26 654

转载 linux下bluetooth编程(六)L2CAP层编程实例

例一:发送Signaling Packet:Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.多个Command可以在一个C-frame(control frame)中发送。  如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Soc

2013-05-20 19:13:56 665

转载 linux下bluetooth编程(五)bluetooth与socket

一:理解Socket:在使用手机与女朋友联系时,必须用手机拨她的号码,然后心情坎坷的等待她的应答。当双方通话时,就建立了一个具有两个端点的通信线路。Linux中的Socket与电话非常相似。具体问题,稍后再分析。 二:Socket域(domain),类型(type),协议(protoclo)以及Bluetooth中的具体使用:Berkeley小组在构思BSD Socket时,T

2013-05-20 19:10:31 693

转载 linux下bluetooth编程(四)L2CAP层编程

一:L2CAP协议简介:Logical Link Control and Adaptation Protocol(L2CAP) 逻辑连接控制和适配协议(L2CAP) 为上层协议提供面向连接和无连接的数据服务,并提供多协议功能和分割重组操作。L2CAP充许上层协议和应用软件传输和接收最大长度为 64K的 L2CAP数据包。L2CAP基于 通道(channel)的概念。 通道 (Cha

2013-05-20 19:09:16 1023 1

转载 linux下bluetooth编程(三)HCI层编程

1. HCI层协议概述:HCI提供一套统一的方法来访问Bluetooth底层。如图所示: 从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。在Host这一端:applic

2013-05-20 19:04:42 1017

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除