自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沉思

倾听内心的召唤,坚持自己的选择!

  • 博客(68)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 ARMv8 内存管理架构.学习笔记

目 录第1章 分级存储架构. 21.1基础认识... 21.1.1从数据通路描述. 21.1.2从数据交换单位描述. 21.1.3 Cache数据一致性拓扑结构. 31.2 系统层内存模型... 31.2.1内存属性. 31.2.2地址空间. 41.2.3字节编码支持. 4第2章 虚拟内存系统架构(VMSA) 52.1 VMSAv8-64. 5

2015-12-13 20:26:39 20361 3

原创 ARMv8 架构与指令集.学习笔记

目 录第1章 ARMv8简介. 31.1基础认识. 31.2 相关专业名词解释. 3第2章 Execution State 42.1 提供两种Execution State 42.2 决定Execution State的条件. 4第3章 Exception Level 53.1 Exception Level 与Security 53.1.1

2015-12-13 20:18:25 66851 29

原创 使用最新版本Android NDK-r21 编译 opencv-3.3.1 + opencv_contrib-3.3.1

#!/bin/sh# 由于新版本的NDK跟旧版本NDK编译的opencv存在兼容问题,所以需要使用最新的NDK重新编译opencv,方法步骤如下:# Android NDK-r21 编译 opencv-3.3.1 + opencv_contrib-3.3.1## 1. sudo apt-get install cmake## 2. 官网下载NDK: android-ndk-r21,SDK可以不需要.## 3. 下载opencv和opencv_contrib,切换到3.3.1版本.# gi

2020-12-13 11:30:10 1611 2

原创 记一次息屏指纹解锁性能优化实现

需求背景。客户反馈我司的指纹解锁机器冷屏(息屏)解锁下速度太慢,体验很差,而对比机却非常快。对比发现,我司机器跟市面品牌机的冷屏解锁速度差了不是一个等级, 急待改善.既然要优化功能,首先要做到理解功能实现原理,如此才能找到性能瓶颈,打开突破点.1、解锁流程Google默认的冷屏指纹解锁基本框架流程如下: (1)指纹IC检测到手指触摸模组,HW触发irq,被Linux...

2018-10-23 09:36:30 4371 3

原创 Linux内核相关知识点记录【内存管理】【进程调度】【异常调试】【锁】【kvm虚拟化】【内核启动】

1、内存管理 怎么阐述自己的理解?。硬件原理,分页机制原理内核内存管理由MMU提供硬件支持,MMU实现虚实地址VA=>PA的转换以及权限检查,虚拟地址和物理地址之间的映射关系是页表机制,每一个页表项都保持物理地址页及其访问权限,页表机制和图书馆借书是一个原理,为什么要用多级页表呢?假设只有一级,类比成数组,用a【i】记录每一项,那么记录所有映射关系i=4GB/4KB=1000*1000项,显...

2018-03-26 20:54:04 1624

原创 Dexopt代码修改导致的低概率Android soft watchdog timeout

现象:使用过程中手机低概率卡住,等待30s左右死机重启,6580-O1平台.分析:Exception Class: SWTException Type: system_server_watchdogCurrent Executing Process: system_serverTrigger time:[2018-01-01 00:16:30.483495] pid:639Backtrace: P...

2018-03-26 20:44:11 1651

原创 TEE OS内发生segment fault导致的Android Crash

现象使用错误手指触摸指纹5次,指纹被锁定后,按power灭屏再亮屏,手动解图形锁概率发生卡住,另外插入USB不复现。分析Exception Class: SWTException Type: system_server_watchdogCurrent Executing Process: system_serverTrigger time:[2018-01-02 12:51:47.93449] p...

2018-03-24 15:52:15 1350

原创 AlarmManager使用不当导致的充电低概率dead lock-6580-O1平台

记录碰到的一个比较简单的Android dead lock分析过程。现象:偶现一次开机充电过程中断开充电器后,充电指示灯长亮,手机屏幕全黑,按power键无法点亮屏幕(有log)DEBUG:Exception Log Time:[Wed Mar 21 09:16:58 CST 2018] [424.407980]Exception Class: SWTException Type: system_...

2018-03-24 15:20:53 706

原创 hang_detect类死锁解题案例分析

背景知识【hang detect 机制】MTK在内核中新增了一个用于监视system_server的SW watchdog字符设备驱动:/dev/RT_Monitor,该设备会启动一个内核线程循环去check system_server线程的状态,若system_server不存在则表明Andriod在执行restart,若system_server存在,hang_detect_counter 就

2018-01-20 13:38:53 5325 2

原创 一台机器执行monkey test测试出现概率死机

