Android FM调试文档

来源:互联网 发布:注册表编辑器删除软件 编辑:程序博客网 时间:2024/05/16 12:13

前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         CSDN
http://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文

 

Contents

       FM调试文档

FM编译失败的问题

FM加载驱动ko文件导致的问题

获取FM的一系列配置信息

如何多打印一些log,从而更容易确认问题点

Seek流程的分析

Scan流程的分析

打开FM的流程问题

关闭FM的流程问题

如何解决搜台问题

FM没有声音的问题

 

 


 

FM调试文档

针对FM问题如何进行调试,该文档主要是从FM的驱动和JNI层软体流程方面进行介绍。

依据软体版本:ALPS.JB.MP

 

FM编译失败的问题

首先分析

alps\mediatek\config\$Project\ProjectConfig.mk

alps\mediatek\config\$Project \autoconfig\kconfig\project

这两支文件中和fm相关的变量设置,例如MTK_FM_SUPPORTMTK_FM_CHIPCONFIG_MTK_FM(这个变量十分重要,决定FM模块是否编译)。

1.1          JNI层编译

编译命令:mk $project mm mediatek\external\fmradio\

1.1.1     alps\mediatek\external\fmradio\Android.mk负责产生linux文件系统中/system/etc/firmware下的fmbin文件,目前只针对6628

1.1.2     alps\mediatek\external\fmradio\fmr\Android.mk负责产生libfmjni.solibfmar1000.solibfmmt6616.solibfmmt6620.solibfmmt6626.solibfmmt6626.solibfmmt6628.so

1.1.3     alps\mediatek\external\fmradio\custom\Android.mk负责产生libfmcust.so

1.2          Kernel层编译

编译命令:

l  MT6620         mk $project n k mediatek\kernel\drivers\combo\drv_fm

l  MT6628/6626 mk $project n k mediatek\kernel\drivers\fmradio

1.2.1     MT6620

1.2.1.1    alps\mediatek\kernel\drivers\combo\Makefile

1.2.1.2    alps\mediatek\kernel\drivers\combo\drv_fm\Makefile

1.2.1.3    alps\mediatek\kernel\drivers\combo\drv_fm\public\Makefile

1.2.1.4    alps\mediatek\kernel\drivers\combo\drv_fm\private\Makefile

1.2.2     MT6626+MT6628

1.2.2.1    alps\mediatek\kernel\drivers\fmradio\Makefile

1.2.2.2    alps\mediatek\kernel\drivers\fmradio\private\Makefile

FM加载驱动ko文件导致的问题

         正常模式:alps\mediatek\config\$project \ init.project.rc

         Meta模式:alps\mediatek\config\$project \meta_init.project.rc

         工厂模式:alps\mediatek\custom\$project \factory\init.rc

         主要是在相关的init文件中加载FM的文件和编译FM driver产生的ko是否一致。

获取FM的一系列配置信息

一般在分析客户提供的问题log时,迫切需要知道客户使用的FM是哪颗chip、长短天线设置的门限、波段范围、搜台步进等等一系列信息。通过查看这些信息,可以辅助我们确定修改是否有生效。

         在加载驱动ko文件的时候会打印这些信息,具体代码位置。

l  MT6620

下面的log信息会出现在kernel_log.boot中。

l  MT6628/6626

下面的log信息会出现在kernel_log.boot中。

可以发现有两次更改配置数据,以最后一次为效。

l  另外在JNI层也有一个log信息。

下面的log信息会出现在main_log中。

如何多打印一些log,从而更容易确认问题点

FM driver加载的时候,在/proc下创建了一个fm文件,可以对其读写。

l  对其读,可以知道当前FM的状态是RX_ONTX_ONOFF

如何读取?

可以使用adb

                   Adb shell

                   Cat /proc/fm

l  对其写,可以修改调试级别,从而可以打印出更多的kernel log

如何写?

可以使用adb

Adb shell

Echo ffffffff > /proc/fm

Seek流程的分析

目前支持两种seek方式:

从当前电台开始seek,使用的接口是seek

从指定电台开始seek,使用的接口是seeknew;

以下主要分析第一种方式,主要分析main_log即可确认问题。

         

         fmr_seek函数中可以看到seek的流程,会进行两种假台过滤。

