MTK入门相关知识总结Word格式文档下载.docx

上传人:b****6 文档编号:18908216 上传时间:2023-01-02 格式:DOCX 页数:35 大小:45.44KB
下载 相关 举报
MTK入门相关知识总结Word格式文档下载.docx_第1页
第1页 / 共35页
MTK入门相关知识总结Word格式文档下载.docx_第2页
第2页 / 共35页
MTK入门相关知识总结Word格式文档下载.docx_第3页
第3页 / 共35页
MTK入门相关知识总结Word格式文档下载.docx_第4页
第4页 / 共35页
MTK入门相关知识总结Word格式文档下载.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

MTK入门相关知识总结Word格式文档下载.docx

《MTK入门相关知识总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MTK入门相关知识总结Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。

MTK入门相关知识总结Word格式文档下载.docx

XXX模块的.c文件

XXX.pth

XXX模块的.c文件存放的路径

XXX.def

XXX模块用到的编译开关,当XXX模块引用其它模块中在编译开关下定义的变量、函数或宏时,就需要将这个编译开关加进来。

XXX.inc

XXX模块用到的头文件路径,需要将XXX模块引用的头文件及,头文件引用的头文件的路径均要包含进来。

XXX_GPRS.mak

定义了需要编译的模块列表、编译中包含文件和生成文件的路径,定义trace的头文件路径,全局的编译开关,用户的一些编译选项,最后定义了编译路径和目录。

Comp.mak

编译和集成模块源文件,编译生成库文件。

构建目标代码依赖列表,设置每个模块的编译路径及编译选项,设置生成目标lib的路径,设置生成obj的路径

~buildinfo.tmp

包含了在Gsm2.mak和Option.mak中用到的项目和平台名称

~compbld.tmp

包含了编译每个模块时的编译信息。

MT6218B.log

记录了Gsm2.mak文件编译过程

MT6218Br目录

包括了每个模块依赖的头文件

MT6218Bo目录

包含所有生成的obj文件和lib文件。

1.5.编译指令

1、new

功能:

全新开始构建整个工程的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,codegen,asnregen,operator_check_lite,update.

用途:

new指令是最彻底也是耗时最长的一个动作,一般得到一个新的MTK发布版本后由项目负责人要做一次。

使用示例:

C:

BIRD25_GEMINI_07BRelease>

makeBIRD25_GEMINI_07Bgprsnew。

2、update

功能:

update是重新更新整个工程的ARM版,该动作会扫描工程中文件和库的依赖关系,若依赖关系有变化会建立新的依赖关系,随后根据新的依赖关系重新编译链接有改动的部分。

Update指令不依赖cleanall指令,所以它不会删除目标文件和库文件,也不会去更新日志文件和创建目标目录,这一点和remake相像,这也是为什么执行时间比new短的原因。

update->

cleanlog->

cleanbin->

mcddll_update->

resgen->

cksydrv->

remake。

cleanlog,cleanbin,mcddll_updata,codegen,resgen,cksydrv,remake。

update是耗时较长的一个指令,一般在增加或删除一些驱动或应用情况下使用。

makeBIRD25_GEMINI_07Bgprsupdate。

3、remake

remake是重新编译整个工程的ARM版,该动作只是简单的重新编译链接有改动的部分。

它不检查依赖关系.不扫描资源,只扫描代码的改变,有改变的重编,资源和无改变的代码不编。

过程简要说明:

remake->

mcp_check->

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的工具fromelf将映像文件生成以变量BIN_FILE命名的二进制文件,该文件可以下载到硬件板上运行。

remake是耗时最短的一个动作,也是最常用的动作。

makeBIRD25_GEMINI_07Bgprsremake。

4、clean

功能:

清除所有的目标文件,临时文件,库文件,可执行文件,更新日志文件。

还可以用于某个模块相关的清除工作。

checkbuildroot、targetfolder、comp、lib、complogfolder->

