mtk程序编译及常见错误分析

上传人:第*** 文档编号:32691007 上传时间:2018-02-12 格式:DOC 页数:14 大小:74KB
返回 下载 相关 举报
mtk程序编译及常见错误分析_第1页
第1页 / 共14页
mtk程序编译及常见错误分析_第2页
第2页 / 共14页
mtk程序编译及常见错误分析_第3页
第3页 / 共14页
mtk程序编译及常见错误分析_第4页
第4页 / 共14页
mtk程序编译及常见错误分析_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《mtk程序编译及常见错误分析》由会员分享,可在线阅读,更多相关《mtk程序编译及常见错误分析(14页珍藏版)》请在金锄头文库上搜索。

1、1. 编写目的本文编写的目的主要是从整体上理解 MTK 的编译过程,以便较快的处理编译中遇到的问题,同时为以后可能的优化编译过程提供参考。2. 简介MTK 的编译过程主要是在 windows 命令行下通过 Makefile 文件执行相应的 prel 脚本或 c程序,将资源包生成 c 源程序,并与相应模块的 c 程序.o,.lib 或.obj 的中间代码,最终生成在手机上使用的.bin 文件和在模拟器上使用的 mmiresource.dll 资源文件。3. 编译环境A. 编译工具和辅助工具l ADS1.2l ADS1.2_update_848.exel MSYS 版本:1.0.10l MinGW

2、 版本:3.1.0l Gcc-core-3.3.1l Gcc-g+-3.3.1l ImageMagick 版本:6.3.6 Q16l 7-zip 版本:3.13l 注意:按照联发科技的要求,最好上述软件采用建议的版本,否则可能会出现异常情况,导致不能正常编译。B. 编译环境搭建l 按默认路径安装 ADS1.2,并安装 848 补丁包l 按默认路径安装 Perll 按默认路径安装 7_zipl 安装 MinGW先按默认路径安装 MinGW 安装包,然后解压 gcc-core、 gcc-g+的压缩包,讲解压后的两个文件夹复制到 MinGW 安装路径下。l 安装 MSYSl 安装 ImageMagi

3、ck,注意:按默认提示安装到 Select Additional Tasks 时,所有的选择全取消,后面再按默认安装。l 复制 7z.exe拷贝.7_Zip7z.exe 至.plutommiCustomerResGenerator ,并改名为 7za.exe。l 复制 MinGW拷贝.MinGW 至.ToolsMinGW。l 复制 MSYS拷贝.msys1.0 至.ToolsMSYS。l 复制 ImageMagick拷贝.ImageMagick-6.2.5-Q16 文件夹下全部文件至 .plutommiCustomerResGenerator 目录下l 设置 make.exe改名 mingw3

4、2-make.exe(.ToolsMinGW)为 make.exe,并放在 tools 目录下。C. 编译环境检查l 检查第三方软件安装情况如果确认全部安装,可跳过此步。将 custom3rdParty.pl 文件拷贝到本机,修改4$sevenZipPath = C:Progra117-Zip; 5$MinGWPath = C:MinGW;6$MSYSPath = C:MSYS;然后运行在 Toolschk_env.exel 检查 windows 环境变量l 检查 MTK 中 Makefile 变量是否正确打开.makeoption.make,检查关于 ADS 编译器的路径设置ifeq ($(

5、strip $(COMPILER),ADS)DIR_ARM = c:adsv1_2DIR_ARM := $(strip $(DIR_ARM)DIR_TOOL = $(DIR_ARM)binDIR_ARMLIB = $(DIR_ARM)libDIR_ARMINC = $(DIR_ARM)includeEndifD. 结束现在可以执行 MAKE 了,例如Make customer_name gprs new_modisMake CUSTOMER_NAME gprs newE. 搭建编译环境的另一种方法正确安装 A 中所述软件后,配置 custom3rdParty.pl 中变量,用该批处理文件自动配

6、置剩余工作。F. 搭建编译环境的一种捷径当已经配置好一个 MTK 工程,需要在另一个工程中搭建编译环境时,有一种便捷的方法,步骤如下:l 假设已配置好的工程 MAUI.A,待配置的是 MAUI.B;l 备份 MAUI.B 的 tools 目录,如改名为 tools_new;l 复制 MAUI.A 的 tools 目录至 MAUI.B 的目录下;l 用 MAUI.B 原来的 tools 目录下所有文件覆盖当前的 tools 目录,如复制 tools_new 下所有文件至 tools 下;l 复制 MAUI.A 下 plutommi/Customer/ResGenerator/7za.exe 和

7、convert.exe 至 MAUI.B 下的 plutommi/Customer/ResGenerator。4. 编译命令与文件MTK 编译分资源的编译和代码的编译。1) 资源的编译a) 在如下的情况下,需要重新编译资源:l 修改了字符串资源文件(Ref_list.txt)、字库文件(FontRes.c,L_*.h)、MMI 配置文件(MMI_featuresPLUTO.h)等,这些文件位于.plutommiCustomerCustResourcePLUTO_MMI ;l 修改了 MMI 资源装载配置文件,这些文件位于.plutommiCustomerCustResourcePLUTO_MM

