MTK modem编译

时间:2024-03-30 08:31:09

一.MTK Modem原码编译说明
1. 编译环境,我们本地使用虚拟机安装Ubuntu系统来编译代码。

2. 使用repo命令或者脚本从服务器上下载项目modem代码到Ubuntu本地。
  类似于下载AP代码,进入Jenkins的modem编译输出文件:
  底版本分支:
/bin/repo init -u ssh://192.168.1.161:29418/MTK/manifest -b master -m Mtk_Vendor_6763_8.0_Cta_Modem.xml  --no-repo-verify
  差异化代码分支:
/bin/repo init -u ssh://192.168.1.161:29418/XTHINK/manifest -b master -m H32_8.1_Comm_Modem.xml  --no-repo-verify

 ~/repo/repo sync -c -q -j8;同步代码

3. 在mcu\common\tools\下面新建GCC\MIPS\4.9.2\linux目录,把GCC工具解压后拷贝到目录下mcu\common\tools\GCC\MIPS\4.9.2\linux,GCC工具可以在如下地址获取:\\192.168.1.160\ShareDocuments\Software\编译资料\modem编译需要工具\Codescape.GNU.Tools.Package.2016.05-08.for.MIPS.MTI.Bare.Metal.CentOS-5.x86_64.tar(因为服务器上下载的代码没有 GCC和NDK)
MTK modem编译

4. 在目录下modem\mcu\ 通过命令执行m脚本启动编译,编译命令为:
./m "TK_MD_BASIC(LWCTG_R2_6763).mak" new,其中第二个参数根据项目平台和网络制式配置来选择,可以从目录mcu\make\projects下选择不同的编译mak文件。(如果之前有编译就./m "TK_MD_BASIC(LWCTG_R3_6739).mak" clean再new)
MTK modem编译

本次编译结果:

MTK modem编译

第二个参数

MTK modem编译

mak文件可以参考modem编译参数配置:

MTK modem编译

5. 第4步执行完成之后,在Android原码目录device\mediatek\build\build\tools\ 下执行命令来重命令打包modem镜像,在Linux环境下进入如上Android目录,执行命令./modemRenameCopy.pl ~/code/android_source/mtk/modemcode/p56a/modem/mcu "TK_MD_BASIC(LWCTG_R2_6763).mak",然后在modem代码目录modem\mcu\temp_modem下会生成新的modem镜像文件。(注意文件路径)
MTK modem编译

 

MTK modem编译

本次编译结果:
MTK modem编译
结果存放位置:

将md1bin.img修改成md1img.img和md1dsp.img一起放入到版本目录中,就可以用于刷机
 
对于9.0项目需要增加如下步骤:
6.  把NDK工具拷贝到modem目录modem\apps\NDK\android-ndk-r14b下,然后在目录modem\apps下执行命令./build.sh clean,build,pack all GEN93_USER来编译app。NDK工具获取地址:\\192.168.1.160\ShareDocuments\Software\编译资料\modem编译需要工具\android-ndk-r14b-linux-x86_64.zip
在apps目录下面新建NDK,解压android-ndk-r14b-linux-x86_64.zip得到android-ndk-r14b目录
 
 
编译完成,生成GEN93_USER\rel
本次编译结果:
 
结果存放在:
 
7. 最后把第5步生成的modem\mcu\temp_modem目录下和第6步modem\apps\build\GEN93_USER\rel目录下所有的文件拷贝到Android原码目录vendor\mediatek\proprietary\modem\P32A_modem 下,然后在全编译一次Android原码在out目录下就包含了modem镜像,可以使用MTK刷机工具flash_tool烧录完整的软件版本了。
  
目录A95C里面的文件是虚拟机编译modem的结果,和服务器上编译的modem结果是完全一样的,服务器上编译的modem版本结果仍然需要放到AP代码的modem目录中全编才能集成到版本中。
有第7步骤的话,之前temp_modem里面的md1bin.img就不需要再修改名字。
结果得到modem文件 

以后基本的修改都集中在修改射频参数: 
8. 在编译过程中可能遇到的一些错误可以参考WiKi上的资料http://192.168.1.163:8090/pages/viewpage.action?pageId=819250


二.MTK射频调试流程和遇到的问题
1. MTK射频相关的原码在目录modem\mcu\pcore\custom\modem下,把该目录下的原码提供给硬件沈工,由他根据射频设计原理图和相关器件配置来修改添加RF 相关的驱动,每个频段都调试完之后就可以了。

2. 在Android侧修改手机所支持的网络制式能力配置,在Android侧device\xthink\P33A\ProjectConfig.mk、kernel-4.4\arch\arm\configs\p33a_bsp_1g_defconfig、vendor\mediatek\proprietary\bootable\bootloader\lk\project\P33A.mk按照下图的位置来进行手机网络能力的配置,先确定手机是多少的模式M,然后再配置最左边的。
 

 
注意:
device\xthink\H56A\ProjectConfig.mk
和vendor\mediatek\proprietary\bootable\bootloader\lk\project\H58A.mk中的MTK_PROTOCOL1_RAT_CONFIG要保持一致。
\mydroid\vendor\mediatek\proprietary\bootable\bootloader\lk\make\ rat_config.mk
 具体的路径是mydroid\vendor\mediatek\proprietary\bootable\bootloader\lk\make\rat_config.mk

以H33D为例,说明新增一个项目modem代码的修改。
需要确定modem上传到那个分支,确定是否存在,否在需要找系统人员新建。
(1)从gerrit上面拉取modem的差异化代码
   
 
 
 
这里的checkout也实现了代码的下载功能。
 
重要的一步,挂钩子。然后其他的修改步骤就跟AP的修改一样的了。
挂钩子scp -P 29418 -p 192.168.32.218:hooks/commit-msg .git/hooks
      scp -P 29418 -p 192.168.1.161:hooks/commit-msg .git/hooks


修改代码
git add .
git commit -s -m
git push --no-thin origin HEAD:refs/for/


3. RF调试之前,先把MTK底版本原码不加入修改先编译后烧录手机,看看MTK底版本能否正常加载使用modem。之前项目就发生过MTK modem原码无法正常使用的情况,后来发现是底版本Band71使能之后和芯片设计不匹配导致的问题。经常遇到的modem无法加载的问题比较多的是RF 驱动一些器件参数配置不正确导致的问题,这个需要和硬件沈工检查排错。

4. 在ProjectConfig.mk中配置modem编译的宏CUSTOM_MODEM = P32A_modem的配置一定要与vendor\mediatek\proprietary\modem\P32A_modem目录名称一致,否则也会出现modem异常问题。

5. 之前MT6739平台配置了一套软件版本兼容多个项目主板的DRDI功能,如果在各个制式的DRDI相关配置不正确也会导致modem异常问题。

6. MTK相关NV的操作可以参考WiKi文档链接如下:
http://192.168.1.163:8090/pages/viewpage.action?pageId=1999041
http://192.168.1.163:8090/pages/viewpage.action?pageId=2883589