- 博客(176)
- 资源 (1)
- 收藏
- 关注
原创 [Linux Audio Driver] 高通平台MI2S总线配置
0. 背景hardware platform:骁龙865android version:android10Linux kernel version:msm-4.19思维导图如下:1. 遇到的一点坑由于我没有拿到这个平台的MI2S高通配置文档,所以遇到了一点坑,同步也分享。这个平台目前还没有具体codec器件的调试需求,但是我想验证下接口,于是找硬件,告诉我可以配置MI2S1,对应上面几个GPIO,然后我寻思,默认pri_mi2s应该是MI2S0,这个MI2S1不就应该是配置sec_mi2s
2022-03-02 18:50:08
18048
13
原创 端口不稳定抓logcat方法
有时候会遇到设备的端口不稳定,或者端口有限,比如要分析type-c耳机相关的问题,但是没有别的端口抓logcat log了,可以用以下方法抓logcat log:adb shelllogcat > /data/logcat.txt &复现问题之后,从/data/logcat.txt路径下面导出log即可。...
2022-02-08 11:48:32
495
原创 cool edit pro生成2.7khz_0dB音源方法
1. 新建文件相关参数配置选择:48Khz、单声道、16位。2. 改变频率注意基础频率调整为2700hz,调制频率调整位0Hz,音量dB选择为0dB,其他选择默认。点确认之后,生成的波形如下所示,生成好了另存为就可以了。...
2021-11-18 14:05:43
3067
原创 HJ108-求最小公倍数
0. 题干1. 代码//如果其中一个数能整除另一个数,那么大的数即为最小公倍数//如果两个数没有互相能整除的关系,那么两数字的乘积即为最小公倍数//以上分析显然不正确,比如6和15的最小公倍数为30,而不是90//最小公倍数应该为两者之积,除以最大公约数//可以使用辗转相除法,(欧几里得算法)求最大公约数#include <stdio.h>int gys( int a,int b){ while(a%b){ int tmp=a;
2021-11-09 23:45:00
529
原创 HJ106 字符逆序
0. 题干1. 代码#include <stdio.h>#include <string.h>int main(){ char str[10000]; int len; //scanf("%s",str); scanf有局限,对于空格不好处理,可以考虑用gets gets(str); len=strlen(str); for (int i=len-1;i>-1;i--){ prin
2021-11-09 22:59:40
696
原创 HJ100 等差数列
0. 题干1. 代码// a(n)=(n-1)*3+2//#include <stdio.h>#include <string.h>int main(){ int a[1000]; int n; int sum=0; while (scanf("%d",&n) !=EOF ){ sum=0; for ( int i=0; i<n;i++){ a[i]=
2021-11-09 22:48:18
320
原创 示波器显示原理
我最近突然想知道示波器是咋能抓到波形的,用了好多年,突然发现自己不知道原理。 然后我查了下维基百科。大意是这个示波器有个别名,然后通过捕获信号源的信号电压,通过电子束打到显示屏上。其实这里可以猜测这个显示屏肯定做了特殊的处理(比如有荧光物质),因为示波器能显示不同的颜色波形。...
2021-08-03 20:39:22
1506
1
原创 [Linux Audio Driver] ADSP分析网络造成通话数据丢失方法
0. 背景有时候通话会出现丢失数据的情况,而且这种问题往往和网络制式有关系,比如移动卡没问题,联通有问题,根本原因是射频器件或者modem相关的配置不良,这个其实有办法分析和软件(audio software)或者硬件参数(audio tuning)无关。1. 抓取log需要找一个哥们配合抓log,两边通话接通(近端一个人说话,远端另一个人接听),同时抓取音频的QXDM log,抓完之后使用高通QCAT工具解析log。两份QXDM log整合到一起,重点是取出near,近端0x1804 log点(就
2021-08-03 20:38:47
1200
3
原创 第一次坐飞机的感受
0. 背景25岁了,长这么大没做过飞机。然后我问了下群里的小伙伴,重点是不要看错航站楼(这个打车的时候要注意;因为我是从上海到深圳出差,所以我查了下深圳那天有台风,带了把雨伞。。。然后我和我妈聊天还被diss了,唉,难受。1. 第一轮安检人事下班了,我只能自己从飞猪上买机票。然后买了早上8点多南航的=_=,但是后面还有小字:实际乘坐厦航的。。他们都说飞机票要提前两小时到机场,然后我提前了两个半小时到了机场+_+,到机场发现去国外的门都没开,可能是疫情原因吧。从这里进去会有第一轮安检,就是
2021-07-27 20:32:52
1038
9
原创 [Linux Audio Driver] Solve line-out output is unstable
Recently I experience some thing and want to improve my English, so i will try to use English to write the new document completely.0. backgroundOK, let’s go straight to the topic. We will found the line-out output singal is not stable, while
2021-05-13 18:02:26
850
5
原创 [Linux Device Driver] 看门狗
0. 背景&原理我们假设有一个芯片,它自己能不间断的产生脉冲信号(隔一段时间产生,时间由硬件决定),它理所当然有自己的信号时序;比如说,它在每次脉冲前面都要有一个别的信号来通知它,“嘿,老兄,一切正常,请继续保持工作”,基于这样的约定,有人通知它,它就发脉冲;那万一在约定的时间内没人通知呢,那它就不产生脉冲了,直接“躺尸”,在这个芯片产生“躺尸”想法的时候,他会给外界发送一个信号。很常见的就是高低电平,比如本来高电平,芯片凉了,那就把一个信号线拉低变成低电平。大家比较喜欢把这种行为,称为
2021-03-25 18:02:40
2967
3
原创 git pull && git reset报错解决办法
报错log如下:fatal: Unable to create ‘/home5/wangliang/android11/LA.UM.9.12/.git/index.lock’: File exists.If no other git process is currently running, this probably means agit process crashed in this repository earlier. Make sure no other gitprocess is run
2021-03-24 09:35:43
727
原创 [Linux Device Driver] 通过设备节点的方式控制GPIO
直接上代码了,Kconfig、defconfig、makefile那些请自己配置。0. vendor/qcom/proprietary/devicetree-4.19/qcom/lagoon-mtp.dtsi&soc { ...... logo_led { compatible = "qcom,logo-led-v2"; qcom,msm-logo-enable-gpio = <&tlmm 87 0x00>; };};1. kernel/m
2021-03-21 19:31:36
1157
1
原创 冒泡排序-C语言
//This file is a "Hello, world!" in C language by gcc for wandbox.#include <stdio.h>int psort(int *, int);int main(void){ int arr[10] = {1,23,2,56,7,9,12,13,8,17 }; int ans[10] = {0}; int len = sizeof(ans)/sizeof(ans[0]); printf("len =%d
2021-03-13 16:31:17
238
原创 [C++基础知识] unordered_map容器
0. 容器模板定义unordered_map 容器模板的定义如下所示:template < class Key, //键值对中键的类型 class T, //键值对中值的类型 class Hash = hash<Key>, //容器内部存储键值对所用的哈希函数 class Pred = equal_to&l
2021-03-09 20:59:05
860
原创 见闻-关于codec芯片
前不久和FAE聊过一次,他们是上海交大系的企业,聊了聊有些收获。1. audio codec以及adc、dac我以前对audio codec的理解是这样的: 连结平台的i2s/TDM总线的外置芯片,我的理解就是这样,只要是调试这样的芯片,我认为就是调试外部codec芯片,尽管我知道codec的意思是“编解码”。然后跟FAE聊了下发现,他认为的codec芯片是全双工的,即输入的同时要输出,要同时包含ADC和DAC,那我之前的理解就有点不大准确了,其实很多时候我调试的芯片比较单一,要么只包含mic功能(输
2021-03-03 20:41:44
3468
原创 [Linux Audio Driver] 高通TDM总线配置
0. 背景TDM接口与平台SOC相关,调试前需要确定平台支持TDM,目前一些中高端的平台都支持的。(转载请备注链接)本文介绍配置: SEN_TDM_TX_0。1. tinymix查看当前虚拟总线配置adb shell tinymix > tinymix_source.txtRX_CDC_DMA_RX_0这个虚拟总线是一直用的,这个显然存在,然后检索TDM。Line 248: 243 BOOL 1 RX_CDC_DMA_RX_0_DL_HL Switch Off
2021-02-20 20:51:04
7190
13
原创 [Linux Audio Driver] 高通音频相关汇总(持续更新)
0. 背景之前写了一些音频的博客,但是比较散乱,就想着汇总下写的博客,也是对自己知识结构的梳理,这个会持续更新。1. 代码分析&总结I2S相关介绍ACDB文件加载流程(一)ACDB文件加载流程(二)ACDB文件加载流程(完结篇)高通平台内部MIC_BIAS简介从设备地址理解Android7 外部PA Speaker代码结构MSM8953音频部分设备树调用关系开启音频kernel内核debug功能声卡与XML匹配流程SDM660平台内部CODEC tinyalsa命令总结S
2021-02-20 13:01:26
4364
3
原创 [Linux Device Driver] 分区大小导致的adb remount失败解决方法
0. 背景这个问题一般是系统组来搞,但是adb remount失败,特别影响audio/camera干活,于是我请教了下大佬,学习了一下。对比log如下:正常remount成功的设备:Disabling verity for /systemUsing overlayfs for /systemDisabling verity for /system_extUsing overlayfs for /system_extDisabling verity for /productUsing ov
2021-02-09 11:58:05
6749
原创 [Linux Audio Driver] 移植外部CODEC常见编译报错解决(持续更新)
0. 背景最近一直在调试codec芯片,好多代码FAE给的和平台不适配,比如结构体改了之类的,一些编译问题老是忘记,就想着顺手写下总结。1. function definition is not allowed hereerror: function definition is not allowed here好家伙,它说函数不能够在这里定义。网上看了一下,这个报错的原因是在函数原型里面又定义了一个函数,回头看下函数报错的位置,这里for循环的括号丢了一个,添上即可。(其他还有类似报错,但
2021-02-03 20:09:49
7393
8
原创 [Linux Camera Driver] 开机之后获取camera型号方法
1. 清一下logadb logcat -c //开机之后,先清一下log,adb shelllogcat |grep ‘res:’2. logcat |grep ‘res:’之后打开骁龙,切换前后摄,就会有如下类似log:130|sdm660_64:/ # logcat |grep 'res:'01-01 13:08:14.715 709 3954 I mm-camera: <SENSOR>< INFO> 4224: sensor_get_resoluti
2021-01-25 16:02:37
653
原创 [Linux Audio Driver] Android 10 machine driver probe函数分析
0. 背景平台:Qualcomm 5G SM6350、android10、kernel version: msm-4.19。本文重点分析machine driver里面的msm_asoc_machine_probe函数,这个是machie驱动的核心代码,涉及声卡解析注册,CPU dai和codec dai绑定,麦克偏置解析配置routing、耳机麦克检测(欧-美标兼容)、MI2S主、从模式配置,以及新增的LPASS音频投票机制。此外,msm_asoc_machine_probe函数也可以说就干了一件
2020-12-18 20:54:47
3505
13
原创 [Linux Audio Driver] 高通平台麦克偏置电压取值范围
以SDM660平台为例,代码位置:vendor/qcom/opensource/audio-kernel/asoc/codecs/sdm660_cdc/msm-analog-cdc.c#define MICBIAS_DEFAULT_VAL 1800000 //这里可以修改麦克的偏置电压参考高通寄存器文档,打开之后检索micbias,之后检索0x0001F141 CDC_A_MICB_1_VAL这个寄存器介绍,会发现取值范围是:1.6-2.85V,相邻间隔0.05V...
2020-12-18 14:53:55
1210
原创 [Linux Device Driver] QXDM diag命令发送方法
通过USB连接设备之后,以下面格式在Command里面输入:send_data 0xff 0xfe 0xfc 0xf1 0xf3 0xf4 0xf5
2020-12-18 11:06:32
1820
2
原创 [Linux Camera Driver] 闪光灯过曝总结
1. PMIC在原理图里面查找flash,我们就能找到闪光灯。一般来说后摄才有闪光灯,前摄没有。先看原理图,这个闪光灯挂载在PM6150L上面。find ./vendor/qcom/proprietary/devicetree-4.19/qcom/ -name pm6150l*./vendor/qcom/proprietary/devicetree-4.19/qcom/pm6150l.dtsi2. camera id我们找到了pmi的设备树之后,先不打开,我们看下对应camera料的
2020-12-09 19:46:19
1225
原创 工作反思(持续更新)
遇到跨部门工作的事情,不要直接找对应人员,要先和项目经理反馈,由项目经理统筹安排,不然别人会觉得是你擅自安排工作,这样很不礼貌。某个问题有进展,或者需要沟通处理的,要先告知直接主管,越级上班会显得不尊重直接主管。...
2020-11-27 10:15:47
348
原创 [Linux Device Driver] 解包super.img
0. 背景最近新项目,烧录的时候没有system分区了,听大佬说是被大佬进了super分区; 于是决定研究一波,这里直接采用最简单粗暴的方式,直接对其进行解包,看看包含哪些东西。img镜像文件有两种,分为raw和sparse两种格式。raw ext4 image,即raw image,使用file可以看到它是一个完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载。而sparse image是一个非常普通的data文件,是通过将raw ext4进行稀疏描述得到的,因此尺寸
2020-11-26 20:44:31
6351
9
原创 [Linux Device Driver] 高通平台分区学习
1. 分区名字 && 作用ssd ———ssd diag模块的分区,存储加密的RSA密钥 persist ———其中包含在设备出厂后不应该更改的数据,例如:芯片的校准数据(WIFI,bt,相机等),证书和其他与安全性相关的文件。可以进行高级恢复或安卓系统维护工作。misc ———Miscellaneous的简称,cpu加电之后,启动bootloader,就会读取MISC分区获得来自Main sy
2020-11-26 17:20:11
5199
原创 去掉mobaxterm默认右键粘贴
settings-> Terminal-> Paste using click,点OK之后,新开的窗口永久生效。
2020-11-24 14:03:46
4738
2
原创 ls、 file 和 less命令
1. lsnigulasi@u225:~/android10/webRTC/webrtc-audioproc-master/modules/audio_processing$ ls它会显示当前的目录以及文件:ls -lnigulasi@u225:~/android10/webRTC/webrtc-audioproc-master/modules/audio_processing$ ls -lls -l会把输出长格式显示,我们能获取到更多的信息。drwxr-xr-x 4 nigulasi n
2020-11-05 15:08:32
1001
原创 [Linux Device Driver] TP手套模式代码分析
0 设备树配置goodix@5d { compatible = "goodix,gt1x"; reg = <0x5d>; ...... goodix,default-config0 = [ 41 A0 05 D0 02 0A 05 0C 20 E1 8E 05 50 32 05 01 00 32 00 00 28 00 00 00 08 04 03 00 0F 14 3C 44 00 22 00 00 00 00 00 40 00 00
2020-11-02 20:12:35
1101
原创 几个简单的shell命令
1. date~/android10/LA.UM.8.13$ dateSat Oct 31 15:38:53 CST 2020它会说现在是周六、10月31号下午15:38:53,CST是中国标准时间的意思,然后是2020年2. cal~/android10/LA.UM.8.13$ cal October 2020Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 1718
2020-10-31 15:56:13
378
原创 [Sorting Problem] 合并区间
leetcode 56,Merge Intervals,难度medium。0. 题干给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出:[[1,5]]解释: 区间 [1,4] 和 [4,
2020-10-28 20:04:13
284
原创 [Linux Device Driver] 标准IO
文件类型 bcd_lsp文件的常见操作:fopen/fclosefgets/fputsfgetc/fputcfwrite/freadFILE指针:每个使用的文件都在内存中开辟一段区域,用来存放文件的有关信息,这些信息背包寻到一个结构体中,该结构体的类型由系统定义,取名FILE。标注Io操作对象是stream,在标准IO中,流由FILE*描述流又分为文本流(以ascii存放)和二进制流(以二进制存放)标准i偶的缓存方式分为全缓存,行缓存,不带缓存。使用函数setbuf() setvbuf(
2020-10-28 13:51:32
217
原创 [Linux Audio Driver] SDM660平台内部CODEC tinyalsa命令总结
1. 单MIC(主MIC)通过adb端口执行以下指令adb root && adb remountadb shelltinymix "MultiMedia1 Mixer INT3_MI2S_TX" "1"tinymix "INT3_MI2S_TX Channels" "One"tinymix "ADC1 Volume" "6"tinymix "DEC1 MUX" "ADC1"tinymix "ADC1_INP1 Switch" "1"tinycap /data/input
2020-10-19 17:09:41
1250
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人