MTK入门相关知识总结.docx
《MTK入门相关知识总结.docx》由会员分享,可在线阅读,更多相关《MTK入门相关知识总结.docx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结1.1. 编写目的MTK 编译过程可编辑资料 - - - 欢迎下载精品名师归纳总结本文编写的目的主要是为了从整体上懂得MTK 的编译过程, 以便能够较快的处理编译中遇到的问题, 同时为以后可能的优化编译过程供应参考。1.2. 简介MTK 的编译过程主要是在windows 命令行下通过MakeFile 文件来执行相应的perl 脚本或 c 程序,将资源包生成c 源程序, 并与相应模块的c 程序生成 .o,.lib 或.obj 的中间代码, 最终生成在手机上使用的.bin 文件和在模拟器上使用的mmiresource.dll 资源文件。1.3. 编译命令命令说 明Clean清除全部
2、的目标文件、库文件和日志文件清除并重新编译全部的文件。主要完成工作:可编辑资料 - - - 欢迎下载精品名师归纳总结NewUpdateRemakegsm2.mak cleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite update重新编译资源文件,生成相应的目标文件。主要完成的工作:gsm2.mak cleanlog cleanbin mcddll_update codegen resgen cksysdrv remake仅仅编译依靠修改过的文件生成的模块。主要完成的工作:gsm2.mak m
3、cp_check cleanlog cleanbin genverno libs $BIN_FILE done可编辑资料 - - - 欢迎下载精品名师归纳总结1.4. 编译相关的文件编译用到的文件主要放在make 文件夹中。各个文件的简要说明如下:文件名说 明Gsm2.mak编译过程中主要执行的make 文件,这个文件从命令行获得编译参数,做出相应的处理。它定义了各个参数的执行过程,包括:new 、remake 、update等。以及调用其它perl 或 c 程序生成目标文件。Option.mak定义了编译环境中用到的工具及相关的目录,依据大的编译开关定义了小的编译和链接选项,编译中包含文件和
4、生成文件的路径,定义trace 的头文件路径,全局的编译开关,用户的一些编译选项,最终定义了编译路径和目录。XXX.lisXXX 模块的 .c 文件XXX.pthXXX 模块的 .c 文件存放的路径XXX.defXXX 模块用到的编译开关,当 XXX 模块引用其它模块中在编译开关下定义的变量、函数或宏时, 就需要将这个编译开关加进来。XXX.incXXX 模块用到的头文件路径,需要将XXX 模块引用的头文件及,头文件引用的头文件的路径均要包含进来。XXX_GPRS.mak定义了需要编译的模块列表、编译中包含文件和生成文件的路径,定义trace 的头文件路径,全局的编译开关,用户的一些编译选项,
5、最终定义了编译路径和目录。Comp.mak编译和集成模块源文件,编译生成库文件。构建目标代码依靠列表,设置每个模块的编译路径及编译选项,设置生成目标lib 的路径,设置生成obj 的路径可编辑资料 - - - 欢迎下载精品名师归纳总结buildinfo.tmpcompbld.tmp MT6218B.log包含了在 Gsm2.mak和 Option.mak中用到的项目和平台名称包含了编译每个模块时的编译信息。记录了 Gsm2.mak文件编译过程MT6218Br目录MT6218Bo目录包括了每个模块依靠的头文件包含全部生成的obj 文件和 lib 文件。1.5. 编译指令1、new功能 :全新开头
6、构建整个工程的ARM 版,包括图片、声音、字符串等资源都要重做。在构建工程过程中,清除全部的目标文件,库文件,日志文件等。New 指令仍会自动创建必要的目录、移除暂时文件和中间脚本、更新日志文件。过程简要说明:new-cleanall-sysgen-ckscatter-mmi_feature_check-asngen-codegen-asnregen-operator_check_lit-$BTLD_BIN_FILE-update。依靠指令 : new 依靠的其他指令最多,其中包括cleanall,sysgen,ckscatter,mmi_feature_check,asngen,codege
7、n,asnregen,operator_check_lite,update.用途 : new 指令是最完全也是耗时最长的一个动作,一般得到一个新的MTK 发布版本后由项目负责人要做一次。使用示例 : C: BIRD25_GEMINI_07BReleasemake BIRD25_GEMINI_07B gprs new。2、update功能 : update 是重新更新整个工程的ARM 版,该动作会扫描工程中文件和库的依靠关系,如依靠关系有变化会建立新的依靠关系,随后依据新的依靠关系重新编译链接有改动的部分。Update 指令不依靠cleanall 指令,所以它不会删除目标文件和库文件,也不会去更
8、新日志文件和创建目标目录,这一点和 remake相像,这也是为什么执行时间比new 短的缘由。过程简要说明: update-cleanlog-cleanbin-mcddll_update-codegen-resgen-cksydrv-remake。依靠指令 : cleanlog,cleanbin,mcddll_updata,codegen,resgen,cksydrv,remake 。用途 : update 是耗时较长的一个指令,一般在增加或删除一些驱动或应用情形下使用。使用示例 : C: BIRD25_GEMINI_07BReleasemake BIRD25_GEMINI_07B gprs
9、update。3、remake功能 :remake 是重新编译整个工程的ARM 版,该动作只是简洁的重新编译链接有改动的部分。它不检查依靠关系.不扫描资源,只扫描代码的转变,有转变的重编,资源和无转变的代码不编。过程简要说明:remake-mcp_check-cleanlog-cleanbin-genverno-libs-$BTLD_BIN_FIKE-cmmgen-done。可编辑资料 - - - 欢迎下载精品名师归纳总结依靠指令 : mcp_check,cleanlog ,cleanbin ,genverno , libs , $BIN_FIKE , cmmgen,done。其中最重要的两个
10、指令是libs , $BIN_FIKE 。Libs 调用编译器和连接器将各个模块目录下的C 文件编译连接为独立的库。 $BIN_FIKE 是将各个模块编译连接的库和mtk_lib 目录下的库一起连接起来得到一个映像文件, 然后使用ADS 的工具 fromelf 将映像文件生成以变量BIN_FILE命名的二进制文件,该文件可以下载到硬 件板上运行。用途 : remake 是耗时最短的一个动作,也是最常用的动作。使用示例 : C: BIRD25_GEMINI_07BReleasemake BIRD25_GEMINI_07B gprs remake。4、clean功能 :清除全部的目标文件,暂时文件
11、,库文件,可执行文件,更新日志文件。仍可以用于某个模块相关的清除工作。过程简要说明: check build root 、target folder 、comp、 lib 、comp log folder-clean bin folder 、 elf 、lis、htm、 log files 、tst database files、obj,lib files 。依靠指令 : cleanlog,cleanbin,cleanmod,cleancodegen 等。用途 :作为其它命令所依靠的指令,仍有就是清除工程或者指定模块对象的类库。使用示例 : C: BIRD25_GEMINI_07BReleas
12、emake BIRD25_GEMINI_07B gprs clean,C: BIRD25_GEMINI_07BReleasemake BIRD25_GEMINI_07B gprs clean Init。5、其他命令介绍new_modis :是全新构建整个工程的PC 模拟版,其调用 VC 的编译器和链接器得到一个可以在windows 上运行的PC 模拟版。 MMI应用软件工程师可以在没有硬件板的情形下在PC 上检查和调试自己写好的应用。codegen_modis: 产生 modis 需要的 trace 文件的 datebase。gen_modis :产生 vc 工程文件。remake_modis
13、 :重新编译整个工程的PC 版。Codegen :创建 TST 数据库。它依靠的指令有:cleancodegen,asngen,umts_gen,codegen,asnregen,cleanbin,mcddll_update,done。Cleancodegen :删除 codegen.lis。Resgen:生成 MMI 资源。它依靠的指令有:code_generate,cleancodegen,asngen,codegen,asnregen,cleanbin,mcddll_update,done。 Cmmgen :生成 CMM 文件。Sysgen:生成内存映射文件,并放在CUSTOMER 文件
14、夹里面。Emigen :生成 flash_opt.h,custom_EMI.h,custom_EMI.c和 custom_switchclock.c 文件。可编辑资料 - - - 欢迎下载精品名师归纳总结Emiclean :清除 EMI 设置。Mmi_feature_check:依据 MMI_features.h 和 MMI_features_switch.h中宏定义的不同来产生info.log 文件。Operator_check : 检查 customer 的宏是否被修改,假如修改产生相应log 文件。Fota :生成 FOTA 二进制文件。Bootloader :生成 bootloader
15、 二进制文件。Ckscatter :检查 scatter 文件Mmi_obj_check: 检查运行时间值,e.g,联合体元素的大小等。Med_mem_check :检查 media memory 。该指令依靠gencustominfo gen_infolog nvram_auto_gen 。Dummy_data_check: 检查虚拟数据。Viewlog :查看日志文件。Cksysdrv :检查系统驱动是否为满。Genverno :生成 verno.c/h。Mcddll_update:生成和更新tst mcddll.dll文件。Gen_bl_verno :生成 bootloader 版本号。
16、Del_fota :删除 fota 二进制文件和elf,lis,sym,htm.*.log文件。实践:一,要手动修改flash 类型时:(1) 没有打开USB_DOWNLOAD emiclean - emigen - r( 2)打开了USB_DOWNLOADemiclean - emigen - bootloader - c,r custom init drv - raction= newcodegen, resgen, clean, update default= update or uscan, compile, link= slim_updatescan, compile, link w
17、ithout generating mcddll= remake or rcompile, link= clean or cclean= cci or clean_codegen clean codegen intermedia files= resgenresgen= c,uclean then update= c,rclean then remake可编辑资料 - - - 欢迎下载精品名师归纳总结= codegencodegen= slim_codegencodegen without generating mcddll= update_mcddllcodegen and generate
18、 mcddll= slim_mcddllgenerate mcddll without codegen= viewlogopen edit to view build log= emigenemigen= emicleanemiclean= check_depcheck dependency modules after sources/headers changed= remake_depcheck_dep, remake= update_depcheck_dep, updateExample:make gsm newMT6205B EVB newmake gprs codegenMT6218
19、B EVB codegen make mt6219 gprs updateMT6219 EVB update make firefly17_demo gprs newmake milan_demo gprs c,u init custom make mt6219 gprs r init custom drvmake mt6229 gprs check_dep init/include/init.h make mt6229 gprs remake_dep make/init/init.lis make mt6229 gprs update_dep init/src/init.c1.6. 常见编译
20、错误1、mtk_resgenerator.exe 不能正常运行。可能是 ResGenerator 文件夹中的某些文件有错误。一个缘由是在 ResGenerator 文件夹中缺少temp.rgb 这个文件,并且不能自动生成。2、240X320 屏的 Font_res.c 文件的错误, 由于打开了中文字体的编译开关,只需要将mmi_featurespluto.h文件中 MMI_LANG_SM_CHINESE的编译开关关闭即可。3、显现以下错误,plutommi/mmi/FunAndGames/FunAndGamesSrc/Game.c, line 349: Error: C2455E: array
21、 0 found plutommi/mmi/FunAndGames/FunAndGamesSrc/Game.c, line 350: Error: C2455E: array 0 found由于默认的240X320 屏幕打开的关于嬉戏的编译开关下没有嬉戏,所以需要打开mmi_featurespluto.h文件中的 MMI_GAME_VSMJ_240x320编译开关。4、现象: mmiresource 模块生成错误:可编辑资料 - - - 欢迎下载精品名师归纳总结plutommi/Customer/custresource/custimgmapext.c, line 31: Error: C24
22、56E: undeclared name, inventing extern int MAX_IMAGE_IDSplutommi/Customer/custresource/custimgmapext.c, line 31: Serious error: C2958E: illegal in constantexpression: non constant MAX_IMAGE_IDS plutommi/Customer/custresource/custimgmapext.c: 0 warnings, 1 error, 1 serious error缘由:转变了屏幕大小后,128X160 目录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK入门相关知识总结 MTK 入门 相关 知识 总结
限制150内