自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android开发

DISCOVER·POTENTIAL

  • 博客(325)
  • 资源 (6)
  • 收藏
  • 关注

原创 嵌入式开发中的一些网站收集

Linux官网在线检索Linux源码在线查看检索Android源码的网站在线查看检索Android源码的网站1下载Android源码uboot下载地址busybox地址飞思卡尔社区地址QT下载地址linux书籍高通发布的Android版本高通createpointmtk onlinemtk eservice展讯cq展讯iSupport......

2016-03-14 16:59:38 4147

原创 调试SAR SENSOR的一些感悟

手机工作时是有电磁辐射辐射的https://zhuanlan.zhihu.com/p/353591714,那怎样能降低电磁辐射呢。 sar sensor能感应到有人在使用手机,从而发消息让modem降低发射功率(从而达到标准)。如果没人在使用手机,手机可以按正常功率工作。sar sensor的工作原理不描述,芯片目前接触到是艾为的aw9610x系列,sar sensor(可理解为一个接近传感器)一般有现成的驱动,调试也比较简单。 sar sensor默认有一个...

2022-04-10 19:19:05 7632

原创 CTS环境搭建

网上有很多搭建cts环境的方法,如Android GMS(cts/gts/cts-v)认证 - 简书。这里是从驱动工程师的角度来搭建一个简易的cts环境,因为一些cts失败项需要驱动工程师修改,但修改后又没有环境去验证。如果能搭建一个简易的cts环境,就能极大促进工作效率。笔者用的是Ubuntu20.04的OS。获取CTS工具下载地址,有条件的可以直接下载,或者让GMS的同事发一份过来。安装openjdkapt install openjdk-11-jre-headless...

2022-04-10 17:18:37 4786

原创 使用gimp批量处理图片

先安装插件sudo apt-get install gimp-plugin-registry已720*1280的图片改成800*1280的为例打开gimp,滤镜-->Batch-->Batch Process,输入中选择一张/多张图片填充的颜色在主界面上选择

2022-01-26 20:25:59 3464

原创 记一次诡异的摄像头调试经历

新主板回来,需要点亮摄像头。主板摄像头情况(前后摄像的i2c和mclk都是独立的)。将驱动文件移植好之后(后摄sp2507 前摄sp0a09),后摄能点亮,看内核打印信息,sp0a09不到id。按https://blog.csdn.net/mike8825/article/details/106163001里的检查方法检查后,没发现异常。这些摄像头在另一个项目上是能点亮的,而这两个项目的camera引脚能完全对上(缺货,替代方案)cam_rst,cam_pdn,cam_i2c,vcamd,vc...

2022-01-09 22:56:40 1856 1

原创 Android插拔usb亮屏流程