cleanbinfolder、elf、lis、htm、logfiles、tstdatabasefiles、obj,libfiles。

cleanlog,cleanbin,cleanmod,cleancodegen等。

作为其它命令所依赖的指令,还有就是清除工程或者指定模块对象的类库。

makeBIRD25_GEMINI_07Bgprsclean,C:

makeBIRD25_GEMINI_07BgprscleanInit。

5、其他命令介绍

new_modis:

是全新构建整个工程的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。

Cleancodegen:

删除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_features.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:

检查mediamemory。

该指令依赖gencustominfogen_infolognvram_auto_gen。

Dummy_data_check:

检查虚拟数据。

Viewlog:

查看日志文件。

Cksysdrv:

检查系统驱动是否为满。

Genverno:

生成verno.c/h。

Mcddll_update:

生成和更新tstmcddll.dll文件。

Gen_bl_verno:

生成bootloader版本号。

Del_fota:

删除fota二进制文件和elf,lis,sym,htm.*.log文件。

实践:

一,要手动修改flash类型时:

(1)没有打开USB_DOWNLOAD

emiclean->

emigen->

r

(2)打开了USB_DOWNLOAD

bootloader->

c,rcustominitdrv->

action 

=new 

(codegen,resgen,clean,update)(default)

=updateoru 

(scan,compile,link)

=slim_update 

(scan,compile,linkwithoutgeneratingmcddll)

=remakeorr 

(compile,link)

=cleanorc 

(clean)

=cciorclean_codegen(cleancodegenintermediafiles) 

=resgen 

(resgen)

=c,u 

(cleanthenupdate)

=c,r 

(cleanthenremake)

=codegen 

(codegen)

=slim_codegen 

(codegenwithoutgeneratingmcddll)

=update_mcddll 

(codegenandgeneratemcddll)

=slim_mcddll 

(generatemcddllwithoutcodegen)

=viewlog 

(openedittoviewbuildlog)

=emigen 

(emigen)

=emiclean 

(emiclean)

=check_dep 

(checkdependencymodule(s)aftersource(s)/header(s)changed)

=remake_dep 

(check_dep,remake)

=update_dep 

(check_dep,update)

Example:

makegsmnew 

(MT6205BEVBnew)

makegprscodegen 

(MT6218BEVBcodegen)

makemt6219gprsupdate 

(MT6219EVBupdate)

makefirefly17_demogprsnew

makemilan_demogprsc,uinitcustom

makemt6219gprsrinitcustomdrv

makemt6229gprscheck_depinit/include/init.h

makemt6229gprsremake_dep@make/init/init.lis

makemt6229gprsupdate_depinit/src/init.c

1.6.常见编译错误

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"

line349:

Error:

C2455E:

array[0]found

line350:

array[0]found

因为默认的240X320屏幕打开的关于游戏的编译开关下没有游戏,所以需要打开mmi_featurespluto.h文件中的__MMI_GAME_VSMJ_240x320__编译开关。

4、现象:

mmiresource模块生成错误:

plutommi/Customer/custresource/custimgmapext.c"

line31:

C2456E:

undeclaredname,inventing'

externintMAX_IMAGE_IDS'

Seriouserror:

C2958E:

illegalinconstantexpression:

nonconstant'

MAX_IMAGE_IDS'

plutommi/Customer/custresource/custimgmapext.c:

0warnings,1error,1seriouserror

原因:

改变了屏幕大小后,128X160目录下的图片资源有问题。

解决办法:

更换128X160目录下的图片资源,重新编译此模块。

5、现象:

FreeclustersareNOTenough.CheckckSysDrv.logfordetail!

Tools/make.exe:

***[cksysdrv]Error1

删除掉/custom/system/CCDH26_05C_BB目录下的custom_EMI.c、custom_EMI.h、flash_opt.h三个文件。

6、现象:

在新加模块的.c文件中引用一个b.h,产生b.h中的aaa变量没有定义的错误,具体错误如下:

