android驱动
文章平均质量分 85
孤舟簔笠翁
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Android驱动14】Android系统Crash工具使用方法和分析
摘要: 本文介绍了Linux内核崩溃分析工具KEXEC+KDUMP的使用方法,通过生成转储文件vmcore诊断系统问题(如内存泄漏、死锁、OOM等)。分析需要vmlinux符号表和crash工具,不同内核版本需使用特定指令解析内存镜像(如linux-5.4需添加vabits_actual等参数)。常用命令包括:bt查看堆栈、log/dmesg显示崩溃日志、ps查看任务列表。ARM32/64系统需使用对应工具版本,建议通过脚本提取固件中的vmlinux进行调试。原创 2025-12-16 19:53:44 · 980 阅读 · 0 评论 -
【Android驱动13】USB Hid核心驱动详解
本文分析了Linux内核中HID(人机接口设备)子系统的核心实现机制,重点介绍了HID总线的初始化、设备匹配、探测和事件处理过程。HID子系统通过hid_init()函数完成总线注册、hidraw模块初始化和调试支持。在设备匹配阶段,通过hid_bus_match()函数进行动态和静态ID匹配。设备探测过程涉及资源管理、特性设置和硬件启动,最终通过__hid_device_probe()完成。此外,HID总线还处理设备事件上报,通过hid_uevent()生成包含设备信息的用户事件。这些机制共同构成了Lin原创 2025-10-24 19:59:09 · 741 阅读 · 0 评论 -
【Camera驱动】GMS测试项中Camera FOV Calibration问题详解
摘要:本文系统解析相机FOV(视场角)的原理与应用。首先明确FOV的类型(水平/垂直/对角线)及其行业差异,随后分析焦距、传感器尺寸与物距对FOV的影响机制,给出核心计算公式FOV=2×arctan(d/2f)。针对HAL3系统,详细说明通过修改Metadata参数(传感器物理尺寸、焦距等)调整FOV的具体方法,包括代码配置示例与CTS测试要点,强调需结合传感器数据手册进行精确校准。(149字)原创 2025-08-23 18:47:37 · 333 阅读 · 0 评论 -
【Android驱动12】Modem编译和sim卡配置检测过程
自动为所要复制到alps/vendor/mediatek/proprietary/modem/${modem} 下的文件重命名,并生成一个Android.mk文件,alps/vendor/mediatek/proprietary/该路径下是没有modem这个文件夹的,需要自己创建。SIM掉卡后,首先会有三次fast recovery捡卡机制,若这三次recovery,能将卡找回来,表明受到的是IO干扰,通过reset卡,避开了信号受干扰的时刻,然后能将SIM卡找回来。1.8V的SIM更容易受到这种干扰。原创 2024-08-18 14:23:49 · 1522 阅读 · 0 评论 -
【Android驱动11】GPS晶体配置和基础知识讲解
定位过程中最重要的辅助资讯包括时间、位置、星历。 FULL start:没有任何的辅助资讯。相当于end user第一次买到手机后使用定位应用的场景。 COLD start:有时间辅助资讯,end user不会遇到该场景。 WARM start:有时间、位置辅助资讯,end user此次定位距离上次定位超过2~4个小时。 HOT start:有所有的辅助资讯,end user此次定位距离上次定位小于2~4小时。原创 2024-08-18 13:43:07 · 529 阅读 · 0 评论 -
【Android驱动10】电池battery充放电软件库伦算法和thermal机制
thermal.conf设计CPU、PMIC、BATTERY等的温度参数,其路径一般在device/目录下,但是这是个加密文件,直接打开的话就是一堆看不懂的字符,需要使用对应的工具来解密,即thermal_config_tool。4、SOC_BY_SW_FG与SOC_BY_HW_FG的区别在于放电电量的获取方式,一个由软件计算获得,一个由硬件模数转换获得。也就是说,在这个项目中,thermal中bcct与abcct都是使能的,但是mtktsAP中使用的是abcct才是我们需要的。原创 2024-08-17 15:15:34 · 1550 阅读 · 0 评论 -
【Android驱动09】Sensor2.0传感器驱动框架
MTK框架可以分为两部分,AP和SCP。AP是主芯片,SCP是协处理器,他们一起工作来处理sensor数据。SCP 是用来处理sensor和audio相关功能和其他客制化需求的一个协处理理器,MTK SCP选择freeRTOS作为操作系统,CHRE是处理传感器相关操作的专门任务。kernel层负责汇总处理sensor传输上来的数据,以及处理应用层传递下来的指令。原创 2024-08-17 14:42:52 · 2370 阅读 · 0 评论 -
【Android驱动08】Sensor传感器框架以及驱动移植和调试方法(Kernel层部分)
kernel层负责汇总处理sensor传输上来的数据,以及处理应用层传递下来的指令。原创 2024-08-03 14:55:53 · 1793 阅读 · 0 评论 -
【Android驱动07】Sensor传感器框架以及驱动移植和调试方法(Hal层部分)
Sensor HAL层相对来说比较简单,它的意图就是为framework层提供接口API的实现,如open_sensors,poll等,一旦实现完毕,framewoerk 里面的SensorManager,SensorService 里面的native(本地)方法可以直接被调用。这一步非常重要,HAL_MODULE_INFO_SYM 映射了hal 层XXX.so 库的入口,上层hw_get_module 将获得该入口,使得上层可以和底层.so库进行交互。Hal层的库文件是怎么被上层调用的?原创 2024-08-03 14:32:21 · 1600 阅读 · 0 评论 -
【Android驱动06】GMS兼容性测试CTS --环境搭建、测试执行、结果分析
例如,run cts --plan CTS将运行所有的测试计划。运行测试类和/或方法:使用run cts --class/-c class_name [–method/-m method_name]命令可以运行特定的测试类或方法。在指定设备上运行测试:使用run cts [options] --serial/-s device_ID命令可以在指定的设备上运行CTS测试。运行测试包:使用run cts --package/-p package_name命令可以运行特定的CTS测试包。原创 2024-07-30 20:59:12 · 1804 阅读 · 0 评论 -
【Android驱动05】通过U-Boot来设置启动参数cmdline将数据传递给应用层的方法
在Android系统中,通过U-Boot(通常称为uboot)来设置启动参数(如cmdline)或尝试直接将数据传递给应用层(通过系统属性property)是一个较为间接的过程,因为U-Boot主要负责硬件初始化和引导Linux内核,而Android系统属性则是由Android系统服务(如init进程和property服务)管理的。相反,你需要在U-Boot中设置cmdline或其他启动参数,然后在Linux内核或Android系统启动时读取这些参数,并根据需要设置系统属性。3.1 在应用层读取属性。原创 2024-07-27 13:21:22 · 1031 阅读 · 0 评论 -
【Android驱动04】触摸屏touchscreen驱动移植以及调试方法
getevent是Android系统中用于获取输入设备事件信息的工具,它可以捕获触摸屏、键盘等输入设备的原始事件数据。通过分析getevent输出的数据,可以了解触摸屏的响应情况,包括触摸点的坐标、压力值、事件类型等。数据处理:驱动程序将读取到的原始触摸数据进行处理,转换为标准的输入事件格式(如ABS_X、ABS_Y等),并准备将其上报给输入子系统。3,ADB 提供了一个更高级的 input 命令,用于模拟键盘和触摸屏输入,而不需要知道底层的设备文件和事件代码。这些事件包括触摸点的位置、压力等信息。原创 2024-07-27 12:49:57 · 4184 阅读 · 0 评论 -
【Android驱动03】屏幕背光backlight驱动移植以及调试方法
驱动结构体 platform_driver mt65xx_leds_driver 和设备结构体 platform_device mt65xx_leds_device 的name 相同时就会触发探测函数 mt65xx_leds_probe。第一个重要的函数就是 struct cust_mt65xx_led * cust_led_list = mt_get_cust_led_list();原创 2024-07-20 17:10:31 · 2341 阅读 · 0 评论 -
【Android驱动02】LCM屏幕移植和兼容以及常见问题解决方案
2.5.在lcm porting过程中,这些参数都定义在lcm_drv.h文件中的LCM_DSI_PARAMS结构体中,随着平台的发展,或许有所不同,但是基本原理都是一致的,如何配置clk的大小,请先根据自己的帧率、像素格式、porch值、屏的分辨率、data lane对数等计算出data_rate,然后计算出clk。这种模式是不需要带有显存的。VBPD(vertical back porch): 表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;原创 2024-07-20 13:49:06 · 2560 阅读 · 0 评论 -
【Android驱动01】EMMC移植和兼容以及常见问题解决方案
discrete lp2 类: dram vendor ID不同,就可以兼容(也就是说不同晶圆厂家兼容,具体对应的是datasheet中的MR5值,对应到code中MemoryDeviceList_xxxx.xlsx 表格的MODE_REG5 列)discrete lp3 类: dram vendor ID不同,就可以兼容(也就是说不同晶圆厂家兼容,具体对应的是datasheet中的MR5值,对应到code中MemoryDeviceList_xxxx.xlsx 表格的MODE_REG5 列)原创 2024-06-29 14:14:02 · 1947 阅读 · 0 评论 -
快速修改验证Sepolicy(Selinux)
需要注意的是,SELinux的工作模式可以在/etc/selinux/config文件中进行配置。在此模式下,SELinux仍然监控所有进程和文件访问,但即使检测到违反策略的行为,也不会阻止它们。SELinux(Security-Enhanced Linux)有三种主要的工作模式,这些模式决定了SELinux在系统上实施安全策略的方式。此外,SELinux日志的记录需要借助auditd.service这个服务,因此请不要禁用它,以确保SELinux能够正常工作并记录所有必要的信息。原创 2024-06-05 17:59:04 · 1558 阅读 · 0 评论 -
Linux中经典的并发编程问题生产者和消费者
在C/C++中,通常使用pthread_mutex_t类型表示互斥量,并通过pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock等函数来初始化、锁定和解锁互斥量。在C/C++中,使用pthread_cond_t类型表示条件变量,并通过pthread_cond_init、pthread_cond_wait、pthread_cond_signal等函数来初始化、等待和发送信号。2,线程是进程中的一个执行单元,是操作系统进行运算调度的最小单元。原创 2024-05-24 16:39:56 · 810 阅读 · 0 评论 -
Linux中冒泡排序法和二分查找法原理详解和实现代码
在这个例子中,binarySearch 函数接受一个有序数组 arr,以及搜索范围的起始索引 low 和结束索引 high,还有目标值 target。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。最后,我们打印出排序后的数组。冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。原创 2024-05-24 15:12:22 · 570 阅读 · 0 评论 -
深入学习Linux内核之v4l2应用编程(二)
V4L2(Video for Linux 2)是Linux中关于视频设备的内核驱动,它使得Linux系统能够支持视频设备,如摄像头。对于Camera V4L2的应用编程,一般遵循以下步骤原创 2024-05-14 17:10:00 · 1720 阅读 · 0 评论 -
深入学习Linux内核之v4l2驱动框架(一)
V4L2(Video for Linux 2)是Linux操作系统中用于支持摄像头和视频设备的框架。它提供了一组API和驱动程序接口,用于在Linux系统中进行视频采集、视频流处理和视频播放等操作。原创 2024-05-14 16:36:52 · 1430 阅读 · 0 评论 -
SPI接口原理以及读写接口用例的详细介绍
这样,主机和从设备就完成了一个数据位的交换。如果CPHA(时钟相位)位被置’1’,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。如果CPHA位被清’0’,SCK时钟的第一边沿(CPOL位为’0’时就是上升沿,CPOL位为’1’时就是下降沿)进行数据位采样,数据在第一个时钟边沿被锁存。总的来说,SPI接口以其高速、全双工、同步通信的特点,以及简洁的硬件连接方式,为嵌入式系统提供了一种高效、可靠的数据传输方式。原创 2024-04-07 17:11:49 · 2513 阅读 · 0 评论 -
【Linux】Linux中链表数据结构详细说明及用法代码
然后,我们定义了几个操作单链表的函数:createNode用于创建新节点,insertAtEnd用于在链表末尾插入新节点,printList用于打印链表中的所有节点。在双向链表中,每个节点有两个指针域,一个指向前一个节点,一个指向后一个节点;在循环链表中,链表的最后一个节点的指针域指向链表的头节点,形成一个环。节点A的后继指针指向节点B。指针域可以为空,表示该节点是链表的末尾,或者指向另一个节点,表示该节点后面还有其他节点。双向链表中的每个节点包含两个指针域:一个指向前一个节点,一个指向后一个节点。原创 2023-12-19 11:03:07 · 1427 阅读 · 0 评论 -
通过socketpair+select实现线程同步的用法代码
2个不同的线程如何通过socketpair和select实现同步的参考代码原创 2023-12-14 19:23:44 · 623 阅读 · 0 评论 -
I2C时钟速率如何修改
android驱动中i2c时钟速率修改原创 2023-08-25 14:37:54 · 2789 阅读 · 0 评论
分享