遇到一个问题,插拔usb,手机不亮屏。先来分析下,插拔usb亮屏流程。关键流程updatePowerStateLocked--->updateIsPoweredLockedprivate void updateIsPoweredLocked(int dirty) {... final boolean wasPowered = mIsPowered; mIsPowered = mBatteryManagerInternal.isPowered(BatteryManager.

2021-12-26 01:45:50 1763

原创 全志调试总结

1.下载工具有window和Linux版本(可以支持ubuntu20.04),用官网释放的工具就行,有些电脑要关掉安全启动usb驱动才能工作正常,也可以使用开源的usb驱动(https://github.com/linux-sunxi/sunxi-livesuite)。

2021-12-18 23:49:15 2934

原创 记一次gpio按键驱动调试经历

Linux有标准的gpio按键驱动sprd平台只需配置下dts,在mt6761平台(gpio配置成gpio模式)也验证了该驱动。gpio-keys { key-volumedown { label = "Volume Down Key"; linux,code = <KEY_VOLUMEDOWN>; gpios = <&ap_gpio 124 GP

2021-11-22 17:20:37 1622

原创 mtk平台耳机检测流程记录

检测方案检测方案1(主流方案):耳机插拔中断接的PMIC(HP_EINT+ACCDET)CONFIG_ACCDET_EINT_IRQ&& CONFIG_ACCDET_SUPPORT_EINT0CONFIG_ACCDET_EINT_IRQ&& CONFIG_ACCDET_SUPPORT_EINT1//平台默认的是EINT0,EINT1不确定具体作用 检测方案2:耳机插拔中断接AP(EINT_EAR+ACCDET)共同点:A...

2021-11-15 00:41:00 2630 1

原创 mtk平台使用GAT工具分析aee db文件

AEE是一个异常的捕获和生成调试信息的机制,通过gat工具定位了两个问题,分享下。先到官网下载GAT工具(包含window和linux版本)。默认user/debug版本没有开启aee,参考FAQ25047打开或者直接用eng版本测试。复现问题后,找到对应的aee_exp文件夹(/data/vendor/aee_exp/ /data/aee_exp/),然后将pull到电脑里。cd /data/find -nameaee_exp打开GAT工具...

2021-11-14 15:47:07 3516 4

原创 linux下的extcon驱动小析

量产的项目遇到一个问题,10%的充电线不充电。将这些不良的充电线接到另一个项目或者其他手机上,能正常充电。问题跟着线走,但客户纠结为什么其他手机能充。 拿到问题的usb线后,通过dump_stack函数查看充电流程的堆栈,发现实现充电流程的检测方式不一样。一种是通过vbus来检测充电(这种比较容易理解),另一种通过typec中断(typec线的cc脚会进行握手,标准协议)来检测充电器的插拔。由于typec线不良(内部的电阻阻值不对),导致握手失败,进而不能除非typec中断,所以看...

2021-11-07 01:15:59 4443

原创 Linux下的uevent

查找linux的uevent节点(find /sys -name uevent),大概有1000多个,那这些节点是怎么实现的呢。drivers/base/core.c有如下代码,每创建一个device,都会创建一个event节点static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,char *buf){ ... retval = kset->uevent_ops->ue..

2021-09-25 20:31:11 1636

原创 print_hex_dump用法

char buf[]={0x0,0x1,0x2,0x3,0x04,0x05,0x06,0x07,0x8,0x09,0xa,0xb,0xc,0x0d,0x0e,0x0f,0x10,0x11}; pr_info("111111\n"); print_hex_dump(KERN_DEBUG,"=====",DUMP_PREFIX_ADDRESS,16,1,buf,sizeof(buf),1); print_hex_dump(KERN_DEBUG,"=====",DUMP_PREFIX_ADDRESS,16.

2021-09-25 18:35:01 3270 1

原创 linux使用gpio示例

常见的方式foo_device { compatible = "acme,foo"; red-gpios =<&gpio 17 GPIO_ACTIVE_HIGH>; }enum of_gpio_flags flags;int gpio=of_get_named_gpio_flags(dev->of_node,"red-gpios", 0, &flags);//获取dts的gpiogpio_request_one(gpio, flags, "red-gpio

2021-09-21 17:42:19 1085

原创 Android新建按键值

遗憾的是,该修改会导致失败cts测试失败。

2021-09-12 00:07:19 352

原创 调整Wifi满格信号的阀值

要想wifi在信号比较差的时候也显示满格信号,可参考如下方法http://aospxref.com/android-11.0.0_r21/xref/frameworks/base/wifi/java/android/net/wifi/WifiManager.java /** Anything worse than or equal to this will show 0 bars. */ @UnsupportedAppUsage private static final in

2021-07-17 14:51:19 1638

原创 记一次TP调试

客户反馈在wifi扫码界面待机,唤醒后TP概率不可用。log也提供过来了,看log,发现TP通信不上,报no ack。通信不上,可能是TP的电源有问题,因为TP使用了一路LDO进行供电,该LDO有多个外设在使用。于是测量该LDO的波形,没发现异常。量TP的波形,发现有点瑕疵。于是先改善波形再测下。TP建议的i2c上拉电阻为4.7k,mtk默认的上拉电阻为1k,于是改到5k(引脚内部只有4种阻值可选择)。修改后,复测依然出现问题。由于项目有兼容另一款TP,拿另一款TP进行测试,测试没发现问题,那可能就是TP的

2021-07-04 20:45:12 351 2

原创 rfg阻值校准方法

手机通过计算流进或流出电池的电流,来计算电池电量。通过获取fpu的电压,然后除以fgu的电阻,得到电流值。由于fpu的电阻(精度1%)受pcb layout和贴片一致性的影响,需要校准fgu的阻值。原理就是给fgu灌固定的电流,然后软件读取fgu两端的电流I,然后得到修正系数。以展讯平台为例,AB给3.8V电压开机,然后插入usb,先禁止充电(对电流有影响echo 1 >stop_charge)。然后另一路电源设置电压1V,限流1000mA,电源正极接电池座子负极,电源负极接主板地,然后读

2021-05-16 19:34:39 1519

原创 Linux下的sys节点小析

先看使用的demostatic ssize_t ts_info_show(struct device *dev,struct device_attribute *attr, char *buf){ return 0;}static DEVICE_ATTR(ts_info, 0400, ts_info_show, NULL); static struct attribute *g[] = { &dev_attr_ts_info.attr, NULL,

2021-05-15 20:49:22 407

原创 Linux下的power_supply小析

Android手机过power_supply的节点获取充电和电池信息,今天来分析下power_supply。先不讲那么多,用个demo来熟悉下#include <linux/module.h>#include <linux/platform_device.h>#include <linux/power_supply.h>struct mtk_charger_type { struct power_supply_desc usb_desc; struct p

2021-05-15 18:51:52 3837

原创 mtk平台电池曲线合入方法

5组不同温度下的电池曲线ACTIVE_TABLE = <(5)>;/* Table numbers per battery */具体的温度 TEMPERATURE_T0 = <(50)>; /* Battery temperature T0 */ TEMPERATURE_T1 = <(25)>; /* Battery temperature T1 */ TEMPERATURE_T2 = <(0)>; /* Battery te...

2021-04-18 22:29:00 3024 1

原创 音频PA导致的功耗超标

测试通话电流时,发现3G或者4G通话功耗正常,但2G通话功耗超标(多60mA),抓modem log分析,没发现异常。然后寄样机过去作电流分解,发现超标的电流是音频PA导致的。由于是平板项目,双喇叭(双PA),软件关掉一个PA,电流能降低30mA,因为参考的是手机的功耗数据(不带外置PA),此题不做修改,功耗超标判断正常。另一平板项目,也出现的2G通话电流大(大200mA)。根据之前的经验,没什么好的分析手段,打算作电流分解来排查问题。测试的时候,发现了问题,主板PA周围发烫严重。音频PA后端接了TVS

2021-04-18 18:52:01 1297

原创 记一个Android剩余充电时间的bug

最近遇到一个bug,手机充电到90%提示还剩18分钟充满,冲到91%时,提示还剩20分钟充满,这一点也不符合逻辑,怎么越充越久。先看下剩余充电时间的计算frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java @Override public long computeChargeTimeRemaining(long curTime) { if (mOnBattery) {

2021-04-18 18:10:16 562 1

原创 Android高版本remount方法

对应高版本的Android系统,不能直接remount,需要解锁后才能remount,记录下方法。sprd1.进入bootloaderadb reboot bootloader2.获取每台机器唯一的idfastboot oem get_identifier_token303132333435363738394142434445463.生成认证文件certificate.bin./vendor/sprd/proprietories-source/packimage_...

2021-04-11 15:50:51 3740

原创 Linux下串口调试小结

通过串口连接的外设,有时会遇到通信不上的情况,这时怎么调试呢。首先根据平台文档,正确配置串口,然后测试串口的收发。可以在测试点焊接杜邦线,然后接将杜邦线接到串口线上,这时电脑可以直接显示cpu串口发出的数据。cpu设置读数据,然后电脑来发数据,如果读出来的数据也正常,那串口的配置是对的。...

2021-03-14 20:50:16 285

原创 BC1.2的4种端口

设定手机充电电流时,会根据不同的端口设置不同的电流,这些端口怎么判别呢。DCP:我们常用的手机充电器都是这种端口,特点是充电器上的D+和D-是短路在一起的。SDP:电脑上的usb端口CDP:电脑上的usb端口(某些笔记本上才有)UNKNOWN(只有VBUS和GND,最简单的充电方式)可用于手机店防盗找跟废弃的usb线,剪掉接充电的那一端,将5v和GND接到线上就可用给手机充电了,一般电流只有500mA,这时再把usb线的d+和d-短路起来,就变成了普通的DCP充电了,是不

2021-03-06 17:22:21 1559

原创 Android10支持ntfs格式u盘

Android手机插入ntfs格式的u盘,提示要格式化,按提示格式化后,u盘变成了非ntfs格式,这不是我们所要的,可按如下要求修改默认就支持ntfs格式的u盘。defconfig加入CONFIG_NTFS_FS=yCONFIG_NTFS_RW=y安装PRODUCT_PACKAGES += ntfs3g \ ntfsfix这时如果还不能直接识别,关掉selinux(setenforce 0)试下,如果能识别,在代码中加入selinux规则就行...

2021-03-06 16:15:09 7047

原创 led系统trigger下的pattern模式

客户需求亮屏灯常亮,休眠灯闪烁,默认的指示灯使用的pattern模式,把相关的代码捋一捋。把pattern模式注册到trigger_liststatic struct attribute *pattern_trig_attrs[] = { &dev_attr_pattern.attr, &dev_attr_hw_pattern.attr, &dev_attr_repeat.attr, NULL};static const struct attribute_gr

2021-01-31 17:35:09 1338 1

原创 记一次背光配置异常造成主板发热

主板装机回来了,后盖发热明显,但将背光亮度调低一点,发热就没那么明显了。将后盖拆下来,发现是pmic6371发烫(可以煮鸡蛋的那种),可能跟背光相关,那要好好看看了。默认的控制背光原理是cpu控制BL_PWM的占空比,从而调节BL_LED的电流,从而改变背光亮度。默认的dts配置 bled { compatible = "mediatek,mt6370_pmu_bled"; interrupt-names = "bled_ocp"; mt,bled_name = .

2021-01-30 17:42:30 829

原创 电池ntc的功能设定

手机电池内部带有ntc电阻,该电阻随电池温度变化而变化,根据ntc的这一特性,便可推算出电池温度,从而定制化手机行为。ntc电路如下,R6106默认不贴,把电池扣上去后,形成了一个简易的分压电路,假设电池ntc电阻为R,则BAT_TEMP_ADC的电压为1.85*R/(R+47K),BAT_TEMP_ADC的电压可以通过cpu内部的adc电路测量出来,进入反算出电阻ntc阻值R,再根据电池ntc表,推算出电池温度。电池高温关机BatteryService.java - OpenGrok cr

2021-01-30 16:19:30 5382 1

原创 Android手机提示正在慢速充电的解决方法

新的项目,手机充电的时候,systemui显示慢速充电。通过电流计测量,充电电流为1.7A,电压5v,这个功率还挺高的,怎么就提示慢速充电了呢。查看代码http://aospxref.com/android-11.0.0_r21/xref/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java protected String comput

2021-01-30 15:07:13 6023 1

原创 mtk平台的mt_gpio节点说明

MODE DIR DOUT DIN DRIVE SMT IES PULL_EN PULL_SEL R1 R0 当前io功能 0输入1输出 输出值 输入值 驱动能力 使能施密特触发器 输入控制 ...

2021-01-04 14:49:49 3136

原创 mtk平台调试总结

1.代码的编译部分私有的代码在modem中,参考平台对应的release_note(在vendor下),进行modem的编译和ap部分私有代码的拷贝。2.工程暗码*#*#3646633#*#*,无相应的测试应用3.调屏用dct工具确认RST脚是否配置成LCM_RST,代码里直接控制相应的寄存器,如果配置不对,会导致rst脚无法拉高,默认应该是LCM_RST的,但笔者使用的工程偏偏是gpio模式,导致无法点亮屏幕。默认只配置一款屏幕时lcm_compare_id函数不跑的,配置了两

2021-01-01 23:20:40 11102 1

原创 mtk平台typec模拟耳机补丁

typec模拟耳机在某些高端手机上已经很常见了,但拿到的代码默认不支持type模拟耳机(在某些平台上默认就是typec模拟耳机),那只能自己修改了。这里用的版本为Android11,kernel4.19。由于默认的耳机检测驱动mt6357-accdet.c已换成ko的形式(非ko方式可忽略该修改),导致无法调用该驱动里的函数,先把该驱动编译进内核。defconfig加入CONFIG_SND_SOC_MT6357_ACCDET=yBoardConfig.mk@@ -53,8 +53,7

2021-01-01 18:37:51 3780 3

原创 记一次电阻短路造成摄像头无法打开

试产一批平板,发现前摄无法打开。拿到平板后,发现前摄的切换图标在(说明id有读到),然后点击图标,报无法连接到相机,然后退出了。捉log看,前摄的id也确实读到了,但没接收到有效数据,所以无法打开摄像头。第一感觉是摄像头没接触好,导致csi接口没获取到有效数据。把平板外壳拆下来,重新插拔几次摄像头,现象依旧。查看电路,csi接口有串联电阻,所以猜测电阻漏贴或者电阻短路了。因为电阻在主板前面,主板已经被螺丝固定住了,拆下螺丝,用万用表来检查,没发现异常。但这时摄像头居然点亮了。重新装上主板

2021-01-01 17:27:59 759 1

原创 Andriod手机背光最低亮度限制

调试不同项目时,发现了两个最低亮度引发的问题,分析下。休眠时,调到最低亮度(能正常看到屏幕内容),唤醒时,背光不亮,连接同屏工具,加大手机亮度,屏幕就亮起来了。另一个项目,背光调到最低亮度,手机直接黑屏了。这两个问题可以总结为硬件跟屏幕不匹配造成的,目前的修改方法为限制屏幕的最低亮度。如加上level=level+20,这样最低亮度就会被限制住。...

2021-01-01 17:03:25 1294 1

原创 记一次开机概率无法点亮lvds屏幕

在调试一款23.8寸的熊猫屏幕(LC238LF1L)时,出现了开机概率(50%)无法点亮的情况,但休眠唤醒后能正常显示。我们都知道这是两种配置,uboot一份点屏配置,kernel一份,应该是这两份配置出来的信号不一致导致的。无法点亮的表现是开机不断在刷红绿蓝颜色的图片,也就是屏进入了bist模式(想关闭bist模式进行测试,但该引脚在驱动板上,主板无法控制,驱动板被塑料外壳包裹住,也没有驱动板的原理图,不好处理),但由于没检测到有效的lvds信号,没有正常显示。因为这个项目也兼容了另一款BO.

2020-11-22 18:39:33 2843

原创 SDIO驱动学习

在分析了sdio,emmc驱动,把剩余的sdio部分也学习下。代码很多不仔细看了,看关键的int mmc_attach_sdio(struct mmc_host *host){ err = mmc_send_io_op_cond(host, 0, &ocr); mmc_attach_bus(host, &mmc_sdio_ops); rocr = mmc_select_voltage(host, ocr); err = mmc_sdio_init_card(ho

2020-11-22 16:08:50 1439

原创 记一次上电不当引起的开机花屏

调试一款BOE lvds屏幕时,出现开机花屏(必现),休眠唤醒后正常。查看开机时5v ldo的波形如下(异常波形维持3s以上,下面的图是改善后的,减低到420ms,开机的瞬间无法直接控制到该gpio)相应的ldo电路如下由于使能脚没有下拉到地(cpu内部有50k下拉电阻,也无效),导致ldo没控制之前有输出,造成屏幕花屏。目前的解决方案是提早拉低该使能脚,然后保持一段时间(图中的T4要求大于1s),再上电。就是上电了,然后关掉了,再重新上电。当然,最好的解决方案是硬件上改善.

2020-11-22 14:13:13 3057 1

原创 linux下的sdcard驱动学习

调一款加密ic ET300时,发现通信不上,报错-110,就是超时出错,检查了gpio和sdcard配置,也检查了sd供电,发现sdio的供电域是1.8v,而根据协议默认是3.3v,然后切换到1.8v,通过飞线,使用一个ldo来供电。修改后,还是通信异常。加打印调试,在mmc_send_cid函数报错了,就是读不到卡的cid信息。默认读不到cid,代码就退出了。检查了再检查,实在找不出问题,于是修改代码,强制往下跑,看log,居然读到了卡的信息。也就是只有CMD2命令跑不过,其他命令都跑过了。.

2020-11-21 23:29:11 937 1

Part1_Physical_Layer_Simplified_Specification_Ver8.00.pdf

官网下载的sd协议文档 Part1_Physical_Layer_Simplified_Specification_Ver8.00.pdf

2020-11-21

lcd_datasheet.tar.gz

从网上收集的lcd规格书,包括OTM1283A ILI9881 nt35590 nt35596 供大家学习

2020-06-06

mipi_ssc.tar.gz

mipi时钟开ssc或不开ssc波形对比视频,供大家学习 开ssc的clk有左右摆动的情形 从视频中可以很明显看出差异

2020-05-05

raw图文件,用于验证解码正确性

图1分辨率320*240 图2分辨率1920*1080 https://blog.csdn.net/mike8825/article/details/105631968

2020-04-20

QCAPReport.html

高通死机分析文档demo QCAPReport.html

2018-01-31

一路三出电源

一路三出电源仿真文件 ,亲测可用.

2013-09-28

空空如也

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

TA关注的人

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