
Android_Driver
文章平均质量分 69
基于常用Android平台上驱动以及内核API学习
上电失败
个人学习笔记
展开
-
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 · 6988 阅读 · 2 评论 -
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 · 3294 阅读 · 2 评论 -
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 · 937 阅读 · 0 评论 -
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 · 1601 阅读 · 0 评论 -
Android input epoll/inotify机制
inotify能监听内核文件系统变化的机制,可以监听文件/目录的增删,INotify 有个问题就是需要主动调用 read 函数去读取事件,Input 系统需要的是 INotify 监听的目标路径发生变化之后来能通知自己,这就需要结合另一个机制 Epoll 来实现,Epoll 是一种 I/O 多路复用技术,主要作用就是去监听 Linux 下的 fd,当这些 fd 发生事件之后,会通过回调来通知 Epoll。原创 2022-10-07 21:52:14 · 1513 阅读 · 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 · 988 阅读 · 0 评论 -
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 · 1454 阅读 · 0 评论 -
Android input touchpanel驱动流程
TP的硬件接口硬件原理图可以结合查看Android Qcom Display学习博客中的部分,硬件接口主要是中断引脚:TS_INT_N GPIO80复位引脚:TS_RESET_N GPIO71总线通信:TOUCH_SCL TS_I2C_SCL/SDA GPIO7 GPIO6供电相关:LCD_IOVDD_1P8 VREG_L9A_1P8 1.65V to 3.3VTP使能引脚:TOUCH_3V3_EN_GPIO90 GPIO45部分dtsi&qupv3_se2_i2c {原创 2022-03-04 16:29:50 · 2317 阅读 · 0 评论 -
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 · 1011 阅读 · 0 评论 -
Android MTK Flashlight学习
Linux内核驱动pinctrl子系统< paltform > / < Project >.dts 中加入picntrl的定义以及驱动注册节点flashlights_led191:flashlights_led191{ compatible = "mediatek,flashlights_led191"; decouple = <1>; channel@1{ type = <0>; ct = <0>; part = <原创 2020-10-16 22:45:07 · 1905 阅读 · 0 评论 -
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 · 1747 阅读 · 3 评论 -
Linux kernel flip_open对文件操作
Android linux kernel 打开文件Kernel文件操作的相关函数:filp_open()、 filp_close()、vfs_read() 、vfs_write()、set_fs(),get_fs()等,声明在linux/fs.h和asm/uaccess.h头文件中。1. 打开文件kernel中打开文件可以使用filp_open():strcut file* filp_open(const char* filename, int open_mode, int mode);该函原创 2021-05-11 13:45:22 · 2075 阅读 · 0 评论 -
Linux open/fopen对文件操作
[https://blog.youkuaiyun.com/jaken99/article/details/77686427 ](https://blog.youkuaiyun.com/jaken99/article/details/77686427) lseek 注意fseek的区别,设置读写位置[https://blog.youkuaiyun.com/oscarjulia/article/details/72638060](https://blog.youkuaiyun.com/oscarjulia/article/details/72638原创 2021-09-26 13:59:45 · 385 阅读 · 0 评论 -
Linux hello world简单驱动实现
Ubuntu下简单的hello world驱动实现hello.c:#include <linux/init.h>#include <linux/module.h> static int hello_init(void){ printk(KERN_ALERT "hello world"); return 0;} static int hello_exit(void){ printk(KERN_ALERT "exit"); return 0原创 2020-08-26 16:44:49 · 528 阅读 · 0 评论 -
Android Kernel DTS设备树学习
Kernel DTS学习Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts。 设备树由1个dts文件+n个dtsi文件,编译后的dtb二进制可执行文件是真正设备树文件。原创 2020-09-01 15:32:10 · 4957 阅读 · 2 评论