日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MTK Modem编译

發(fā)布時(shí)間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MTK Modem编译 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

附上MTK FAQ:

[DESCRIPTION]

有些客戶反饋modem編譯步驟比較復(fù)雜,這里對(duì)release note里的內(nèi)容做了一些歸納。

編譯modem可以先參考如下內(nèi)容,更多細(xì)節(jié)可以參考release note。

?

[SOLUTION]

Step 1: 配置環(huán)境
按照release note -->Build Environment Info, 配置編譯環(huán)境。
注意:tool要使用要求的版本,其它版本MTK內(nèi)部沒有測(cè)試過,很可能會(huì)出現(xiàn)編譯報(bào)錯(cuò)。

Step 2: 編譯命令
./m [Project makefile name] new
Ex:
./m "TK_MD_BASIC(LWCTG_67xx).mak" new

Step 3: 執(zhí)行modemRenameCopy.pl腳本
In ALPS codebase, run command:
perl device/mediatek/build/build/tools/modemRenameCopy.pl [Modem Codebase Path] [Modem Project Makefile Name]
Ex:
perl device/mediatek/build/build/tools/modemRenameCopy.pl ~currUser/MOLY_codebase/mcu TK_XXX_MODEM
注意:

執(zhí)行modemRenameCopy.pl腳本,這個(gè)步驟一定不能漏掉。它的作用是把所有需要拷貝到AP端的文件收集到temp_modem文件夾中(modem codebase根目錄下),并且還會(huì)生成一個(gè)Android.mk文件

Step 4:拷貝modem image到AP
執(zhí)行modemRenameCopy.pl腳本之后,需要把temp_modem文件夾拷貝到AP。AP端路徑:
M0之前版本:alps/vendor/mediatek/proprietary/custom/${project}/modem/[temp_modem]
M0以及之后版本:alps/vendor/mediatek/proprietary/modem/[temp_modem]

?

[temp_modem]文件夾拷貝到AP端之后,文件夾名可以自行更改,如${modem}:
alps/vendor/mediatek/proprietary/modem/${modem}

Step 5:編譯APPS
Apps是跟modem code一起release的。APPS同樣需要先編譯,然后把編譯生成的文件拷貝到AP端.

注意:

編譯APPS之前,需要安裝Android NDK。下載地址請(qǐng)參考release note -->Build_Configure_Modem--->[2. Build MD APPS library & binary]

?

編譯命令:
./build.sh clean,build,pack all [modem chip generation config file]
Ex:
./build.sh clean,build,pack all GEN93_USER

?

Step 6:把編譯APPS生成的文件拷貝到AP
解開生成的*.tar.bz2,拷貝如下:
init_rc/, 拷貝到alps/vendor/mediatek/proprietary/modem/${modem}/init_rc/
sepolicy/,拷貝到alps/vendor/mediatek/proprietary/modem/${modem}/sepolicy/
makefile/,拷貝到alps/vendor/mediatek/proprietary/modem/${modem}/makefile/
libs/, 拷貝到alps/vendor/mediatek/proprietary/modem/${modem}/libs/

?

Step 7:Configure in ALPS

? ? ? ? 1. alps/device/${company}/${project}/ProjectConfig.mk

? ? ? ? ? ? CUSTOM_MODEM =?${modem}

? ? ? ? 2. 把a(bǔ)lps/device/mediatek/build/build/tools/modem/modem_Android.mk

? ? ? ? ? ? 拷貝到 ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? alps/vendor/mediatek/proprietary/modem/Android.mk ?(跟${modem}在同一級(jí)目錄)

?

PS:從step 2開始可以參考release note -->Build_Configure_Modem.?

?

再附上網(wǎng)友實(shí)際操作:

一.MTK Modem原碼編譯說明
1. 編譯環(huán)境,我們本地使用虛擬機(jī)安裝Ubuntu系統(tǒng)來編譯代碼。

2. 使用repo命令或者腳本從服務(wù)器上下載項(xiàng)目modem代碼到Ubuntu本地。
??類似于下載AP代碼,進(jìn)入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編譯需要工具\(yùn)Codescape.GNU.Tools.Package.2016.05-08.for.MIPS.MTI.Bare.Metal.CentOS-5.x86_64.tar(因?yàn)榉?wù)器上下載的代碼沒有 GCC和NDK)


