- 博客(108)
- 资源 (5)
- 收藏
- 关注
原创 Android Qcom USB Driver学习(十三)
该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零)Android Qcom USB Driver学习(八)Android Qcom USB Driver学习(九)deals with the USB Power Delivery resources used by one or more ports on the basis of the local device policythe basis of the local device policy.opera
2023-06-21 16:31:19
2159
原创 Android Qcom USB Driver学习(十四)
该系列文章总目录链接与各部分简介:了解什么是dwc3 udc gadget hcd xhci, 差点被Chatgpt绕晕了,看的比较浅显就像知道这些都是什么作用的。
2023-06-13 22:28:57
2238
1
原创 Android Qcom USB Driver学习(十二)
该系列文章总目录链接与各部分简介:keypad 在suspend的过程中导致Android无法进入suspend的问题,导致整体功耗过高,其实是主机都没有进入睡眠,通过以下打log的方式最终定位到问题,pmic vbus输出的时候会有reverse boost所以pmic侧的功耗也会有增加,当pmic电量低的时候会触发uvlo导致vbus上的电断开,需要需要的话,我们可以降低这个uvlo的触发阈值,是得对应的固件能在低电量使用。
2023-05-30 09:19:31
1481
1
原创 Android input device/handler的处理
handler用于处理input_event,device是发送input_event事件的设备,首先我们看一下有哪些device及handler(部分)handler最终都会通过evdev来处理,通过__pass_event写入缓冲区,以供上层evdev_read读取事件。两个链表将dev与handler进行绑定,一个dev对应多个handler,一个handler对应多个dev。下面看一下handler中的这些函数都是在哪里被用到的,注册的时候调用handler的。向系统中注册了一下接口 (
2023-05-25 19:11:05
1006
原创 Android Qcom Display学习(十五)
该系列文章总目录链接与各部分简介: Android Qcom Display学习(零)按键截图实现原理,通过PhoneWindowManager.java -> DisplayPolicy.java -> ScreenshotHelper.java,这个网上的叙述很多就不展开了/frameworks/base/cmds/screencap/screencap.cpp 这个其实我们之前Layers专题提到的,调用GPU来进行全部图像的合成具体实现frameworks/base/core/java/com
2023-05-25 19:09:59
1219
原创 Android Qcom Display学习(十六)
XBL中背光驱动很简单,仅仅时方便不同项目的移植,AW99703/LM36922 I2C型的都可。
2023-05-25 19:09:17
677
原创 Android Qcom Display学习(十四)
该系列文章总目录链接与各部分简介:本章主要就是学习一下开机logo和开机动画是怎么加载,客制化修改的。
2023-05-25 19:07:13
1376
原创 Android Qcom USB Driver学习(十一)
该系列文章总目录链接与各部分简介:基于TI的Firmware Update固件升级的流程分析usb appliction layers的数据。
2023-05-24 11:17:10
843
原创 Android Input kl文件实现键值映射
根据以上流程图可以得知fingerprint 是没有vendorid 和prodcutid的,所以直接传的是name: uinput-fpc ,所有对应的文件为uinput-fpc.kl。最开始想的本办法是同时上报Linux Scancdoe音量下键和电源键 KEY_VOLUMEDOWN + KEY_POWER,后来才得知有键值隐射kl文件。本来想通过指纹双击实现截图功能,发现上报scancode 120不行,后来才得知Android与Linux的code是有差异的,
2023-05-11 21:51:12
927
原创 Android Framwork基础之广播Broadcast/Recevier
网上教程很多,不是负责framework开发的,但平时也会接触到,所以自己实现一遍。
2023-05-11 21:48:57
155
原创 Android Qcom Audio入门学习
在devictree中可以发现有其实在PIL驱动并没有发生image加载过程,真正的加载有对应的子模块处理中,adsp就是在adsp-loader.c中通过init.qcom.rc启动时 write /sys/kernel/boot_adsp/boot 1 ,之后就会subsystem_get(“adsp”)获取并加载;其他例如slpi, 要看高通不同的平台子模块的组成,有些PIL是没有load slpi模块,sensor也是adsp中,
2023-02-28 19:28:16
6866
2
原创 Android Qcom Display学习(十二)
结果结果发现图像是正常的,然后dump我们自己的GraphicBuffer数据,发现也正常了,右边是GPU合成的Layer(StaturBar和NavigationBar0等),左边是非GPU合成的Layer图(Launcher),最终得出跟ubwc有关,ubwc说是高通私有的一个格式,所以可能造成图像无法正常查看问题。中dump GPU合成Layers的GraphicBuffer,发现也是星点,当然这个也是预料之中,Layers的数据都不对合成后的肯定也有问题,
2023-02-28 19:27:35
3813
10
原创 Android Qcom Display学习(十三)
该系列文章总目录链接与各部分简介:在上一篇中dump GraphicBuffer中,知道了护眼模式中调用setColorTransform应用于每一层Layer,于是想往上了解一些。
2023-02-28 19:26:53
2905
原创 Android Qcom USB Driver学习(十)
该系列文章总目录链接与各部分简介:本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_id。
2023-02-28 19:21:40
830
原创 Android Qcom USB Driver学习(九)
该系列文章总目录链接与各部分简介:高通的某些平台将电源管理移植到了ADSP Subsystem, 分析一下其中比较关心的部分。
2023-02-28 19:20:46
2530
原创 Android Qcom USB Driver学习(八)
该系列文章总目录链接与各部分简介:因为要看usb charging的问题,所以需要补充一下battery的相关知识,算是入门吧。
2022-12-24 20:40:23
3977
原创 Android Qcom Display学习(十一)
该系列文章总目录链接与各部分简介:本章主要是基于MIPI Payload传输接口的学习,包括Generic和DCS的接口不同。底层都是基于去封装的,下面第一部分调用原生接口,第二部分分析高通是如何进行读写操作的。
2022-11-28 10:44:37
2676
原创 Android Qcom Display学习(十)
该系列文章总目录链接与各部分简介:本章主要是基于高通平台不同的背光类型处理的学习,包含XBL和Kernel两大部分。LPG是Light PulseGenerator,对应PWM ,qcom-spmi-pmic.c pwm-qti-lpg.c WLED是White Light Emitting Diode(白光二极管) qcom-spmi-wled.c + leds-qpnp-wled.c
2022-11-28 10:44:17
2235
原创 Android Qcom Sensor架构学习
ADSP Framework初始化的时候首先通过load image并初始化的静态加载方式register_static_sensorsssc_static_lib_builder.py 会编译出静态加载的sensor列表 framework/build/sensor_img/…/sns_static_sensors.c。
2022-11-28 10:43:09
3248
2
原创 Android uevent 电池电量上报机制
power_supply通过调用kobject_uevent, envp_ext为NULL, 会回调class的dev_uevent并且使用的是默认的add_uevent_var。ACTION=action_string DEVPATH=devpath SUBSYSTEM=subsystem,电池上层接受的时候会通过SUBSYSTEM进行过滤。
2022-11-28 10:41:46
1580
原创 Android unique_ptr与unique_lock的回收机制
高通SSE架构HAL要与底层ADSP Sensor通信,必须获取对应的SUID, 通过构造suid_lookup以及request_suid来建立连接,request成功后会调用callback,callback与主线程是异步的,若主线程结束的早时,构造的资源被回收就会导致callback异常。下面的demo强行造了一个多线程问题,当智能指针unique_ptr会被系统回收,出现值不对,当然真实的比这个复杂的多。
2022-11-28 10:40:21
358
原创 Andoid Camera Service 获取previewbuffer
将dump出来的数据,从Chromtix工具打开,填写stride,可以看到解析出图像,但是为什么不是色彩的?看起来黑白的像是Raw图,msgType是CAMERA_MSG_PREVIEW_FRAME(0x0010),callback回来的看msgType也并非是CAMERA_MSG_RAW_IMAGE(0x0080)所对应的Raw图,看请求的是YCbCr_420_SP对应(NV21) format,于是使用YuvViewer使用NV21的格式进行解析后图片颜色正常,是个钥匙串小老鼠。
2022-10-24 15:32:47
335
原创 Android Qcom Camera V4L2 Device
video0 crm作为v4l2_device,管理所有的subdevice,同理所有subdevice指向crm(sd->v4l2_dev = g_dev->v4l2_dev),video1同样也是v4l2_device,但是它对应的没有subdevice,以上为什么会有相同类型的注册多次,原因还是device和driver匹配的时候probe了多次。解决睡眠给的问题后,发现问题点二:高通对g_dev.open_cnt 做了限制,所以要想打开dev/video0两次则需要修改。
2022-10-24 15:32:15
1266
原创 Android Qcom Display学习(九)
该系列文章总目录链接与各部分简介:DRM驱动支持MODESET;DRM驱动支持dumb-buffer(即连续物理内存);DRM驱动至少支持1个CRTC,1个Encoder,1个Connector;DRM驱动的Connector至少包含1个有效的drm_display_mode先基于博主的最简单的DRM应用程序进行学习实现,最进阶,主要分为以下几个步骤。
2022-10-24 15:30:03
2061
原创 Android Qcom Display学习(八)
该系列文章总目录链接与各部分简介:基于Android12实现简单的Surface测试程序,部分类内的接口发生了变化,但大体上没啥问题。主要实现两类功能(1)实现显示RGB图的红绿切换,这个主要来源于上面链接中的显示系统[1],以此为基础在Android S上实现(2)实现Camera Preview的实时预览,基于Camera api1,源码从Camera的测试程序中剥离出的一些操作接口来实现(3)待补充:实现Camera Preview的方式采用api2和v4l2,后续再看单独拿出来研究
2022-10-24 15:29:12
1043
原创 Android input touchpanel双击灭屏
双击亮屏这个很常见的功能:需要注意的关键的点。注意suspend的流程中是否有关电源的操作函数,通过示波器去量是否有reset,vdd输出供电正常,中断INT信号再摁下后反应。 check input.c的流程,打印log,去查哪里把这个过滤点,总结下来就是需要注意is_event_supported(type, dev->evbit, EV_MAX) is_event_supported(code, dev->keybit, KEY_MAX) keybi
2022-10-07 21:58:37
1436
1
原创 Android input gpio driver手动对焦
通过按键中断驱动输入来调整马达的远近距离,加深对Input子系统的印象。(1)具体的输入设备device(按键、鼠标等),通过input_event上报(input_event->input_handle_event->input_pass_values)(2)input-core evdev事件驱动从各client(上述device)取buffer,(input_to_handler-> handler->events->evdev_events)(3)framework中input主要的模块有Inp
2022-10-07 21:54:48
982
原创 Android Qcom Flashlight学习
pmic闪光灯电流控制的逻辑时从Hal下发电流,在kernel中做判断并工作。 从下面的一段逻辑可以很清晰的得出,当没有tunning参数时,使用的时默认default 300mA,当tunning参数不为0的时候,则从LED1Setting/LED2Setting中获取,preflash 120 mA + mainflash 900 mA
2022-10-07 21:54:28
1725
3
原创 Android input epoll/inotify机制
inotify能监听内核文件系统变化的机制,可以监听文件/目录的增删,INotify 有个问题就是需要主动调用 read 函数去读取事件,Input 系统需要的是 INotify 监听的目标路径发生变化之后来能通知自己,这就需要结合另一个机制 Epoll 来实现,Epoll 是一种 I/O 多路复用技术,主要作用就是去监听 Linux 下的 fd,当这些 fd 发生事件之后,会通过回调来通知 Epoll。
2022-10-07 21:52:14
1503
1
原创 Android Qcom USB Driver学习(六)
该系列文章总目录链接与各部分简介。HS output impedance from 45 Ω Nominal in FSLS mode Tx swing等于输出电流乘以并联QCM/QCS USB 2.0 PHY 输出阻抗和接收器终端电阻的电阻,在低速ls和全速模式fs下是电压驱动的,但在高速hs模式下是电流驱动的,所以仅能调整fsls的输出阻抗,一般DP DM上有45Ω接地,U......
2022-07-26 21:42:15
1716
原创 Android Qcom USB Driver学习(七)
通过上述我个人理解的connect_mask与hdev->claimed的区别,如果是调用类似hidraw.c中的接口的话则用connect_mask传入hid_connect函数,那如果是自己写的驱动已经实现过了hidraw_connect,如果还是传入connect_mask为HID_CONNECT_HIDRAW,那其实我们hidraw_connect这个函数就会调用两次,这时候就改用通过hdev->claimed去赋值,并传入hid_connect函数中。......
2022-07-26 21:41:07
1783
原创 Android Qcom USB Driver学习(五)
在前面的第二期中,我们知道一些非标的USB的充电类型Floatingcharger,其具有和普通DCP相似的大电流能力,但在最初检测的时候会限制Inputcurrentlimit到100mA,来进行检测是否是SDP类型,所以要支持大电流输入就需要进行vote操作,前面的几篇都有涉及,所以本文学习一下pmicusbcharger都相关的vote机制。...
2022-07-26 21:38:30
2414
原创 Android Qcom board-id加载镜像学习
很早就听说过board-id能用来区分项目,没负责过这个,也一直没有时间去了解。board-id的可以通过gpio或者eeprom来存放,board-id也就是CDT中的部分内容,如果时gpio的方式,可配置的项目有些而且在主板上的都是hardcode,这样不利于维护。
2022-07-11 22:09:10
2889
原创 Android Qcom Display学习(七)
分享一个最近项目中写的在hal驱动亮屏和灭屏状态,也算是回顾了了open read的操作了,除此之外,还可以使用brightness同目录下的bl_power节点,范围为0、1、2、3、4时一种亮度等级的调节,与线性调节的brightness相反,bl_power == 0是亮度最大,bl_power == 4时时灭屏的状态。当然除上述操作之外,别忘了sepolicy的权限问题。 后续:(1)hal看有没有其他方式;(2)framework里读取亮灭屏的方式..................
2022-07-11 22:08:00
2059
7
原创 Android Qcom Display学习(六)
该系列文章总目录链接与各部分简介: Android Qcom Display学习(零)Android Qcom TP代码流程分析 在项目中我们经常会遇到需要兼容lcd和tp的情况,如果是不同i2c地址的touch,没有probe成功也就根本不过去用,所以one lcd mutil touch的情况暂时还没有遇到过去做区分的,那项目中主要遇到的就是以下这种情况one touch mutil lcd 这种情况下,lcd本身通过dsi读取的id就能区分不同型号的panel,xbl会传入cmdline,lcd在
2022-07-11 22:06:08
1947
原创 Android 系统功耗分析工具
在测量功耗的时候,通常是使用Power Monitor去拆分,或者对单一模块进行测量。今天突然在网上发现一个神奇的工具BatteryHistorian,跟Systrace很像,能很好的展示记录的过程中系统中各模块的耗电状态。Android电池功耗BatteryHistorian数据分析bugreport.txtbugreport.txt中记录了从系统中拉出来zip文件名称接下来就是要使用BatteryHistorian,这个网上有很多教程如何搭建,这边找到了一个公开的网站能更省事一点,如下Uplo
2022-06-27 21:18:19
4784
原创 Android Qcom USB Driver学习(零)
Linus有一句名言广为人知:Read the fucking source code.一个模块是从点滴学习积累出来的,不看不学怎么能深入理解,但仅仅「看」也是远远不够的,更多的是思考。usb目前还在学习中,补充基础知识,建个目录方便自己查看,静下心来持续积累知识、充实自我。..................
2022-06-27 21:17:14
2868
DevCheck App to check therma zone 、cpu frequency
2023-08-10
Yuview 查看RGB YUV等图片格式工具
2023-01-18
7YUV 查看RGB YUV图的工具
2023-01-18
Android_JNI_HIDL
2022-06-27
Android手机中最重要的三个模块是什么
2023-06-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人