![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android驱动开发
文章平均质量分 73
村里小码农
循道而行,行稳致远;虚静待令,有物混成。
展开
-
Linux内核-中断知识汇总(重温)
TODO。原创 2022-10-10 12:11:05 · 2310 阅读 · 0 评论 -
Android 汽车电子功能安全模块化设计思路
1. 系统功能安全:Safety SEAndroid/SE Linux AVB(启动时验证) ASIL应对(各模块驱动设计加入ASIL策略) 2. 功能模块设计 :原创 2022-03-24 15:47:30 · 7086 阅读 · 0 评论 -
高通平台Camera Dtsi解析
参考文件:Documentation/devicetree/bindings/media/video/msm-cam-cci.txtqcom,cam-sensor@0 { /*摄像头唯一区分标志,添加新的camera,该ID顺次加1,通过该ID会与camera_config.xml里的ID匹配,这样才会去加载该ID对应模组的驱动。*/ cell-index = <0>; /*匹配节点,驱动和设备的compatible属性相同时,才会调用probe函数。*/原创 2021-12-22 09:20:13 · 2866 阅读 · 0 评论 -
SM8150 Audio驱动分析
1. TDM硬件接口介绍:I2S只能传2个声道的数据,PCM可以传多达16路数据,采用时分复用的方式,就是TDM。TDM不像I2S有统一的标准,不同的IC厂商在应用TDM时可能略有差异,这些差异表现在时钟的极性、声道配置的触发条件和对闲置声道的处理等。特点:比I2S节省管脚数量 支持多路传输 最多支持16路=16通道TDM系统框图:2.Kernel Dtsi 配置:参考:Documentation/devicetree/bindings/sound/qcom-aud..原创 2021-12-21 10:20:40 · 3245 阅读 · 1 评论 -
Linux/Android Audio硬件接口介绍
人的说话频率基本上为300Hz-3400Hz,但是人耳朵听觉频率基本上为20Hz-20000Hz。1. 数字音频接口 I2S、PCM、TDM 、PDM 音频接口 中文+全称 主要(技术+应用)场景 备注说明 PCM Pulse Code Modulation =脉冲编码调制 AP处理器和通信MODEM/蓝牙之间也是通过PCM来传输语音数据(就是双向打...原创 2021-12-20 17:46:07 · 1332 阅读 · 0 评论 -
Android/Linux MIPI SETTLE 简要
2. 关键参数描述:名称 描述 计算方法 FTIMER Clock rate frequency in MHz CSIPHY clock rate frequency = 200 MHz TTIMER Period of FTIMER TTIMER (ns) = 1000/ FTIMER (MHz) FDATA CSI transmission data rate specified by the camera bridge chip data原创 2021-12-17 10:19:52 · 2425 阅读 · 0 评论 -
Linux C HexString转Hex
#include <linux/ctype.h>static int oneHexChar2Hex(char Hex){ int outHex = 0; if(isdigit(hex)){ outHex = hex - '0'; }else if(isupper(hex)){ outHex = hex - 'A' + 10; }else{ outHex = hex - 'a' + 10; } return outHex;}static int HexStri.原创 2020-09-09 17:05:02 · 1679 阅读 · 0 评论 -
MTK平台Android项目开发框架搭建
前言: 不同的项目配置存在差异,原生的SDK无法兼容多个项目作业,按照原生框架创建项目比较繁琐,如果采用GIT分支形式来管理每个项目同样过于繁琐; 因此一套代码多个项目框架是有必要的。1. 编译脚本:#!/bin/bash####################################################### # Author: Tim(1352430027@qq.com)##############################################原创 2020-07-15 10:45:30 · 2105 阅读 · 0 评论 -
Android8.0之后UMS支持
前沿: Google在Android N之后严格了UMS功能,尤其在Android8.0之后,很多代码都删除了。那么如果要让系统支持UMS,如何做呢?1. 确认内核,内核基本支持UMS.2. 修改framework,让framework usb服务,以及usb storage 管理服务支持UMS3. 修改system/vold 让vold支持UMS功能总结:UMS其实就是Linux的一个功能,Android上面所做的只不过是给Linux内核ums功能发送相应指令打开/关闭。 ...原创 2020-07-07 12:20:52 · 1402 阅读 · 3 评论 -
Android大容量64G以上 TF卡支持
1. 64G以上TF卡大容量基本采用exFAT格式. 所以如果要支持64G 以上TF卡只需让系统支持exFAT文件系统格式即可.2. exFAT格式支持 2.1 Android O之前系统采用fuse,Android O之后的系统采用sdcardfs. 2.2.内核支持exFAT 2.3 添加exFAT工具,exfat.fsck,exfat.mount 等等 2.4 修改Vold,支持exFAT U盘/ TF卡挂载/卸载/格式化...原创 2020-07-07 12:11:49 · 1772 阅读 · 0 评论 -
Linux/Android I2C测试
1. I2C测试工具 1.1 Linux编译:arm_xxxx_gcc i2c_test.c-o i2c_test 1.2 Android编译:include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_CFLAGS := -O2 -Wall LOCAL_SHARED_LIBRARIES := libutils libcutilsLOCAL_C_INCLUDES += 头文件路劲/include LOCAL...原创 2020-07-07 11:53:47 · 610 阅读 · 0 评论 -
Linux/Android Disk 测试
1. 可以作为FLASH/DISK压力测试工具 1.1 Linux编译:gcc test.c-o test 1.2 Android编译:include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_CFLAGS := -O2 -Wall LOCAL_SHARED_LIBRARIES := libutils libcutilsLOCAL_C_INCLUDES += 头文件路劲/include LOCAL_SR...原创 2020-07-07 11:47:13 · 399 阅读 · 0 评论 -
高通平台4G执法记录仪开发
1. 4G功能开发...2. 开机启动APP开发...3. 开机时间优化..4. IRCUT/红外/白光灯/爆闪 控制..5. 执法仪接口数据管理开发 //对接PC,采集站...6. 接PC USB自动开机...7. 状态LED灯控制...8. 双电池管理,电池热插拔处理...9. 电池曲线. 电池耐久性优化...10. 功耗处理方案...11. camera视频水印处理方案...12. 按键自定义, APP自适应适..原创 2020-07-04 18:31:51 · 3737 阅读 · 1 评论 -
MTK平台4G执法记录仪开发
1. 4G功能开发 ...2. 开机启动APP开发...3. 开机时间优化..4. IRCUT/红外/白光灯/爆闪 控制..5. 执法仪接口数据管理开发 //对接PC,采集站...6. 接PC USB自动开机...7. 状态LED灯控制...8. 双电池管理,电池热插拔处理...9. 电池曲线. 电池耐久性优化...10. 功耗处理方案...11. camera视频水印处理方案...12. 按键自定义, APP自适应适.原创 2020-07-04 18:28:05 · 1959 阅读 · 2 评论 -
IMX8 Audio声卡
IMX8 Audio接口有SAI 与 ESAI。确认硬件是采用哪种,然后进行配置。DTS相关文件: 配置相关: Start Address End Address Region Size Allocation 5907_0000 5907_FFFF 64KB SAI3 5906_0000 5906_FFFF 64KB SAI2 ...原创 2020-07-04 17:50:40 · 4839 阅读 · 1 评论 -
imx8 usb otg模式切换
内核驱动名称: drivers/usb/chipidea/debug.c drivers/usb/chipidea/core.c drivers/usb/chipidea/ci_hdrc_imx.cDTS文件节点: fsl-imx8dx.dtsi usbotg1: usb@5b0d0000 { compatible = "fsl,imx8qm-usb", "fsl,imx2...原创 2020-06-29 18:17:24 · 3304 阅读 · 0 评论 -
Camera@Display denied sw_sync
camera相关进程出现下面selinux 权限问题:02-26 11:03:53.338000 464 464 W Camera@Display: type=1400 audit(0.0:200): avc: denied { read write } for name="sw_sync" dev="tmpfs" ino=9239 scontext=u:r:mtk_hal_camera:s0 ...原创 2019-10-27 07:37:27 · 249 阅读 · 0 评论 -
Linux dev_attr 设备文件操作
1. 写法A:static ssize_t xxx_show(struct device *dev, struct device_attribute *attr, char *buf){ return sprintf(buf,"show something\n");}static ssize_t xxx_store(struct device *dev, ...原创 2019-09-25 15:27:35 · 1333 阅读 · 0 评论 -
Android 常规ioctrl驱动
1.驱动.H结构体以及IOCTL接口定义enum{ IOCTRL_READ_VALUE = 0x1001, IOCTRL_WRITE_VALUE = 0x1002, IOCTRL_READ_MSG = 0x1003, IOCTRL_WRITE_MSG = 0x1004, IOCTRL_READ_I2CMSG = 0x1005, IOCTRL_W...原创 2019-09-04 16:20:35 · 603 阅读 · 0 评论 -
高通Camera驱动分析【转】
1、Sensor slave配置结构体msm_camera_sensor_slave_info定义在media/msm_cam_sensor.h中:struct msm_camera_sensor_slave_info {char sensor_name[32]; //sensor名称char eeprom_name[32]; //eep...转载 2018-09-28 10:15:59 · 2056 阅读 · 0 评论 -
Android开发常用的CMD调试指令
1.获取当前app的windowadb shell dumpsys window| grep mFocusedWindow结果:mFocusedWindow=Window{42f33f9 u0 com.tcl.ota.bb/com.tcl.ota.SystemUpdatesActivity}2.获取当前activity的信息adb shell dumpsys activity com.a...原创 2019-01-24 11:51:57 · 758 阅读 · 0 评论 -
简易IO-CTRL使用[Driver + Jni]
1.驱动H结构体以及IOCTL接口定义#define XXX_IOCTL_MAGIC 's'#define XXX_MAGIC 0xD0typedef struct _REG_CMD { unsigned char addr; unsigned char data;} REG_CMD;struct xxx_wreg_handle { REG_CMD *regcmd;...原创 2019-01-08 19:58:37 · 491 阅读 · 0 评论 -
C++ 互斥锁的应用
互斥的作用,防止程序未跑完,再次重复调用引起的BUG,保护函数的生命周期完整性。添加头文件 #include <pthread.h>初始化声明mutexpthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;互斥使用static void test(){pthread_mutex_lock(&mutex);…...原创 2019-04-24 09:44:03 · 456 阅读 · 0 评论 -
Linux内核锁的应用
一、锁的基本知识1、锁是通过原子操作实现的,它本身不会导致竞态。2、为什么要使用锁?答:因为进程同步的存在,所以要使用锁。用户空间:(1)用户程序会被调度器抢占和重新调度,用户程序可以在任何时刻被抢占,调度器会选择一个高优先级的进程到处理器上执行。(2)SMP的存在使得多个处理器同时执行代码。内核空间:中断:中断处理程序可能随时打断当前正在执行的代码。软中断和tasklet:内核...原创 2019-04-24 09:47:57 · 665 阅读 · 0 评论 -
MTK平台 camera反复开关崩溃
改mclk驱动能力drivers/misc/mediatek/imgsensor/src/mt6735/ov2710_mipi_raw/ov2710mipi_Sensor.cisp_driving_current = ISP_DRIVING_8MA (改其他值尝试), 改小可降低触发沿高度,硬件相当于加电阻;mipi_data_lp2hs_settle_dc = 80(改14、30、...原创 2019-04-29 15:21:48 · 1324 阅读 · 0 评论 -
MTK平台GPIO操作
1. GPIO操作函数:mt_set_gpio_mode(GPIO_FSA8049_PIN, GPIO_FSA8049_PIN_M_GPIO);mt_set_gpio_dir(GPIO_FSA8049_PIN, GPIO_DIR_OUT);mt_set_gpio_out(GPIO_FSA8049_PIN, GPIO_OUT_ONE);mt_set_gpio_pull_enable(GPIO...原创 2019-04-29 15:27:49 · 1563 阅读 · 1 评论 -
MTK平台通话音量配置
**[DESCRIPTION]** 增大speech通话时的音量 audio_ver1_volume_custom_default.h ./vendor/mediatek/proprietary/custom/common/cgen/cfgdefault/audio_volume_custom_default.h **[SOLUTION]** 如果是本地听到对方的说话音量较小(即下...原创 2019-04-29 15:30:18 · 1008 阅读 · 0 评论 -
Linux内核中关于字符串的相关操作
首先包含头文件:#include <linux/string.h> 可用函数包括如下:int strnicmp(const char *s1, const char *s2, size_t len) int strcasecmp(const char *s1, const char *s2) int strncasecmp(const char *s1, const c...原创 2019-04-29 16:58:06 · 922 阅读 · 0 评论 -
Android虚拟触摸
虚拟TP驱动实现:#include <linux/module.h>#include <linux/init.h>#include <linux/interrupt.h>#include <linux/irq.h>#include <linux/workqueue.h>#include <linux/errno.h>...原创 2019-05-05 16:06:27 · 940 阅读 · 0 评论 -
Android MSM SPI测试程序-IOCTRL
#include <stdint.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <getopt.h>#include <fcntl.h>#include <sys/ioctl.h>#include <lin...原创 2019-05-06 15:56:05 · 641 阅读 · 0 评论 -
MSM8909 CW2015 电量计驱动调试
1. dtsi添加:&i2c_5 { status = "okay"; cw2015@62{ compatible = "qcom,cw2015_gauge"; reg = <0x62>; };};2. 驱动添加:#include <linux/module.h>#include <...原创 2019-05-06 16:06:11 · 5042 阅读 · 0 评论 -
MSM8916 ICN6211 MIPI2RGB调试
1. DTSI1> i2c: i2c@78b9000 { /* BLSP1 QUP5 */ icn6211@2c { compatible = "qcom,icn6211"; reg = <0x2C>; ...原创 2019-05-07 20:09:37 · 2515 阅读 · 0 评论 -
Kernel创建Proc调试接口
1. 接口名称 #define inerface_name "driver/dev" struct proc_dir_entry * dev_debug_proc = NULL2. 实现函数static int debug_write(struct file *file,const char __user *buffer,unsigned long coun...原创 2019-09-04 11:39:24 · 468 阅读 · 0 评论 -
Android IOCtrl使用[Driver + Jni]
1.驱动H结构体以及IOCTL接口定义 #define XXX_IOCTL_MAGIC 's' #define XXX_MAGIC 0xD0 typedef struct _REG_CMD { unsigned char addr; unsigned char data; } REG_CMD; struc...原创 2019-09-04 11:46:58 · 591 阅读 · 0 评论 -
Android内核cmdline到系统prop属性传递
Android开机过程中经历bootloader -> kernel -> fsUboot->Kernel 信息通过cmdline传递Kernel->FS 属性信息也可以通过cmdline传递内核kernel设置cmdline, 系统init.c 解析cmdline.案例:static char kernel_ver[128] = {0};sprint...原创 2018-10-11 11:37:04 · 4530 阅读 · 1 评论