IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 2021-09-13 -> 正文阅读

[系统运维]2021-09-13

MTK audio note -01

adb shell cat sys/devices/virtual/misc/mtgpio/pin 查看GPIO管脚信息
adb shell cat /sys/class/misc/mtgpio/pin 查看GPIO管脚信息
adb shell cat /proc/interrupts 查看中断信息
/sys/bus/cpu/devices 查看机器cpu 信息
打印kernel函数dump GPIO值:
int mt_set_gpio_mode(unsigned long pin, unsigned long mode)
{
if (mode >= GPIO_MODE_MAX) {
GPIOERR(“Parameter mode error: %d\n”, (int)mode);
return -ERINVAL;
}

if ((pin & 0xff) == GPIO24) {
printk(“mt_set_gpio_mode::pin = %lu , mode = %lu --------”,pin, mode);
dump_stack();
}
return MT_GPIO_OPS_SET(pin, set_mode, mode);
}

修改system/core/init/device.cpp加上一段代碼以創建/dev/snd
} else if(!strncmp(uevent->subsystem, “sound”, 5)) {
base = “/dev/snd/”;
make_dir(base, 0755);

EQ英文全称Equaliser,中文也就是均衡器的意思。它的基本作用是通过对声音某一个或多个频段进行增益或衰减,从而达到调整音色的目的。
EQ通常包括以下三个参数:Frequency,频率――这是用于设定你要进行调整的频率点的参数;Gain,增益――用于调整在你设定好的F值上进行增益或衰减的参数;Quantize――用于设定你要进行增益或衰减的频段“宽度”的参数。在这里,要注意是:当你设定的Q值越小的时候,你所处理的频段就越宽,而当你设定的Q值越大的时候,你所处理的频段就越窄。

pcm.c 操作的文件是pcmC%uD%u%c
主要使用Linux提供的open/close/ioctl/mmap
主要函数pcm_open/pcm_close/pcm_is_ready/pcm_read/pcm_write

mixer.c 操作的文件是controlC%
设置mixer control
主要函数mixer_ctl_set_enum_by_string mixer_ctl_set_value
像打开audio patch、设置pga音量都是都通过Control Interface

查看系统支持多少核数
root@NOBLEX:/ # cat sys/devices/system/cpu/present

手机放音乐时连接音箱, 将音箱音量调到最大时,音乐会自动暂停
原因是:HPL上信号过大导致EINT拉高产生了耳机拨出讯号,所以音乐会自动暂停掉

耳机accdet dts配置:
&accdet {
accdet-mic-vol = <7>;
headset-mode-setting = <0x500 0x500 1 0x3F0 0x800 0x800 0x200>;
accdet-plugout-debounce = <20>;
/1:ACC mode, 2:low cost without in bias, 6:low cost with in bias/
<0x500 0x500 1 0x3F0 0x800 0x800 0x200>这几个值分别表示的是什么?
struct headset_mode_settings {
int pwm_width; /pwm frequence/
int pwm_thresh; /pwm duty/
int fall_delay; /falling stable time/
int rise_delay; /rising stable time/
int debounce0; /hook switch or double check debounce/
int debounce1; /mic bias debounce/
int debounce3; /plug out debounce/
};

adb shell echo 8 8 8 8 > /proc/sys/kernel/printk //开启 kernel log的 printk 打印
CONFIG_LOG_BUF_SHIFT=19 //将这个宏变量改为19后,可以抓取从0秒 开始记录的kernel log,默认值是17

adb shell getprop |grep number 可以查看手机 烧写的软件版本
手机连接USB,pc端输入adb devices查询设备串号,三台机器的序列号都是一样的, 需要开启下面的这个宏
CONFIG_MTK_USB_UNIQUE_SERIAL=yes

e-fuse ROM里初始都是1,当且仅能一次把1改成0。可以这么理解ROM的数据只能写一次,通常用于保护关键数据,出厂时写入一次,以后每次都是读取
e-fuse 是烧写在 机器的CPU里,这样的话 能保证 手机不被其他 用户刷机
样机如果烧录了efuse则必须烧录签名版本,如果样机未烧录efuse,烧录版本是否签名无影响

有些手机因为结构原因没有把loopback plug dongle识别成mic耳机, 会导致 “Audio Loopback Latency Test”项测试结果值小于0.6,测试不通过。

frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
Android 6.0 上修改播放音乐从听筒发出
audio_devices_t AudioPolicyManager::getDeviceForStrategy(routing_strategy strategy,
bool fromCache, audio_output_flags_t flags)
{
audio_devices_t Device;
if(strategy == STRATEGY_MEDIA)
{
Device = AUDIO_DEVICE_OUT_EARPIECE;
ALOGD("getDeviceForStrategy() from AUDIO_DEVICE_OUT_EARPIECE ");
return Device;
}

编译后清除 之前的编译环境,便于下次重新编译
git checkout – .
git clean -xdf

从提供的register来看,异常时,AUDENC_ANA_CON0 = 0x583说明input选择的是耳机的,所以导致UL无声

kernel-3.10/drivers/misc/mediatek/gpio/mt6735/mt_gpio_debug.c//打印GPIO
static ssize_t mt_gpio_dump_regs(char *buf, ssize_t bufLen)
{}

vi out/target/product/xxx6753_65u_m0/obj/KERNEL_OBJ/arch/arm64/boot/dts/cust.dtsi
//查看编译后的 i2c配置情况

checkAndSetVolume() 函数却没有执行 也不会有音量变化的

在构造AudioTrack对象的时候,传入了CallbackWrapper作为audiotrack的callback
当audiotrack需要数据的时候,就会调用此函数
void MediaPlayerService::AudioOutput::CallbackWrapper()
audiotrack启动后就会周期性的调用 回调函数从解码器获取数据

AudioTrack中构造函数的参数
bufferSizeInBytes
这个是最难理解又最重要的一个参数,它配置的是 AudioTrack 内部的音频缓冲区的大小,该缓冲区的值不能低于一帧“音频帧”(Frame)的大小

D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = builtin_Mic_DualMic descriptor->DeviceStatusCounte = 6
descriptor->DeviceStatusCounte = 6这里有异常 mic不能正常打开

可以把双麦克风消噪强度降低提升speech quality

连接蓝牙耳机通话时,从蓝牙耳机切换到听筒
D/BTIF_HF_SERVER(20553): disconnect_audio
D/AudioALSASpeechPhoneCallController( 289): routing(), bt_device_on = 0, sample_rate = 16000

accdet_custom.c中
16 #if defined(CONFIG_AUDIO_SUPPORT)
17 static struct headset_mode_settings cust_headset_settings = {
18 0x500, 0x200, 1, 0x3f0, 0x800, 0x800, 0x200
19 };
20 #else
21 static struct headset_mode_settings cust_headset_settings = {
22 0x500, 0x500, 1, 0x3f0, 0x800, 0x800, 0x200
23 };
24 #endif

如果将第二项 0x500改成0x200 相当于将MIC 波形改成 PWM,如果第一项和第二项 相等 ,Micbias 一直为高
最后一项 0x200 代表耳机拔出时的 debounce 时间(去抖动),将其转为十进制 除以32768 即为真正的debounce 时间
其他项目的 debounce 时间是0x20

请在accdet.c文件中配置:
#define ACCDET_DEBOUNCE3_PLUG_OUT (0x20) //为了解决拔掉耳机后误报耳机按键消息
原来是#define ACCDET_DEBOUNCE3_PLUG_OUT (0x2030) / 30 msec */

按下 耳机按键,mic脚的电压波形 将会被拉低

耳机图标有显示 说明拔出耳机时 没有产生中断。
函数accdet_setup_eint() 都没有执行,那么accdet_setup_eint内部的中断申请函数request_irq() 肯定也不会执行
这时应关注 dws中 对于GPIO2对应的 EINT:ACCDET 配置是否有异常(配成了其他的GPIO6),需要重新适配 dws
同时需在mk文件中
定义CONFIG_ACCDET_EINT=yes ,CONFIG_ACCDET_EINT_IRQ=no
在这里插入图片描述

当插入耳机按键时,首先是触发了EINT中断,然后再触发ACCDET中断,这2个中断都是PMIC函数中注册
的,属于PMIC端的中断

把耳机mic的mode改为ACC
audio_custom_exp.h 中
#define HEADSET_MIC_MODE (2)
改为
#define HEADSET_MIC_MODE (1)
在打开麦克风降噪的情况下,手机对非稳态噪音(比如使用者身边别人说话的声音)的消除增强,但是对远端的背景噪音消除能力会降低,并且会出现一定的底噪。这些都是MTK消噪算法的一些缺点,属于正常情况

播放出现卡顿时 //系统内存不足或者开启了串口log等影响了系统performance
01-01 08:03:08.428 E/AudioALSAPlaybackHandlerBase( 291): -getHardwareBufferInfo pcm_get_htimestamp fail, ret = -1, pcm_get_error = cannot start channel: Broken pipe

sound/soc/mediatek/mt_soc_audio_v3 目录下
mt_soc_pcm_routing.c AudDrv_Afe.c AudDrv_Ana.c mt_soc_pcm_fm_i2s.c mt_soc_pcm_routing.c

手机/system/etc/目录
audio_device.xml 音频通路切换
audio_effects.conf 音频效果文件
audio_policy.conf 音频配置

没带Smart PA的项目,如何在main log中查看 PA是否有open?
D/AudioALSADeviceConfigManager( 288): cltname = Ext_Speaker_Amp_Switch cltvalue = On
关闭播放时
D/AudioALSADeviceConfigManager( 288): cltname = Ext_Speaker_Amp_Switch cltvalue = Off

在mt6750平台上 调节 耳机,扬声器等音频器件的模拟增益
是AudioALSAGainController.cpp
如void AudioMTKGainController::SetSpeakerGain(int index) 函数 调节外放的模拟增益
void AudioMTKGainController::SetSpeakerGain(uint32_t index)
{
SetHeadPhoneLGain(index); //调节耳机通路上的那个gain
SetHeadPhoneRGain(index);
}

只要外部pa接在耳机声道上,调节增益时都需要调节耳机通路上的那个gain。SetSpeakerGain函数根本作用不到耳机通路,如果外部pa接在内部pa后面,才需要调用SetSpeakerGain函数

在老的 mt6735平台上调节 扬声器等音频器件的模拟增益是
AudioALSAVolumeController.cpp文件
如AudioALSAVolumeController::SetSpeakerGain

MBDRC 分频段的DRC
MTK_BESLOUDNESS_SUPPORT=yes 开启MBDRC
MBDRC(Multi-Band DRC)导致雷霆战机游戏卡顿的原因是:MBDRC运算量大,并且是track base,每个AudioTrack都要进行DRC处理。在雷霆战机游戏的过程中,最多有20多个AudioTrack同时处于active状态并进行MBDRC运算,有可能造成CPU loading过大的情况,导致卡顿

//是否插入耳机扬声器的来电铃声大小不一样
之前手机 来电响铃时 喇叭信号(没有插入耳机时)会进行DRC 处理,而插入耳机时,喇叭信号则不会进行DRC处理,所以插入耳机时 扬声器听起来音量小

D/AudioALSAHardware( 353): = SET_DUMP_AUDIO_DEBUG_INFO(1)
开启Audio pcm log时 点击“Dump Audio Debug Info”后

find * -iname “*.h” |xargs grep -inr “snd_card”
find ./ -name Android.mk -exec grep -l init {} ;
find external/ -name Android.mk -exec grep -l test_name {} ;

device/mediatek/common/audio_param Android6.0 及MT6755平台上音频参数位置

device/mediatek/k50v1_66_cxo_pre/ProjectConfig.mk
ProjectConfig.mk包含诸多版本信息,搜索BRANCH
MTK_BRANCH = alps-mp-m0.mp1 //基线地址

/kernel-3.10/drivers/misc/mediatek/i2c/mt6752/i2c.c
static S32 _i2c_deal_result(mt_i2c *i2c)
598 BUG_ON(data_size > i2c->msg_len); //BUG_ON即让 机器出现KE
上面这个 BUG_ON产生的KE,这个KE表示HW行为读出来的字节数不符合预期值

adb shell getevent -l 耳机按键上报
add device 7: /dev/input/event0
name: “ACCDET”

adb shell getevent |grep /dev/input/event1 查看音量 +/- 按键event
信息

log中看到在通话过程中进来的echo量相当大,导致经过AEC之后UL的语音信号被削得很小了,所以目前是建议您们将免提模式下面的MIC切换为负MIC进行通话。
请将Audio_Customization_Common.h中
#define USE_REFMIC_IN_LOUDSPK (1) //1表示免提打开refmic 免提通话用副麦
audio_custom_exp.h中 和AudioALSACaptureHandlerAEC.cpp中取消宏EXTCODEC_ECHO_REFERENCE_SUPPORT的定义,这样会将AEC参考信号改为MTK平台自带(而不用nxp(smartpa))
#ifndef CONFIG_BSP_AUDIO_SUPPORT
#define EXTCODEC_ECHO_REFERENCE_SUPPORT
#endif

手机灭屏后,关闭了LCD和TP,同时降低了CPU的工作频率,CPU降频后,进入低功耗工作模式,可能会改变播放线程的优先级,导致write audio data丢失,机器可能出现杂音卡顿

抓取数字寄存器reg的adb命令
adb shell cat /sys/kernel/debug/mtksocaudio > D:AFEreg.txt Digital register
抓取模拟寄存器reg的adb 命令
adb shell cat /sys/kernel/debug/mtksocanaaudio > D:PMICreg.txt Analog register

adb shell “echo Setafereg,regaddr,0x18,regvalue,0x9000100a > /sys/kernel/debug/mtksocaudio” //将bit0设为0即关闭i2s0
adb shell “echo Setafereg,regaddr,0x4c,regvalue,0x190a > /sys/kernel/debug/mtksocaudio”//将bit0设为0即关闭i2s3
adb shell “echo Setafereg,regaddr,0x4,regvalue,0x2 > /sys/kernel/debug/mtksocaudio” //soft reset lock
adb shell “echo Setafereg,regaddr,0x18,regvalue,0x9010100a > /sys/kernel/debug/mtksocaudio” //设置bit20 loopback
adb shell “echo Setafereg,regaddr,0x18,regvalue,0x9010100b > /sys/kernel/debug/mtksocaudio” //开启i2s0
adb shell “echo Setafereg,regaddr,0x4c,regvalue,0x190b > /sys/kernel/debug/mtksocaudio”//开启i2s3
adb shell “echo Setafereg,regaddr,0x4,regvalue,0x0 > /sys/kernel/debug/mtksocaudio” //normal unlock

在播放音乐过程中 反复多次插拔USB,可能会存在USB的数据流通过混用的地线串扰到音频接口上造成 播放杂音
可以使用adb命令 抓取Audio pcm log
audio_dump L版本adb命令
adb shell setprop af.track.pcm 1
adb shell setprop af.mixer.end.pcm 1
adb shell setprop af.mixer.pcm 1
adb shell setprop af.mixer.write.pcm 1
adb shell setprop streamout.pcm.dump 1
抓取reg的adb命令
adb shell cat /sys/kernel/debug/mtksocaudio > D:AFEreg
adb shell cat /sys/kernel/debug/mtksocanaaudio > D:PMICreg

当前的耳机模式下面的MIC 模拟增益值设置的是多少?我们从log中看到该值设置在172,所以看到UL的信号偏小,请帮忙将这个值设置在180然后再做相关的测试.
按照以下步驟調整 mic 音量
進入工模 (撥號畫面下輸入 ##3646633##) -> Hardware Testing -> Audio -> Headset Mode -> Type 選 Mic -> 將 Level 3 的 Value 設為 180

AudioFlinger.h中 static const nsecs_t kDefaultStandbyTimeInNsecs = seconds(3); 可以修改Standby 时间
standby是由AudioFlinger控制的,一旦满足以下条件后,没有AudioTrack处于活动状态并且已经到达了standbyTime这个时间就进入Standby模式。那么standbyTime=systemTime() + standbyDelay,也就是过了standbyDelay这段时间后,音频系统将进入待机,关闭音频设备
kDefaultStandbyTimeInNsecs 设置过短,导致播放短促音频时AudioTrack还处于活动状态,此刻已经到达了standbyTime这个时间就进入Standby模式,拨号盘会出现卡顿嘶哑的声音。

I AudioPolicyManager: loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf
device/mediatek/k50v1_66_cxo_pre/audio_policy.conf
audio_policy.conf的配置根据底层Audio驱动注册信息来完成,配置好audio_policy.conf,上层便可打开audio_policy.conf中定义的虚拟设备,进而自动选择相应的音频通路。

D AudioALSAStreamManager: +routingOutputDevice(), output_devices: 0x2 => 0x20 //Device routing通路切换的关键词

从UL0到UL1会经过speech enhancement的处理
UL0是数字端能抓取的最接近mic的data,
如果UL0有问题,可能有2种情况:
1.mic hw问题导致送给PMIC的模拟信号就有问题,mic hw也有可能概率出问题;
2.PMIC的问题,这个需要通过register来检查是不是出问题时PMIC有异常;

android L DRC的开启如下:

  1. ProjectConfig.mk
    MTK_BESLOUDNESS_SUPPORT=yes //为yes表示开启了DRC

  2. alps\frameworks\av\services\audioflinger\Android.mk
    #ifeq ($(strip $(MTK_BESLOUDNESS_SUPPORT)),yes)
    LOCAL_CFLAGS += -DMTK_AUDIOMIXER_ENABLE_DRC //需要有这行
    #endif
    连接 AudioTools 工具 ,选择里面的 “DRC” 选项 ,进行读入 参数是否 有效果

  3. 在setting菜单里面的喇叭音量助推器是个动态开关,开了数据会经过DRC处理,关了DRC算法不做任何处理。

ToneGenerator: getToneForRegion, tone 0, region 2, regionTone 0 按下数字0

没有声音是因为没有audiotrack资源可用,需要apk同事帮忙check 上层是否存在没有及时release audiotrack资源的情形。
10-13 09:32:56.090 15238 15315 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client
10-13 09:32:56.091 293 293 E AudioMixer: AudioMixer::getTrackName out of available tracks
10-13 09:32:56.091 293 293 E AudioFlinger: no more track names available

tar czvf mediatek.tar.gz mediatek/ 压缩下

来电铃声流程正常,log中有多个进程因为lowmemory被杀,是否是系统内存问题导致的声音卡顿.
<6>[14290.078905]<0> (0)[69:kswapd0]lowmemorykiller: Killing ‘nee.anti.stolen’ (21398), adj 18, score_adj 1000
播放音乐卡顿问题,不仅仅是cpu性能问题,还有emmc的读写瓶颈问题

在下面方法中加上打印语句,这样只要提供复现问题时的mtklog就可以打印 Audio 寄存器信息。
mt_soc_pcm_dl1_i2s0Dl1.c
static int mtk_pcm_I2S0dl1_start(struct snd_pcm_substream *substream)
{
。。。。
Ana_Log_Print(); //在return 0前加上这2行打印寄存器code.
Afe_Log_Print();

return 0;
}

MIC的BIAS电压就是为MIC内部的JFET提供合适的直接偏置电压,麦克里面有个FET管,而这个电压正是为放大管提供偏置电压的.这样的话麦克才能工作

对于短音频,由于MediaTek的HW buffer size比较大,afLatency也会比较大,在AudioTrack中计算的shared buffer size比较大,因此会发生短音频播放不出来的情况。如果要减小HW buffer size,可以降低afLatency的值,减小shared buffer size,可以播放短音频。减小HW buffer size,会增大功耗。

AudioALSAStreamOut.cpp
#ifdef MTK_DYNAMIC_CHANGE_HAL_BUFFER_SIZE
#define LOW_POWER_HAL_BUFFER_SIZE (45056)
#define LOW_LATENCY_HAL_BUFFER_SIZE (8192) Qualcomm可能 才1000左右
#endif

Android平台 统一固定采样率为 SampleRate = 44100
还是要按照MTK的设计, 不要固定采样率.
音乐采样率切换的时候只要正确配置我们PA NXP的采样率就没问题

理论上 FM外放时 采样率为 44100,AudioALSAFMController.cpp中
pAudioALSASampleRateController->setPrimaryStreamOutSampleRate(44100);
如果在device/gionee/gionee6753_66c_m0/audio_policy.conf 将sampling_rates固定为48000
则AudioALSAFMController.cpp 也应该修改pAudioALSASampleRateController->setPrimaryStreamOutSampleRate(480000)
上层与底层的采样率 要保持一致,上层会询问 kernel是否支持44100 或者48000
66 outputs {
67 primary {
68 sampling_rates 48000

增加文件 dump audio pcm
FILE *tmpFd;
tmpFd = fopen("/data/srspre.pcm", “ab+” );
if ( tmpFd < 0 ) {
ALOGE(“No dump file”);
}
else{
fwrite(mMixBuffer, mixBufferSize, 1, tmpFd);
fclose(tmpFd);
}

Mediatek\custom\common\kernel\imgsensor\src\kd_sensorlist.c
iWriteReg()中最前面加上g_pstI2Cclient->timing,表示设置I2C的速度
如果不设置,为默认值100K ,比如想将I2C的speed设置为400K,可将g_pstI2Cclient->timing设置为400K
msg.timing = I2C_MASTER_CLOCK 调整i2c传输速率,搜索关键词timing
i2c速率从 100k 提升到 400 k除了软件修改外,也需要硬件 将上拉电阻进行修改,这是因为如果硬件上不做相应适配,会导致I2C 通讯不稳定,影响到划 手势

MTK Audio PCM 工具解析步骤
1.af_mixer_pcm.pcm请使用44.1khz,双声道,32bit播放;

2.af_track_pcm_0xaac6d588.pcm请使用44.1khz,双声道,16bit播放;

3.streamout.pcm.0.AudioALSAPlaybackHandlerNormal.pcm请使用附件"PCM2WAV_Tool.rar"的工具pcm_to_wav_44.1kHz_Q9p23_stereo.exe转成wav播放;
(具体转换方法是将streamout.pcm.0.AudioALSAPlaybackHandlerNormal.pcm直接拖至工具pcm_to_wav_44.1kHz_Q9p23_stereo.exe)

4.streamout.pcm.0.AudioALSAStreamOut.pcm 请使用附件"PCM2WAV_Tool.rar"的工具pcm_to_wav_44.1kHz_32bit_stereo.exe转成wav播放.
(具体转换方法是将streamout.pcm.0.AudioALSAStreamOut.pcm直接拖至工具pcm_to_wav_44.1kHz_32bit_stereo.exe)

D SpeechDriverLAD: SetUplinkMute(), mute_on = 1, old mUplinkMuteOn = 0 在打电话的时候上行mic被静音了

一帧大小=一个采样点字节数 * 声道数

DRC:动态范围控制 (Dynamic range control) 常用于音频输出的柔和压限
DRC(dynamic range compress)动态范围压缩。其作用相当于power limiter来保护负载不被烧坏。当输出的音频信号不是很大的时候,系统会按照原来的设定输出,但是当输出的音频信号过大的时候,为了保护喇叭DRC会将输出信号的幅度进行压缩将其限制在一个范围内。因为输出的音频信号过大会引起削峰,从而引起音频失真,并且损坏喇叭,所以需要有DRC的作用来将输出限制在一定的范围内。在信号很小的时候DRC是不会起作用的,只有当输出信号的功率超过了你设定的DRC门限的时候DRC才会工作。

插入三段耳机后自动关闭micbias,Open 宏ACCDET_LOW_POWER 就可以实现.
在accdet.c文件中有定义宏
#define MICBIAS_DISALBE_TIMER (6*HZ)
修改这个值就可以修改 自动关闭micbias的时间

ACCDET_LOW_POWER
当插入三段耳机6s后自动关闭micbias,达到省电的目的
但是插入四段式 耳机后 mic将无法工作,也无法响应音量+ - 按键

耳机MIC_BIAS1配置为高 mic_bias
修改accdet.c中:
pmic_pwrap_write(ACCDET_PWM_WIDTH, REGISTER_VALUE(cust_headset_settings->pwm_width));
pmic_pwrap_write(ACCDET_PWM_THRESH, REGISTER_VALUE(cust_headset_settings->pwm_thresh));
将pwm_width 和pwm_thresh 设置为相等。

手机插入耳机时有POP音
若复现pop的方法是连续插拔耳机的话,那出现pop音属于目前ACCDET+EINT的已知问题。因为在拔出耳机时,Earbias上10uF大电容上的电并不能快速放掉,若在较短时间内再插入耳机,当插入过程中的耳机左右声道碰到MIC Pin时,就会听到pop noise。对于此问题暂时还没有解法。

如果采用 Smart PA,FM外放 要走Smart PA,ProjectConfig.mk必须要配置成 数字信号
MTK_FM_TX_AUDIO = FM_DIGITAL_OUTPUT
MTK_FM_RX_AUDIO = FM_DIGITAL_INPUT

audio_device.xml中的配置可以在 AudioALSADeviceConfigManager.cpp 进行查看
MTK的 Audio设备加载配置文件 为/system/etc # vim audio_device.xml 有关通路配置都在此文件

音频参数中 CFG_AUDIO_File.h Audio Data Structure definition
#define VER1_AUD_VOLUME_SPH \ 代表不同场景
56,68,84,96,108,120,132,0,0,0,0,0,0,0,0,\ normal mode
44,56,68,80,92,104,116,0,0,0,0,0,0,0,0,\ headset mode
48,60,72,84,96,108,120,0,0,0,0,0,0,0,0,\ Loudspeaker mode
40,52,64,76,88,100,112,0,0,0,0,0,0,0,0 Headset_Loudspeaker mode
status_t AudioALSAVolumeController::initVolumeController()中设置音频参数
AudioMTKPolicyManager.cpp

mic增益 只能更改模拟增益,底层 传输音频数据 都是通过 DMA方式
D/AudioALSAVolumeController( 257): SetLSpeakerGain,DegradedBGain=5

出现无声时
复现问题后 请打开Audio pcm log
出现无声时
手机USB连接电脑 输入如下adb命令
adb shell cat /sys/kernel/debug/mtksocaudio > D:afe_reg.txt
adb shell cat /sys/kernel/debug/mtksocanaaudio > D:pmic_reg.txt

然后在03 04打tone音看有没有声音
adb shell “echo Setafereg,regaddr,0x000001f0,regvalue,0x2c9a19a1 >/sys/kernel/debug/mtksocaudio”
关闭tone音
adb shell “echo Setafereg,regaddr,0x1f0,regvalue,0xF0000000 >/sys/kernel/debug/mtksocaudio”

在I5 I6打tone音看有没有声音
adb shell “echo Setafereg,regaddr,0x000001f0,regvalue,0x349a19a1 >/sys/kernel/debug/mtksocaudio”
关闭tone音
adb shell “echo Setafereg,regaddr,0x1f0,regvalue,0xF0000000 >/sys/kernel/debug/mtksocaudio”

Android 7.0 打开Audio pcm log方法如下:
1. 拨号界面输入“*#446633#”,进入工程模式
2. 选择Hardware Testing --> Audio–>Audio Logger
3. 勾选 Output 和Input 以及下面的AudioMixer ,分别点击确定即可。
4. 保存的log会在/sdcard/mtklog/audio_dump/ 即后缀为.pcm的log

抓音频 VM log的时候,进入工模里面audio-》speech enhancement-》common parameter 中index0改成6,这样抓出来的通话log才是完整的
打开VMlog方法如下:
1、拨号界面输入“*#446633#”,进入工程模式
2、选择Hardware Testing --> Audio–>Specch Logger
3、点击Enable speech log 复选框 选择 “Normal -VM+EPL”
4、点击Dump Specch Debug info按钮,显示成功即可。
5、保存的log会在/sdcard/mtklog/audio_dump/vm_log 即后缀为.vm的log。

通过 VM log 抓取到 AEC的参考信号 方法如下:

  1. 通话前请开启双方机器的 mtk log
  2. *#446633# 进入工程模式-》Hardware Testing -> Audio -> Speech Logger
    勾选 Enable speech log,选择 Normal-VM+EPL,点击Dump Specch Debug info按钮 开启VM log
  3. *#446633# 进入工程模式-》Hardware Testing -> Audio ->Speech Enhancement
    最上面一项请选择common Parameter , 请将第一个选项:Index 0的值从0 改写成 7,并点击最下面的“Set” 按钮使设置生效
    以上三个步骤缺一不可,将双方通话机器进行上述设置,这样才能抓取到 AEC的参考信号

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n ? 1 ) ! ? n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n?1)!?nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z ? 1 e ? t d t ? . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0?tz?1e?tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Rapha?l 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ??

  2. 注脚的解释 ??

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:47:18  更:2021-09-14 13:48:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:04:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码