开发常见问题培训_第1页
开发常见问题培训_第2页
开发常见问题培训_第3页
开发常见问题培训_第4页
开发常见问题培训_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、韦礼吉韦礼吉2014-08-14开发常见问题培训开发常见问题培训开发常见问题培训开发常见问题培训 省晶体AP端和modem端的修改。 AP端和modem端如何进行交互。 如何查看modem log。 如何查看GPS的log,对GPS信号弱的分析。 Fota升级的注意事项。 Recovery模式的路径。开发常见问题培训开发常见问题培训开发常见问题培训开发常见问题培训 如何做Fat分区。 如何编译各个模块最快。 系统各个模块的单步调试。 Git 的常用操作。开发常见问题培训开发常见问题培训一、省晶体AP端和modem端的修改。 怎么是省晶体? 在主板上省掉26M/xxxM晶体模块,这个是72和82

2、板子一个降成本的方案。 省晶体对哪些有影响? FM,蓝牙,GPS。FM和蓝牙不能正常启动,GPS 现象1:FM 和蓝牙不能正常启动。 现象2:GPS校准不过。 现象3:GPS定位慢或是漂移。省晶体省晶体AP端和端和modem端的修改端的修改省晶体要做哪些修改?省晶体省晶体AP端和端和modem端的修改端的修改省晶体要做哪些修改?省晶体省晶体AP端和端和modem端的修改端的修改省晶体AP端和modem端的修改。事故:传奇、万利达等一些客户都因为过晶体的问题出现过售后事故,几十K订单售后故障。还有因为晶体的影响到GPS信号问题,不止一个项目投入了硬件,软件,硬测,软测人力分析这类的GPS信号问题

3、。同时也对客户的也造成极大影响。警钟:每个新分支新项目要确认板子是晶体或是不省晶体。参考:MT6572_6582_GPS_clock_load_setting_SOP_v1.1.pdf省晶体省晶体AP端和端和modem端的修改端的修改二、AP端和modem端如何进行交互。 Modem的概念。 运行于系统之上的独立模块。主要处理网络通信协议,sim卡协议解析,基站信号处理等。相当于一个依赖于整个系统又独立系统之上的小系统。手机能不能通话,信号强度就取决取modem(软件上,硬件上的话就当让是天线信号强度)。开发过程中modem的最基本使用: 1.每套代码中都有一套modem的独立源码。 一般的文

4、件夹(modem_td 、modem_wcdma) 2.从硬件射频获取对应频段射频文件(l1d_custom_rf.h、ul1d_custom_rf.h)。AP端和端和modem端如何进行交互端如何进行交互 3.把头文件放到对应的modem路径( custommodeml1_rf MT6166_2G_CUSTOM , custommodemul1_rfCUSTOM_MT6166 )。 4.编译modem,(如82: ./make.sh EASTAEON82_WET_KK_HSPA.mak new) 5.copy 编译出来的modem生成文件到mediatek/custom/common/mod

5、em/ ,并在ProjectConfig.mk 指定CUSTOM_MODEM调用对应的modem (部分base合入了自动copy脚本, ./modemCopy )。 备注:每套代码的根木都有release note文件, (如:ReleaseNote_for_MT6572_KK1.MP6.xlsx),其中有一栏:Build_Configure_Modem_MOLY,告诉如何编译modem,该提取那些文件,如何命名。AP端和端和modem端如何进行交互端如何进行交互AP端和modem端如何进行交互。Modem的基本使用还包括: 锁卡锁网,无卡紧急拨号,切换卡槽。 锁卡:http:/192.16

6、8.0.119/gitweb/?p=ALPS.JB3.MP.V1_EASTAEON72_WET_JB3;a=commit;h=f4980d9d15b671b172aa2ba1d37cfea23d8b04fe 紧急拨号: 19/gitweb/?p=ALPS.JB3.MP.V1_EASTAEON72_WET_JB3;a=commit;h=3b23fd2ee06523191adb165eab7eb7796ec45118 切换卡槽:19/gitweb/?p=ALPS.JB9.MP.V1.4_EASTAEON92_WET_JB9;a=c