4. 在目錄下modem\mcu\ 通過命令執(zhí)行m腳本啟動(dòng)編譯,編譯命令為:
./m "TK_MD_BASIC(LWCTG_R2_6763).mak" new,其中第二個(gè)參數(shù)根據(jù)項(xiàng)目平臺(tái)和網(wǎng)絡(luò)制式配置來選擇,可以從目錄mcu\make\projects下選擇不同的編譯mak文件。(如果之前有編譯就./m "TK_MD_BASIC(LWCTG_R3_6739).mak" clean再new)


本次編譯結(jié)果:
?
第二個(gè)參數(shù)


.mak文件可以參考modem編譯參數(shù)配置:

5. 第4步執(zhí)行完成之后,在Android原碼目錄device\mediatek\build\build\tools\ 下執(zhí)行命令來重命令打包modem鏡像,在Linux環(huán)境下進(jìn)入如上Android目錄,執(zhí)行命令./modemRenameCopy.pl ~/code/android_source/mtk/modemcode/p56a/modem/mcu "TK_MD_BASIC(LWCTG_R2_6763).mak",然后在modem代碼目錄modem\mcu\temp_modem下會(huì)生成新的modem鏡像文件。(注意文件路徑)

本次編譯結(jié)果:

結(jié)果存放位置:
將md1bin.img修改成md1img.img和md1dsp.img一起放入到版本目錄中,就可以用于刷機(jī)
?
對(duì)于9.0項(xiàng)目需要增加如下步驟:
6. ?把NDK工具拷貝到modem目錄modem\apps\NDK\android-ndk-r14b下,然后在目錄modem\apps下執(zhí)行命令./build.sh clean,build,pack all GEN93_USER來編譯app。NDK工具獲取地址:\\192.168.1.160\ShareDocuments\Software\編譯資料\modem編譯需要工具\(yùn)android-ndk-r14b-linux-x86_64.zip
在apps目錄下面新建NDK,解壓android-ndk-r14b-linux-x86_64.zip得到android-ndk-r14b目錄
?
?
編譯完成,生成GEN93_USER\rel
本次編譯結(jié)果:
?
結(jié)果存放在:
?
7. 最后把第5步生成的modem\mcu\temp_modem目錄下和第6步modem\apps\build\GEN93_USER\rel目錄下所有的文件拷貝到Android原碼目錄vendor\mediatek\proprietary\modem\P32A_modem 下,然后在全編譯一次Android原碼在out目錄下就包含了modem鏡像,可以使用MTK刷機(jī)工具flash_tool燒錄完整的軟件版本了。
??
目錄A95C里面的文件是虛擬機(jī)編譯modem的結(jié)果,和服務(wù)器上編譯的modem結(jié)果是完全一樣的,服務(wù)器上編譯的modem版本結(jié)果仍然需要放到AP代碼的modem目錄中全編才能集成到版本中。
有第7步驟的話,之前temp_modem里面的md1bin.img就不需要再修改名字。
結(jié)果得到modem文件?

以后基本的修改都集中在修改射頻參數(shù):?
8. 在編譯過程中可能遇到的一些錯(cuò)誤可以參考WiKi上的資料http://192.168.1.163:8090/pages/viewpage.action?pageId=819250


二.MTK射頻調(diào)試流程和遇到的問題
1. MTK射頻相關(guān)的原碼在目錄modem\mcu\pcore\custom\modem下,把該目錄下的原碼提供給硬件沈工,由他根據(jù)射頻設(shè)計(jì)原理圖和相關(guān)器件配置來修改添加RF 相關(guān)的驅(qū)動(dòng),每個(gè)頻段都調(diào)試完之后就可以了。

