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