记录一次概率死机的debug过程,概率性问题无法验证,仅是对现有的资料做出推理分析,若有不对的地方,欢迎各位看官拍砖。现象:发现一台机器执行monkey test测试出现概率死机现象,mt6580-N平台。拿到mtklog,发现有发生NE和KE,使用GAT工具的logview-》open Aee db解压db发现Build Info: 'alps-mp-n0.mp2:alps-mp-n

2017-12-14 13:18:22 3239 2

原创 FTM下执行full test,进入camera test卡住,稍后手机重启

遇到一个重启问题,比较简单,记录下分析思路,6580平台.现象:FTM (apk)下执行full test,到进入camera test的时候高概率出现卡顿死机现象。第一感觉是camera test模块出了问题,拿到mtklog,查看aee_exp_backup目录,发现有SWI跟KE出现,使用最新版本GAT工具解开SWI和KE 的db.首先看NE的db解析:Exception Cl

2017-12-12 17:59:40 1563

原创 高通平台Linux kernel死机解题心得

1、前言1.1 目的能够借助相关调试工具,使用一般分析手段分析、定位解决项目过程中遇到的死机类系统稳定性问题,提升工作效率持续积累,拓宽知识深度和广度1.2 死机?指系统发生致命性异常导致主动或者被动进入系统完全不可用的状态,导致系统死机的问题原因有很多,排除硬件问题,还有这些大模块:Android、Linux kenrel、modem、TZ 等等,各个子系统都

2017-08-20 22:39:28 28707 15

原创 从此使用vim代替si看代码

windows下的开发环境,最好用的看代码写代码工具当然是非source insight莫属了,所以一直以来都是用si写代码,分析代码。后面转入linux开发环境后一直也是用si(通过wine安装)但是很不稳定,经常会出各种问题死掉。所以决定切换用vim来代替si,vim号称程序员最好用的代码编辑器,再说了,作为一个混迹多年江湖的程序员,不去好好

2017-07-30 16:08:06 10478 6

转载 深入浅出 - 公钥、私钥和数字签名最通俗的理解

一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。我的好朋友x用我的公钥1加密了字符a,加密后成了

2017-07-25 08:58:33 32185 5

原创 关于指纹硬件ID脚gpio兼容原理推导

1、基础认识一个gpio脚配合软件可以实现高,低,高阻三种状态的区分,那么最多可以实现三种指纹硬件的兼容.软件逻辑:1》先给PIN一个高电平,然后读出该PIN的电平到val1;2》再给PIN一个低电平,然后读出该PIN的电平到val2;若:val1 == 1 && val2 == 1 ==》PIN外接高电平;val1== 0 && val2 == 0 =

2017-07-01 13:09:33 937

原创 展讯7731C平台LED显示异常的解题历程

1、异常现象内部测试报:插入充电器灭屏充电,待休眠后会出现红绿灯交替变化的情况。简单调试后发现,其实有两个问题:1》写led驱动节点控制异常问题。 无法通过 adb shell echo 255 > /sys/class/leds/red/brightness 方式控制红绿灯变化2》充电休眠红绿灯交替闪烁问题。无法抓到出异常时候的uart log,好像交替变化的时候

2017-07-01 12:54:38 2241

原创 Crash加载ramdump报cpu_possible_mask异常问题

在使用Crash调试ramdump的时候发现一个错误,这里记录下。$ crash vmlinux sysdumpcrash 7.1.3Copyright (C) 2002-2014 Red Hat, Inc.Copyright (C) 2004, 2005, 2006, 2010 IBM CorporationCopyright (C) 1999-200

2017-05-20 15:28:09 2449 5

原创 Trace32 加载MTK平台 SYS_MINI_RDUMP

MTK平台发生kernel panic之后会生成 aee_exp目录,里面会有相应的db文件,解开可以得到SYS_MINI_RDUMP文件,这个是一个微型的ramdump,一般只有几MB大小,结合vmlinux可以使用trace32调试。1、将以下内容保存到 debug.cmm;ocal &off if os.file.size("SYS_MINI_RDUMP")0x2

2017-04-15 17:31:41 3080

原创 Trace32 加载高通 ramdump

1、高通ramdump解析后有几个重要文件:android@ubuntu:~/tmp/Port_COM6/out$ lslaunch_t32.sh t32_config.t32 t32_startup_script.cmm修改t32_config.t32默认配置调整字体为LARGE,注释掉HEADER, PRINTER,否则会报错.OS=ID=T32_1000002TMP

2017-04-15 17:24:02 9450 1

原创 Trace32 安装 (pc_linux64)

