【Android驱动12】Modem编译和sim卡配置检测过程

一,Modem编译

1.1 查看ReleseNote发现需要查看"Build_Configure_Modem_MOLY"这张表,解压MT67xx_(xxx)_MOLY.LR9.W1444.MD.LWTG.MP.Vx.tar.gz到某文件,并在make目录下查看支持的配置信息
在这里插入图片描述

1.2 执行的命令,开始编译modem,则是

./make.sh "SM67xx(Lxx_xxx).mak" new

1.3 执行
perl device/mediatek/build/build/tools/modemRenameCopy.pl [Modem 代码路径] [编译Modem所使用的.mak文件 ],如

perl *****/modemRenameCopy.pl  ./Moly/  MT67xx_LTG_DSDS

自动为所要复制到alps/vendor/mediatek/proprietary/modem/${modem} 下的文件重命名,并生成一个Android.mk文件,alps/vendor/mediatek/proprietary/该路径下是没有modem这个文件夹的,需要自己创建。

请确保在alps/vendor/mediatek/proprietary/modem/中有一个Android.mk。 你可以从alps/device/mediatek/build/build/tools/modem/modem_Android.mk复制到alps/vendor/mediatek/proprietary/modem/Android.mk

1.4 在alps/device/ c o m p a n y / {company}/ company/{project}/ProjectConfig.mk找到相应的ProjectConfig.mk,配置CUSTOM_MODEM,保证跟自己创建的目录alps/vendor/mediatek/proprietary/modem/${modem}名称一致。

然后再/alps下重新编译

1.5 PUSH modem 到手机中进行调
编译eng或者userdebug版本:
userdebug:

adb shell setprop service.adb.root 1 

再进入Settings->Developer options,取消 USB debugging,然后再重新勾选上,即可获得root权限
eng版本可省略这一步。

adb remount
adb push xxxx.xx  /system/etc/firmware/

modem文件清单:

ltg: catcher_filter_1_ltg_n.bin dsp_1_ltg_n.bin modem_1_ltg_n.img
lwg: catcher_filter_1_lwg_n.bin dsp_1_lwg_n.bin modem_1_lwg_n.img
c2k: boot_3_3g_n.rom fsm_cust_df_3_3g_n.img fsm_rf_df_3_3g_n.img fsm_rw_df_3_3g_n.img modem_3_3g_n.img

3、重启机器

adb reboot 

二,sim卡驱动配置

2.1 使能sim卡

sim卡的正常工作设计到modem,modem则需要你们根据具体情况编译了

device/mediateksample/$(yourprojectname)/ProjectConfig.mk

CUSTOM_MODEM=(主make文件modem的名称,不要带中文)

在vendor_ap_s0/vendor/mediatek/proprietary/modem/文件夹下导入编译好的modem文件夹,里面modem文件夹名字与主make里面保持一致

如果要更换modem,最好删除out目录下modem文件夹里面的打包文件,在编译

out/soong/.intermediates/system/sepolicy/vendor_property_contexts/android_common/gen/namespace_checked/vendor/mediatek/proprietary/modem

下载烧录到手机,系统设置里面看基带版本是否有定义,有定义代表modem编进去了,不过sim卡能正常使用还是在根据原理图在dws里面配置引脚

只想保留sim1卡槽,双卡配置成单卡

device/mediateksample/$(yourprojectname)/ProjectConfig.mk

MTK_MULTI_SIM_SUPPORT = dsds  //双卡       ss   //单卡

2.2 sim卡热插拔

device/mediateksample/$(yourprojectname)/ProjectConfig.mk

MTK_SIM_HOT_SWAP= yes
MTK_SIM_HOT_SWAP_COMMON_SLOT = yes      //打开关于sim卡热插拔的宏开关

2.3 sim卡的eint,无热插拔可以不配置,需要该功能就需要配置了

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/dws/$(MTK_PLATFORM)/$(yourprojectname).dws

vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$(yourprojectname)/dct/dct/codegen.dws

