zoukankan      html  css  js  c++  java
  • android4.1(QHD4500)声音驱动调试

    源码:https://192.168.0.220:8443/svn/juice/trunk/

    工具:QPST,QACT3.0

    准备工作:手机连接电脑,端口找到Qualcomm HS-USB Diagnostics 9027;adb执行下列命令:adb root on;adb remount ;adb shell ;mount -t debugfs debugfs /sys/kernel/debug

    步骤 :

    1、打开QACT3.0,connect,选中dsp calibration,5个选项中table_globol不使用,TABLE_AudioVolume, TABLE_VoiceVolume很少使用;TABLE_Audio用于调试媒体音,TABLE_Voice用于调试电话音.

      具体issue修复记录:

      a、甲和乙通话,甲使用QHD4500,乙使用任意手机,甲用手提模式(包括蓝牙耳机的手提模式,非免提),乙说话时可以听到自己声音的回音。此时需要修改的QHD4500的参数是:TABLE_voice -> BT_SCO_MIC & HANDSET_MIC & HEADSET_MIC (注意这层中没有修改SPKR_...)  ->  ECHOCANCELLER_LVHF  -> DENS_NL_atten,这个值从0x600改为0x0800,回音立刻消失,效果显著。

    注意:调试耳机听对方声音,应使用参数:HEADSET_SPKR_STEREO,  而HEADSET_SPKR_MONO是耳机模式下的免提,即插着耳机使用免提,很少用到。

    2、上一步使用connect是修改手机中的即时数据,修改本地代码方法是打开文件(以4500为例):multimedia/andio/audcal/acdbdata/src/SKU5/....4500.c

    3、编译:windows下执行modem_proc\build\ms\BuildM4500EShip.cmd

    4、烧写:Images\M4000E\fat.amss.bin

    ---------------------------------------------------------

    昨天与今天遇到一个问题,敏K把它叫叫做不生效:即用QACT3.0在代码中该变了相应的值,编译烧写后在线读值,却仍是原值;我反复核查,开始怀疑是编译、烧写的问题,后来怀疑是改错了值,直到把数据表中与那个原值相同的每一个值全部改变,读出来在线的仍是0x01c2。差点就要提case给高通了。再问了敏K一次,他突然说,你有没有改XXX,然后让我使用4500的.C文件,在这基础上改。我直接套用,改了个文件名,竟然,调试、测试,竟然直接成功,而且通话质量已然很高,说明4500和7026是可以套用音频文件的。后来发现免提通话模式有些许拖尾音,于是把NL从600改成800,done。

    ----------------------------------------------------------

    2013.05.22

    昨天见识了高通完善售后服务体系和系统的bug调试工具。

    support.cdmatech.com/login

    账号只有与高通有业务往来的公司才能申请,每个公司分为1个admin账号和若干分账号。每个账号都能提case,其case种类划分的细致程度绝对变态。提上去后,10+分钟就有回复,昨天与其互提comment七八个来回,虽然没有解决问题,但是已经可以推测到问题的原因。

    高通生产的机器都可以用它们专用的软件,通过串口或USB抓log,昨天我用的是QXDM。对方给我一个环境,我把这个环境文件载入QXDM后,USB连上手机(通过QPST接口),它就开始打印log,量非常大。从这些log中,可以用QCAT这个工具解析出通话的音频文件。

    -----------------------------------------------------------

    2013.05.24

    7026:免提通话时,己方不说话,对方能听到风声。注意己方不说话时对方能听到的噪音不属于尾音(echo),修改参数spk_mic_txAgc2 -> agc_exp_thores, 从1200改为1500,解决。

     ---------------------------------------------------------------

    2013.06.05

    Hi customer

    请在AudioHardware_cad.cpp里面查看下面的代码是否被调用:

    if (mDualMicEnabled && (mMode == AudioSystem::MODE_IN_CALL || mMode == AudioSystem::MODE_IN_COMMUNICATION)) {
    char platform_name[20];
    property_get("ro.hw_platform", platform_name, "msm8x25_sku5");

    if (new_snd_device == SND_DEVICE_HANDSET) {
    ALOGI("Routing audio to handset with DualMike enabled\n");
    new_snd_device = SND_DEVICE_IN_S_SADC_OUT_HANDSET;
    } else if (new_snd_device == SND_DEVICE_SPEAKER) {
    if(strncasecmp(platform_name, "msm8x25_sku5", 12) != 0){
    ALOGI("Routing audio to speakerphone with DualMike enabled\n");
    new_snd_device = SND_DEVICE_IN_S_SADC_OUT_SPEAKER_PHONE;
    }
    }
    }


    你可以通过adb shell cat /sys/devices/system/soc/soc0/hw_platform 查看你们的ro.hw_platform,如果上面的代码没有被调用,请根据你们具体的ro.hw_platform做修改。

    Thanks

  • 相关阅读:
    操作系统发展和分类
    操作系统绪论
    tomcat启动出现乱码解决方法
    Tomcat安装与卸载
    XML
    注解
    反射机制
    package和import机制
    访问控制权限
    MariaDB 配置远程访问权限
  • 原文地址:https://www.cnblogs.com/yiru/p/3071547.html
Copyright © 2011-2022 走看看