7、ommit;h=85f2b8c97b8bfed5cb4a5e8be93ad76b294bb67dAP端和modem端如何进行交互:AT指令 AT指令可以AP端,驱动层,modem端一通到底。 1.通过AT命令写imei号(程荣强)。 2.在82+90单卡版本上做双卡单待(郑从隆、奉光跃)。AP端和端和modem端如何进行交互端如何进行交互 1.通过AT命令写imei号(程荣强)。函数:void invokeOemRilRequestStrings(String strings, Message response);路径:frameworksopttelephonysrcjavacomandro

8、idinternaltelephonyPhone.java从路径可以看出,这接口是不对外开放的,如果第三方应用使用可以使用反射方法。 其中 参数strings 是具体的AT命令, response是一个回调方法,如果成功 (AsyncResult)response.obj). exception) = null ,否则调用失败注意事项1、AT指令读写数据一定要在phone进程中,否则会有权限异常,添加声明2、invokeOemRilRequestStrings数以phone类的成员函数,调用该函数前要实例化phone,具体如下AP端和端和modem端如何进行交互端如何进行交互得到phone的实

9、例化对象以后,就可以发送AT指令了,如:AP端和端和modem端如何进行交互端如何进行交互得到phone的实例化对象以后,就可以发送AT指令了,如:mResponseHander回调方法如下注意:如果AT命令有返回值的话 返回值保存在ar.result中;AP端和端和modem端如何进行交互端如何进行交互2.实现双卡单待时候,需要单独定制AT命令进行modem端与AP端交互(郑从隆):函数接口还是void invokeOemRilRequestStrings(String strings, Message response);具体的的一个发送函数参数使用:AP端和端和modem端如何进行交互端

10、如何进行交互如何处理回调:AP端和端和modem端如何进行交互端如何进行交互 MTK modem端开放的客制化AT命令:路径: modem_v4/custom/modem/common/ps/customer_at_command.c 函数:kal_bool custom_command_hdlr(char *full_cmd_string)AP端和端和modem端如何进行交互端如何进行交互AP端和端和modem端如何进行交互端如何进行交互 扩展内容:如何重启modem。 MTK提供的方案是: RIL.java中resetRadio这个方法来实现。 通过搜java代码: frameworks/

11、opt/telephony/src/java/com/android/internal/telephony/uicc/UiccController.java AP端和端和modem端如何进行交互端如何进行交互 扩展内容:如何重启modem。 结论:重启modem上层只需发送广播。 如何查看如何查看modem log三、如何查看modem log。Modem log。开发一个功能或是解决故障, 驱动:串口log、kenerl log 、boot log。 上层:单步调试、adb logcat、mobile log。 案列 上次我们开发modem端的功能,无法查看modem端的log,我们就靠修改

12、了之后烧机验证,同步提log给MTK分析。这个开发周期消耗了2到3倍或是更长的时间周期。mtk后面释放了ELT工具来查看modem 端的log。 如何查看如何查看modem log 使用ELT准备工作:对于modem issue analysis 所需log 和 文件 1. mtklogger下开启的ModemLog, MobileLog, NetworkLog 2. 对应版本的database文件。如何查看如何查看modem log 文档说明:ELT软件包Document目录: ELT_Logging.pdf ELT_User_Manual_Customer.pdf文档中有比较全面的log查

13、看操作。1.设置data base 路径。2.打开mtklog=extmdlog =ExtMDLog_2014_0601_xxxx_EE_ASSERT = ExtMDLog_2014_0601_xxxx.muxraw文件。3.Loading完成之后=view =对应的trace。(建议使用system trace接口) AP端和端和modem端如何进行交互端如何进行交互 1.设置data base:AP端和端和modem端如何进行交互端如何进行交互 2.打开xxxx.muxraw文件。AP端和端和modem端如何进行交互端如何进行交互 3.搜索查看自己添加的log内容:AP端和端和modem端

14、如何进行交互端如何进行交互 ELT查看modem log的不完善部分: 无法查看modem boot up部分的log。MTK提供的办法是(MTK针对modem培训时):1.打开project.mk文件中对用宏开关。 2.xxx步骤之后转换成串口log来查看。 这部分内容,就查看mtk modem培训的相关资料。AP端和端和modem端如何进行交互端如何进行交互四、如何查看GPS log如何查看如何查看GPS logGPS Field Test log 捉取如何分析GPSLogGPSLog有两种类型的文件。文件内部存储的只是$GP开口的log,那么这种log称为NMEA log;文件内部除了$

