MTK手机软件系统的构建过程.doc

上传人:自*** 文档编号:126246795 上传时间:2020-03-23 格式:DOC 页数:5 大小:44.50KB
返回 下载 相关 举报
MTK手机软件系统的构建过程.doc_第1页
第1页 / 共5页
MTK手机软件系统的构建过程.doc_第2页
第2页 / 共5页
MTK手机软件系统的构建过程.doc_第3页
第3页 / 共5页
MTK手机软件系统的构建过程.doc_第4页
第4页 / 共5页
MTK手机软件系统的构建过程.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《MTK手机软件系统的构建过程.doc》由会员分享,可在线阅读,更多相关《MTK手机软件系统的构建过程.doc(5页珍藏版)》请在金锄头文库上搜索。

1、MTK手机软件系统的构建过程MTK手机软件系统的构建使用了GNU的make,使得整个工程的构建可以自动进行,且可以灵活控制。整个构建过程由Make.bat、make2.pl、MoDIS.dsw、Gsm2.mak、Option.mak、_.mak等文件控制。构建PC模拟版是通过msdev和VC的工程文件MoDIS.dsw来完成的。Gsm2.mak是构建ARM版的核心Makefile文件,整个构建过程由其控制,其他是一些启动、选项配置、子过程的文件。其关系图如下所示。 在MTK手机软件系统的根目录下有一个批处理文件Make.bat,这个批处理文件启动了整个工程的构建过程。在windows的命令行下

2、,在该系统的根目录下输入命令make和相应的参数即可开始工程的构建,该批处理文件的使用方法如下所示。Usage: make customer|mt62xx project action modulesDescription: customer = mtk (Default customer) = firefly17_demo (FIREFLY17_DEMO project) = mt6217|mt6219|mt6226|mt6227|mt6228|mt6229 (EVB only) = . project = l1s (Layer 1 stand-alone) = gsm (GSM only)

3、 = gprs (GPRS only) = basic (Basic Framework) action = new (codegen, resgen, clean, update) (default) = update or u (scan, compile, link) = remake or r (compile, link) = clean or c (clean) = resgen (resgen) = c,u (clean then update) = c,r (clean then remake) = codegen (codegen) = viewlog (open edit

4、to view build log) = emigen (emigen) = emiclean (emiclean) module(s) = modules name (kal, l1, .) = OPTIONAL when action is one of (clean c remake r update u c,r c,u)Example: make gsm new (MT6205B EVB new) make gprs codegen (MT6218B EVB codegen) make mt6219 gprs update (MT6219 EVB update) make firefl

5、y17_demo gprs new make milan_demo gprs c,u init custom make mt6219 gprs r init custom drv其中较常用的action有new、update、remake、new_modis这几个。new是全新开始构建整个工程的ARM版,包括图片、声音、字符串等资源都要重做,依赖的其他动作最多,是最彻底也是耗时最长的一个动作,一般得到一个新的MTK发布版本后要做一次。update是重新更新整个工程的ARM版,该动作会扫描工程中文件和库的依赖关系,若依赖关系有变化会建立新的依赖关系,随后根据新的依赖关系重新编译链接有改动的部分,

6、一般在增加或删除一些驱动或应用的情况下需要用update。remake是重新编译整个工程的ARM版,该动作只是简单的重新编译链接有改动的部分,不检查依赖关系,是耗时最短的一个动作,也是最常用的动作。new_modis是全新构建整个工程的PC模拟版,其调用VC的编译器和链接器得到一个可以在windows上运行的PC模拟版。MMI应用软件工程师可以在没有硬件板的情况下在PC上检查和调试自己写好的应用。Make.bat实际上只起引导作用,其只有一行批处理语句perl make2.pl %*,于是运行该批处理文件后控制权转给了perl脚本make2.pl。在这个perl脚本中解析了用户输入的命令行参数