2. 在Android側(cè)修改手機(jī)所支持的網(wǎng)絡(luò)制式能力配置,在Android側(cè)device\xthink\P33A\ProjectConfig.mk、kernel-4.4\arch\arm\configs\p33a_bsp_1g_defconfig、vendor\mediatek\proprietary\bootable\bootloader\lk\project\P33A.mk按照下圖的位置來進(jìn)行手機(jī)網(wǎng)絡(luò)能力的配置,先確定手機(jī)是多少的模式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為例,說明新增一個(gè)項(xiàng)目modem代碼的修改。
需要確定modem上傳到那個(gè)分支,確定是否存在,否在需要找系統(tǒng)人員新建。
(1)從gerrit上面拉取modem的差異化代碼
???
?
?
?
這里的checkout也實(shí)現(xiàn)了代碼的下載功能。
?
重要的一步,掛鉤子。然后其他的修改步驟就跟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調(diào)試之前,先把MTK底版本原碼不加入修改先編譯后燒錄手機(jī),看看MTK底版本能否正常加載使用modem。之前項(xiàng)目就發(fā)生過MTK modem原碼無法正常使用的情況,后來發(fā)現(xiàn)是底版本Band71使能之后和芯片設(shè)計(jì)不匹配導(dǎo)致的問題。經(jīng)常遇到的modem無法加載的問題比較多的是RF 驅(qū)動(dòng)一些器件參數(shù)配置不正確導(dǎo)致的問題,這個(gè)需要和硬件沈工檢查排錯(cuò)。

4. 在ProjectConfig.mk中配置modem編譯的宏CUSTOM_MODEM = P32A_modem的配置一定要與vendor\mediatek\proprietary\modem\P32A_modem目錄名稱一致,否則也會(huì)出現(xiàn)modem異常問題。

5. 之前MT6739平臺(tái)配置了一套軟件版本兼容多個(gè)項(xiàng)目主板的DRDI功能,如果在各個(gè)制式的DRDI相關(guān)配置不正確也會(huì)導(dǎo)致modem異常問題。

6. MTK相關(guān)NV的操作可以參考WiKi文檔鏈接如下:
http://192.168.1.163:8090/pages/viewpage.action?pageId=1999041
http://192.168.1.163:8090/pages/viewpage.action?pageId=2883589


三.高通MBN配置
1. MBN (Modem Binary)文件實(shí)際上是一組重要NV/EFS和策略管理器設(shè)置,用于正確配置UE,以滿足運(yùn)營要求或?qū)嶒?yàn)室測(cè)試和認(rèn)證要求。簡(jiǎn)單來說,其實(shí)就是一個(gè)配置文件,里面有很多非常重要的NV/EFS配置,以及policy manager 的一些設(shè)置,這些配置能夠使手機(jī)滿足特定運(yùn)營商網(wǎng)絡(luò)的操作需求,總而言之是和運(yùn)營商相關(guān)的配置文件。MBN再加上高通開發(fā)的MCFG框架,能夠?qū)崿F(xiàn)單一modem軟件版本配上不同的MBN對(duì)不同運(yùn)營商網(wǎng)絡(luò)支持。

2. 軟件MBN文件存放在modem代碼modem_proc\mcfg\configs\mcfg_sw\generic目錄下,里面包含了高通配置的主要運(yùn)營商的MBN文件,用來適配不同運(yùn)營商的網(wǎng)絡(luò)配置需求。在modem原碼modem_proc\mcfg\mcfg_gen\generic目錄下存放有生成MBN文件的資源文件MCFG_SW_Items_List_Macro.excel,這個(gè)Excel文檔里面保存了需要配置的NV/EFS,如果需要新增NV或者EFS項(xiàng),可以在Excel文檔里面添加,新增NV項(xiàng)格式保持和原始的一致就可以,修改或者添加完配置后必須要手動(dòng)增加MBN版本號(hào)一般是在原來版本號(hào)基礎(chǔ)上+1就可以,也可以參考高通文檔80-n557,這個(gè)Excel第一頁有按鈕,選擇點(diǎn)擊Generate Sources and Build MBN Files 該按鈕就可以配置生成MBN文件了,生成的MBN文件保存在modem_proc\mcfg\configs\mcfg_sw\generic下面。