vendor/mediatek/proprietary/custom/$(yourprojectname)/kernel/dct/dct/codegen.dws
sim卡:

			<gpio35>
                <eint_mode>false</eint_mode>
                <def_mode>1</def_mode>
                <inpull_en>true</inpull_en>
                <inpull_selhigh>true</inpull_selhigh>
                <def_dir>IN</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_SIM2_SIO</varName0>
                <smt>false</smt>
                <ies>true</ies>
            </gpio35>
            <gpio36>
                <eint_mode>false</eint_mode>
                <def_mode>1</def_mode>
                <inpull_en>false</inpull_en>
                <inpull_selhigh>false</inpull_selhigh>
                <def_dir>OUT</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_SIM2_SRST</varName0>
                <smt>false</smt>
                <ies>true</ies>
            </gpio36>
            <gpio37>
                <eint_mode>false</eint_mode>
                <def_mode>1</def_mode>
                <inpull_en>false</inpull_en>
                <inpull_selhigh>false</inpull_selhigh>
                <def_dir>OUT</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_SIM2_SCLK</varName0>
                <smt>false</smt>
                <ies>true</ies>
            </gpio37>
            <gpio38>
                <eint_mode>false</eint_mode>
                <def_mode>1</def_mode>
                <inpull_en>false</inpull_en>
                <inpull_selhigh>false</inpull_selhigh>
                <def_dir>OUT</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_SIM1_SCLK</varName0>
                <smt>false</smt>
                <ies>true</ies>
            </gpio38>
            <gpio39>
                <eint_mode>false</eint_mode>
                <def_mode>1</def_mode>
                <inpull_en>false</inpull_en>
                <inpull_selhigh>false</inpull_selhigh>
                <def_dir>OUT</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_SIM1_SRST</varName0>
                <smt>false</smt>
                <ies>true</ies>
            </gpio39>
            <gpio40>
                <eint_mode>false</eint_mode>
                <def_mode>1</def_mode>
                <inpull_en>true</inpull_en>
                <inpull_selhigh>true</inpull_selhigh>
                <def_dir>IN</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_SIM1_SIO</varName0>
                <smt>false</smt>
                <ies>true</ies>
            </gpio40>

具体引脚使用你们看原理图,仅供参考

三,SIM卡不识或者掉卡简单分析

在这里插入图片描述

3.1 不识卡问题

不识卡的主要原因:

		Modem发生错误,异常或者重启。 
		SIM卡热插拔配置不正确引起的不识卡 
		某些特殊的卡与MTK平台兼容的问题

3.2 识卡慢的问题

①识卡过程中拔出SIM卡,再插入,此时SIM driver会认为是掉卡情况,会执行full recovery救卡动作,将会耗费一定的时间初始化SIM卡。梳理SIM卡流程及测试操作步骤。 
②是否热插拔功能引起,让HW跟进。

3.3 SIM卡出现概率性掉卡,是什么原因,该如何解决?

1,概率性掉卡问题一般是HW干扰导致。
SW上针对掉卡现象的救卡流程为首先是三次fast recovery,三次reset sim来重新识别卡。
若三次fast recovery没能将卡救回来,接着再启动full recovery enhancement timer,此timer interval默认为30s,直到将卡救回来。
若是full recovery timer来救卡,网络恢复较慢,会再次出现”XXXX欢迎您”欢迎界面。

2,从HW上彻底排查干扰源,以HW手段解决。
1) SIM受到干扰可分为两大类:
SIM IO受到干扰,这种情况一般是layout导致,数字信号受到干扰0->1,1->0。1.8V的SIM更容易受到这种干扰。
SIM本身受到干扰,一般是在PA发射信号时表现比较显著。

2) 可通过SIM driver log粗略定位是IO受到干扰还是SIM本身受到干扰:
SIM掉卡后,首先会有三次fast recovery捡卡机制,若这三次recovery,能将卡找回来,表明受到的是IO干扰,通过reset卡,避开了信号受干扰的时刻,然后能将SIM卡找回来。
若三次fast recovery不能将卡找回来,表明SIM本身受到干扰。

HW实验方法:
(1)检查layout走线;
(2) 量SIM POWER,IO波形,通过波形确认是否有noise;
(3)SIM1_DATA,SIM1_CLK,SIM1_RST 上分别加12pF 的电容;
(4)用导电箔将SIM包起来,并良好的导地;
(5)降低天线发射功率改变天线发射方向

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤舟簔笠翁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值