MTK開發(fā)之軟件編譯學(xué)習(xí)教程
MTK開發(fā)之軟件編譯學(xué)習(xí)教程是本文要介紹的內(nèi)容,主要是來(lái)了解MTK開發(fā)中如何來(lái)實(shí)現(xiàn)軟件的編譯,具體內(nèi)容來(lái)看本文詳解。
打開dos編輯窗口(開始->運(yùn)行->cmd),找到工程代碼所在根目錄,如/opt/MTK6217 輸入編譯批處理命令:
格式:
- make[custom="projectName"]"project" "action"["modules"]
- Example: make custom=mtk6217 gprs new
給個(gè)MTK的make方法
后面的modules是nucleus之類的,可以不用寫,中間的除了mtk6217工程名外可以照寫,mtk6217工程名可以在你的源
代碼的make目錄下有個(gè)工程文件名,比如我的例子就叫mtk6217_gprs.mak,你將你的替換就可以了,另外,除了上面的仁兄跟你說(shuō)的ADS1.2以上 perl也要5.**,我用的是ActivePerl-5[1].6.1.631的,你查找下載一下再用 ARMAR 打包成靜態(tài) LIB
MTK軟件編譯
編譯工具和輔助工具:
- ADS1.2
- ADS12_update_842.exe
- MSYS-1.0.10.exe
- MinGW-3.1.0-1.exe
- ImageMagick-6.2.5-5-Q16-windows-dll.exe
- 7z313.exe
開始編譯:
切換到項(xiàng)目根目錄,然后在命令行下面執(zhí)行命令:
make custom=proj gprs new
其中,命令可以為 clean,update,remake
目標(biāo)文件:
生成的目標(biāo)文件為.bin文件, 位于 MTK//build//proj 目錄下面,build 目錄為生成的一個(gè)目錄。
Log文件:
Log文件同.bin文件一樣,也是位于 build 目錄下,如果編譯出錯(cuò),可以在命令行中看到出錯(cuò)的模塊,然后到build 目錄下找對(duì)應(yīng)的log文件。
仿真環(huán)境:
工程文件 PixtelMMI.dsw 位于目錄 MTK//plutommi//mmi 下面,由此可進(jìn)入仿真環(huán)境。
燒寫程序:
工具 Flash_tool.exe 可燒寫程序。
該工具的主要設(shè)置是 COM口 和目標(biāo)文件位置。
Download argent 和 scatter file 用自帶的就可以了,選中這兩項(xiàng)后,會(huì)出現(xiàn)ROM的選擇項(xiàng),點(diǎn)擊后可選擇.bin文件。
設(shè)置好上面的參數(shù)后,連接上手機(jī),將手機(jī)斷電,然后按開機(jī)鍵就可以燒寫程序了。
Trace 工具
在手機(jī)上往往要做一些trace,這就要用到trace工具---Catcher.exe。
手機(jī)上打 trace 接口為kal_prompt_trace,如同agere平臺(tái)的GSMprinf.
使用 Catcher.exe,
要先要設(shè)置 DataBase,這個(gè)文件是在編譯的時(shí)候生成的,是個(gè)沒有擴(kuò)展名的二進(jìn)制文件,該文件位于 //MTK//tst//database_classb,例如, BPLGU..。
在 Catcher.exe 中,設(shè)置 DataBase 的方式是 configà set database path
其次, 要設(shè)置模式為logging,這樣才能進(jìn)行下面的設(shè)置。
該設(shè)置位于 controlà modeà logging
第三,要設(shè)置好COM口。
第四, 打開連接開關(guān),表示 Catcher.exe處于待命狀態(tài)。
第五, 設(shè)置filter。這個(gè)可以過濾一些自己不需要的log。有時(shí)半天不出現(xiàn)log, 這時(shí)候重新選擇一下filter一般就會(huì)解決問題。
Filter設(shè)置路徑為 controlà set filter
Catcher.exe 使用的連接線給燒寫程序用的線是同一條。
保存log:
在log區(qū)域選中想要保存的log (可用shift+ 鼠標(biāo)),鼠標(biāo)右鍵選save as…
有時(shí)為了方便測(cè)試,會(huì)設(shè)置trace默認(rèn)關(guān)閉, 需要的時(shí)候可以打開。
該設(shè)置在工程模式下。
設(shè)備à set UARTàTST Config, 設(shè)置合適的UART 口。比如,UART1是可以trace的。
編譯出錯(cuò):
有時(shí)編譯會(huì)出現(xiàn)莫名其妙的錯(cuò)誤,比如一剛剛可以編譯通過,現(xiàn)在卻不行,.
以上為項(xiàng)目開發(fā)的基本環(huán)境和基本過程
接下來(lái)的內(nèi)容,則是具體的開發(fā)細(xì)節(jié)
添加文件:
開發(fā)過程中,少不了加減文件, 刪除文件實(shí)際上是添加文件的相反過程,因此略過。
MTK設(shè)置了很多l(xiāng)st 和 pth 文件供用戶添加文件,這些都在make文件夾下。用戶可以自己添加模塊,也可利用原有的lst 和 pth 文件添加。以下以添加在 MTK//make//plutommi 為例。
添加頭文件路徑:
- plutommi.inc
添加本模塊路徑:
- plutommi.pth
添加源文件路徑:
pl
- utommi.lis
添加完畢,這些文件就可參與編譯了。
添加開關(guān):
開關(guān)真是個(gè)好東西。依靠它,可以將沒有價(jià)值的功能瞬間屏蔽,又可以將我們需要但又?jǐn)R置的功能瞬間啟用。能者上,不能者下,多么類似于社會(huì)法則。
添加開關(guān) 在make文件夾下面的 .mak文件里面。
注意事項(xiàng):
有人喜歡模仿MTK原做法,在 .mak文件里面使用一個(gè)開關(guān)管住另外一個(gè)開關(guān)。那么兩個(gè)開關(guān)不要同名,否則開關(guān)起不了關(guān)閉的作用。
添加string資源:
1、GlobalDefs.h 中增加ID
2、population.c 中將ID和 string關(guān)聯(lián)
3、plutommi//Customer//CustResource//PLUTO_MMI//ref_list.txt 中增加ID 和各種語(yǔ)言的文本有了以上3個(gè)步驟,即可使用該文本資源了。
編譯后,在 plutommi//Customer//CustResource下面 會(huì)生成新的CustStrMap.c 和CustStrRes.c這兩個(gè)文件中就包含了新增的string資源
- <!--[if !supportLineBreakNewLine]-->
- <!--[endif]-->
添加圖片:
1、GlobalDefs.h 中增加ID
2、population.c 中將ID和 string關(guān)聯(lián)
3、增加圖片到解壓后的包里,增加完畢,應(yīng)打包。plutommi//Customer//Images//PLUTO176X220里面的文件夾是生成的,可以在cc上看到為private。
4、添加進(jìn)去后,要打包,如果僅添加在文件夾里面會(huì)被清除。如果沒有找到圖片文件,手機(jī)顯示的時(shí)候是一個(gè)紅色的*添加圖片時(shí),注意路徑用4杠
在NVRam中增加成員:
需要增加ID,指出每塊大小,以及總的塊數(shù) 和缺省值。
每塊大小最好為偶數(shù)。
修改下面的文件:
- Nvram_user_defs.h: ID, 大小,個(gè)數(shù)
- NVRAMEnum.h
- Nvram_user_config.c
- custom_nvram_editor_data_item.h
是在Dos環(huán)境下編譯,可以做成一個(gè)批處理文件,更方便。
MTK編譯分資源的編譯和代碼的編譯:
1、資源的編譯:
(1)需要編譯資源的情況:
在如下的修改情況下,需要重編譯資源:
a、修改了..plutommi//Customer//CustResource//PLUTO_MMI//目錄下的文件如字庫(kù)文件
(FontRes.c、L_**.h文件)、MMI配置文件(MMI_featuresPLUTO.h)、字符串資源文件
(Ref_list.txt)等;
b、修改了..plutommi//Customer//CustResource//PLUTO_MMI//Res_MMI目錄下的文件,這個(gè)目錄下的文件都是Res_*.*文件,是各個(gè)AP或模塊的資源配置文件,包含菜單、圖片、字符串資源的配置;
注意: Cust*.*文件是資源編譯生成的,不能手動(dòng)修改。
(2)編譯方法:
進(jìn)入..//plutommi//Customer目錄,執(zhí)行remakeResource.bat批處理文件。
編譯成功會(huì)生成一些Cust*.*文件在//plutommi//Customer//CustResource目錄下,編譯代碼時(shí)再編譯這些文件;
編譯失敗到build目錄下查看log文件à res_gen.txt,可看到出錯(cuò)信息。
(3)當(dāng)我們改變了資源,想在PC模擬上看到修改效果時(shí),也需要先執(zhí)行如上的資源編譯命令,再在VC環(huán)境下build一下資源,就可以看到效果了。
2、代碼的編譯:
有如下的編譯命令:
- make custom=xxx gprs new
- make custom=xxx gprs update
- make custom=xxx gprs remake
- make custom=xxx gprs clean
這些編譯命令可以做成批處理文件build.bat,我們輸入相應(yīng)的選項(xiàng)就可。
編譯成功后,在build目錄下生成所有的.obj,編譯信息log文件、下載.bin文件等;
編譯失敗時(shí),到build目錄下查看相應(yīng)的log文件,可看到出錯(cuò)信息。
幾個(gè)關(guān)鍵字解釋如下:
(1)xxx,Project名,對(duì)應(yīng)make目錄下的xxx_GPRS.mak文件;
(2)最后一個(gè)關(guān)鍵字:
a、new:
不管資源、代碼是否有改變,全部重編;
b、update:
掃描資源、代碼的改變,有改變的重編,無(wú)改變的不編;
c、remake:
不掃描資源,只掃描代碼的改變,有改變的重編,資源和無(wú)改變的代碼不編;
d、clean:
清除build目錄下的所有內(nèi)容,保留目錄結(jié)構(gòu)。
小結(jié):MTK開發(fā)之軟件編譯學(xué)習(xí)教程的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!