自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 android recovery 模块知识需求汇总

关于android recovery的一个目录,后续继续更新,未完待续......Android recovery模块介绍:(一)android为什么需要recovery升级?http://blog.csdn.net/csdn66_2016/article/details/68944441(二)android recovery升级过程中掉电处理http://blog

2017-06-28 10:50:44 774 2

原创 Android Boot Image Header结构

Android 9.0之前的boot header:struct boot_img_hdr{ uint8_t magic[BOOT_MAGIC_SIZE]; uint32_t kernel_size; /* size in bytes */ uint32_t kernel_addr; /* physical load addr */ uint32_t ...

2019-03-15 16:57:10 1237

原创 android recovery设置selinux为permissive

我们在调试开发阶段,经常需要把selinux关闭,则我们修通过设置uboot env来设置为允许状态:setenvEnableSelinux permissive;save 我们如果需要一直设置为permissive模式,不需要通过uboot env去控制,可以这样修改(android 9.0上面验证):system/core/init下面打patch:diff --...

2019-03-13 11:06:36 3015 2

原创 Can't find ext4 filesystem(EXT4-fs:Bad magic number in super-block)

针对目前市面上主流的android系统的嵌入式设备,都是使用的emmc的flash存储,相应的使用的是ext4的文件系统,当ext4的system分区无法挂载的时候,我们改如何分析呢?何种操作导致的ext4分区无法挂载呢? 我们出问题的设备的启动log如下:[ 1.868201@2] fs_mgr: Warning: unknown flag format[ ...

2019-03-11 17:43:13 6221 1

转载 ext文件系统机制原理剖析

看过的比较完整且通俗的ext文件系统的解析,新手学习非常合适,尊重原创作者转载于:https://www.cnblogs.com/f-ck-need-u/p/7016077.html将磁盘进行分区,分区是将磁盘按柱面进行物理上的划分。划分好分区后还要进行格式化,然后再挂载才能使用(不考虑其他方法)。格式化分区的过程其实就是创建文件系统。文件系统的类型有很多种,如CentOS 5和Cen...

2019-03-07 16:53:56 475

原创 FAT32文件系统格式详解(图文针对具体文件存储,分析fat32 SD卡)

一. 用winhex工具分析SD卡(FAT32)WinHex.exe -> 工具 ->打开磁盘 ->选中SD卡设备 图(1)打开后主界面如下: ...

2019-03-01 20:11:42 12655 2

原创 recovery 下界面UI旋转90 180 270修改

原文修改出自简书:https://www.jianshu.com/p/768fdd954061应该是MTK修改的google源码,支持recovery下屏幕旋转90/180/270, 作者把MTK的修改上传了,验证没有问,可以直接使用,多谢分享...

2019-01-30 17:29:22 1370 1

原创 python错误(Could not find platform independent libraries <prefix>)

我们在自己裁剪的文件系统中,执行python命令的时候,提示如下错误:# pythonCould not find platform independent libraries &lt;prefix&gt;Could not find platform dependent libraries &lt;exec_prefix&gt;Consider setting $PYTHONHOME...

2019-01-02 16:31:43 63322 7

原创 linux下可执行bin程序提示not found/no such file or directory/not executable

    我们经常在执行二进制bin程序时,会遇到提示not found/no such file or directory/not executable等错误信息,在什么情况下会出现这种问题呢,我们一起罗列下几种常见的几种场景:1.可执行bin程序确实不存在这个错误就比较低级了,你的可执行bin没有打包或者拷贝进来,执行的时候,自然找不到了2.可执行bin程序的路径不对我们...

2018-12-28 16:00:43 8844

原创 一个exfat U盘引起的systen crash

    最近遇到一个奇葩的问题,客户反馈,在Android 系统的TV上,插入exfat格式的U盘,然后就system crash了,经过一系列分析后,我们找到了原因,把分析过程分享下,希望对有类似的问题的朋友参考:    由于kernel打印的信息比较多,我们截取比较重要的信息分析:这里out_of_memory了, 内存耗尽了,我们继续看看下面的打印,看看是哪个进程导致的内存消耗...

2018-12-06 19:59:18 1154

原创 把png图片资源转换为framebuffer可显示数据

    我们都知道,我们是通过framebuffer来显示图片的,但是我们有不能直接把png图片显示到framebuffer,因为framebuffer是不能直接识别png图片的。    我们如何把一个1.png图片转换为framebuffer需要的格式呢?1. 了解framebuffer的大小# cat /sys/class/graphics/fb0/window_axis ...

2018-11-30 20:17:23 2080

原创 一种通过printf打印的调试程序的方法

    我们在写代码的时候,有时候需要调试程序的时候,对于初学者,可以通过简单的增加printf函数打印,这样能够来跟踪程序的踪迹,举个很简单的代码:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ int a = 4; int b = 2; int c = 5; int d = 800; ...

2018-10-22 20:19:51 1348

原创 查看服务器编译android/linux后台线程个数

  由于日常开发中,我们都是公用的服务器编译,这样有时服务器会变的异常缓慢,我们就需要查看下,是谁使用了大量的多线程编译: 对于编译android系统,使用的是make otapackage -j*编译:我们可以使用如下命令查看 ps -ax | grep "j" | grep "otapackage"即可查看到其他人使用的线程个数。...

2018-09-28 11:22:57 777 3

原创 8位, 16位,24位,32位图片显示原理及对比

  我们都知道一张图片可以保存为很多种不同的格式,比如bmp/png/jpeg/gif等等。这个是从文件格式的角度看,我们抛开文件格式,看图片本身,我们可以分为8位, 16位, 24位, 32位等。  单击右键,属性-&gt;详细信息即可查看图片位深度:8位:  2^8 = 2^2(B) 2^3(G) 2^3(R) = 256  (256色)    可以总共显示256种颜色16位:...

2018-09-26 14:06:37 59263 8

原创 recovery 根据@/cache/recovery/block.map描述从data分区升级

    随着android版本的更新,系统固件的大小也越来越大,升级包也越来越大,cache分区已经不够存储update.zip了,所以应用把update.zip下载到data分区,默认情况下data分区是可以存储升级包的。    我们有分区加密的功能,当打开加密分区后,data分区是加密的,当升级包存在data分区的时候,recovery下获取不到对应的秘钥,也没有对应的程序去解密,所以re...

2018-08-23 20:16:30 4358

原创 recovery uncrypt功能解析(bootable/recovery/uncrypt/uncrypt.cpp)

我们通常对一个文件可以直接读写操作,或者普通的分区(没有文件系统)也是一样,直接对/dev/block/boot直接读写,就可以获取里面的数据内容了。当我们在ota升级的时候,把升级包下载到cache/data分区,然后进入recovery系统后,把cache/data分区mount之后,即可从对应的分区获取zip升级包升级了, 前提是我们需要挂载对应的分区cache或者data,这样才能给读...

2018-08-23 20:13:12 4909

原创 recovery 升级前兼容性检查(Vendor Interface Object)

  从android P(9.0)版本开始,我们发现编译出来的OTA升级了里面多了一个文件,compatibility.zip,这个里面存储这system与vendor分区的一些特性,用来做升级前的兼容性检查。其实从android O开始已经增加了这个功能,但是没有默认打开。直到android P上,已经默认打开了。解压compatibility.zip后,内容如下:我们先从goo...

2018-08-15 15:49:21 5633 3

原创 sha1 sha256 md5 crc32几种摘要签名算法的效率,及实现对比及分析

    sha1/sha256/md5/crc32这几种算法都是目前比较常用的摘要算法,在我们实际开发中,经常会需要使用,我们该如何选择呢,哪个算法的速度更快呢?    我们选择了一个差不多1G大小的system.img来分别计算下这四种不同的摘要信息,我们写了一个脚本来计算,更方便我们查看对比结果:date -u +%rsha256sum system.imgdate -u +%r...

2018-07-31 19:59:00 13079

原创 recovery 强制执行恢复出厂设置(Rescue Party)

有时候我们在系统正常运行的时候,突然跑到recovery里面了,并且停在了如下界面:Can't load Android system. Your data may be corrupt.If you continue to get this message, you may need toperform a factory data reset and erase all user datast...

2018-06-15 19:55:01 15034 1

转载 Bluez调试工具hcitool与gattool的使用实例

转载:https://blog.csdn.net/talkxin/article/details/50610984作者:PaulYoung_BlogBluez协议栈在安装完以后,会提供两个命令行调试工具,hcitool与gattool,我们可以根据提供的工具来轻松的调试我们的蓝牙设备。 当然 需要注意的是,在调试BLE设备时,需要获得root权限。蓝牙设备的开启与关闭首先,查看在使用hci工具时...

2018-05-30 16:55:45 3256

原创 wpa_supplicant-2.6交叉编译及错误解决

   最近项目上需要使用wpa_supplicant与wpa_cli相关的工具测试wifi,网上百度了下,好像要下载wpa_supplicant的源码编译,虽然网上已经有人下载交叉编译过,但是每个人的编译环境不一样,那么也会遇到各种各样的问题,那么解决方法也不相同,在交叉编译过程中,也遇到了问题,记录下编译过程及解决方法。1.openssl-1.0.0交叉编译下载:https://www.open...

2018-05-18 20:19:26 4232

原创 编译出错Relocations in generic ELF (EM: 62)

今天在交叉编译libnl的时候,出错了,信息如下:编译出错aarch64-linux-gnu-gcc -L/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib --static  -o wpa_supplicant config.o notify.o bss.o eap_register.o ../src/utils/common.o ....

2018-05-18 20:16:36 17983

原创 recovery 恢复出厂设置失败Data wipe failed

最近客户反馈,编译32位的android系统,在recovery中执行恢复出厂设置的时候失败了,失败的打印提升信息如下。Formatting /data...[ 2.191404] E:get_file_size: invalid size -1289764864 for /dev/block/data[ 2.207430] Data wipe failed.根据打印提示,意识是说...

2018-05-10 20:04:43 2713

原创 android.mk转换为android.bp

android.mk大家都很熟悉了,就是android下编译模块的配置文件,可以理解为android makefile。从android N之后,我们发现好多模块下面没有了android.mk文件,多了一个android.bp文件。这个是google在android N之后新的编译配置文件。在实际项目中,我们需要把android.mk转换为android.bp,还好sdk中给我提供了android...

2018-05-09 20:00:29 13597 3

转载 安卓系统源码编译——so库的源码路径列表

前人栽树,后人乘凉转载于:http://blog.csdn.net/zhaoxy_thu/article/details/16871483本人在尝试对安卓系统的部分代码进行编译时,经常发现需要查找某个so库的源码进行修改,但是苦于安卓so库的命名方式各异,且在源码中的位置各不相同,查找起来很费时间。于是把其中的一些so库所对应的源码路径记录了下来,在这里分享给大家。libandroid.so——f...

2018-04-16 20:05:19 1292 1

原创 button按键测试

#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;linux/input.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/stat.h&gt;#include

2018-03-30 19:54:15 1682

原创 wifi测试

不通过android UI操作,直接命令打开wifi,测试wifi功能,适用于amlogic平台的android O之后的版本。1. hardware/amlogic/wifi/multi_wifi/config/wpa_supplicant.conf  加入:ctrl_interface=/data/misc/wifi/wpa_supplicant2.shell脚本:#/bin/shsvc w...

2018-03-30 19:47:22 3402

原创 factoryreset恢复出厂设置测试

#/bin/shrm -rf /cache/recovery/commandecho "--wipe_data" &gt; /cache/recovery/commandecho "--wipe_cache" &gt;&gt; /cache/recovery/commandsyncsyncsleep 1syncsyncreboot recoveryandroid系统进入reco...

2018-03-30 19:36:45 5758

原创 remote测试

#/bin/shecho 1 &gt; /sys/class/remote/amremote/debug_enablefor i in {1,2,3,4,5}do dmesg | grep scancode=0x19 if [ $? = 0 ];then dmesg | grep scancode=0x1a if [ $? = 0 ];then ...

2018-03-30 19:34:12 466

原创 mem内存测试

下载源码: http://pyropus.ca/software/memtester/old-versions/memtester-4.2.2.tar.gzlinux下移植参考:https://blog.csdn.net/vc66vcc/article/details/56009538android下移植参考:http://blog.csdn.net/csh86277516/article/det...

2018-03-30 19:30:25 1616

原创 led测试

#/bin/shfor i in {1,2,3}do echo 0 &gt; /sys/class/leds/sysled/brightness sleep 1 echo 255 &gt; /sys/class/leds/sysled/brightness sleep 1done循环点亮led灯,跟平台相关。

2018-03-30 19:24:50 346

原创 usb接口测试

#/bin/shusb_num=$(cat /proc/scsi/scsi | grep "Vendor" | wc -l)if [ $usb_num = 2 ];then echo "test usb success"else echo "test usb failed"fi判断USB接口是否有设备插入,usb_num为检查到的USB设备个数。...

2018-03-30 19:10:50 5054

原创 system.img镜像转换为system.new.dat + system.transfer.list

android 8.1上面验证,支持所有的android版本,直接放到sdk中执行即可。img2sdat.py#!/usr/bin/env python#coding=utf-8import sysif sys.hexversion &lt; 0x02070000:  print &gt;&gt; sys.stderr, "Python 2.7 or newer is required."  sy...

2018-03-22 16:39:11 2577

原创 关于配置android configfs gadgets的补充说明

    了解了怎样配置android configfs gadgets,是不是我们就可以直接照搬到我们的平台就直接可以用了呢,显然是可以的,但是有些需要注意的地方,不然还是有问题的,这个在原文中,也提醒说明了哪些注意的地方,但是我们还是单独拿出来说明下:stop adbdsymlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadg...

2018-03-22 16:28:14 2818

翻译 怎样配置android configfs gadgets

怎样配置android configfs gadgets                                             目录1.简介2.内核配置3.从安卓界面使能USB gadgets  3.1 针对AOSP的主分支      修改init.${ro.hardware}.rc  3.2 针对android-L(5.1.1)      修改init.rc      修改in...

2018-03-19 17:33:26 4891 4

原创 system.transfer.list版本进化

    从android5.0开始之后,recovery升级包中不再升级system.img,而是升级system.new.dat+system.transfer.list的这种文件组合,经过android版本的不断进化,transfer的版本也在不断的升级,目前已经发展到了版本4,从android-L android-M android-N android-O的过程,transfer进过过程如下...

2018-03-19 17:26:31 1052

原创 system.transfer.list深度解析

system.transfer.list  system.new.dat很明显,通过名字我们就知道这两个文件的作用,system.new.dat为数据部分,system.transfer.list为转换的描述列表,我们可以通过这两个文件完成升级。我们打开一个升级包的升级脚本META-INF\com\google\android\updater-scriptblock_image_update("/...

2018-03-19 17:24:43 3158

原创 android adb 流程原理代码分析(一)

由于要用到adb的知识,但是对adb啥也不了解,看了下android的代码,adb的源码在system/core/adb下面,然后网上搜下了资料,发现很多大神的源码分析,瞬间信心爆棚,把大神写的博客都浏览了一遍,然后手动运行了下adb命令,顺便跟踪了下过程,发现原来还是很好的理解,源码的各种线程创建,函数回调,对于我这种基础不咋好的,,还是看的晕晕呼呼,现在把我自己的理解给大家分享,有理解错误的还

2018-02-01 20:48:48 8374 10

原创 recovery 升级'@/cache/recovery/block.map' failed错误问题

随着android版本升级,升级包越来越大,当升级包无法存储在cache分区的时候,会把升级包下载到data分区,然后从data分区升级,最近从data分区加载升级包升级的时候,遇到了如下错误:[ 1.945982] Supported API: 3[ 1.957270] charge_status 1, charged 1, status -2, capacity -922

2018-02-01 20:45:31 7298

转载 python os.path模块函数汇总

os.path.abspath(path) #返回绝对路径os.path.basename(path) #返回文件名os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。os.path.dirname(path) #返回文件路径os.path.exists(path)  #路径存在则返回True,路径损坏返

2018-01-16 17:24:32 957

空空如也

空空如也

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

TA关注的人

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