Trace32 属于调试也业内最强大的debug工具了,对于做机的人来说,多掌握一种调试手段意味着关键时候多一条解题的路,对于提升工作效率减轻工作量尤为重要。下面简单介绍ubuntu14.04下安装Trace32的基本步骤。1、拿到安装包,解压:android@ubuntu:~$ ls -l总用量 1712-rw-rw-r-- 1 android android 8

2017-04-15 17:10:57 10362 2

原创 高通平台 ramdump-parser 简介

ramdump 是什么?简单来说就是把系统memory中的某一个时间点的的数据信息通过一定手段取出来保存起来的内存崩溃文件,属于ELF文件格式。当系统发生致命错误无法恢复的时候,主动触发抓取ramdump把异常现场保留下来供离线分析定位问题是一种非常重要的高级调试手段。高通的ramdump触发后可以连USB通过PC工具拉出来,都是一堆binary文件,需要使用特定的脚本工具进一步解

2017-04-15 16:57:16 20535 11

转载 让程序员跳槽的非钱原因

转至 :http://mp.weixin.qq.com/s/AgKNCgSeOBTXe1HnLpnNXw

2017-02-27 13:44:42 802 1

原创 binder守护进程servicemanager简介

简介servicemanager 进程主要任务是什么?实现机制;。启动流程servicemanager 是一个可执行程序,由于起优先级很高,所以在init进程起来后,很快会被fork出来,下面是servicemanager进程的启动配置:service servicemanager /system/bin/servicemanager class c

2017-02-27 10:45:10 1008

原创 2017.春节.深圳

毕业这么多年,这是第一次正式意义的在深圳过年.上午的天气相当好,气温也很适宜,很适合散步 岳父岳母特意从老家高铁过来深一起过年,带了一堆各种鸡鸭鱼肉蛋的,最疼女儿还是老爹啊。。祝愿他们身体健康,每天快快乐乐的。来深奋斗多年,虽然没有多少钱也没有干出什么成就,工作也是一般般,总算攒下一个自己的窝,不大,爱人在即是家。

2017-01-28 21:42:15 908

原创 Clone 新项目TZ导致不开机问题

指纹识别拿到TEE实现之后需要改TA(trust app)内存映射起始地址及增大缓存size, 否则会出现TA load failed 的错误:[ 28.210673] scm_call failed: func id 0x72000101, ret: -2, syscall returns: 0xffffffffffffffe0, 0x0, 0x0[ 28.219084] QSEE

2017-01-05 21:42:36 3330 8

原创 2016 年终工作总结