3. 高通平臺(tái)在軟件版本中通過升級(jí)MBN文件來更改NV/EFS配置,升級(jí)原理是利用高通qmi-pdc架構(gòu)來實(shí)現(xiàn)update,升級(jí)之前需要先把新MBN文件制作好,并且新制作的MBN版本號(hào)要比手機(jī)中已經(jīng)存在的MBN版本號(hào)高,把新生產(chǎn)的MBN文件放在modem_proc\mcfg\configs\mcfg_sw\generic對(duì)應(yīng)運(yùn)營商目錄下重新編譯modem,再重新編譯一個(gè)完整的軟件包,燒錄新軟件版本,手機(jī)開機(jī)獲取modem已經(jīng)加載的MBN版本號(hào),再與Android側(cè)保存的MBN版本號(hào)進(jìn)行比較,如果Android側(cè)的版本號(hào)比modem已經(jīng)加載的MBN版本號(hào)要高,則立馬執(zhí)行MBN升級(jí),把Android側(cè)的MBN文件load到modem并且refresh modem系統(tǒng)激活新MBN。其中可以通過modem 側(cè)AMSS\modem_proc\mcfg\configs\mcfg_sw\generic目錄下得mbn_ota.txt文件來控制需要升級(jí)哪些運(yùn)營商的MBN文件。如果是臨時(shí)驗(yàn)證MBN是否生效,可以通過高通工具PDC 來load并且激活MBN來驗(yàn)證,當(dāng)NV71546=7時(shí)高通MBN 自動(dòng)根據(jù)SIM卡IIN號(hào)來激活MBN配置。

4. MBN使用注意事項(xiàng),當(dāng)手機(jī)熔絲后,加載的MBN文件需要進(jìn)行簽名。MBN配置資源Excel文檔中NV格式要正確,EFS文件的拷貝需要配置正確的文件路徑。


四.高通QCN
1. 項(xiàng)目最原始的qcn文件是從高通原碼中選擇一個(gè)與項(xiàng)目主板比較接近的射頻卡驅(qū)動(dòng)(GPIO配置相近、頻段配置相近),并將該射頻卡驅(qū)動(dòng)對(duì)應(yīng)的QCN作為基礎(chǔ)QCN文件,硬件加入靜態(tài)射頻NV項(xiàng)以及頻段配置后可以作為一個(gè)QCN配置文件,后續(xù)軟件相應(yīng)NV的修改可以通過QXDM修改后從手機(jī)中把QCN備份出來就可以了。

2. QCN tar包制作流程:
2.1 先在modem代碼中定義打開宏FEATURE_EFS_ENABLE_FACTORY_IMAGE_SECURITY_HOLE并編譯modem。
2.2 拿一臺(tái)機(jī)器先使用fastboot erase命令擦除手機(jī)中已經(jīng)存在的qnc數(shù)據(jù),使用QPST工具燒錄制作好的QCN文件,手機(jī)連接電腦打開diag端口,在PC命令終端進(jìn)入modem側(cè) modem_proc/core/storage/tools目錄下,執(zhí)行perl efsreadimage.pl -z命令,該命令會(huì)在當(dāng)前目錄下生成fs_image.tar.gz,將fs_image.tar.gz拷到modem_proc/core/storage/tools/qdst目錄下,在linux環(huán)境下執(zhí)行python QDSTMBN.py fs_image.tar.gz ,完成后,同目錄下會(huì)生成fs_image.tar.gz.mbn文件。
2.3 在PC端本地新建一文件夾create_efs,在modem側(cè)將modem_proc\build\ms\bin\AAAAANAZ\efs_image_meta.bin文件,fs_image.tar.gz.mbn文件和\modem_proc\core\bsp\efs_image_header\tools\所有文件拷到create_efs,在windows命令窗口下執(zhí)行efs_image_create.py ?efs_image_meta.bin ?fs_image.tar.gz.mbn,命令執(zhí)行成功將在該目錄下生成最終的QCN Tar包fs_image.tar.gz.mbn.img文件。

3. 在軟件版本編譯時(shí)執(zhí)行modem鏡像文件拆包腳本后,在生成的下載分區(qū)文件rawprogram0.xml中將制作好的QCN tar包fs_image.tar.gz.mbn.img加入到fsg分區(qū),這樣就可以通過下載軟件來燒錄QCN文件。

總結(jié)

以上是生活随笔為你收集整理的MTK Modem编译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。