自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Change

良好的经验来自失败的教训

  • 博客(154)
  • 资源 (2)
  • 收藏
  • 关注

原创 MTK MT6739平台的thermal高温充电机制调整

MTK平台的thermal机制是一种高温保护主板机制。主要用于手机在充电过程中,温度太高对手机主板造成损坏。thermal主要由thermal配置文件和thermal的驱动代码进行控制。从一个充电温度高电流降到0的bug开始讲解:首先从log中看到:<6>[34586.470707] (2)[16839:3ATHREAD]GC5025_camera_sensor[feature_co...

2018-06-07 18:04:29 9795

原创 关于Ubuntu16.04插手机使用adb命令报错“error:insufficient permissions for device“的问题

主要是使用adb命令连接手机,不用在手机连接选项中修改连接选项。会报以上错误。先装好adb命令:sudo apt install adb使用adb devices 命令会显示:???????????? device连接手机,使用lsusb命令查看你手机的VendorID和ProductID。之后,在/etc/udev/rules.d/目录下创建51-android.rules文件(如果有就直...

2018-06-05 14:36:15 1262

转载 基于i2c子系统的驱动分析

和i2c有关的代码都在源码drivers/i2c目录下。内核提供了两种i2c的实现方法:第一种叫i2c_dev,对应drivers/i2c/i2c-dev.c,这种方法仅仅封装了soc的i2c控制器操作,并向应用层提供操作接口。其本质是为应用层提供了一个库,驱动功能由应用层实现,不是主流的做法第二种是驱动层实现所有驱动功能,是比较主流的做法第二种可以认为是正统的i2c驱动,其本质是:工程师任意选用...

2018-06-02 15:15:56 296 1

转载 基于platform总线的驱动分析

1.platform总线基本概念设备和驱动若基于设备驱动模型,则它们通常都需要挂接在一种总线上。总线相对于设备和驱动,可谓是“媒人”担当对于本身依附于 USB、 I2C、SPI 等的设备而言,这自然不是问题。但是很多的设备(比如led)实际并不依附于总线,没了“媒人”,设备和驱动怎么产生联系呢?于是内核为这些可怜的设备发明了一种虚拟的总线——platform(平台总线)挂接在platform上的设...

2018-06-02 15:11:23 368 1

转载 设备驱动模型与sysfs

1.设备驱动模型基本概念设备驱动模型主要包含:类(class)、总线(bus)、设备(device)、驱动(driver),它们的本质都是内核中的几种数据结构的“实例”类的本质是class结构体类型,各种不同的类其实就是class的各种实例总线的本质是bus_type结构体类型,各种不同的总线其实就是bus_type的各种实例设备的本质是device结构体类型,各种不同的设备其实就是device的...

2018-06-02 15:09:37 338

原创 Android8.1关机充电动画位置

1.定义屏幕分辨率以取图片的目录地方:vendor/mediatek/proprietary/bootable/bootloader/lk/project/xxx.mk中:BOOT_LOGO := hd720同事图片资源的文件目录在:vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo下面有很多各种分辨率的图片原始文件,并且在log...

2018-05-26 15:45:39 4346

转载 USB2.0协议分析

一、USB硬件介绍1.1、概述        一条USB传输线分别由地线、电源线、D+和D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置)。        USB设备可以直接和HOST通信,或者通过Hub和Host通信。一个USB系统中仅有一个USB 主机,设备包括USB功能设备...

2018-05-17 16:07:38 1941

转载 USB2.0概述及协议基础

目录Ⅰ USB总线接口1 USB接口标准2 USB总线信号3 USB数据编解码和位填充4 USB拓扑结构5 USB逻辑部件Ⅱ USB设备1 USB设备供电方式2 USB设备插入检测机制3 USB设备状态4 USB设备枚举过程5 USB描述符Ⅲ USB传输1 USB传输格式 2 包packet 3 事务transaction4 传输transferUS...

2018-05-17 16:05:12 7409

原创 双硬盘安装win7和ubuntu双系统,选择进入windows启动项选择菜单,还是选择进入ubuntu的grub的引导方法

在已经装有windows7的系统上,添加新的硬盘装ubuntu构建双系统的方法问题一:双硬盘的分区法则: 在原有的windows7的系统分区上,压缩出1G的空闲空间做ubuntu的/boot分区使用 在新的硬盘在制作好的Ubuntu系统的U盘中,安装Ubuntu系统,在选在安装系统时,选择其他选项,进行自己手动分区 可以看到呈现在面前的是两块硬盘:sda 和sdb...

2018-02-28 17:29:37 6160

原创 Ubuntu 16.04添加全新硬盘操作方法

需求背景:        由于原有的电脑硬盘只有3T不够装代码,新增加1T硬盘用装android代码。操作环境:        系统:Ubuntu 16.04        硬件:硬盘 1T(全新未使用过的WD蓝盘)操作过程:    1.拆开电脑机箱,安装硬盘,具体操作省略。    2.开机查看系统硬盘分区情况:        命令:sudo  fdisk  -l                 ...

2018-02-28 16:30:33 64600 9

转载 Linux内核配置Kconfig语法

何为Kconfig 它的作用是什么内核源码编译过程遍历每个源码目录(或配置指定的源码目录)Makefile每个目录的Makefile 会根据Kconfig来定制要编译对象回到顶层目录的Makeifle执行编译那么我们就得出各个文件的作用:Kconfig ---> (每个源码目录下)提供选项.config ---> (源码顶层目录下)保存选择结果Makefile---> (每个...

2018-02-24 14:22:19 696

转载 USB充电规范——BC1.2 中文详解

1. Introduction     1.1 Scope           规范定义了设备通过USB端口充电的检测、控制和报告机制,这些机制是USB2.0规范的扩展,用于专用充电器(DCP)、主机(SDP)、hub(SDP)和CDP(大电流充电端口)对设备的充电和power up。这些机制适用于兼容USB2.0的所有主机和外设。  1.2 Background         ...

2018-02-08 16:46:16 72063 2

转载 android关机充电流程、充电画面显示

一、Android正常开机流程、关机充电流程在写这篇文章之前我们先看两个流程:正常开机流程,关机充电系统启动流程1、正常开机流程,按开机键。可大致分成三部分(1)、OS_level:UBOOT、kenrel、init这三步完成系统启动;(2)、Android_level:这部分完成android部的初始化;(3)、Home Screen:这部分就是我

2018-02-02 11:32:56 6912

转载 深层次的讲解repo原理

软件工程由于需要不断迭代开发,因此要对源代码进行版本管理。Android源代码工程(AOSP)也不例外,它采用Git来进行版本管理。AOSP作为一个大型开放源代码工程,由许许多多子项目组成,因此不能简单地用Git进行管理,它在Git的基础上建立了一套自己的代码仓库,并且使用工具Repo进行管理。工欲善其事,必先利其器。本文就对AOSP代码仓库及其管理工具repo进行分析,以便提高我们日常开发效率。

2017-12-13 11:55:19 10537 1

转载 repo用法详解

Android 为企业提供一个新的市场,无论大企业,小企业都是处于同一个起跑线上。研究 Android 尤其是 Android 系统核心或者是驱动的开发,首先需要做的就是本地克隆建立一套 Android 版本库管理机制。Android 使用 Git 作为代码管理工具,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开发了 Repo 命令行工具,对 Git 部分命令封装,

2017-12-13 11:52:23 933

转载 splitimg脚本解析bootimg及打包bootimg

简介:recovery.img的构成(与bootimg原理一致),它是由boot_img_hdr + zImage + recovery-ramdisk构成。boot_img_hd是个结构体它描述了很多重要的信息。 1 struct boot_img_hdr 2 { 3 unsigned char magic[BOOT_MAGIC_SIZE];4 

2017-12-13 11:06:16 1397

转载 Android init.rc语法介绍

一、简述    Android init.rc文件由系统第一个启动的init程序解析,此文件由语句组成,主要包含了四种类型的语句:Action, Commands,Services, Options. 在init.rc 文件中一条语句通常是占据一行.单词之间是通过空格符来相隔的,如果需要在单词内使用空格,那么得使用转义字符"\", 如果在一行的末尾有一个反斜杠,那么是换行折叠符号,应该和下一行

2017-12-11 15:26:21 7167 1

转载 从零开始写设备树DTS

从零开始写设备树DTS参考网址:1、http://blog.csdn.net/woshidahuaidan2011/article/details/529487322、http://elinux.org/Device_Tree_Usage3、http://blog.csdn.net/woshidahuaidan2011

2017-11-08 11:53:24 979

原创 git的使用命令摘要

ADD AND COMMIT1. git init 初始化一个 Git 仓库(repository),即把当前所在目录变成 Git 可以管理的仓库。2. git add 文件把文件添加到 暂存区(stage),可被 track 追踪纪录下来。可多次使用来添加多个文件。3. git add * 添加所有修改到暂存区,效果同 git add all,待验

2017-10-26 14:16:17 453

转载 repo使用手册

Repo 命令手册Repo 的使用形式如下:repo 可选元素显示在方括号[]里面。例如,许多命令接受的项目列表作为参数。您可以指定项目列表作为名称列表或本地源目录的路径列表:repo sync [ ]repo sync [ ... ]帮助一旦 Repo 被安装,你可以找到总结所有命令的最新的文档,运行:repo help在 Repo 目录

2017-10-26 09:52:08 1632

转载 Android系统架构与系统源码目录

前言技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是《Android开发艺术探索》的姊妹篇。在这本书的最后一章我会分析Android底层源码,但是毕竟是一本Android应用开发的书,对于底层源码阅读也只能带大家入个门。因此,在博客中我会新开一个“系统源码解析”的系列,该系列的开篇就是本篇文章。

2017-10-20 09:49:06 337

转载 I2C设备、读写地址的关系

结论:I2C设备的写地址 = I2C设备地址 I2C设备的读地址 = (I2C设备地址 例如:#define     MAX_17040_BATTERY_I2C_ADDR        (0x36)#define     MAX_17040_BATTERY_WRITE_ADDR    (MAX_17040_BATTERY_I2C_ADDR #define     M

2017-09-13 15:17:44 3409

原创 MTK平台编译userdebug版本开启串口log方法

1.在lk中,进入目录:vendor/mediatek/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c在这个文件中,找到以下ifdef USER_BUILD位置(有两处),进行修改:#ifdef USER_BUILDsprintf(cmdline,"%s%s",cmdline," printk.disable_uar

2017-09-13 15:15:14 3131

原创 读书笔记--USB枚举过程

USB2.0规范定义了6个设备状态。枚举过程中,设备会先后经历开机(powered)、缺省(Default)、地址(Address)和配置(Configured)状态(另外两个状态是连接(Attached)状态和挂起(Suspend)状态),在每个状态中,设备都定义了其性能和行为。(1)系统拥有了新设备。用户将设备连接到USB端口,或者系统在连接有设备的情况下开机。端口可能处于主机的根集线器上

2017-09-02 12:20:20 697

转载 USB枚举过程

1. 枚举是什么?       枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。       USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在

2017-08-24 10:59:54 378

转载 USB协议架构及驱动架构

1. USB协议1.1 USB主机系统       在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。1.2 USB设备系统        USB设备按功能分为两部分:集线器(Hub)和功能部件。从下图可知,主机通过根集线器连接到各种外围设备(集线器和功能部件)。1.3 主机和设备之间通信模

2017-08-24 10:44:50 1134

转载 Linux USB驱动工作流程

1. USB主机在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。linu

2017-08-24 09:34:00 702

转载 MTK USB软件框架

MTKUSB软件框架及其MassStorage Class规范学习总结目录一 MTKUSB支持功能设备二 USB软件体系结构介绍2.1代码目录2.2软件架构2.3主要数据结构,函数,宏,变量三MS功能设备分析3.1 MS概述3.2 MS功能模块组成3.3 MS时序图以及消息流程3.4MS数据传输

2017-08-18 16:54:41 3442

原创 ubuntu中man显示中文

首先安装man工具的内容:1. sudo apt-get install manpages-posix manpages-posix-dev2. sudo apt-get install manpages-zh3. 配置中文:sudo gedit /etc/manpath.config& 把其中的/usr/share/man全部修改成/usr/share/man/zh_CN

2017-08-18 16:00:29 2802

转载 Java类和对象 详解(二)

一、面向对象的封装性封装(encapsulation)又叫隐藏实现(Hiding the implementation)。就是只公开代码单元的对外接口,而隐藏其具体实现。比如手机,手机的键盘,屏幕,听筒等,就是其对外接口。你只需要知道如何按键就可以使用手机,而不需要了解手机内部的电路是如何工作的。封装机制就像手机一样只将对外接口暴露,而不需要用户去了解其内部实现。在研究封装性之前,我们先来...

2017-08-16 18:34:09 340

转载 Java类和对象 详解(一)

一、面向对象简述面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实...

2017-08-16 10:22:29 2689

转载 Android之intent学习笔记

【正文】Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要。一、什么是Intent1、Intent的概念:Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之

2017-07-13 14:03:35 401

转载 Android总结篇系列:Android广播机制

1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程的不同组件之

2017-07-13 11:28:47 312

转载 Android USB/MTP相关代码

1. 代码位置packages/providers/MediaProvider/src/com/Android/providers/media/MtpReceiver.Javapackages/providers/MediaProvider/src/com/android/providers/media/MtpService.javapackages/providers/MediaPr

2017-07-13 10:02:15 2325

转载 Android驱动之MTP框架与流程

概要本文的目的是介绍Android系统中MTP的一些相关知识。主要的内容包括:第1部分 MTP简介            对Mtp协议进行简单的介绍。第2部分 MTP框架            介绍Android系统下MTP的框架。第3部分 MTP启动流程            详细分析MTP服务的启动流程,包括Java层, JNI层, kernel相关知识的介绍。

2017-07-13 09:59:56 1850

原创 shell学习整理笔记

1.shell脚本是一个以.sh问扩展名的文件。“#!”是一个约定的标记,是告诉系统需要什么解释器来执行,echo命令用于向窗口输出文本。如:#!/bin/bashecho "Hello world!"将代码保存为test.sh ,并cd到保存目录:chmod +x ./test.sh //是脚本拥有执行权限./test.sh //执行脚本

2017-07-12 19:39:11 5239

原创 系统移植之bootloader移植

做boot移植工作之前,首先要确定整个boot的启动流程,根据启动流程确定移植步骤。首先看一下boot的启动流程:Bootloader执行最基本的硬件初始化操作。如关闭中断,关闭看门狗以避免处理器被复位,以及关闭MMU功能,关闭处理器缓存(数据缓存一定要关闭,指令缓存可以打开),设置系统时钟,初始化内存等。这一阶段代码通常由汇编代码编写,为了运行下一阶段的C程序还必须设置好堆栈。如

2017-06-30 17:52:25 1385

原创 总结——驱动模块Makefile解析

ifeq ($(KERNELRELEASE),)        KERNELDIR ?= /home/linux/linux-2.6.22.6        PWD := $(shell pwd)        modules:                $(MAKE) -C $(KERNELDIR) M=$(PWD) modules        mo

2017-06-30 17:33:23 367

转载 platform设备驱动全透析

1.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问

2017-06-28 16:30:52 363

转载 Linux Platform Device and Driver

从Linux2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。linux中大部分的设备驱动,都可以使用这套机制,设备用Platform_device表示,驱动用Platform_driver进行注册。Linux platform driver机制和传统的device driver机制(通过driver_register函数进行注...

2017-06-28 16:29:57 341

空空如也

空空如也

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

TA关注的人

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