2016年是烦恼很多的一年,期间发生了很多事情,也是相当累的一年,特别是年底..人事上:由于公司软件组织架构调整,我从大学毕业到跟了七年了老板在今年7月份时候被换了/(ㄒoㄒ)/~~,老实说这七年过得还是很开心的,被换了老板忽然有种失落的感觉(;′⌒`),然而接下来三个月内又连续被换了两次老板...详细这里就不说了,总之这是件相当无奈的一件事情。工作上:1、负责

2016-12-31 22:08:09 1754

原创 参加高通培训

本月24号,作为公司代表之一去科技园阿里巴巴大厦参加高通组织的 “Android User space stability issue analysis  training”学习,感觉收获不少。培训内容相当实用&接地气,高通工程师(很nice,言谈、专业素质都很不错)从理论到案例演示系统的介绍了Java & Native crash 、Memory leak、Third-part app cr

2016-11-26 15:57:40 1491 7

原创 深入 kernel panic 流程

一、前言 我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic 的情况),死机重启基本算是影响最严重的系统问题了,有稳定复现的,也有概率出现的,解题难度也千差万别,出现问题后,通常我们会拿到类似这样的kernel log信息(下面log仅以调用BUG

2016-11-19 22:19:48 17915 2

原创 tombstone 分析

Coredump 是分析Android native exception和kernel exception的利器,coredump是核心转储,可以理解为当进程发生异常无法挽救时,OS机制把这块出问题的内存取出来打包成核心转储供给离线分析用。有了coredump 不但可以定位具体出异常的代码所在文件行数,还可以离线调试,一步步还原问题现场,抓出导致异常真凶.但是很多时候由于系统挂得太突然等某些原

2016-11-18 21:41:25 12575 2

转载 我们为什么应该坚持写博客

一、种种原因  我们很多人都有过写点东西的冲动,只是又因为种种原因没有发表。写着写着,挤不出字来了。总感觉自己的内心想法表达不出来。感觉写了没什么用,自己都明白了干嘛还要写。怕写出来被人笑话被人喷。(这个也是我经常害怕的)写博客的费脑力,耗时间。还不如拿这精力去再学更多的东西。二、关于以上几点我的理解

2016-11-06 16:40:33 823

原创 深入MTK平台bootloader启动之【 lk -> kernel】分析笔记

接上一篇分析: 《深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记》Pre-loader 运行在ISRAM,待完成 DRAM 的初始化后,再将lk载入DRAM中,最后通过特殊sys call手段实现跳转到lk的执行入口,正式进入lk初始化阶段.一、lk执行入口:位于.text.boot 这个section(段),具体定义位置

2016-11-05 22:18:23 24176 12

原创 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记

1、bootloader到kernel启动总逻辑流程图bootloader 启动分两个阶段,一个是pre-loader加载lk(u-boot)阶段,另一个是lk加载kernel阶段。下面跟着流程图简述下两个阶段的加载流程。1-3:设备上电起来后,跳转到Boot ROM(不是flash)中的boot code中执行把pre-loader加载起到ISRAM, 因为当前DRAM(RAM分

2016-11-01 21:17:54 28180 9

原创 kernel 启动流程之 【设备驱动加载】 学习笔记

先上总流程图,一图胜千言!点击查看大图head.S 初始化完成后跳转到 start_kernel 入口:kernel-3.18/init/main.c:505:asmlinkage __visible void __init start_kernel(void)START => 源码分析:这里要干的事情非常

2016-10-21 18:00:10 7920 9

原创 kernel 启动流程之 【head.S】 学习笔记

1、系统引导程序 【参考:kernel-3.18/Documentation/arm/Booting】bootloader 要干的主要事情:找到并初始化内存;初始化和使能一个串口输出,这个对于调试很重要;获取CPU类型,指的是具体体现结构CPU的类型,比如ARM Cortex-x系列;初始化kernel tagged list,向kernel传递系统内存

2016-10-21 17:53:49 4362

原创 Android M 启动源码分析笔记之 - App 进程

< 接上一篇:  Android M 启动源码分析笔记之 - zygote  分析 > 老规矩,先来一张时序图,一图胜千言 啊~查看大图Here we go!从AMS的startActivity入口开始,时序图【1-3】:@Override public final int startActivity(IAppli

2016-10-09 21:40:30 1051

原创 Android M 启动源码分析笔记之 - Zygote 孵化

【接上一篇的分析】2、zygote到Home程序启动源码分析:首先看服务执行入口函数:/* init进程的main函数服务启动代码段 */int main(int argc, char** argv) {... while (true) { if (!waiting_for_exec) { execute_one_

2016-10-08 21:27:05 1294

原创 Android M 启动源码分析笔记之 - Init 进程

【本文意在更好的解读 init进程到system_server进程的启动过程】一、首先上一张总流程图流程图比较清晰的展示了init到system_server的启动过程和zygote的孵化原理. 接下来分以下几个阶段分析:1、init进程干了什么事情?2、zygote进程是如何启动的?如何成为java world所有进程的父进程?3、一个新app

2016-10-06 15:19:23 2607

原创 高通8937平台手机关机概率卡住问题分析

异常现象:高通8937平台手机执行开关机压力测试出现概率性无法关机,平均复现概率为1/400次, 问题出现时手机黑屏,看上去像死机,但充电灯在亮着.分析:拿到机器发现adb还可以使用,那既然adb还可以用,说明系统并没有发生kernel panic,只是由于某种原因导致关机Thread发生了stuck,跟死锁的现象有点像,问题是概率发生并且概率比较低,能想到比较合适的分析方

2016-09-28 13:17:59 5196 4

原创 ARMv8 Load / store 指令学习重要笔记

1、Load-Store Non-temporal PairSTNP Xt1, Xt2, [base,#imm]Store Non-temporal Pair (extended): stores two doublewords from Xt1 and Xt2 to memory addressed bybase+imm, with a non-tempora

2016-09-24 21:09:36 7255

原创 ARMv8 异常处理源码入口

1、Data abort 先看64位:分析 kernel/arch/arm64/kernel/entry.S 文件,查到C函数入口 => do_mem_abort其中:x0 /x1 /x2 作为传入参数寄存器,x0 x1 x2 12345678910

2016-09-24 21:05:33 4269 1

ARMv8内存管理架构.学习笔记

详细介绍计算机分级存储结构与ARM内存管理架构相关内容,对cache、MMU,业表机制属性有详细介绍.

2016-11-27

ARMv8架构与指令集.学习笔记

全面深入介绍ARMv8架构与指令集相关内容,包括 ARM /thumb指令,ARMv8的架构层级与32/64位异常模型跟路由选择等。

2016-11-27

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

TA关注的人

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