8、IRes_MMI 目录下,这个目录下都是 Res_*.*文件,是各个 AP 或模块的资源装载文件,包括菜单、图片和字符串资源的装载配置;l 注意:Cust*.* 文件是资源编译生成的,不能手动修改。b) 编译方法进入.plutommiCustomer 目录,执行 remakeResource.bat。若是在模拟器上使用,则还需要在 VC 环境下 build 一下,就可以看到效果了。c) 与资源编译相关的文件l ResGenerator_HW.bat在编译手机目标板工程时,有“new” , “resgen”等选项时,自动调用;l ResGenerator.bat手机 PC 模拟器工程中,添加新资

9、源后,需要手动调用;l remakeResource.bat手机 PC 模拟器工程中,只替换图片或更新字符串等情况下,需要手动调用;l res_gen.txt资源编译的 log 文件,在 build 目录下;l Makefile.plutommiCustomerResGeneratorMakefile此文件是资源装载预编译程序的 Makefile;l PopulateRes.c.plutommiMMIResourcePopulateRes.c执行资源装载,主体是函数 PopulateResData(),mtk_resgenerator.exe 在执行时会调用该函数;l MMIDataType.

10、h.plutommimmiIncMMIDataType.h定义 AP 的 ID 范围。2) 代码的编译A. 编译命令命 令说 明Clean清除所有的目标文件、库文件和日志文件,保留目录结构New清除并重新编译所有的文件主要完成工作 gsm2.makcleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite updateUpdate扫描资源、代码的改变,有改变的重编,无改变的不编主要完成的工作 gsm2.makcleanlog cleanbin mcddll_update codegen resgen

11、 cksysdrv remakeRemake不扫描资源,只扫描代码的改变,有改变的重编,无改变的不编主要完成的工作 gsm2.makmcp_check cleanlog cleanbin genverno libs $(BIN_FILE) doneB. 编译相关的文件编译用到的文件主要放在 make 文件夹中。各个文件的简要说明如下:文件名说 明Gsm2.mak编译过程中主要执行的 make 文件,这个文件从命令行获得编译参数,做出相应的处理。它定义了各个参数的执行过程,包括:new、remake、update 等。以及调用其它 perl 或 c 程序生成目标文件。Option.mak定义了编

12、译环境中用到的工具及相关的目录,根据大的编译开关定义了小的编译和链接选项。XXX.lisXXX 模块的.c 文件如 plutommiMMIMyAppMyAppSrcMyAppSrc.cXXX.pthXXX 模块的.c 文件存放的路径如 plutommiMMIMyAppMyAppSrcXXX.defXXX 模块用到的编译开关,当 XXX 模块引用其它模块中在编译开关下定义的变量、函数或宏时,就需要将这个编译开关加进来。XXX.incXXX 模块用到的头文件路径,需要将 XXX 模块引用的头文件及,头文件引用的头文件的路径均要包含进来。如 plutommiMMIMyAppMyAppIncXXX_G

13、PRS.mak定义了需要编译的模块列表、编译中包含文件和生成文件的路径,定义 trace 的头文件路径,全局的编译开关,用户的一些编译选项,最后定义了编译路径和目录。用户可以在这个文件中定义配置。Comp.mak编译和集成模块源文件,编译生成库文件。构建目标代码依赖列表,设置每个模块的编译路径及编译选项,设置生成目标 lib 的路径,设置生成 obj 的路径。buildinfo.tmp包含了在 Gsm2.mak 和 Option.mak 中用到的项目和平台名称。compbld.tmp包含了编译每个模块时的编译信息。目标文件生成的目标文件为.bin 文件,位于 .buildproj 目录下面,b

14、uild 目录为生成的一个目录。Log 文件Log 文件同.bin 文件一样,也是位于 build 目录下,如果编译出错,可以在命令行中看到出错的模块,然后到 build 目录下找对应的 Log 文件。MT6225r 目录包括了每个模块的依赖文件(由 mak 产生的.dep)。 MT6225o 目录包含所有生成的 obj 文件和 lib 文件。 C. 文件命名规则一般来说 MMI 程序在 plutommimmi 或者 mtkapp 下面,程序源文件及头文件命名有一定的规律。以工具箱模块为例,有三个相关目录。Organizer 程序总目录OrganizerInc 头文件目录OrganizerSrc 源文件目录在 OrganizerSrc 下创建源程序文件Ebook2.c在 OrganizerInc 下创建程序头文件EbookProt.hEbookDefs.hEbookTypes.hEbookGprot.h下面介绍每个文件的作用:u *Src.c/*.c本程序的主源程序u *Gprot.h用来放本程序的所有函数声明,但此头文件是被别的程序所加载的,也就是说此文件所申明的都是对外接口;u *Gtype.h用来放本程序所需的类型、结构、常量宏定义,此头

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

当前位置:首页 > 中学教育 > 职业教育

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