15、GP的log,还有其他的一些log,例如$PMTK的log等等,这种log称为GPS DebugLog。NMEA 分析方法GPGGA中可以得到UTC时间、经纬度、当前定位状态、使用的卫星数目、HDOP等等;GPGSA中可以得到定位类型、所使用到的卫星ID;GPGSV中可以得到可视卫星的数目,然后会一次列举出每科可视卫星的ID、方位角、仰角和信号强度;GPRMC中可以得到UTC时间、定位状态、经纬度、速度、UTC日期;GPACCURACY是MTK加入的获取定位精度的语句。缺少哪些辅助资讯如果产看是否触发AGPS,需要从GPS debug Log中分析,搜索PMTK730这个语句,因为辅助数据主要

16、是看时间、位置、星历这三个。$PMTK730,0,0,0,1,0,1,1,0:从这个语句中的一个1表示缺少星历、第二个1表示缺少位置、第三个1表示缺少时间。PMTK710表示获取星历辅助数据,PMTK712表示获取时间辅助资讯,PMTK713表示缺少位置辅助资讯。 查看卫星分布如何通过看GPGSV里的卫星的方位角和仰角可以判断卫星的位置,通过判断GPGSA里的卫星可以知道当前定位使用了哪些卫星,这样就可以知道当前使用定位计算的这些卫星的卫星分布如何、信号强度如何。通过GPGGA里的HDOP来判断当前卫星的分布如何,这个值越小越好。卫星分布越好,越有可能产生的定位精度越高。所以HDOP是定位精度

17、的充分但非必要条件。当前有哪些星历被保存通过搜索GPS Debug Log文件中PMTKEPH,该关键词会告诉你当前有哪些卫星是已经解析下来辅助资讯的。例如PMTKEPH,3,12,15,18表示有3颗卫星已经解析下来了星历数据,他们的卫星ID 是12、15、18.如何判断GPS已经正常工作GPS工作起来首先会在GPS debug Log中打印出来PMTK010的字样,所以通过判断这个可以知道GPS是否有正常工作起来。星历数据是来自EPO、HotStill还是实时解算如果知道当前使用到的卫星星历数据是来自实时接收解算下来的星历、还是EPP,或者是HotStill,同样也是通过判断PMTKEPH

18、。如果该关键字后面跟着的卫星ID是正整数,那么是实时接收解算下来的星历;如果是浮点数,而且是负数,但是小数点后都是0,表示的是EPO;如果是浮点数,而且是负数,但是小数点后的是非0,表示的是Hotstill;判断AGPS/EPO/HotStill是否工作从GPS Debug log中搜索到wk,epo表示EPO有工作;从GPS debug log中搜索到wkbee表示Hotstill有工作;从GPS Debug log中搜索到wkssi表示AGPS有工作。H/W/C/F GPS Start通过从打开GPS的第一条GPGGA语句来确认是什么启动方式,如果该语句中的时间是235944,那么表示没有

19、时间辅助资讯,这是完全冷启动;如果有时间信息,但是位置是8960.0000,N,0000.0000,E,这表示是冷启动;如果既有时间也有位置,可以看第一条PMTKEPH中是几颗有卫星的星历,如果一颗没有,那么这是暖启动;如果发现也有位置、时间、而且至少4颗以上的星历,那么这是热启动。星历数据是来自EPO、HotStill还是实时解算如果知道当前使用到的卫星星历数据是来自实时接收解算下来的星历、还是EPP,或者是HotStill,同样也是通过判断PMTKEPH。如果该关键字后面跟着的卫星ID是正整数,那么是实时接收解算下来的星历;如果是浮点数,而且是负数,但是小数点后都是0,表示的是EPO;如果

20、是浮点数,而且是负数,但是小数点后的是非0,表示的是Hotstill;判断AGPS/EPO/HotStill是否工作从GPS Debug log中搜索到wk,epo表示EPO有工作;从GPS debug log中搜索到wkbee表示Hotstill有工作;从GPS Debug log中搜索到wkssi表示AGPS有工作。H/W/C/F GPS Start通过从打开GPS的第一条GPGGA语句来确认是什么启动方式,如果该语句中的时间是235944,那么表示没有时间辅助资讯,这是完全冷启动;如果有时间信息,但是位置是8960.0000,N,0000.0000,E,这表示是冷启动;如果既有时间也有位

