MTK modem编译
一.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)
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)
本次編譯結果:
第二個參數
mak文件可以參考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鏡像文件。(注意文件路徑)
?
本次編譯結果:
結果存放位置:
將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
?
總結
以上是生活随笔為你收集整理的MTK modem编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7的桌面计算机被误删,win7电脑
- 下一篇: MTK 多帧算法集成