




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Build環(huán)境使用手冊(cè)Version:2010-10-14USPREADTRUM4基本編譯命令Build的全部操作命令都要在Windows Command下執(zhí)行,并且需要在關(guān)鍵腳本的當(dāng)前路徑,即MS_Code名目下完 成輸入。例如如下:程序的搜索幫助出運(yùn)行(B)文檔設(shè)置BfiSll A囹回頜I叵玲C:cd F:MOCOR-W09.15_sourceMS_CodeC: :F:MOCOR_W09-15_sourceMS_Codenake PROJECT=sc66001-sp66011 nevi在編譯工程時(shí),會(huì)使用類(lèi)似make PROJECT=projectname命令,這里projectname必
2、需和工程編譯腳本的名稱(chēng)保持 肯定的對(duì)應(yīng)關(guān)系,否那么系統(tǒng)會(huì)報(bào):Project defined Makefile project_projectname.mk is not exist!這樣的錯(cuò)誤。如工程編譯腳本文件名為project_8801 h_s3b.mk,那么projectname的內(nèi)容為8801 h_s3b,因此我們可 以執(zhí)行如下的命令來(lái)實(shí)現(xiàn)編譯:make PROJECT= 8801h_s3b全新編譯整個(gè)工程new通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname new,該命令將清除編譯過(guò) 程中生成的全部目標(biāo)碼和庫(kù)文件,然后對(duì)project
3、name所指定的工程進(jìn)行整體編譯并在沒(méi)有錯(cuò)誤消失的狀況下完成最 終的鏈接,編譯過(guò)程中會(huì)自動(dòng)生成依靠關(guān)系。會(huì)這一命令適合在工程進(jìn)行了較大修改:比方公共頭文件數(shù)據(jù)結(jié)構(gòu)發(fā) 生變化、公共接口參數(shù)發(fā)生變化、文件更新中時(shí)間戳混亂或makefile相關(guān)腳本被修改等等狀況下建議使用這一命令, 確保重新對(duì)工程進(jìn)行完全編譯得到正確的輸出結(jié)果。這個(gè)命令也會(huì)將fdl,bootloader,NV , Resource同時(shí)編譯出來(lái)。該命令相當(dāng)于運(yùn)行如下3個(gè)命令make PROJECT=projectname cleanallmake PROJECT=projectname MODULES=resourcemake PRO
4、JECT=projectname update更新工程update通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname或make PROJECT=projectname update命令,makefile依據(jù)已有的依靠關(guān)系編譯因修改涉及到的相關(guān)的模塊并在沒(méi)有錯(cuò) 誤消失的狀況下完成最終的鏈接,假設(shè)不存在依靠關(guān)系,makefile會(huì)在編譯文件時(shí)自動(dòng)生成依靠關(guān)系。由于只編譯較 少的模塊文件,可以節(jié)約編譯時(shí)間。這個(gè)命令也會(huì)將fdl,bootloader,NV同時(shí)編譯出來(lái)。單獨(dú)編譯模塊通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=p
5、rojectname MODULESmodulel module2.55 update,該命令將對(duì)指定模塊進(jìn)行編譯,但不會(huì)編譯完成后進(jìn)行自動(dòng)鏈接。該命令屬于模塊開(kāi)發(fā)人員 最常用的命令,在具體模塊開(kāi)發(fā)中需要常常使用該命令來(lái)驗(yàn)證模塊的編譯完整性。清除模塊編譯結(jié)果通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULESmodulel module2 clean,該命令將清除指定模塊的編譯輸出結(jié)果,其中包含指定模塊的目標(biāo)文件和庫(kù)文件。該命令適合 在指定模塊內(nèi)部消失重大修改或者模塊本身makefile腳本被修改,在進(jìn)行模塊編譯前使用。清除全部編譯結(jié)
6、果cleanall通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname cleanall,該命令將清除編譯 過(guò)程中生成的全部目標(biāo)碼和庫(kù)文件。生成可執(zhí)行文件通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname image可以進(jìn)行鏈接生成相 關(guān)的可執(zhí)行文件,該命令可以在模塊修改并編譯完成后進(jìn)行,也適合第三方庫(kù)文件更新后進(jìn)行。編譯 FDL/bootloader通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULES=bootloader對(duì) bootloade
7、r 編譯通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULES=fdl1 對(duì)fdl1進(jìn) 行編譯。通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULES=fdl2對(duì)fdl2進(jìn)行編譯。通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULES=nor_fdl對(duì)nor_fdl進(jìn)行編譯。輸出結(jié)果位置:build/projectname_builddir/fdl_bootloader.同時(shí)會(huì)自動(dòng)將最終的bin文件copy至 build/
8、projectname_builddir/img 下,便利下載到手機(jī)中。您也可以依據(jù)工程具體狀況用一條命令編譯出全部目標(biāo),例如如下:make PROJECT=rocky_6901” MODULES=fdl1 fdl2 bootloader”make PROJECT=n8801h_s3b MODULESnorJdl1編譯NV通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULES= nv_parameter 對(duì) n v_para m ete r 編譯輸出結(jié)果位置:build/projectname_builddir/nvmo同時(shí)會(huì)自動(dòng)將最終
9、的bin文件復(fù)制至ij build/projectname_builddir/imgo留意:. make/nv_parameter/nv_parameter.mk 是NV的makefile文件 make/nv_parameter/config_info.nv 為NV 的配置文件.假如盼望單疝修改工程某項(xiàng)NV參數(shù),例如盼望修改nv_type.rivm某項(xiàng),應(yīng)當(dāng)在使用make指令編 譯出NV工程文件之后使用NVEDITOR工具編譯保存。編譯MMI Resource 文件通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=projectname MODULES= resourc
10、e 對(duì) Resource 編譯。輸出結(jié)果位置:build/projectname_builddir/reso同時(shí)會(huì)自動(dòng)將最終的映像文件復(fù)制到 build/projectname_builddir/img 目。默認(rèn)狀況下編譯Resource使用了主工程中的Feature Options轉(zhuǎn)義宏和app.mk模塊中的宏,假如您的工程資源 編譯需要使用其他的模塊的宏,請(qǐng)修改resource.mk文件。留意:1)當(dāng)前不能正確支持多個(gè)工程工程的資源并行編譯2)編譯資源文件需要工具腳本支持,假如環(huán)境不完整會(huì)導(dǎo)致編譯過(guò)程停止3)修改 makeperl_scriptResGenResView.ini 中配置項(xiàng)C
11、ustStrTable,可支持多個(gè)字符資源文件: 如:CustStrTable=cust_str_table_O l.xls編譯PC模擬器工程編譯Win32模擬器工程的步驟1)通過(guò)makefile自動(dòng)生成模擬器工程dsw文件;生成模擬器工程時(shí)一些配置信息(skin, resource, sim)文件MSSimCfg. ini, SIMTest. ini會(huì)自動(dòng)生成 并存放到winbin文件夾下;模擬器msdev工具也會(huì)從里Copy 一份到這個(gè)文件夾中。使用類(lèi)似如下的命令可在該工程的build臨時(shí)文件夾的win下生成對(duì)應(yīng)的全部.dsp , dsw文件make PROJECT=sc66001_sp6
12、6011 MODULES=simulator2)編譯模擬器;用VC6 翻開(kāi) win/simulator. dsw 文件,設(shè)置 msdevkernel 為 Active Project,編譯完成后 msdevkernel. dll 會(huì)生成到win/bin 名目下3)運(yùn)行模擬器;雙擊win/bin名目下 的msdev. exe即可。功能說(shuō)明:通過(guò)對(duì)M0C0R平臺(tái)makefile工程文件分析,取得要編譯的文件列表,宏,搜尋路徑等信息后自動(dòng)生成 對(duì)應(yīng)的VC dsp工程文件和一個(gè)simulator, dsw的工作空間文件,執(zhí)行simulator, dsw就可以編譯出模 擬器使用的.dll文件.文件說(shuō)明:
13、simulator, mk (make/simulator/simulator. mk)指示模擬器需要使用的模塊列表,特殊指定的編譯宏列表,及完成生成模擬器的全部工作simulator, ini (make/simulator/simulator. ini)配置文件,用來(lái)指示 模擬器工程與make工程在 文件,宏,搜尋路徑的差異。其中msdevkernel為總dsp 文件,模擬器工程需要的全部lib文件如第三方.lib文件等都要加到這個(gè)工程中。該文件支持代碼宏,例如如下:ftifdef PLATF0RM_SC6600Lchip drv += chip drv/source/c/ivsp_drv
14、_66001. cttendifsimulator, ini 說(shuō)明:ADD_INC_PATH用來(lái)指示森makefile對(duì)應(yīng)工程的搜尋路徑外,dsp工程中還需要增加的搜尋路徑DEL_INC_PATH用來(lái)指示在makefile對(duì)應(yīng)工程的搜尋路徑中需要?jiǎng)h除的搜尋路徑ADD_OPTION用來(lái)旨示除makefile對(duì)應(yīng)工程的搜尋路徑外,dsp工程中還需要增加的編譯宏留意:宏列表需要用來(lái)引起來(lái),如app = USB_WEBCAMERA_SUPPORT USB_LOGDEL OPTION用來(lái)指示在makefile對(duì)應(yīng)工程的編譯宏中需要?jiǎng)h除的宏留意:宏列表需要用來(lái)引起來(lái),如 rtos=zz_RT0S WIN3
15、2 _DEBUG J1BCS _LIB _RTOS _ENABLE_LOG_TOOL ADD_FILE用來(lái)指示除makefile對(duì)應(yīng)工程的文件外,dsp工程中還需要增加的文件DEL_FILE用來(lái)指示在makefile對(duì)應(yīng)工程的文件中需要?jiǎng)h除的文件,假如具體某個(gè)模塊的值為*那么表示這個(gè)模塊的 全部文件都刪除REPLACE_FILE用來(lái)指示在makefile對(duì)應(yīng)工程的文件中路徑的替換 使用技巧:局部軟件模塊實(shí)現(xiàn)方式在模擬器和目標(biāo)硬件環(huán)境不全都,可以參考如下樣例修改兼容兩種平臺(tái)的編譯:1 .平臺(tái)目標(biāo)硬件端JPG為硬解碼,模擬器上怎么辦?: simulator, mk 中對(duì) macro_set 賦值i
16、feq ($ (strip $(JPG_DEC_SUPPORT), JPG_HW) macro_set += JPG_DEC_SUPPORT=JPG_SW endififeq ($ (strip $ (JPG_ENC_SUPPORT), JPG_HW) macro_set += JPG_ENC_SUPPORT=JPG_SW endifsimulator, ini 修改如下:DEL OPTIONglobal 二if defined(JPG_DEC_SUPPORT_JPG_HW)global + = Z/JPG_DEC_SUPPORT_JPG_HW,Z#endifif defined(JPG_EN
17、C_SUPPORT_JPG_HW)global += JPG_ENC_SUPPORT_JPG_HWttendifADD_OPTIONglobal = WIN32 _DEBUG _MBCS _LIB THREADX_OS _RTOSif defined(JPG_DEC_SUPPORT_JPG_HW)global +二 JPG_DEC_SUPPORT_JPG_S曠#endifif defined(JPG_ENC_SUPPORT_JPG_HW) global += JPG_ENC_SUPPORT_JPG_S曠#endif2.目標(biāo)硬件板上已完成的功能但模擬器上還沒(méi)有調(diào)好,怎么先禁掉該功能?simula
18、tor, mk 中對(duì) macro_set 賦值ifeq ($ (strip $ (CMMB_SUPPORT), TRUE)macro_set +二 CMMBSUPPORT二FALSEendifsimulator, ini 修改如下DEL_OPTTONglobal 二#if defined(CMMB_SUPPORT)global +二 CMMB_SUPPORTttendif5其它編譯命令編譯Logel工具通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=8801 h_s3bn MODULES=logel” clean update對(duì)logel工具進(jìn)行編譯。留意,編譯這個(gè)工
19、具需要perl 5.8 。留意:SPRD客戶(hù)無(wú)法使用該命令pclint 掃描通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=n8801 h_s3bM pclint對(duì)全部模塊代碼進(jìn) 行pclint 掃描。輸入makePROJECT=8801h_s3b” MODULES=napp gui psn pclint 對(duì)指定的模塊代碼進(jìn)行pclint 掃描。編譯完成net send提示功能通過(guò)命令行工具在工程名目MS_Code下輸入命令make PROJECT=H8801h_s3bnmake PROJECT=8801h_s3b ip=pcname當(dāng)代碼編譯完成時(shí),會(huì)自動(dòng)向指定的I
20、P地址或機(jī)器名 發(fā)一個(gè)net send消息,說(shuō)明該工程編譯是否勝利。留意,這個(gè)命令只在生成image后才調(diào)用,單獨(dú)編譯某個(gè)模塊并不生成image時(shí)并不會(huì)調(diào)用。編譯命令的簡(jiǎn)寫(xiě)make PROJECT=8801 h_s3b MODULES=napp gui ps”可以簡(jiǎn)寫(xiě)為make p=8801 h_s3b m=,app gui ps”make PROJECT=8801 h_s3b new可以簡(jiǎn)寫(xiě)為make p=8801 h_s3b new多線(xiàn)程編譯Build環(huán)境支持多線(xiàn)程編譯,可以充分采用多核CPU的優(yōu)勢(shì),加快編譯速度,必需通過(guò)顯式的方式指定開(kāi) 啟線(xiàn)程數(shù):make p=8801h_s3b new
21、 job二模塊內(nèi)開(kāi)啟線(xiàn)程數(shù)make p=8801h_s3b new job二模塊內(nèi)開(kāi)啟線(xiàn)程數(shù)-j同時(shí)并發(fā)編譯的模塊數(shù)模塊內(nèi)開(kāi)啟線(xiàn)程數(shù)表示編譯時(shí)同時(shí)啟動(dòng)線(xiàn)程個(gè)數(shù),建議不要超過(guò)CPU核心數(shù)。同時(shí)并發(fā)編譯的模塊數(shù)建議不要超過(guò)4.例如如下:make p=8801h_s3b new job=8make p=8801h_s3b new job=8 -j4分布式編譯Build環(huán)境支持XoreaxIncrediBuild分布式編譯,可以充分采用網(wǎng)絡(luò)優(yōu)勢(shì),加快編譯速度.只需要在正 常的編譯指令后增加ib=l即可:make p=8801_s3b new ib=l分布式編譯支持依靠關(guān)系,所以當(dāng)您執(zhí)行make p=8
22、801h s3b m=app update ib=l時(shí),會(huì)重新編譯全部 app模塊文件.此外假如您的代碼中的文件位置有變動(dòng)時(shí),編譯時(shí)請(qǐng)將涉及的模塊先使用clean命令清理中間依 靠文件,然后再編譯,否那么有可能消失找不到相關(guān)文件而無(wú)法編譯的問(wèn)題。跟Xoreax IncrediBuild工具有關(guān),此命令可能工作不正常。編譯出錯(cuò)暫停默認(rèn)狀況下,編譯出錯(cuò)后將連續(xù)編譯,并不聽(tīng)停下來(lái)。假如您需要makefile支持編譯出錯(cuò)暫停功能,請(qǐng) 使用stop參數(shù)編譯,并賦值為1。命令例如如下:make p=8801h_s3b stop=l new遇到特別時(shí)腳本會(huì)調(diào)用DOS下的Pause命令,用戶(hù)敲任意鍵會(huì)連續(xù)編譯
23、,假如需要強(qiáng)行推出需要敲 Control+C.目前停止的方式是調(diào)用DOS的Pause,按任意鍵會(huì)連續(xù)編譯,假如需要強(qiáng)行推出,需要按Control+C.生成編譯選項(xiàng)MOCOR平臺(tái)可以通過(guò)命令行方式獲得宏/搜尋路徑/文件清單的定義,便利與其他工具集成或調(diào)試用.獲得整個(gè)工程的宏make p=8801 h_s3b options.獲得某模塊的宏make p=8801h_s3b m=app optionsmake p=8801h_s3b m=app mmk” options.生成的宏定義文件可在如下地址獲得:MS_Codebuild_builddiroptions6 MAKEFILE工作流程重要腳本在M
24、S_Code名目下存放有Makefile.rules、Makefile.modules .modules、Makefile以及工程 編譯腳本,口如project_8801h_s3b.mk等等,同時(shí)在make名目的各個(gè)子名目下存放有各個(gè)模塊的make腳本,即模 塊編譯腳本,比方aac.mk、app.mk等等。一般狀況下開(kāi)發(fā)人員僅維護(hù)工程編譯腳本即可,Makefile.rules、 Makefile.modules 和 Makefile 未需要修改。針對(duì)模塊和工程的變化,開(kāi)發(fā)人員需要修改模塊編譯腳本和增加新的工程編譯腳本。下面將針對(duì)Makefile.rules Makefile.modules和M
25、akefile進(jìn)行簡(jiǎn)潔的說(shuō)明,關(guān)于模塊編譯腳本和工程編譯腳本將在后面的章節(jié) 中具體描述。注:PLATFORM.modules文件僅在maintrunk版本中存在,在mocor_09a中,該文件內(nèi)容包含在 Makefile文件中。Makefile.rulesMakefile.rules中定義了絕大局部平臺(tái)無(wú)關(guān)、模塊無(wú)關(guān)以及工程無(wú)關(guān)的公共變量及公共函數(shù),其中包括編譯器的 指定、公共編譯參數(shù)CFLAGS、AFLAGS的定義、文件復(fù)制、刪除、名目創(chuàng)立等系統(tǒng)命令、公共頭文件路徑、SPRD 庫(kù)路徑以及第三方庫(kù)文件路徑等變量的定義。請(qǐng)依據(jù)您的機(jī)器上的軟件狀況進(jìn)行相應(yīng)修改。Makefile.modulesMa
26、kefile.modules定義了真正的編譯指令及依靠關(guān)系,一般開(kāi)發(fā)中不需耍維護(hù)該文件,這里需要指出的是:目 前有局部模塊采納了armcc編譯器(比方:mpeg4_codec),對(duì)于這局部模塊需要在Makefile.modules中申明,具 體操作可以參考該文件中已經(jīng)被申明的相關(guān)模塊局部。對(duì)分布式編譯(Xoreax IncrediBuild),將 include make/perl_script/modules.plo.modulesvPLATFORMmodules定義了工程需要編譯的開(kāi)放模塊列表,非開(kāi)放模塊列表,參加連接.a文件列表等信 ,息、OMakefile.third-partyMak
27、efile.third-party將第三方規(guī)律獨(dú)立成一個(gè)文件,便于維護(hù),這個(gè)文件會(huì)被include到各工程.mk中.Makefile.verifyMakefile.verify對(duì)makefile中的宏的父子關(guān)系進(jìn)行校驗(yàn),防止出錯(cuò).此外轉(zhuǎn)義的編譯宏也在這個(gè)文件中生成。MakefileMakefile是最上層的總控腳本,該腳本直接處理用戶(hù)的命令,并執(zhí)行相關(guān)的處理,在沒(méi)有特殊需要的狀況下 用戶(hù)不需要維護(hù)該文件。Makefile執(zhí)行流程You need to type “make PROJECT=XXX newn in windows command to tell make which projec
28、t to make.We will show a simple pseudo-code that describes makefile work flow .Makefileinclude Makefile.rulesARM compiler settingCommon compiler options settingBash commands setting public function setting makefile location settinginclude project $(PROJECT).mkFeature options setting include Makefile
29、.verify Parent-child relationships of feature options Get public MACROinclude Makefile.third-partySetting third-party modules to variable 3RD_LIBSinclude vPLATFORM.moduAsSet variable:INDEPENDENT: value specified for external makefile EXPORTLIBS: value specified for sprd modules list COMPLIBS_DBG: va
30、lue specified for modules list of open source LINKLIBLIST: value specified for all .a list using for armlinking MKLIBLIST = $(foreach comp5$(EXPORTLIBS) $(COMPLIBS_DBG), $(if $(findstring $(comp),$(INDEPENDENT)J$(comp).indep, $(comp).a) image: $(MKLIBLIST) $( 3RD_LIBS)-$(LINK) $(LINKLIBLIST) -o $(BU
31、ILD_DIR)/img/$(AXFFILENAME)%.indep:$(MAKE) -f make/$7$*.mk -I ,/$(BUILD_DIR)/dep/$* %.a:$(MAKE) -f Makefile.modules -I ./$(BUILD_DIR)/dep/$* -k -r-RCOMPONENT=$*6.3兩種編譯方式從以上的簡(jiǎn)潔流程中可以看出,MOCOR平臺(tái)工程的全部模塊和工具目前采納兩種方式編譯。.獨(dú)立的軟件和工具編譯方式目前采納獨(dú)立的makefile編譯的軟件或者工具模塊有:fdl1, fdl2, bootloader, nv_parameter, resource,
32、simulator 等。這些模塊或功能對(duì)應(yīng)的make/module_name/module_name.mk本身已經(jīng)是一個(gè)完整的makefile文件, make直接調(diào)用執(zhí)行。方法是將模塊名添加到INDEPENDENT列表中。采納獨(dú)立編譯的軟件模塊一般是實(shí)現(xiàn) 肯定的功能,并不肯定有.a文件生成,此方法對(duì)應(yīng)6.2中的%.indep目標(biāo)。# independent compileINDEPENDENT= fdl1 fdl2 bootloader nor_fdl logel simulator resource nv_parameter pclint編譯方式為:make PROJECT=projectn
33、ame MODULES=bootloader留意:假如該makefile中需要使用總工程中宏信息和公共變量定義,請(qǐng)按如下方式包含文件。以下四行是必 需的,并且要保持如下挨次。include Makefile.rulesinclude ./project_$( P RO J ECT). mkinclude Makefile.verifyinclude Makefile.rules.主編譯方式絕大局部的模塊都是通過(guò)這種編譯方式來(lái)完成編譯的。這種編譯方式使用全都的依靠關(guān)系生成方法,統(tǒng)一 掌握編譯的行為。對(duì)應(yīng)的make/module_name/module_name.mk文件并不是一個(gè)完整的makeW
34、e文件,一 般其中只包含編譯需要的宏列表,文件句表,搜尋文件南徑,其他都由框架自動(dòng)完成。依靠關(guān)系文件存放于 MS_Codebuildprojectname_builddirdep 下。此方法對(duì)應(yīng)6.2 中的 %,a 目標(biāo)。每個(gè)工程工程在編譯的時(shí)候,腳本會(huì)自動(dòng)將Feature Options局部轉(zhuǎn)義成真正的代碼中使用的宏傳給相應(yīng)的 子模塊,在對(duì)子模塊代碼編譯的時(shí)候,自動(dòng)附加上這些宏。轉(zhuǎn)義的規(guī)章如下: 對(duì)功能開(kāi)關(guān)型的Feature Options ,當(dāng)Feature Options為T(mén)RUE時(shí)轉(zhuǎn)義,為FALSE時(shí)不轉(zhuǎn)義NANDBOOT_SUPPORT = TRUE # Boot From Nand
35、flash Support:#Option1:TRUE# Option2:FALSE上面的定義會(huì)產(chǎn)生轉(zhuǎn)義宏DNANDBOOT_SUPPORT傳遞給各個(gè)子模塊 對(duì)功能枚舉型的Feature Options ,將Feature Options的名字和值拼接起來(lái)轉(zhuǎn)義成一個(gè)宏,同時(shí)對(duì) 非空的值,同時(shí)轉(zhuǎn)義一個(gè)Feature Options名字的宏。SUBLCD_SIZE = 96X64# Resolution Of Main LCDOption1:NONE #define SUBLCD_SIZE_NONEOption2:96X64 #define SUBLCD_SIZE_96X64上面的定義會(huì)產(chǎn)生轉(zhuǎn)義宏
36、-DSUBLCD_SIZE_96X64和DSUBLCD_SIZE傳遞給各個(gè)子模塊轉(zhuǎn)義函數(shù)在Makefile.rules中定義,在Makefile.verify中調(diào)用,轉(zhuǎn)義結(jié)果存放在全局變量中C_MACRO(for C language)A_MACRO(for Assebly language)留意:修訂歷史版本日期作者審核說(shuō)明2007-12-11Daniel.LuoCreate0.022008-1-31Daniel.Luo增加客戶(hù)發(fā)布及使用內(nèi)容0.032009-03-10Mingjianliu基于MOCOR_W09.11修改0.042009-03-31Mingjianliu增加多線(xiàn)程編譯,Wi
37、ndows command編譯0.052009-04-09Mingjianliu刪除Cygwin相關(guān)全部信息0.062009-04-15Mingjianliu編譯命令增加5.18特殊提示,新建工程局部增加 NV,Resource局部的說(shuō)明0.072009-04-20Mingjianliu依據(jù)評(píng)審結(jié)果修改0.082009-04-28Mingjianliu增加編譯暫停說(shuō)明:資源編譯說(shuō)明更新,增加編譯出錯(cuò)的一 個(gè)說(shuō)明0.092009-05-06Mingjianliu增加對(duì)VC模擬器編譯說(shuō)明,提示修改工程0.102009-05-30MingjianliuResource, NV說(shuō)明更新0.112009
38、-07-08Mingjianliu增加通過(guò)復(fù)制方式創(chuàng)立新工程說(shuō)明:增加source Insight與 CC集成說(shuō)明;增加全局變量和轉(zhuǎn)義宏的實(shí)現(xiàn)區(qū)分;增加第三 方編譯選項(xiàng)說(shuō)明;更新多套資源編譯說(shuō)明0.122009-08-19Mingjianliu1.第三方規(guī)律局部獨(dú)立成一個(gè)文件y 2編譯APP需要調(diào)用 toolsDEBUG TOOLBMP2Array工具3.增加分布式編譯說(shuō) 明.4.鼠標(biāo)右鍵增加命令行快捷方式說(shuō)明5. DOS下輸入命令 時(shí)用Tab鍵進(jìn)行命令自動(dòng)填充6.增加動(dòng)態(tài)生成模擬器局部說(shuō)明0.132009-08-31Mi 咱 ianliu更新3.2統(tǒng)一編譯局部關(guān)于:makefile宏賦制值的
39、特殊說(shuō)明0.142009-09-24Mingjianliu更新復(fù)制方式創(chuàng)立工程編譯腳本局部:大工程中增加PRODUCT_BASELIB_DIR變量及使用說(shuō)明;MS Customize/source/product/config 驅(qū)動(dòng)局部依據(jù)工程 名李自適應(yīng); 工程修改編譯選項(xiàng)留意事項(xiàng)更新;更新NV編譯選項(xiàng)說(shuō)明;3. 5編譯命令最大長(zhǎng)度8K限制0.152009-10-10MingjianliuWindows模擬器調(diào)整0.162009-10-21Mingjianliu提示:Xoreax IncrediBui Id有Bug,代碼路徑中不要有括號(hào), 即使是單個(gè)括號(hào)也不行以,否那么無(wú)法編譯.0.1720
40、09-12-30Mingjianliu多個(gè)資源.xls合并使用問(wèn)題0.182010-02-02Mingjianliu復(fù)制方式創(chuàng)立工程編譯腳本中對(duì)非開(kāi)放的.a,對(duì)應(yīng) 名目只取 PRODUCT_BASELIB_DIR 的值;6.6分布式編譯增加依靠親系,并增加編譯細(xì)節(jié)說(shuō)明;6.8對(duì)Feature Options的使用增加了一個(gè)錯(cuò)誤用法說(shuō)明0.192010-02-12Mingjianliu依據(jù)2月11日評(píng)審修改0.202010-02-25Mingjianliu公共轉(zhuǎn)義宏使用標(biāo)準(zhǔn)make語(yǔ)法生成,不再通過(guò)讀源文件方式 生成;刪除6.80.212010-03-04Mingjianliu增加5.13生成編
41、譯選項(xiàng)0.222010-04-22MingjianliuMakefile文件中變量filter-out_macro紀(jì)錄了不需要轉(zhuǎn)義 成編譯宏的一些makefHe變量,其中一些是編譯時(shí)的命令行參 數(shù)。假如工程增加了額外的命令行參數(shù),請(qǐng)考慮是否在轉(zhuǎn)義 宏時(shí)將其過(guò)濾掉(假如是客戶(hù)版本,檢測(cè)SPRD宏時(shí)有可能不 通過(guò))刪除全局變審和轉(zhuǎn)義宏區(qū)分局部,此內(nèi)容已在第三 章中說(shuō)明。0.232010-07-05Mingjianliu刪除全局變最和轉(zhuǎn)義宏區(qū)分局部,此內(nèi)容已在第三章中說(shuō) 明。0.242010-09-26Mingjianliu章節(jié)調(diào)整;增加新的多線(xiàn)程編譯方式;增加宏校驗(yàn)出錯(cuò)信息0.252010-10-
42、14Mingjianliu依據(jù)CRMS00202859修改,涉及:宏定義中去掉export ,增加.modules文件Makefile.rules文件中變量filter-out_macro紀(jì)錄了不需要轉(zhuǎn)義成編譯宏的一些makefile變量淇中一 些是編譯時(shí)的命令行參數(shù)。假如工程增加了額外的命令行參數(shù),請(qǐng)考慮是否在轉(zhuǎn)義宏時(shí)將其過(guò)濾掉(假如是客戶(hù)版 本,檢測(cè)SPRD宏時(shí)有可能不通過(guò))7模塊修改及工程定制這里涉及到前面談到的關(guān)鍵腳本的修改,在大多數(shù)狀況下開(kāi)發(fā)人員針對(duì)模塊或者工程的需要只需修改和補(bǔ)充兩類(lèi)的 關(guān)鍵腳本:模塊編譯腳本和工程編譯腳本。在此,我們把消失在Build環(huán)境中的最我譯單位稱(chēng)為模塊,B
43、uild系統(tǒng)中將 以MS_Code/make名目下的各個(gè)子名目名稱(chēng)作為商定的模塊名稱(chēng),這些子名目和各自的功能模塊之間呈一一對(duì)應(yīng)的 關(guān)系。添加或刪除模塊修改相應(yīng)PLATFORM.modules文件中變量EXPORTUBS或者COMPUBS_DBG,添加或刪除指定的模 塊EXPORTLIBS = audioservice agc_exp aud_algorithm bsd custom_tone charjib digitalgain dsp_codec dtmf_tone dv eq_exp generic_tone layerl Iayer1_dsp img_proc display I4 m
44、peg4_codec main ps record rtos sfs scaling transsampleratedaps parser voice vsp spmlCOMPLIBS_DBG = app custom_drv chip_drv gui mmk Ucom ubot upcc version aud_dev aud_config scp scm ate refbase de sim mmk_sys caf_templete cafjnterface utility isp_service !nor_fdl !nv_parameter某個(gè)模塊應(yīng)當(dāng)放在EXPORTUBS中進(jìn)行聲明或放
45、在COMPIJBS_DBG聲明,取決于該模塊對(duì)客戶(hù)的供應(yīng)方式。其中在EXPORTUBS中申明的模塊說(shuō)明這 些模塊將采納庫(kù)文件的方式供應(yīng)應(yīng)客戶(hù),而COMPIJBS_DBG而模塊那么說(shuō)明會(huì)供應(yīng)全部的源代碼供客戶(hù)進(jìn)行開(kāi)發(fā)。對(duì)于客戶(hù)自己新增加的模塊,那么只能在 COMPL舊S_DBG變量中申明。對(duì)于nvparameter、fdl1、fdl2、bootloader等是一些幫助的文件,只編譯出來(lái)即可,不需要參加連接,那么只需要在對(duì)應(yīng)模塊前緊加上!”符號(hào)即變 成!nvparameter !fdl1 !fdl2 (bootloader就可以將這些模塊排解在工程的連接之外。假如需要在工程中增加新的模塊,那么只需
46、要在將該模塊名稱(chēng)列舉到這 個(gè)序列中,用空格和其他模塊分隔開(kāi)即可。留意:“”符號(hào)后面應(yīng)當(dāng)緊接換行符而不能跟有空格,這個(gè)序列中的最終一個(gè)模塊不能再帶有符號(hào)。添加或刪除模塊對(duì)應(yīng)的.mk腳本假設(shè)有新模塊需要添加到Build系統(tǒng)中,需要在MS_Code/make名目下同時(shí)建立對(duì)應(yīng)當(dāng)模塊的子名目,同時(shí)在該 名目下完成和名目名稱(chēng)全都并以“mk”為后綴結(jié)尾的禳塊編譯腳本,該腳本的主要任務(wù)是完成:MCFLAG_OPT、 MINCPATH. MSRCPATH以及SOURCES (模塊中有需要編譯匯編文件的狀況下還有MASMFLAG_OPT)而定義, 編寫(xiě)方法同前面的一小節(jié)。假設(shè)有模塊需要?jiǎng)h除,刪除MS_Code/
47、make名目下對(duì)應(yīng)當(dāng)模塊的子名目即可。修改模塊模塊名目結(jié)構(gòu)調(diào)整假如模塊內(nèi)部存儲(chǔ)名目結(jié)構(gòu)或者模塊整體相對(duì)名目發(fā)生轉(zhuǎn)變,那么需要修改模塊相應(yīng)的模塊編譯腳本并修轉(zhuǎn)變 量MSRCPATH,這里以模塊aac為例:在 make/aac.mk 中定義了 :MSRCPATH = MS_Ref/codec/aac/src MS_Ref/codec/aac/src/decoder這里MSRCPATH用來(lái)定義該模塊源文件的搜尋路徑,假如該模塊中源文件的路徑發(fā)生了變化,就需要重新 定義MSRCPATH,確保模塊編譯需要的文件都包含在了搜尋路徑中。假如涉及到頭文件路徑消失變化那么需要重新定義變量MINCPATH,以確保
48、模塊使用到的頭文件完全被包含 在了頭文件定義路徑之中。以aac.mk為例,其MINCPATH變量定義如下:MINCPATH = MS_lnclude/chip_drv MS_Ref/codec/aac/inc MS_Ref/codec/aac/src/decoder MS_Ref/codec/aac/src/aacjDlus_inc注:這里MSRCPATH和MINCPATH的相對(duì)路徑都是以MS_Code作為上級(jí)名目而言的,所以需要依據(jù)這一商定給出 源文件或頭文件完整的相對(duì)路徑。添加或刪除文件假如模塊編譯文件有添加或刪除的需要,那么需要修轉(zhuǎn)變量SOURCES,可以將增加的文件直接添加在原有的 定
49、義之后,假如是需要?jiǎng)h除,那么可以直接從定義中拿掉。以aac.mk為例,其SOURCES定義如下:SOURCES = aac_adp.c aac_lc_decoder.c bits.c cfft_tab.c common.c decoder.c filtbank.c huffman.c id3_parse.c is.c mp4.c mp4atom.c mp4ff.c mp4sample.c mp4util.c ms.c pns.c pulse.c specrec.c syntax.c tns.c internal_var.c這里需要強(qiáng)調(diào)轉(zhuǎn)意符的用法,在這里表示續(xù)行,在后不能有空格消失,在最終一個(gè)
50、文件后(這里為internal_varx)不應(yīng)當(dāng)再消失該符號(hào)。修改編譯選項(xiàng)有時(shí)為了適應(yīng)不同平臺(tái)或者產(chǎn)品的需求,模塊編譯選項(xiàng)會(huì)發(fā)生變化,這時(shí)需要修轉(zhuǎn)變量MCFLAG_OPT,通 過(guò)不同的編譯選擇來(lái)滿(mǎn)意需要,以aac.mk為例,其MCFLAG_OPT定義如下:MCFLAG_OPT = -Otime -zc -D_AACARM_這里的Qtime -zc屬于該模塊需要的編譯器特殊選項(xiàng),關(guān)于編譯其他選項(xiàng)在前面的Makefile.rule中有描述, 請(qǐng)參考Makefile.rule中CFLAGS的定義。這里宏“_AACARM_”那么屬于模塊自身的特殊選項(xiàng)。針對(duì)不同工程的需要 MCFLAG_OPT可以在這里
51、進(jìn)行相應(yīng)的修改。留意:對(duì)于“_AACARM_”這類(lèi)模塊內(nèi)部定義的編譯選項(xiàng),需要在前面加上以示為編譯選項(xiàng)。創(chuàng)立新工程 創(chuàng)立全新的工程.在MS_Code名目下創(chuàng)立一個(gè)新的工程編譯腳本,該腳本的命名規(guī)章必需是前綴“project,+ “工程名稱(chēng)” +文件后綴“mk”的形式,比方工程名稱(chēng)為abed,那么相應(yīng)的工程編譯腳本名稱(chēng)必需是project_abcd.mk。.在1/1$_(3。161/1$_(31151。71126501196叩0111。1(:0加9名目下倉(cāng)ij建以 projectname 為名的文件夾,并初始化 好全部的工程定制文件并留意修改makecustom_drvcustom_drv.mk
52、.修改jectname.mk 中的 PR0DUCT_C0NFIG 變量值 指定為 “projectname,如 abed.在MS_CodeMS_Customize下創(chuàng)立編譯其需要的scatter file文件.在MS_CodeVersion名目下創(chuàng)立相應(yīng)的工程版本文件(version. 修改 MS_Codemakeresourceresource.mk指定資源路徑.修改 MS_Codemakenv_parameternv_parameter.mk 指定NV配置文件復(fù)制方式創(chuàng)立工程為了加快創(chuàng)立工程文件的過(guò)程,您可以基于一個(gè)已有的一個(gè)工程文件,復(fù)制后改一個(gè)名字基本就可以 編譯
53、通過(guò)了,在這個(gè)基礎(chǔ)上配置您想要的工程配置。當(dāng)您通過(guò)復(fù)制方式創(chuàng)立一個(gè)新工程時(shí),請(qǐng)考慮以下幾項(xiàng)信息:請(qǐng)確認(rèn)新工程中PRODUCT/ONFIG指定的名目是否需要修改,是否需要?jiǎng)?chuàng)立一個(gè)新的驅(qū)動(dòng)文件集;.請(qǐng)確認(rèn)新工程中PRODUCT_BASELIB_DIR指定的非開(kāi)放模塊.a名目名是否需要修改;.請(qǐng)確認(rèn)新工程的nv是否需要修改,檢查nv_parameter.mk文件是否滿(mǎn)意您的需要;.請(qǐng)確認(rèn)新工程的Resource是否需要修改,檢查resource, mk文件是否滿(mǎn)意您的需要;.請(qǐng)確認(rèn)是否為新工程創(chuàng)立一個(gè)新的scatter file文件7.4 修改工程Feature Options修改工程功能開(kāi)關(guān)相關(guān)的
54、編譯選項(xiàng)時(shí)請(qǐng)留意:.只有主Makefile中的“Feature Option (User Customized) n區(qū)域的宏開(kāi)關(guān),可以自行開(kāi)關(guān).任何非原那么1中的宏開(kāi)關(guān)(包括子makefile,代碼中),用戶(hù)均不行自行修改。如要更改,必需通知展訊CPM, 由展訊修改宏并重新編譯版本發(fā)給客戶(hù),并且假如修改將導(dǎo)致編譯錯(cuò)誤:Cant return outside a subroutine at ./make/perl_script/sprd_macro_check.pl line XXX不同的工程可以按工程需要對(duì)上述變量進(jìn)行相關(guān)修改。與此同時(shí),不同的工程或平臺(tái)需要選擇不同的第三方庫(kù)文 件參加鏈接,所
55、以有必要修改文件 Makefile.third-partyo8第三方編譯選項(xiàng)說(shuō)明第三方軟件供應(yīng)商,請(qǐng)使用如下的編譯選項(xiàng)來(lái)編譯代碼以協(xié)作SpreadtrumMOCOR平臺(tái)。 SC6600R 平臺(tái):noSTACKCHECK 版本:CFLAGSAFLAGSSTACKCHECK=-cpu ARM7TDMI -02 -bi -g+ -apes /interwork/ -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/ 版本:CFLAGSAFLAGS=-cpu ARM7TDMI -01 -bi -g+ -apes /in
56、terwork/swst -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/swstSC6600L 平臺(tái)noSTACKCHECKnoSTACKCHECK版本:CFLAGSAFLAGSSTACKCHECK=-cpu ARM7TDMI -02 -bi -g+ -apes /interwork/ -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/ 版本:CFLAGSAFLAGS=-cpu ARM7TDMI -01 -bi -g+
57、-apes /interwork/swst -fy -Ec -Wall=-cpu ARM7TDMI -keep -bi -g -apes /shlclient/interwork/swstSC8801H 平臺(tái)noSTACKCHECKnoSTACKCHECK版本:CFLAGSAFLAGSSTACKCHECK=-cpu ARM926EJ-S -02 -bi -g+ -apes /interwork/ -fy -Ec -Wall=-cpu ARM926EJ-S -keep -bi -g -apes /shlclient/interwork/ 版本:CFLAGSAFLAGS=-cpu ARM926EJ
58、-S -01 -bi -g+ -apes /interwork/swst -fy -Ec -Wall=-cpu ARM926EJ-S -keep -bi -g -apes /shlclient/interwork/swst9相關(guān)使用技巧查看log文件Build相關(guān)的屏幕輸出同時(shí)也被重新定向輸出到了各個(gè)模塊的編譯log文件中,一旦系統(tǒng)報(bào)告鏈接錯(cuò)誤:Could not open file build/rocky_dvb_builddir/lib/module_n.a,那么說(shuō)明模塊module沒(méi)有能夠正確編譯完成,可以 查看該模塊的相關(guān)log,舁查而“ error或者rule”相關(guān)的內(nèi)容,查明出編的
59、緣由。makefile 報(bào)錯(cuò):No rule to make target XXX needed by、yyy.例如 make1: * No rule to make target guianim.o1, needed by gui.a.這個(gè)錯(cuò)誤說(shuō)明:當(dāng)編譯gui.a的時(shí)候,無(wú)法生成guianim.o緣由是沒(méi)有搜尋到生成guianim.o所使用的源文件,這個(gè)文件可能是guianim.c , guianim.cpp, guianim.s 等。根源有可能為:.mk中宏使用不對(duì)源文件不存在makefile中源文件的搜尋路徑MSRCPATH不完整導(dǎo)致make找不到這個(gè)源文件.makefile 報(bào)錯(cuò):C
60、ant return outside a subroutineat ./make/perl_script/sprd_macro_check.pl line XXX對(duì)SPRD客戶(hù),只能修改工程文件中Feature Options (For User)局部的Feature值,否那么make會(huì)給出錯(cuò)誤信 息并停止編譯。此功能在 makefile文件目標(biāo) builddirs 中通過(guò)調(diào)用./make/perl_script/sprd_macro_check.pl 腳本實(shí)現(xiàn)。Source Insight和ClearCase配置配置過(guò)程:1、選擇Source Insight的菜單Option中的Custom
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 氣溶膠粒子對(duì)光散射效應(yīng)的研究-深度研究
- 量子比特控制技術(shù)-深度研究
- YY/T 0802.2-2024醫(yī)療器械的處理醫(yī)療器械制造商提供的信息第2部分:低度危險(xiǎn)性醫(yī)療器械
- 大連理工大學(xué)《行草臨摹與創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶工信職業(yè)學(xué)院《團(tuán)體操與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《電視專(zhuān)題》2023-2024學(xué)年第二學(xué)期期末試卷
- 森林資源培育苗木采購(gòu)合同
- 小型辦公用房租賃合同簡(jiǎn)短模板
- 購(gòu)物中心租賃經(jīng)營(yíng)合同樣本
- 電信基礎(chǔ)設(shè)施共建合同模板
- 《空中領(lǐng)航學(xué)》5.2 無(wú)線(xiàn)電方位
- (日文文書(shū)模板范例)請(qǐng)求書(shū)-請(qǐng)求書(shū)
- 二副工作心得體會(huì)實(shí)習(xí)感觸
- 土壤肥料全套課件
- 旅游消費(fèi)者行為學(xué)整套課件完整版電子教案課件匯總(最新)
- 學(xué)前兒童發(fā)展心理學(xué)(第3版-張永紅)教學(xué)課件1754
- 特氣供應(yīng)系統(tǒng)的規(guī)劃與設(shè)計(jì)
- 中職《機(jī)械基礎(chǔ)》全套課件(完整版)
- 勞技-中國(guó)結(jié)PPT通用課件
- 溫庭筠《望江南》ppt課件
- 口腔正畸學(xué)單詞
評(píng)論
0/150
提交評(píng)論