關(guān)于在美拓的簡短的總結(jié)與體會_第1頁
已閱讀1頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、關(guān)于在美拓的簡短的總結(jié)與體會關(guān)于在美拓的簡短的總結(jié)與體會概要:這僅僅是個人的一點心得體會與總結(jié),本登不得大雅之堂,然而我作為一個對于手機開發(fā)完全的零起點對于其中的艱難與痛苦有著切膚的體會,這一切促使我不敢身藏淺陋將一些零星瑣碎公之于眾,即作為自己在美拓的簡短人生經(jīng)歷的一個總結(jié),如果能給后來者提供一點點地借鑒也心滿意足了。1關(guān)于編譯環(huán)境的認識體會首先面對程序員的就是相對復(fù)雜的編譯環(huán)境及其繁瑣的配置工作。高通平臺分為仿真和實際的arm編譯兩

2、個截然不同的編譯環(huán)境,其中有些相同有些不兼容。a)仿真編譯仿真完全使用vc6的編譯機制,高通的例子是把一個個小applet編譯成為dll動態(tài)庫,我們的工程應(yīng)該是把brew的模擬器作為靜態(tài)庫鏈接到meta的工程里面,模擬器的配置在win32binbrew_emu.dat中,在其中可以指定外觀即devicepack配置文件,以及applet運行的文件系統(tǒng)路徑,及其相應(yīng)的mif文件所在路徑。PhoneFile=H:CDMAL200Win32D

3、evicePack1L200DevicePack1.dpkAppletDir=H:CDMAL600newResourceFileSystemMIFDir=H:CDMAL600newResourceFileSystemVc6能夠自動解析源文件的相應(yīng)的依賴關(guān)系省卻了程序員寫makefile的痛苦,但是如何創(chuàng)建vc6的工程文件是一個很繁瑣的工作。美拓的代碼統(tǒng)統(tǒng)使用cfg文件管理機制可以很方便地依靠gendsp.cmd工具加入工程組,也就是說每

4、個源代碼模塊都定義了一個.cfg文件,里面列明了模塊的頭文件.h,源文件.c.cpp,以及鏈接庫.lib.a。[IncludeFiles]$(METAMMI)appsJavajblendia_jvmincludesettingsMeta_Java_Settings.h[SourceFiles]$(METAMMI)appsJavajblendia_jvmptamsuiMeta_AmsUI.c[LinkFiles]!ifeq($(META_

5、TARGET)Arm)$(METAMMI)3PartsJBlendlibraryajscajsc_arm_ads.a!else$(METAMMI)3PartsJBlendlibraryajscajsc_win32_msvc.lib以上就是.cfg文件的格式,于是,運行win32build目錄下的gendsp.cmd就會運行一個perl的腳本gencfgmin.pl來讀取metammi.cfg文件,這個文件列表了所有工程要包含的meta的

6、模塊cfg文件,然后通過這些cfg文件列明的.h.c.lib文件就被加入了工程,也就是加入了simulat.dsp的vc6的工程文件。但是代碼里面的include頭文件是一個很麻煩的事情,首先,有些工程人員喜歡把其中的頭文件名前面加上相對的路徑,但是這個對于編譯確實很麻煩的事情,因為編譯器尋找這些路徑是從一個運行的相對路徑開始,然后按照編譯設(shè)定的搜索路徑和系統(tǒng)環(huán)境變量比如include項下的路徑搜索,一旦工程文件位置變動就有可能搜索不到

7、,同時過多的設(shè)定搜索路徑會減慢編譯速度,因為編譯器會不停在各個路徑下搜索,錯誤即便你的ads12.bat已經(jīng)正確運行了很有可能是因為你沒有把as.exe的文件屬性加上system,比如attribsas.exeb)arm編譯arm編譯和仿真編譯有著巨大的差別,要復(fù)雜的多。首先要從編譯資源做起。資源包括圖片,文字存放在resourcemeta下的imagestringtheme目錄下,給每個資源編寫資源id是一件很繁瑣的事情,這里也是依靠

8、了工具運行ImageResConv.bat把image下的所有圖片都編篡相應(yīng)的資源id,比如一個圖片文件input_123.png最后就在MetaImg.brh里面變成了#defineIDI_PNG_INPUT_1238145命名的原則就是IDI_TYPE_FILENAME其中type應(yīng)該是文件類型即擴展名,8145是程序順序產(chǎn)生無關(guān)緊要。這樣程序員在代碼中按照這個命名原則就省卻了更新命名資源id的煩惱了。這個metaImg.brh最終

9、被放在sourcemetaresproject目錄下,其中project未當(dāng)前的項目代號,這個必須要在build_res.bat里面設(shè)定了比如@setPROJECT=0803_L201。最終這個metaimg.brh成為metammi.cfg的一欄。文字和圖片稍有不同,就是把中文字串資源“T_Yes是”和英文資源“T_YesYes”進行統(tǒng)一編號為metaStr.brh里的“#defineT_Yes3”而相應(yīng)的實際資源文件則是#defin

10、eCHINESE_RES_FILE“Chinese.bar“變成了高通的資源文件。這一切的編譯工作都是在一個resourcemetaBuild_Res.bat下完成的。需要提醒注意的是,image路徑下任何文件都回被搜羅當(dāng)作資源圖片文件,因此如果使用svn需要刪除svn文件或者把圖片拷貝出來編譯。編譯完資源后就可以開始編譯了,但是首先要做的還是設(shè)置好ads12.bat,這個的重要性前面已經(jīng)講過了,每個人都有可能不同要根據(jù)自己的安裝路徑來

11、設(shè)置。運行armprj_code.bat其中prj_code代表當(dāng)前的項目代號,因此相應(yīng)的在sourcequalcommbuildms目錄下你要有相同項目代號的prj_code.cmdprj_code.mak,cust_prj_code.h,同時在sourcemetaresprj_code下要有相應(yīng)的資源文件以便鏈接。正是編譯同樣使用meta的收集cfg的方式生成實際的makefile,高通的編譯器是支持c編譯的,比如tcpp.exe就

12、是c編譯器,在dmss_rules.min里面有perl腳本根據(jù)代碼文件擴展名自動選擇編譯器的規(guī)則,因此你也完全可以寫c代碼只要你使用.cpp文件擴展名。高通使用min文件來定義每個小模塊包含的源文件,其中還包含了.s文件,這個是一個對大多數(shù)pc程序員的巨大的surprise,這里要從程序運行談起。因為pc的程序的運行地址一般都是relocable的,也就是說運行起在哪里是不需要關(guān)心的,是由操作系統(tǒng)的loader加載同時修改代碼的偏移地

13、址完成在任意物理地址運行的,但是手機程序的靜態(tài)加載模塊地址卻是定死的,當(dāng)然各個模塊的地址可以依靠.scl的文件來調(diào)整,這個是linker的一個配置文件,它規(guī)定了各個模塊的boot內(nèi)存地址的相對關(guān)系,比如以sourcequalcommbuildmsq60x0a_rom.scl為例,BB_RAM0x0dloadarm.o(RW)dloadusb.o(RW)addedbynickfjvmAddliaohs..cnfJAVAJBLEND_RAM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論