Scan流程的分析

类似于seek,请分析com_hw_scanfmr_scan函数。

main_log中也会看到搜到的结果。

com_hw_scan中有如下打印:

对于6620,只进行一次假台过滤。

对于6628,会进行两次假台过滤,除此之外,还会进行相邻台检查。

对于搜台门限修改相关的文档,请参考DMS上的文档Soft-mute gain setting for MT6620_v4.0.pptxFM scan threshold setting for MT6628_v1.0.pptx

路径:/SW/3G Phone Data/Smart Phone/Standard Package/MT6577 SW Doc Package/BSP/Drivers

/SW/3G Phone Data/Smart Phone/Standard Package/MT6575 SW Doc Package/BSP/Drivers

打开FM的流程问题

请检查fm_ops_open接口,如果添加任何硬件相关的操作,都可以在该接口中操作。

对整个chip的上电初始化引脚,请参考mtk_wcn_cmb_hw_pwr_on

从对chip引脚的初始化流程来看,可以找到需要在dws配置工具中需要配置的GPIO

配置GPIO请参考online.mediatek.com,搜索FAQ03803

关闭FM的流程问题

请检查fm_ops_release接口,如果添加任何硬件相关的操作,都可以在该接口中操作。

对整个chip的上电初始化引脚,请参考mtk_wcn_cmb_hw_pwr_off

从对chip引脚的初始化流程来看,可以找到需要在dws配置工具中需要配置的GPIO

配置GPIO请参考online.mediatek.com,搜索FAQ03803

如何解决搜台问题

概括搜台问题的类型:搜不到台、搜台少、假台多。

对于搜不到台的问题,一般比较容易检查。

l  检查fm driver加载和打开是否成功,可以在kernel_log.bootkernel_log中搜索patch关键字和fm关键字。对于6620,打开第一个模块的时候,会加载mt6620_patch_e3_hdr.bin,对于6628会加载mt6628_patch_e2_hdlr.bin。打开FM成功后,会有日志。

对于6620

21787 <4>[   78.442230] (0)[12752:Thread-129][FM_DRV] [D_MAIN]fm_ops_open WMT turn on FM OK, [fm->chipon=1]!

对于6628

0269 <3>[   57.671087] [WMT-IC][I]mt6628_patch_dwn:wmt_core: patch dwn:0 frag(21, 176) ok

0285 <1>[   57.709937] [FM_ALT | CHIP]WMT turn on FM OK!

l  排除环境的问题,可以采用对比机对比做实验。

l  在排除环境问题之后,从mobile log中看问题原体原因。首先可以检查kernel log是否有在搜台的最大时间内将电台上报,如果失败,可以看到“fm scan failed”的日志,这种情况下一般可以同步检查seektune等操作是否正常

如果底层有上报电台,可是在上层APK却没有任何电台显示,那么一定是在JNI层的电台数据处理中的问题,可以通过JNI层打印出来的logfmr_scanfmr_seekcom_hw_scan等接口)。

l  在排除以上的case之后,可以通过调节一些门限值。因为在main_log中会打印出搜出来的电台的CQI参数,目前只是将搜到的电台的RSSI打印出来,那么可以根据这些打印的日志进行调节。如果搜台数目太多,可以提高门限值。

l  另外如果在搜台的过程中,某些电台经常出现,那么可以修改fmlib_cust.h文件

NOTE:

对于搜台门限修改相关的文档,请参考DMS上的文档Soft-mute gain setting for MT6620_v4.0.pptxFM scan threshold setting for MT6628_v1.0.pptx

 

FM没有声音的问题

l  检查硬件电路是否都有接通,尤其是音频相关的电路部分。

l  如果是digital音频方式,一定要检查下GPIO引脚配置是否成功,判断依据:是否有执行到wmt_plat_i2s_ctrl函数,并且有成功配置GPIO模式为I2S的模式。

针对I2S GPIO配置的问题,请访问online.mediatek.com,搜索FAQ03879

JAVA层需要enableFMAudio,这样支持开通了与音频播放相关的控制部分,另外如果有将FM chip给静音,也是没有声音的。


原创粉丝点击