21、置,可以看第一条PMTKEPH中是几颗有卫星的星历,如果一颗没有,那么这是暖启动;如果发现也有位置、时间、而且至少4颗以上的星历,那么这是热启动。DESCRIPTIONGPS 搜星慢,信号弱,定位慢,定位漂移问题 SOLUTION1.若客户有遇到该类GPS Performance issue,请到DCC上下载以下文档,参考文档进行检查。MTK_GPS_Phone_SQC_Test_20120220_Sim.pdf。2.若确定跟测试环境无关,仍有问题的话,请提交eservice,并附上复现问题的gps debug log and mobile log.3.抓取gps debug log and

22、mobile log的方法请到DCC上下载以下文档。GPS-Logs-SOP.pptx.五、Fota升级的注意事项。 概念: FOTA(Firmware Over-The-Air)移动终端的空中下载软件升级,指通过云端升级技术。 现状: 各个平台默认集成的广升FOTA,部分客户客户用GMOBI,还有一些客户自己集成自己脚本(如:桑菲,其他一些海外客户直接提供的移植代码)。 有不少项目在FOTA这个问题耗了不少时间,或是关键要转量产的时候被FOTA的问题卡住,delay量产时间。 Fota升级的注意事项升级的注意事项FOTA升级的两种模式: a.查分包升级.(同一个项目不同版本间) b.整包升级

23、.(大版本的升级:4.2=4.4)基本常识:FOTA升级成功的前提:SD卡升级包能正常升级。SD卡升级成功的前提:软件版本一定是otapackage命令之后拷贝的。./mk -o=TARGET_BUILD_VARIANT=user eastaeon89_wet_jb2 new & ./mk -o=TARGET_BUILD_VARIANT=user eastaeon89_wet_jb2 otapackage & ./autoCopy Fota升级的注意事项升级的注意事项 FOTA升级注意事项升级注意事项1、对于支持FOTA功能的软件来说执行完make otapackage才表示版

24、本真正编译完成,所以打包或备份img 文件需要在make otapackage之后执行,如果直接new完就执行打包戒备份img 会造成升级的源版本不制作差分包的源版本不一致,从而导致升级失败; 2、同 一 个 项 目 的 手机 型 字 段duct.mode 是 相 同 的 , 该 项 目 下 每 一 版 正 式 软 件 的 版 本 号ro.build.display.id应该是不一样的; Fota升级的注意事项升级的注意事项 FOTA升级注意事项升级注意事项3、APK、铃声等资源的文件名不能含有中文、空格等特殊字符,请规范命名文件,否则otapackage编译会出错; 4、项目的签

25、名一旦确认下来就不能修改,特别是对于量产的版本; 5、请注意user和eng版本之间不要互相升级。 6、不支持分区表修改的升级,分区的更改不能通过差分包升级,量产后的版本请勿修改分区表 Fota升级的注意事项升级的注意事项 FOTA的常见问题(针对广升):Fota升级的注意事项升级的注意事项Fota升级的注意事项升级的注意事项六、Recovery模式路径JB版本:FAQ04135RecoveryRecovery mode下如何选择SD卡进行系统升级可以根据当前系统Flash的类型以及Recovery.fstab (mediatekconfigProject)中fstype是否一致来判断Reco

26、very.fstab 配置是否正确,分为两种情况,具体code见文roots.c(jelly bean版是roots.cpp),文件所在路径是alpsbootablerecovery。一)Recovery.fstab 配置正确1) 使用外置SD升级, void load_volume_table() . device_volumesnum_volumes.device = strdup(/dev/block/mmcblk1); device_volumesnum_volumes.device2 =strdup(/dev/block/mmcblk1p1); . Fota升级的注意事项升级的注意事

27、项 2) 使用内置置SD升级,代码修改如下(roots.c,jelly bean中是roots.cpp,alpsbootablerecovery) void load_volume_table() . device_volumesnum_volumes.device = strdup(devFAT_INDEX); device_volumesnum_volumes.device2 = device2 ? strdup(device2) :NULL; . 3)如果有外置SD卡,使用外置升级,如果没有外置SD卡,使用内置SD卡升 void load_volume_table() . device_volumesnum_volumes.device = strdup(/dev/block/mmcblk1p1); if (has_fat) device_volumesnum_volumes.device2 = strdup(devFAT_INDEX); else device_volumesnum_volumes.device2 =strdup(/dev/block/mmcblk1); . A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论