7、,设置变量,准备make时需要的临时配置文件,随后根据生成的可运行映像是PC模拟版还是ARM版而分别调用不同的构建过程。Pc模拟版的构建通过调用如下命令实现。system($msdev MoDIS.dsw /MAKE $argu - Win32 $modisDir/OUT $MoDISLogDir$argu.log)在这里$msdev就是VC的msdev,通过VC的工程文件MoDIS.dsw和后面的参数进行具体的构建过程。熟悉VC工程的朋友应该比较清楚,因此就不再具体解释了。之后将只以ARM版为主来讲解整个工程的构建过程。ARM版的构建通过调用如下命令实现。system($makeCmd -f

8、$makeFolder$myMF -r -RCUSTOMER=$custom PROJECT=$project $action)在这里$makeCmd是toolsmake.exe,即GNU的make,$makeFolder$myMF是makeGsm2.mak,$action是new、update、remake等。变量CUSTOMER和PROJECT分别是客户名和项目名,在构建过程中将根据此两个变量的值选定项目相关的配置文件,从而实现客户化的定制。通过给make指定ARM版的核心Makefile文件Gsm2.mak,开始了ARM版的构建过程。 Gsm2.mak文件中包含了Option.mak这个

9、配置用的Makefile文件,另外还包含了一些以.tmp和.bld为后缀的由perl脚本make2.pl生成的临时配置文件。这些临时配置文件主要是一些action如clean、remake等所需的变量设置,及客户化和版本号等的一些信息。Gsm2.mak控制了new、update、remake等动作的过程。具体分别如下所示。new : cleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite updateupdate : cleanlog cleanbin mcddll_update codegen

10、 resgen cksysdrv remakeremake : cleanlog cleanbin genverno libs $(BIN_FILE) done上面的构建过程的几个步骤中,最重要的两个步骤是libs、$(BIN_FILE) 。libs调用ARM版的编译器和连接器将各个模块目录下的C文件编译链接为独立的库。$(BIN_FILE)这个步骤将各个模块编译链接得到的库和mtk_lib目录下的库一起链接起来得到一个映像文件,然后使用ADS的工具fromelf将映像文件生成以变量BIN_FILE命名的二进制文件,该文件可以下载到硬件板上运行。 libs这个步骤如下所示。libs: clea

11、nlib startbuildlibs $(COMPLIBLIST) libs中真正进行编译链接的步骤是$(COMPLIBLIST),要生成的库由变量COMPLIBLIST列出,在ARM版中,变量COMPLIBLIST从变量COMPLIST得到。变量COMPLIST是在Option.mak及其包含的Makefile文件中赋值的。因有很多库需要编译链接,变量COMPLIBLIST展开后包含多个步骤,而这些步骤都是重复不变的,因此在定义步骤$(COMPLIBLIST)的构建过程时使用%.lib代替。%.lib这个步骤先清除了之前的一些依赖关系文件,将一些变量的设置写入compbld.tmp这个临时

12、文件中,然后给make指定Makefile文件comp.mak,完成库的编译和链接,如下所示。%.lib: if /I %OS% EQU WINDOWS_NT (if /I $(BM_NEW) EQU TRUE (toolsmake.exe -fmakecomp.mak -k -r -R $(strip $(CMD_ARGU) COMPONENT=$* $(strip $(COMPLOGDIR)$*.log 2&1) else (toolsmake.exe -fmakecomp.mak -r -R $(strip $(CMD_ARGU) COMPONENT=$* $(strip $(COMPL

13、OGDIR)$*.log 2&1) ) else (if /I $(BM_NEW) EQU TRUE (toolsmake.exe -fmakecomp.mak -k -r -R $(strip $(CMD_ARGU) COMPONENT=$* $(strip $(COMPLOGDIR)$*.log) else (toolsmake.exe -fmakecomp.mak -r -R $(strip $(CMD_ARGU) COMPONENT=$* $(strip $(COMPLOGDIR)$*.log) )上面的命令语句中,参数-k是指有错误也要继续编译,-r和-R是指没有GNU make的默认规则和变量。COMPONENT=$*把当前要生成的库赋给变量COMPONENT。要注意%.lib匹配了所有要生成的库,但这个步骤一次只生成一个模块的库,这个步骤对所有匹配到的库都会执行一次。comp.mak这个Makefile文件控制了模块的编译链接过程。在这个文件中,首先将当前模块要生成的库(由变量COMPONENT传入)设置给了变量TARGLIB。之后从.lis文件中得到SRC_L

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号