微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > FM调试文档

FM调试文档

时间:10-02 整理:3721RD 点击:
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_SUPPORT、MTK_FM_CHIP、CONFIG_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下的fm的bin文件,目前只针对6628。
1.1.2 alps\mediatek\external\fmradio\fmr\Android.mk负责产生libfmjni.so和
libfmar1000.so、libfmmt6616.so、libfmMT6620.so、libfmmt6626.so、
libfmmt6626.so、libfmMT6628.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_ON、TX_ON、OFF。
如何读取?
可以使用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_scan和fmr_scan函数。
在main_log中也会看到搜到的结果。
在com_hw_scan中有如下打印:


对于6620,只进行一次假台过滤。
对于6628,会进行两次假台过滤,除此之外,还会进行相邻台检查。
对于搜台门限修改相关的文档,请参考DMS上的文档Soft-mute gain setting for
MT6620_v4.0.pptx和FM 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.boot和kernel_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”的日志,这种情况下一
般可以同步检查seek、tune等操作是否正常
如果底层有上报电台,可是在上层APK却没有任何电台显示,那么一定是在JNI层的电台数据处理中
的问题,可以通过JNI层打印出来的log(fmr_scan、fmr_seek、com_hw_scan等接口)。
l 在排除以上的case之后,可以通过调节一些门限值。因为在main_log中会打印出搜出来的电台
的CQI参数,目前只是将搜到的电台的RSSI打印出来,那么可以根据这些打印的日志进行调节。如
果搜台数目太多,可以提高门限值。
l 另外如果在搜台的过程中,某些电台经常出现,那么可以修改fmlib_cust.h文件


NOTE:
对于搜台门限修改相关的文档,请参考DMS上的文档Soft-mute gain setting for
MT6620_v4.0.pptx和FM 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给静音,也是没有声音的。

谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top