没有包含定义aaa变量的头文件a.h。

在includeb.h之前includea.h 

7、现象:

plutommi/Customer/custresource/CustImgDataHW.h"

line19361:

C2934E:

duplicatedefinitionof'

________CUSTOMER__IMAGES__EMPTYIMAGE_BMP'

删掉CustImgDataHW.h这个文件重新编译 

8、现象:

在链接bin文件时,出现以下错误:

Error:

L6218E:

Undefinedsymbolcustom_setAdvEMI(referredfrombootarm.obj).

custominfo.pl文件没有修改,默认只打开CCDH26_05C_GPRS.mak一个文件,并不打开其它定义编译开关的文件,导致custom模块中的有些文件没有编译,所以一些变量在最后链接时显示未定义。

修改custominfo.pl文件。

编译某个模块,出现错误:

C2933E:

typedisagreementfor'

mmi_phb_info_entry_list'

调用mmi_phb_info_entry_list函数时传递的参数不正确,或者是函数mmi_phb_info_entry_list在调用时还未定义。

9、现象:

编译时出现字符串未定义的错误,

enum_list.h:

2046:

error:

`STR_ENTERTAINMENT_EXPLAIN_WOMANKNOWLEDGE'

undeclareere(notinafunction)

可能是编译开关没打开,或者是正在使用excel表,readexcel.c中没有添加相关的头文件。

还有一种可能是在使用这个字符串ID的模块的make底下的.inc文件中没有将定义这个字符串的头文件路径加上。

还要注意防止头文件引用的宏定义是不是重复。

MTK快速调试定位的几种方法

在debug调试时你也许常常发现有思路如何改,但就苦于找不到要改的地方。

所以快速的定位代码是至关重要。

在debug时,最重要的是能够准确快速的定位代码,一般常用的有如下几种方式

1.在模拟器中使用断点

模拟器中断跟踪断点设置函数:

//触屏相关wgui_touch_screen.c

wgui_general_pen_down_hdlr//触摸屏按下函数

wgui_general_pen_move_hdlr//触摸屏移动函数

wgui_general_pen_down_hdlr//触摸屏松开函数

wgui_general_pen_repeat_hdlr//重复

wgui_general_pen_abort_hdlr//放弃操作

在wingui.c此函数中setup_UI_wrappers有相关全局变量的初始赋值和定义

EntryNewScreen 

//进入一个新的screen都会调用的函数

ExecuteCurrKeyHandler//执行按键的函数

ExecuteCurrHiliteHandler

ExecuteCurrHiliteHandler_Ext//执行当前高亮的函数

ExecuteCurrProtocolHandler 

//执行当前协议栈的函数

execute_softkey_function 

//执行softkey的函数

UI_fill_rectangle 

//填充一个矩形框

UI_draw_vertical_line 

//画一条垂直线

UI_draw_horizontal_line 

//画一条水平线

UI_draw_dotted_horizontal_line//水平虚线

UI_draw_dotted_vertical_line//垂直虚线

UI_print_text 

//画一个字符串

UI_print_bordered_text 

//画一个有边色字符串

UI_print_text_n 

//画一个有n个字符的字符串

UI_print_bordered_text_n//画一个有n个字符的带边框色字符串

UI_print_bordered_character//画一个的带边框色字符

UI_print_character 

//画一个字符

gdi_image_draw 

//从绘图事件开始跟踪的函数

_show_image 

//画一个gif

_show_transparent_image 

//画有设透明色的图片

_show_animation_frame 

//画设置祯数的图片

gdi_layer_blt_previous 

//同一个layer刷新某一区域的函数

gdi_layer_blt_ext 

//几个layer叠加显示时刷新某一区域的函数

UI_BLT_double_buffer 

//刷新一块区域

UI_set_font 

//设置字体

3。

在模拟器中设置变量值改变的断点

4。

搜索菜单ID如MAIN_MENU_ENTERTAINMENT_MENU_ID

5。

搜索字

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1