- 博客(94)
- 资源 (14)
- 收藏
- 关注
原创 高通平台 Android9 adb shell “hwclock -w“ 报错
hwclock -w 报错文章目录`hwclock -w` 报错问题现象分析1. hwclock命令分析2. `/dev/rtc0`驱动节点分析修改设备树后`hwclock -w`报错没有了,但是系统会重启,原因未知问题现象sdm660_64:/ # hwclock -whwclock: ioctl 4024700a: Invalid argument分析1. hwclock命令分析hwclock命令是toybox的内建命令,可以修改toybox代码来调试进入external/toybox
2021-08-24 20:56:36 4521 4
原创 android OTA执行update_engine_client命令报错ErrorCode::kDownloadInvalidMetadataSize (32)
目录android OTA执行update_engine_client命令报错ErrorCode::kDownloadInvalidMetadataSize (32)分析过程如下1. 换机器尝试,排除机器问题2. 多次打OTA包,并测试,初步排除OTA包问题3. 检查`ota.py`4. 尝试其他方式ota刷机5. 抓执行`update_engine_client`命令失败的logcat分析android OTA执行update_engine_client命令报错ErrorCode::kDownloadI
2021-08-10 11:36:24 5989 4
原创 Android soong架构中命名空间模块的概念
参考文章 https://source.android.google.cn/setup/build文章目录命名空间模块`判断依赖是哪里`的例子:`判断是否编译模块`的应用的例子命名空间模块在 Android 完全从 Make 转换为 Soong 之前,Make 产品配置必须指定 PRODUCT_SOONG_NAMESPACES 值。它的值应该是一个以空格分隔的列表,其中包含 Soong 导出到 Make 以使用 m 命令进行编译的命名空间。在 Android 完成到 Soong 的转换之后,启用命名空
2020-10-23 19:03:57 3788
原创 7.1 Android lunch时怎么走到target.mk的
文章目录主要线路build/make/core/product_config.mk 找target.mkinclude target.mk是这里找target.mk的逻辑在刚才那个地方的上面get-all-product-makefiles 宏函数AndroidProducts.mk.list主要线路In file included from build/make/core/config.mkIn file included from build/make/core/envsetup.mkIn fi
2020-09-23 17:48:24 1259
原创 九、子模块的执行
文章目录soong中`子模块执行`部分的代码log提示verboseLogerrorLogsoong中子模块执行部分的代码log提示/build/soong/ui/status/log.goverboseLogtype verboseLog struct { w io.WriteCloser}func (v *verboseLog) StartAction(action *Action, counts Counts) {}func (v *verboseLog) FinishActio
2020-09-10 14:43:36 1181
原创 八、module-info.json
文章目录module-info.json文件与envsetup.sh的关系allmod命令refreshmod命令pathmod命令gomod命令module-info.json文件的生成module-info.json文件与envsetup.sh的关系lunch之后,会增加一些与module-info.json相关的命令allmod命令lunch之后会增加一个allmod命令该命令执行后会显示所有的模块名(该命令需要在lunch之后执行)我们可以从envsetup.sh文件查看一下这个命令#
2020-09-10 14:43:05 1987
原创 七、AndroidProducts.mk
文章目录AndroidProducts.mk是什么简单来说就是:此外注意一下:例子AndroidProducts.mk怎么用AndroidProducts.mk如何被加载从`lunch`到`AndroidProducts.mk.list``AndroidProducts.mk.list`调用关系`_find-android-products-files`宏函数`get-all-product-makefiles`宏函数`get-product-makefiles`宏函数`_validate-common-l
2020-09-10 14:42:34 3665
原创 六、make目录中的main.mk
文章目录编译的逻辑顺序1. 执行`source envsetup.sh`脚本2. 执行`lunch`命令3. 执行`make`or`m`命令开始编译main.mk1. kati与main.mk2. Android.mk加载2.1 inc_and_print宏函数2.2 subdir_makefiles_total变量2.3 Android.mk.list2.4 build/soong/ui/build/finder.go编译的逻辑顺序1. 执行source envsetup.sh脚本执行source
2020-09-10 14:42:01 2109
原创 五、kati中调用main.mk
kati调用关系从/build/soong/ui/build/build.go文件中// Build the tree. The 'what' argument can be used to chose which components of// the build to run.func Build(ctx Context, config Config, what int) { ... if what&BuildKati != 0 { // Run ckati
2020-09-10 14:41:31 1312
原创 四、soong_ui的main.go
文章目录soong_ui参数必要的参数三个必要参数不能共存`--dumpvar-mode`参数`--dumpvars-mode`参数`--make-mode`参数其他参数showcommands参数--skip-make参数dist参数checkbuild参数命令传参进行宏定义(KeyValue组合)help和clean参数makefile中支持的参数 or makefile中的伪目标参数解析soong_ui中的`main`函数soong_ui参数必要的参数从代码看,Google是想整一个UI界面来着
2020-09-10 14:40:52 2243
原创 三、soong_ui.bash脚本
文章目录soong_ui.bash调用地方soong_ui.bash在envsetup.sh中的调用soong_ui.bash在main.mk中的调用soong_ui.bash在其他地方的调用soong_ui.bash分析soong_ui的调用顺序/build/soong/soong_ui.bash/build/soong/scripts/microfactory.bash/build/blueprint/microfactory/microfactory.bash展开`soong_build_go soo
2020-09-10 14:40:20 3101 1
原创 二、envsetup.sh脚本(Android10)
文章目录建议先阅读:新版本的envsetup.sh脚本1. add_lunch_combo函数被废弃2. print_lunch_menu函数2. get_build_var函数2. _lunch函数2. lunch函数3. addcompletions函数4. make函数5. m函数6. mm函数7. mmm函数8. gettop函数9. croot函数10. xgrep类函数11.hmm函数建议先阅读:envsetup.sh分析(旧版本Android)envsetup.sh分析二(旧版本Andr
2020-09-10 14:39:48 3569
原创 一、android build system编译系统概述
文章目录1. 基本概念2. Android build system的变迁2.1 Android N 前后build system的改变2.1.1 `Android N`之前2.1.2 `Android N`之后2.2 Android 10与Android 4.4 build目录对比2.3 Android10 manifest.xml中编译系统相关部分3. envsetup.sh分析4. kati、soong、blueprint、ninja4.1 ninja4.2 kati4.3 soong4.4 blue
2020-09-10 14:38:56 2359
原创 0. android build system编译系统有趣的几点心得
文章目录1. Android编译`m`or`make`命令1.1 Android老版本(7之前)1.2 Android新版本2. Android.mk2.1 Android.mk基本用法回顾2.1.1 LOCAL_PATH变量2.1.2 include $(CLEAR_VARS)2.1.3 `LOCAL_xxx`打头的变量2.1.4 include $(BUILD_xxx)2.2 Android.mk的`include`行为分析2.2.1 Android.mk中`include $(CLEAR_VARS)`
2020-09-10 14:38:06 1932
原创 将firmware编译进kernel空间
将firmware编译进kernel空间文章目录将firmware编译进kernel空间Overview法1:kernel 4.9 及之前版本的方法法2:kernel 4.14版本方法1. 在defconfig中增加如下修改2. 在kernel根目录下的firmware目录中添加`.bin`固件Overviewkernel原本就是支持将firmware编译进内核的。早些年,用的比较多的是方法一。这也就导致了kernel里面多了很多firmware文件,这些文件对于kernel源码来说。不适合放在re
2020-07-23 13:51:01 3767
原创 android10 super.img编译
文章目录`make superiamge``INSTALLED_SUPERIMAGE_TARGET`牛逼哄哄的`droidcore`就依赖于它规则再来看看它的依赖`INSTALLED_SUPERIMAGE_DEPENDENCIES``make superimage-nodeps` or `make supernod`规则命令`intermediates-dir-for`宏函数misc_info.txt`build-superimage-target``dump-super-image``dump-dynam
2020-06-01 17:32:00 9963
原创 关于Android Q平台上qssi的介绍
1. QSSI 是 Qualcomm Single System Image 的缩写。2. Android Q上开始支持QSSI。3. QSSI 将会在所有(qssi支持的)高通芯片组上,构建一个单独或共享的system.img3.1 QSSI编译注意事项 lunch qssi ------ 编译system.img lunch target ------ 编...
2019-10-01 14:07:16 20128 1
原创 Android Kernel如何确定使用哪个defconfig文件
Android Kernel如何确定使用哪个defconfig文件?答案:device目录下的项目文件夹下的AndroidBoard.mk决定了使用哪个def_config文件1. 项目控制的AndroidBoard.mk以device/qcom/sm6150/AndroidBoard.mk为例子因为KERNEL_DEFCONFIG被定义为sdmsteppe-perf_defconf...
2019-10-01 13:58:02 5531
原创 ubuntu bash 命令行美化 shell提示符前缀格式修改
ubuntu bash提示符前缀格式修改一、最终的效果图废话不多说,先上效果图。想要就继续看。二、修改方法修改~/.bashrc文件(修改方法见下文)重开terminal或者source ~/.bashrc1.1 强制bash开启颜色ubuntu的~/.bashrc中一般都有force_color_prompt=yes选项,把注释去掉即可force_color_prompt=...
2019-09-20 11:06:10 5987
原创 Android 录屏adb命令组合
Android 录屏adb命令组合开始录屏命令,默认最长录制3分钟adb shell "setsid screenrecord --time-limit=180 /sdcard/screenrecord.mp4 &"已经开始录制后,请拔出USB线或者关闭cmd窗口查看录屏进程pidadb shell "ps -A | grep screenrecord"打印...
2018-10-01 13:35:21 4456
转载 使用adb or fastboot命令进入高通的9008(edl)模式
如题,两种方法 1. adb ··· $ adb reboot edl ··· 2. fastboot$ fastboot oem edlor$ fastboot reboot emergency
2018-09-12 11:32:24 119689 6
原创 android系统中将linux驱动模块在外部进行动态编译
android系统中将linux驱动模块在外部进行动态编译目录前言Makefile编写,及注意事项解决签名问题0. 前言平常我们编译一个驱动模块,需要编一个boot.img,这就需要3、4分钟时间。之后还要在用fastboot刷写进手机,这里又多了一个重启的时间。这样子调试内核驱动模块起来就很费时间。最要命的是影响节奏,会打断你的编程思路。是不是感觉烦烦烦!那么这篇...
2018-08-30 21:34:47 1191 1
原创 树状显示dts设备树文件之间的包含关系(设备树树状图显示)(图形化显示设备树)
效果使用步骤$ cd <dts所在目录> //切换路径$ cp DeviceTreeMap.py <dts所在目录> //路径切换后,把py脚本也复制到该目录$ python DeviceTreeMap.py xxxx.dts //执行py脚本,并把xxx.dts文件名作为参数传进去注意: .dts是
2018-08-10 19:03:32 2958 1
翻译 编译Powertop for Android
原文:Link:https://01.org/zh/powertop/blogs/ayates1/2015/how-build-powertop-android?langredirect=1翻译:你可以在PowerTOP 源码代码附带的README文件中找到这些说明。1. 获取pciutils和ncurses库。如果它们已经在工作目录中,请跳过此步骤。 pciutils...
2018-07-24 17:53:29 983
原创 linux循环执行命令的shell(bash)脚本直到成功时才停止
linux循环执行命令的shell(bash)脚本使用方法新建.sh文件,并将下面的代码复制进去修改main函数部分代码 loop_exe函数会循环执行知道命令知道成功为止传参为所想要执行的命令(主要要用双引号包起来)给脚本执行权限chmod a+x xxx.sh / chmod 777 xxx.sh执行脚本#!/bin/bash# Author: wanghan# ...
2018-07-17 20:32:08 10835
翻译 高通msm8996启动流程
摘自”80-nv396-1_c_msm8996_boot_and_corebsp_architecture_overview.pdf”系统上电并且把Kryo应用处理器退出reset状态 i. Kryo是Qualcomm Technologies推出的首款定制设计的64位CPU。在Kryo,应用主引导加载程序(应用PBL)执行。 a. 对extensible boot loader ...
2018-03-17 17:39:15 6795
原创 高通的熔丝(Blow eFuse)操作
参考翻译自高通文档 “kba-170922012113_2_options_for_blowing_efuse_in_factory_process.pdf”前言为了安全性考虑,现在的手机出厂都会进行熔丝操作。对于unsafe(security off)(未熔丝) 和 safe (security on)(已熔丝)设备,Modem SW 都需要使用key来解密EFS内容(EFS内...
2018-03-17 16:42:54 19636 3
原创 DA14580 启动过程分析
DA1458x工作在两种模式下,即“Normal Mode”和“Development/Calibration Mode”,以下称为“DevMode”。上电之后芯片进入模式的决定由驻留在ROM中的引导代码取得。 DA1458x的数据表中给出了引导代码的完整流程图。当OTP头在CPU的前两个地址中包含零值时,意味着OTP没有被编程,DA1458x将会切换到DevMode,以便用户可以访问从外部设备下载代码到内部
2017-11-16 21:55:20 5856 2
原创 DA1458x BASS 初始化 -- Battery Service 分析(三)
OverviewBASS 分为两部分。一部分为Profile,另一部分为Application。 同样初始化也是分为两部分,一部分是BASS Profile初始化,另一部分是 BASS Application初始化。BASS APP 初始化在BASS Application不是单独的一个任务,它是APP_TASK这个任务中的一个APP。 类似的还有app_diss、app_findme、app
2017-11-16 19:24:58 1042
原创 DA1458x BASS 初始化 -- Battery Service 分析(二)
OverviewBASS 分为两部分。一部分为Profile,另一部分为Application。 同样初始化也是分为两部分,一部分是BASS Profile初始化,另一部分是 BASS Application初始化。 BASS Profile 初始化本部分主要由bass.c和bass_task.c文件组成。 bass.c和bass_task.c一起构建起了一个rwip系统的TASK。 在Di
2017-11-15 10:47:48 1637 1
原创 DA1458x SDK Software Layout 随笔
DA1458x SDK 5.0.4分层Dialog在DA14580分层主要分为BLE_stack、kernel、Profile和Application。 其中BLE_stack和kernel使我们不可见的,Profile和Application是我们可见的。 下面是官方的Software Layout 这个图中关于Profile和Application的排布我感觉并排的感觉并不是十分合适。
2017-11-15 10:46:18 1524
原创 DA1458x DISS Database的组成结构 -- Device Information Service 分析(一)
Overview本文基于DA1458x SDK 5.0.4。 Device Information Service 以下简称DIS or DISS。DISS的代码主要有以下两个组C文件组成 另,DISS是依赖于APP_TASK任务来调度管理的。具体框架如下图(摘自Dialog官方文档) Full DISS Database Description (DISS Database 分析)DIS
2017-11-14 20:12:07 1208
原创 DA1458x BASS Database的组成结构 -- Battery Service 分析(一)
Overview本文基于DA1458x SDK 5.0.4。 Battery Service 以下简称BAS or BASS。BASS的代码主要有以下两个组C文件组成 另,BASS是依赖于APP_TASK任务来调度管理的。具体框架如下图(摘自Dialog官方文档) Full BAS Database Description (BAS Database 分析)BASS的Database的变量
2017-11-14 12:15:23 1148
原创 使用脚本(命令行)编译KEIL工程
使用脚本(命令行)编译KEIL工程参考KEIL官网 http://www.keil.com/support/man/docs/uv4/uv4_commandline.htmKeil_Build.bat脚本@echo offset UV=D:\Keil_v5\UV4\UV4.exeset UV_PRO_PATH=F:\source\systick\Keil_5\systick.uvprojxe
2017-10-12 11:02:07 18092
原创 eclipse + GDB + JLink 搭建MCU调试环境
安装Java环境1. 进入Java官网 http://www.oracle.com/technetwork/java/javase/downloads/index.html2. 下载安装包 如果是先要安装Java开发环境,就安装JDK,如果只是想运行Java,安装JRE就可以了。 解压并配置环境变量如果你不想配置环境变量的话: 可以修改eclipse目录下的eclipse.ini,在第1
2017-09-26 15:33:11 5188
原创 ARM平台裸板GDB调试
ARM平台裸板GDB调试概述调试方式ARM平台下裸板调试,一般分为两种。 * ARM内核的MCU开发和调试 * ARM内核的SOC的bootloader开发和调试MCU的开发多是基于Windows系统。使用Keil(MDK)、芯片厂商基于eclipse的改造的IDE进行开发。当然也有开发者自己搭建环境进行开发的(gcc+编辑器等方式)。 SOC bootloader调试多是使用
2017-09-14 21:13:36 2109
原创 干电池放电曲线分析
干电池放电曲线分析前言因为最近项目中涉及到电池电量的检测,所以在网上查找资料,恶补一下关于干电池的一些知识。现在汇总整理一下,以备后用。阅读前需要了解的概念:mAh(毫安时)电池的电量单位,等于放电电流和放电时间的乘积。mWh(毫瓦时)电池实际所消耗的电能单位。 1度电=1KWh=1x10^6 mWh焦耳(能量单位) 1焦耳(J)=1瓦特x秒(W*s)1度电(1KWh)=3.6x10^6
2017-07-26 19:50:17 50219 2
原创 Android TP驱动之(三)input
AndroidTP驱动之(三)input 前情提要上文中我们已经完成对设备树的解析工作,获取了tp的硬件信息。 我们知道Linux内核上报输入事件是通过input子系统,TP作为输入设备自然要通过input子系统来上报。 现在的kernel都支持多点触控了,多点触控的协议有两种协议A和协议B,协议A不需要硬件支持,协议B需要硬件支持。
2017-06-10 13:08:51 2456
原创 Android TP驱动之(二)设备树解析
AndroidTP驱动之(二)设备树解析0. 前情提要上文中我们已经初步搭好了TP驱动的框架。当然我们还缺了重要的部分input子系统,这个不急,我们下一篇文章再叙。 本文我们来完成TP driver中对设备树的解析。1. probe函数我们知道驱动匹配有四种方式:设备树匹配、设备名称匹配、设备ID匹配、ACPI方式匹配。 这里我们只用设备树匹配,这也是Android驱动中最常用的匹配方式。
2017-06-09 22:02:06 3664
原创 Android TP 驱动之(一)I2C
AndroidTP驱动之(一)I2C0. 前言Android TP 驱动系列主要用来记录自己关于TP的心得体会。 为了完整的梳理TP driver相关的知识,也为了跟好回顾Linux driver的编写流程。 我将参照已有的驱动代码(focaltech的驱动代码)从零开始,一步一步写出一个TP驱动。 驱动模块的名字就叫做mytp。1. 模块三要素1.0 header & define#incl
2017-06-09 21:23:40 4456
opencv-4.1.0样例图片和视频.zip
2019-07-23
DA1458x软件平台开发手册
2017-11-22
DA1458x软件开发手册
2017-11-22
高通QXDM工具使用手册
2017-11-22
高通平台QFIL使用手册
2017-11-22
DA1458x RW内核 函数接口说明文档
2017-11-22
DejaVu for Powerline.zip
2017-04-08
PL2303 XP 驱动程序
2014-07-22
Pl2303 Win8系统驱动程序
2014-07-22
PL2303 WIN7驱动程序
2014-07-22
Pl2303 Vista 系统驱动程序
2014-07-22
STC-ISP-V4.83免安装版
2014-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人