無法使用 system/bin/r 讀取 pmic pm8937 hardware regitster 的原因
Platform
Qualcomm MSM8917 + PM8937 + PMI8940
起因
同事問我 PM8937 的 VREG_L17 如何設定成 3.3V,
從 PM8937 hardware register description 文件 查詢到有一個 bit VREG_OK 位於 PM8937 的 0x00015008,
於是想先試著讀取這個 bit 來開始 debug,
沒想到在 adb shell 下執行 system/bin/r 0x00015008 後造成 手機 異常,
原因
1。msm8917,PM8937,PMI8940 的 hardware register description 文件的的描述 都是從 memory 0 開始,
所以不能將 這三個 device 的 memory 看成是一個大的連續 momory,
這三個 device 有各自獨立的 memory area。
2。0x00015008 在 msm8917 hardware register description 文件中是位於 Unused/reserved area。
3。0x00015008 在 pm8937 hardware register description 文件中是描述 LDO17。
4。system/bin/r 是用來讀取 msm memory address,不是用來讀取 pmic memory address,
所以
adb root
adb shell "system/bin/r 0x00015008"
是讀取到 msm invalid memory address。
那寫呢?
adb root
adb shell "system/bin/r 0x00015008 0x3"
嘿嘿,
您沒看錯,
寫入是用 r 指令,
沒有 w 指令,
如何讀取 PMIC memory address
第一種
只要填入不同的 slave id address 即可。
PM8937
PM8937 slave ID 0 or 1 要看存取的 address。
adb root
adb shell mount -t debugfs none /sys/kernel/debug
adb shell "echo 0xc100 > /sys/kernel/debug/spmi/spmi-0/address"
adb shell "echo 0x100 > /sys/kernel/debug/spmi/spmi-0/count"
adb shell "cat /sys/kernel/debug/spmi/spmi-0/data"
PMI8940
PMI8940 slave ID 是 2 or 3 要看存取的 address。
adb root
adb shell mount -t debugfs none /sys/kernel/debug
adb shell "echo 0x2c100 > /sys/kernel/debug/spmi/spmi-0/address"
adb shell "echo 0x100 > /sys/kernel/debug/spmi/spmi-0/count"
adb shell "cat /sys/kernel/debug/spmi/spmi-0/data"
第二種
read data
adb root
adb shell
msm8937_64:/d/spmi/spmi-0 # echo 0x619 > address
msm8937_64:/d/spmi/spmi-0 # cat data
write data
adb root
adb shell
msm8937_64:/d/spmi/spmi-0 # echo 0x619 > address
msm8937_64:/d/spmi/spmi-0 # echo 0x39 > data
pm8937 及 pmi8940 的 register address 在 hardware register spec 有描述,
但是在實際讀寫 register 時,address 會有些許差異如下,
讀寫 pm8937 的 address 要加 0x0 slave id offset
讀寫 pmi8940 的 address 要加 0x20000 slave id offset
單獨讀寫一個 byte
read data
adb root
adb shell
cd /d/spmi/spmi-0
msm8937_64:/d/spmi/spmi-0 # echo 0x619 > address
msm8937_64:/d/spmi/spmi-0 # cat data
write data
adb root
adb shell
cd /d/spmi/spmi-0
msm8937_64:/d/spmi/spmi-0 # echo 0x619 > address
msm8937_64:/d/spmi/spmi-0 # echo 0x39 > data
讀取某個範圍的 register
read data
adb root
adb shell
cd /d/spmi/spmi-0
msm8937_64:/d/spmi/spmi-0 # echo 0x619 > address
msm8937_64:/d/spmi/spmi-0 # echo 0x30 > count
msm8937_64:/d/spmi/spmi-0 # cata data
假如資料太多,
可以 export data
C:\catch_log>adb root
C:\catch_log>adb shell "echo 0x14000 > /d/spmi/spmi-0/address"
C:\catch_log>adb shell "echo 0x166b > /d/spmi/spmi-0/count"
C:\catch_log>adb shell "cat /d/spmi/spmi-0/data" > data.log
無法使用 system/bin/r 讀取 pmic pm8937 hardware regitster 的原因的更多相关文章
- C#-Windows服務以LocalSystem賬戶安裝的話無法獲取我的文檔路徑
如圖,如果Window服務以上圖 Account安裝運行,則無法獲取到 以下路徑: System.Environment.GetFolderPath(Environment.SpecialFolder ...
- PHPExcel讀取excel數據
require_once 'PHPExcel.php'; $PHPReader = new PHPExcel_Reader_Excel2007(); $filePath = 'wjyl.xlsx'; ...
- Android Training精要(五)讀取Bitmap對象實際的尺寸和類型
讀取Bitmap對象實際的尺寸和類型 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecode ...
- Android编译自己的程序到/system/bin
背景 有时候我们想创建一个程序,放在系统中,供其他APP执行.我们知道,在生成system.img的时候,编译系统会将out/target/product/[product]/system/bin目录 ...
- android中:/system/bin/sh: : No such file or directory错误
将一个raspberry下编译好的可执行文件放在android的system/bin下,修改为777权限,运行,出现下面的错误: /system/bin/sh: XXX: No such file o ...
- [转]SQL Server 安全性概論與無法刪除資料庫使用者的解決辦法
經常有人來問我特定 SQL Server 資料庫裡的使用者無法刪除的問題,這問題其實跟 SQL Server 的安全性架構有很大關係,解決這個問題當然還是瞭解觀念的重要性大於知道如何解決問題.除了講解 ...
- C#、VSTO讀取Excel類
之前寫的類存在Excel進程不能結束的Bug,重寫ExcelReader類,類實例清理時Excel進程自動結束. class ExcelReader { // Excel Object public ...
- Android中实现对/system/bin/surfaceflinger进程进行拦截和注入
对于Android for arm上的so注入(inject)和挂钩(hook),网上已有牛人给出了代码inject.由于实现中的ptrace函数是依赖于平台的,所以不经改动只能用于arm平台.本文将 ...
- SSIS 無法將保護的 XML 節點 "DTS:Password" 解密,錯誤為 0x8009000B "機碼用在特定狀態時無效
发现之前部署的SSIS,执行失败,查看日志 來源: 描述: 無法將保護的 XML 節點 -- ::-- ::-- :: DataReader 來源 [] 描述: System.Exception: S ...
随机推荐
- Qt中修改QtoolTip的样式
Qt中的QtoolTip有几个需要注意的: 1.不能直在堆或栈中生成QToolTip对象.因为其构造函数为私有.2.从widget获取的tooltip不是tooltip对象,而是tooltip中的文本 ...
- 批量导出ppt中内嵌的图片
某个ppt中很多页,然后插入了很多图片,且图片都是被压缩的,看起来非常费劲,所以想着一次性把图片另存为,找了接近一个小时,终于被我找到啦,分享给大家: 1.直接把ppt的后缀修改为rar 2.解压ra ...
- 实验6 流类库与I/O
Part2 基础练习 使用文件I/O流,以文本方式打开Part1中合并后的文件,在文件最后一行添加字符"merge successfully. " // 合并两个文件内容到一个新文 ...
- PHP的抽象类、接口的区别和选择
1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可以声明类 ...
- mysql练习题练习
1.数据库是按照原文制作的,表格结构一样具体存储的数据有些差异 原文地址:MySQL练习题 原答案地址:MySQL练习题参考答案 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: selec ...
- 浅谈I/O模型
在学习线程,NIO等知识时都需要知道一些基础知识. 一.什么是同步或异步 同步:个人通俗理解多个人排队打饭一个窗口,只有前面一个人打完了,后面的人才能打.如果前面人因为什么原因一直站在那里不走,后面的 ...
- 在Foxmail中添加阿里云企业邮箱账号
1.安装完成Foxmail之后,新建账号 输入阿里云邮箱地址和密码,点击创建 接受服务器类型你可以选择POP3或者IMAP,在这里我选择的是POP3 点击创建,大功告成. 为什么要写这篇文章呢? 因为 ...
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
摘要 上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态 内容 我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按 ...
- 整理的一些Android开发类免费视频课程
1.Android实战淘宝网项目视频:http://edu.ibeifeng.com/view-index-id-248.html 2.Android滚动视差实现课程:http://edu.ibeif ...
- bat 处理adb脚本
@echo off REM Funtion: 测试parsermode 接口CdxParserGetMediaInfo 和CdxParserRead REM Code by lzp 2017-05-0 ...