主要介绍modem的编译和3G 、4G手机modem的配置方法。
首先编译modem版本,大家了解到modem的编译指令,主要是把做好的配置文件导入到源代码中,之后两个命令就可以完成modem的编译。
第一:
./make.sh"MAGC6580_WE_L_HSPA.mak" new //运行bianyimodem版本的mak文件,比如LTTG和LWG DSDS和TSTS等等区别版本。
第二:
cd /home/android026/xiongshaohua/80_base/alps
device/mediatek/build/build/tools/modemRenameCopy.pl "/home/android026/xiongshaohua/modem/ALPS.L1.MP6.V2_MAGC6580_WE_L/MAGC6580_WE_L_GPRS_HSPA_MOLY.WR8.W1449.MD.WG.MP.V6" "MAGC6580_WE_L_HSPA"
拿80平台的作比较,第二步就是通过运行80_base源代码里的modemRenameCopy.pl文件,把编译好的文件压缩打包复制到一个叫temp_modem文件夹里。可以通过查看modemRenameCopy.pl文件查看运行过程。
基本上执行完这两步之后,modem的编译就算完成了,可以放入80_base.git中的源代码也在temp_modem文件夹中。为了完善简化编译步骤,大家可以自己去写一个编译脚本,方便自己编译modem版本(主要是节省modem配置文件的复制)。
其次我们了解下3G手机modem的配置问题,其实配置对于一个驱动工程师来说,不是一个很重要的点,因为这一步基本上都是射频工程师做。但遇到一些简单的修改,我们也需要会更改。
2G RX
以V107为例:
V107配置PA和TXM为 洛达AP6689+AP7115+AW9102
以一组LOW BAND 850TRX为例
/*MT6580RF*/ #define PDATA_GSM850_PR1 0x000000
/*MT6580RF*/ #define PDATA_GSM850_PR2 0x000006
/*MT6580RF*/ #define PDATA_GSM850_PR3 0x000000
其中PR1和PR3为起始和结束阶段取值为0x00
所以LB对应的900和850 PR2取值都是: 0x06 LB对应的PR2取值都是: 0x04
2G TX
#define PDATA_GSM850_PT1 (0x000000 |PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2 (0x000001 |PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2B (0x000009 |PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT3 (0x000000 )
#define PDATA_GSM850_PT2M1_G8 (0x000009|PDATA_8PSK|PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2M2_G8 (0x000009|PDATA_8PSK|PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2M1_8G (0x000001 |PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2M2_8G (0x000009 |PDATA_GSM_ERR_DET)
同理 PT1和PT3取值为0x00,分别代表意义为起始阶段和结束阶段。
其中PT2和PT2B的区别在于PT2的TX_EN引脚为至0;而PT2B TX_EN引脚要至1
所以LB 取值
#define PDATA_GSM850_PT2 (0x000001 |PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2B (0x000009 |PDATA_GSM_ERR_DET)
HB 取值
#define PDATA_GSM850_PT2 (0x000003 |PDATA_GSM_ERR_DET)
#define PDATA_GSM850_PT2B (0x00000B |PDATA_GSM_ERR_DET)
3G BAND1_OUTPUT_SEL和BAND1_CHANNEL_SEL配置
/*MT6166*/ #define BAND1_CHANNEL_SEL LNA3_HIGH_BAND
/*MT6166*/ #define BAND2_CHANNEL_SEL LNA1_HIGH_BAND
/*MT6166*/ #define BAND3_CHANNEL_SEL NON_USED_BAND
/*MT6166*/ #define BAND4_CHANNEL_SEL NON_USED_BAND
/*MT6166*/ #define BAND5_CHANNEL_SEL LNA2_LOW_BAND
/*MT6166*/ #define BAND6_CHANNEL_SEL NON_USED_BAND
/*MT6166*/ #define BAND8_CHANNEL_SEL LNA2_LOW_BAND
/*MT6166*/ #define BAND9_CHANNEL_SEL NON_USED_BAND
/*MT6166*/ #define BAND10_CHANNEL_SEL NON_USED_BAND
/*MT6166*/ #define BAND11_CHANNEL_SEL NON_USED_BAND
/*MT6166*/ #define BAND19_CHANNEL_SEL NON_USED_BAND
如图所示对应填写即可,其中 B8和B5可以用同一个通道 LNA_2来进行传输。
/*MT6166*/ #define BAND1_OUTPUT_SEL TX_HIGH_BAND2
/*MT6166*/ #define BAND2_OUTPUT_SEL TX_HIGH_BAND2
/*MT6166*/ #define BAND3_OUTPUT_SEL TX_NULL_BAND
/*MT6166*/ #define BAND4_OUTPUT_SEL TX_NULL_BAND
/*MT6166*/ #define BAND5_OUTPUT_SEL TX_LOW_BAND1
/*MT6166*/ #define BAND6_OUTPUT_SEL TX_NULL_BAND
/*MT6166*/ #define BAND8_OUTPUT_SEL TX_LOW_BAND1
/*MT6166*/ #define BAND9_OUTPUT_SEL TX_NULL_BAND
/*MT6166*/ #define BAND10_OUTPUT_SEL TX_NULL_BAND
/*MT6166*/ #define BAND11_OUTPUT_SEL TX_NULL_BAND
/*MT6166*/ #define BAND19_OUTPUT_SEL TX_NULL_BAND
如图所示,B1和B2既可以共用一个HB2也可以分别引出。而B5和B8只能共用一个B1
3G RX
/*MT6166*/ #define PDATA_BAND1_PR1 0x0005
/*MT6166*/ #define PDATA_BAND1_PR2 0x0005
/*MT6166*/ #define PDATA_BAND1_PR2B 0x0005
/*MT6166*/ #define PDATA_BAND1_PR3 0x0000
/*MT6166*/ #define PDATA_BAND1_PR1 0x0005
/*MT6166*/ #define PDATA_BAND1_PR2 0x0005
/*MT6166*/ #define PDATA_BAND1_PR2B 0x0005
/*MT6166*/ #define PDATA_BAND1_PR3 0x0000
这里PR1=PR2=PR2B,但PR3=0
3G TX
/*MT6166*/ #define PDATA_BAND1_PT1 0x0005
/*MT6166*/ #define PDATA_BAND1_PT2 0x0415
/*MT6166*/ #define PDATA_BAND1_PT2B 0x0415
/*MT6166*/ #define PDATA_BAND1_PT3 0x0000
0x0005只是选择BAND1这个通道,我们要确定选择的是发射,这就需要PA TX B1_EN至1,所以这里应该是0x0015
但是起始阶段 PT1=PR1=0X0005选择BAND1的阶段;
PT2=0x0015,但是由于BAND1和BAND2是通过双分器9102过来,通过BPI10和BPI11来控制是BAND1或者是BAND2;所以PT2=0x0415 ;BAND2=0x0c11。如果没有9102,那么只能选择B1或者B2其中一个。
这就是3G手机modem配置,需要根据PA、TXM等芯片规格来确定寄存器的值,然后根据原理图来配置modem文件。4G手机modem配置较为复杂,过一段时间在来上传。