Android驱动
文章平均质量分 58
沉默的过客
以匠心铸非凡
展开
-
USB枚举过程
1. 枚举是什么? 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。 USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统启动时,...转载 2018-06-06 21:27:22 · 862 阅读 · 1 评论 -
USB描述符 包括bus hound抓包
USB描述符USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链接通道。那么USB描述符信息到底是一个什么样的数据呢,USB协议中有详细描述。通用的USB描述符信息包括设备描述符、配置描述符、接口描...转载 2018-03-17 15:11:50 · 1067 阅读 · 0 评论 -
Linux设备树语法详解
概念Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM Linux内,...转载 2018-03-17 15:11:07 · 316 阅读 · 0 评论 -
XpermRules: allowxperm, dontauditxperm, auditallowxperm and neverallowxperm
Extended Permission Access Vector RulesThere are three extended permission AV rules implemented from Policy version 30 with the target platform selinux that expand the permission sets from a fixed 32 ...转载 2018-03-03 22:09:42 · 2247 阅读 · 0 评论 -
SELinux: 定向白名单机制使ioctl更安全
动机ioctl为设备控制提供了必要的操作。典型的设备驱动支持由命令参数来区分的一套操作集,可以通过ioctl系统调用来访问。SELinux为很多系统操作提供了一一对应的访问控制,例如chown,kill,setuid,ipc_lock等。另一方面,我们使用ioctl permission这一权限,对文件描述符上的ioctl操作进行授权,这意味着,主体要么在授权后可以访问全部的ioctl操作集,要么...转载 2018-03-03 22:08:17 · 1691 阅读 · 0 评论 -
[FAQ04776]各个版本如何判断是否打开adb端口【google原生代码】
1. 在android 4.0 之前,这个设置是在frameworks/base/service/..../SystemServer.java 里面设置会根据system property 的persist.service.adb.enable 来设置。您可以看到类似如代码:[java] view plain copy// make sure the ADB_ENABLED setting val...转载 2018-02-24 21:19:41 · 1055 阅读 · 0 评论 -
Android中USB相关的文件
a) frameworks/base/core/java/android/hardware/usb/*Provides support to communicate with USB hardware peripherals that are connected to Android-powered devices.https://developer.android.google.cn/refer...原创 2018-02-24 21:13:52 · 572 阅读 · 0 评论 -
linux usb枚举过程分析
插入一个 USB设备的处理机制总体计: 1. 中断定时查询: 2. 总体架构设计: 3. 解析各个部分:中断定时查询: Hub层处理 usb枚举 当守护程序第一次运行或usb port上状态发生变化,守护进程被唤醒都会运行hub_events函数,这个函数在usb系统中处理核心位置,usb的枚举过程就是由它完成。usb具体的枚举流程: hub_events函数static void hub_e...转载 2018-03-10 19:00:14 · 1690 阅读 · 0 评论 -
Android O 之二:HIDL相关介绍
详见:https://source.android.google.cn/devices/architecture/在上一篇博客里,大致介绍了下Android O 中treble计划的一些背景与相关基本架构,这一篇中跟大家一起来探讨下HIDL相关的内容。Android HAL类型 在此之前的ANDROID版本当中Android HAL没有什么特殊的特殊的,也么有什么分类,但是从android 8.0...转载 2018-02-23 20:23:25 · 1827 阅读 · 0 评论 -
【BUG分析】persist属性设置的太早不起作用,并且不会写到磁盘中
persist属性设置的太早不起作用,并且属性不会写到磁盘中。而且会被加载存到/data/property/目录中的属性覆盖掉。system\core\init\property_service.cpp中代码如下:static int property_set_impl(const char* name, const char* value) { size_t namelen = strl...原创 2018-03-18 14:28:29 · 1940 阅读 · 0 评论 -
腾讯 soter 原理
TENCENT SOTER之所以能实现支付级别的指纹授权安全性,主要原因有三:所有关键数据存储与操作均根本依赖TEE厂商在设备出厂之前安全环境会专门生成TENCENT SOTER设备根密钥生物授权的实质是密钥签名,TEE级别保证“无授权,不签名”。Soter 架构TENCENT SOTER中,一共有三个级别的密钥:ATTK,App Secure Key(ASK)以及AuthKey。这些密钥都是RS...转载 2018-04-09 23:00:50 · 6187 阅读 · 0 评论 -
linux之configfs简介和编程入门
一、什么是configfs是一种基于ram的文件系统configfs is a ram-based filesystem that provides the converse of sysfs's functionality. Where sysfs is a filesystem-based view of kernel objects, configfs is a filesystem-ba...转载 2018-04-15 15:18:19 · 10834 阅读 · 0 评论 -
Android O新增的关于usb的三个属性 sys.usb.configfs,sys.usb.ffs.ready,sys.usb.ffs.mtp.ready
1.sys.usb.configfs该属性默认为0,通过判断kernel是否支持configfs,即判断/config/usb_gadget存在设置为1.代码在init.qcom.usb.sh中(高通平台下)。2.sys.usb.ffs.ready当sys.usb.config设置为none时,设置sys.usb.ffs.ready为0.每次设置的属性有adb时,会先start adbd。如sys...原创 2018-04-19 21:26:17 · 14183 阅读 · 2 评论 -
Android中hw_get_module函数分析
该函数定义在hardware/libhardware/hardware.c文件中,定义如下:int hw_get_module(const char *id, const struct hw_module_t **module){ return hw_get_module_by_class(id, NULL, module);}hw_get_module()函数利用HAL层注册信息i...原创 2018-04-07 12:45:08 · 6943 阅读 · 2 评论 -
浅析Android下的Android.mk文件(补充)
指定了LOCAL_MODULE_TAGS:=optional和PRODUCT_MODULE_CLASS、PRODUCT_MODULE_PATH都不起作用。必须添加PRODUCT_PACKAGES+=(模块名)。 LOCAL_MODULE_TAGS:=optional不是所有模块编译。optional: don't include this(见http://andro...原创 2018-04-18 19:55:05 · 927 阅读 · 0 评论 -
在Android.mk文件中输出打印消息
以下Android.mk文件可以打印$(warning $(parameter))的内容,其中parameter表示变量。也可以写$(error $(parameter)),如:system/sepolicy/Android.mk文件中的$(error BOARD_SEPOLICY_REPLACE is no longer supported; please remove from your Bo...原创 2018-04-17 20:36:24 · 5667 阅读 · 0 评论 -
Android.mk文件中LOCAL_CFLAGS常见设置
-DLOCAL_CFLAGS += -DXXX 相当于在所有源文件中增加一个宏定义#define-O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化 -W[no-]<警告选项> no- 表示诊断时忽略这个警告 编译器的警告设置参数,拥有众多的选项,下面举一些常用的例子: -Woption 让编译器给出optio...原创 2018-04-17 20:18:19 · 15758 阅读 · 0 评论 -
Android监听UEvent事件的测试程序
Android在源码目录:system/extras/tests/uevents/中,可以监听底层UEvent事件上报的程序,其实现如下: 一、源码实现 uevent.c/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the ...原创 2018-04-16 21:41:03 · 3351 阅读 · 1 评论 -
Android O 之一:Android Treble 计划
Android O 前期预研之前一直传言android O的推出会包含有两部分的主要功能:谷歌打算彻底解决Android版本碎片化的问题,会在Android O上推出一个新的框架设计来解决这个这个升级问题。推出Android for Automotive ,正式进军汽车车载市场。而这两部分对我们的工作影响会比较大,第一部分可能会导致我司现存的一堆现有的工作会在以后可能不存在了。因为整个系统升级项目...转载 2018-02-23 20:22:33 · 741 阅读 · 0 评论 -
浅析Android下的Android.mk文件(二)
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块。每个模块属下列类型之一: 1)APK程序,一般的Android程序,编译打包生成apk文件 2)JAVA库,java类库,编译打包生成jar文件 3) C\C++应...转载 2017-10-22 14:09:40 · 1401 阅读 · 0 评论 -
SELinux策略语言--类型强制(编写TE规则)
1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示:2. 类型强制概念 SELinux策略大部分内容都是由多条类型强制规则构成的,这些规则控制被允许的使用权,大多数默认转换标志,审核,以及固定部分的检查。 SELinux策略大部分都是一套声明和规则一起定义的类型强制(TE:Type En转载 2017-10-22 13:16:14 · 2540 阅读 · 0 评论 -
Android系统prop属性的研究与分析(二)
Android System Property一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢?System Properties是怎么一回转载 2017-10-22 13:05:52 · 593 阅读 · 0 评论 -
Android系统prop属性的研究与分析(一)
在程序开发的时候,往往会共享一些数据信息,有一个环境变量或者属性下面几种情况:1.该变量在多处需要使用,并且是跨进程或者跨线程的。2.该环境变量一般只需读取一次,不需要频繁保存。3.同时这个变量信息在关机重启后任然可以保存。对于这些需求,通常的做法是将这些信息保存到一个文件中,通过对该文件的读写来提取和保存信息,这些信息的数据量都比较小。这种方法是可以的,但是不是很系统完善,而且当转载 2017-10-22 13:04:07 · 4507 阅读 · 0 评论 -
深入理解SeLinux SeAndroid(二)
3) File/File System 打label前面一节中,读者见识到了DT和TT。不过这些描述的都是Transition,即从某种Type或Domain进入另外一种Type或Domain,而上述内容并没有介绍最初的Type怎么来。在SELinux中,对与File相关的死货(比“死东西”少些一个字)还有一些特殊的语句。直接看SEAndroid中的文件吧。[external/sep转载 2017-10-29 10:22:53 · 376 阅读 · 0 评论 -
深入理解SeLinux SeAndroid(一)
SEAndroid是Google在Android 4.4上正式推出的一套以SELinux为基础于核心的系统安全机制。而SELinux则是由美国NSA(国安局)和一些公司(RedHat、Tresys)设计的一个针对Linux的安全加强系统。NSA最初设计的安全模型叫FLASK,全称为Flux Advanced Security Kernel(由Uta大学和美国国防部开发,后来由NSA将其开源转载 2017-10-29 10:21:34 · 289 阅读 · 0 评论 -
基于android6.0版本的SELinux文件访问安全策略
在android6.0以后的版本,google采用了SELinux的文件访问安全策略,想比较以前,绝对提高了文件的安全,不像以前那样,对文件访问可以是无条件的。本篇文章就分享下常用的一些安全策略。1. linux传统 设备文件访问控制方法 传统的 Linux设备文件访问控制机制通过设置用户权限来实现. 超级用户(root),具有最高的系统权限,UID为0。系统伪用户,Lin转载 2017-10-29 10:15:51 · 1147 阅读 · 0 评论 -
I2C总线协议
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datashe转载 2017-09-15 22:00:45 · 194 阅读 · 0 评论 -
浅析Android下的Android.mk文件(一)
1 概述 大家都知道在Linux下编辑经常要写一个Makefile文件, 可以把这个Makefile文件理解成一个编译配置文件,它保存着如何编译的配置信息,即指导编译器如何来编译程序,并决定编译的结果是什么。而在Android下的Android.mk文件也是类型的功能,顾名思义,从名字上就可以猜测得到,Android.mk文件是针对Android的Makefile文件.具体来说:该文...转载 2017-10-22 13:17:14 · 1041 阅读 · 1 评论 -
android编译流程简要分析与使用
android系统编译流程简要分析与使用开发Linux编程的程序员都清楚,Makefile是一个很重要的文件,该文件一个重要作用就是指定了编译规则。如此庞大的android系统源码当然也不例外了。android源码中Android.mk就充当了Makefile的角色。android系统的编译系统太过复杂了,没办法,那些可都是谷歌里面的大牛们写的,对于我等程序员来说,首先最重要的就是会用转载 2017-10-15 11:52:49 · 2019 阅读 · 1 评论 -
浅析Android下的Android.mk文件(四)
1.Android对模块唯一性检测的规则在base_rules.mk里面通过module_id里来检测这个模块是否已经存在,我们看看这个值是如何定义的: module_id := MODULE.$(if $(LOCAL_IS_HOST_MODULE),HOST,TARGET).$(LOCAL_MODULE_CLASS).$(LOCAL_MODULE) 所以它是通过LOCAL_MODULE_CLAS...转载 2017-11-15 21:13:38 · 1277 阅读 · 0 评论 -
Android驱动之 Linux Input子系统之TP——A/B(Slot)协议
关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt,而这里根据实际的例子来理解多点触摸协议。将A/B协议这部分单独拿出来说一方面是因为这部分内容是比较容易忽视的,周围大多数用到input子系统的开发人员也不甚理解;另一方面是由于这部分知识一旦扩展转载 2018-02-03 17:02:42 · 2122 阅读 · 1 评论 -
SELinux策略语言–客体类别和许可
1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示:2. 客体类别 定义内核支持的客体类别和许可的策略语言指令,并对SELinux系统中内核客体类别标准做一个概述。2.1 SELinux中客体类别的用途 客体类别及其许可是SELinux中访问控制的基础,客体类别代表资源的范畴,如文件和套接字,许可代表对转载 2017-12-02 18:52:53 · 1561 阅读 · 2 评论 -
InputManagerService之事件的初始化与分发
该篇文章接总章,来详细谈论说明InputManagerService 体系,从初始化到事件获取跟分发。咱们在进行前,先明确哪几个问题需要知道,然后看看在这篇文章中是否解决了这些问题。对于InputManagerService,大家第一个想知道是他起什么作用,这个在总章里面有详细说明,简而言之就是获得事件跟分发处理事件。那他如何或者跟其他模块配合获取事件?并且把这个事件进行分发?如何准确定位对应的处转载 2017-12-09 12:01:27 · 718 阅读 · 0 评论 -
浅析Android下的Android.mk文件(三)
因为从事着android驱动开发所以天天要接触Android.mk。 1、在运行 . build/envsetup.sh 会生成一些操作例如:chooseproduct mmm 2、运行 chooseproduct project 选择所要编译的工程 3、运行make,回去编译整个android source怎么说到了编译Android Sourc...转载 2017-11-15 21:02:44 · 1768 阅读 · 0 评论 -
android解析 ramdisk.img boot.img system.img
img解析:ramdisk.img:android根文件系统,在android编译系统生成的out/target/product/root目录中结构:./init.trout.rc./default.prop 保存一些调试参数,对于开发者相当重要./proc./dev./init.rc 一些启动参数./init./sys./ini转载 2017-11-15 21:36:11 · 1059 阅读 · 0 评论 -
Android编译过程总结及android中各种img文件的作用以及系统启动过程
1、编译环境的准备 (1)确保安装有ubuntu系统或者虚拟机(2)安装JDK1.6(对于Android2.3以上代码)$ sudo add-apt-repository "debhttp://archive.canonical.com/ lucid partner"$ sudo add-apt-repository "deb-srchttp://archive.canonical转载 2017-11-15 21:34:53 · 2133 阅读 · 0 评论 -
SPI协议及其工作原理浅析
转自:http://bbs.chinaunix.net/thread-1916003-1-1.html一、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口转载 2017-09-15 22:05:43 · 169 阅读 · 0 评论