ImageVerifierCode 换一换
格式:DOCX , 页数:58 ,大小:497.43KB ,
资源ID:22384292      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22384292.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MTK开发心得完整版Word文件下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MTK开发心得完整版Word文件下载.docx

1、ActivePerl, 推荐使用ActivePerl 5.6.1版本仿真工具:MTK PC Simulator跟踪工具:Catcher_L1 v3.10.01,从串口输出调试信息,只做普通UI应用的话,大致不会用到,用PC仿真工具就好了烧录工具:FlashTool_UI v3.1.05 或 FlashTool_v3.0844.00其 他:PL2303_Driver_XP2K v204102,这是下载线用到的USB串口驱动,以前机器上装过PL2303驱动的,建议改用这个,否则可能会有蓝屏的问题。2、开发环境建立过程:新建一个目录,英文的好了,否则有些工具不认识中文路径,这里以E:MTK_P130

2、0为例说明,下面我用文字和图片简单说明下安装过程,更详细的安装过程可以看压缩文件“手机开发板C语言开发视频.rar”中的Flash文件“P1300_Build_Env.swf”。1) 安装ADS1.2解压文件huayu109_ads1.2.rar到某个目录,比如说解压到“E:MTK_P1300”,解压完后运行“E:MTK_P1300ADS1.2Setup.exe”,一路按下一步,最后安装License时选定文件“E:MTK_P1300ADS1.2CRACK license.dat”,然后接着一路下一步直到安装完。安装完后删掉目录“E:MTK_P1300ADS1.2”,节省磁盘空间。2) 安装A

3、DS补丁运行huayu102_ADS12_Patch_Windows.rar压缩文件中的ADS_Patch_Window.exe,这是个自解压的压缩文件,选Unzip解压到上一步ADS的安装目录(缺省是C:Program FilesARMADSv1_2),解压过程中如果问到是否覆盖,全部选覆盖好了。3) 安装脚本解释器Perl直接运行压缩包huayu106_perlzip.rar里面扩展名为msi的安装文件,缺省安装就好,一路Next,呵呵。上述几步完成后,编译环境基本建立,此时可以开一个dos窗(开始菜单-运行-输入cmd-确定)看一下,安装正常应该能顺利执行以下命令,如下图:注意看版本号,

4、应该是ADS1.2 Build 842,不是的话可能没打补丁,或补丁打的位置不对,请看第2步ADS补丁部分的说明并重新打一次,直到版本号对为止,哈哈。这是perl解释器的运行画面。注1:上述安装过程会自动创建编译环境所需的环境变量,如果发现编译不正常了,可能是安装了其他编译工具导致冲突,这时建议查看下系统环境变量,把Perl和ADS的安装目录调到最前面,同时从path中去掉可能会产生冲突的编译工具链的路径(例如winavr),如下图所示(我是安装到D盘滴,缺省是C盘,不过我C盘几乎被我塞满了):如果嫌改path麻烦(因为要用到其他编译工具链的时候还得改回去),还有一种办法,就是改make.ba

5、t批处理,具体见注4中相关说明。注2: 如果安装ADS时,改变了默认安装路径,需要修改源码中的设置,源码目录树解压过程见模拟器编译环节相关介绍。 makeOption.mak - ifeq ($(strip $(COMPILER),ADS) DIR_ARM = c:progra1armadsv1_2 # 修改这里 DIR_ARM := $(strip $(DIR_ARM) DIR_TOOL = $(DIR_ARM)bin DIR_ARMLIB = $(DIR_ARM)lib DIR_ARMINC = $(DIR_ARM)include endif-比如改装到D盘了,这里把红色部分“c”改成“d

6、”就好了4) 代码编辑环境运行压缩文件huayu108_Source Insight3.5.rar中的安装文件安装即可。至于编辑器,这个看个人喜好了,不过Source Inside看代码蛮方便的。5) PC机模拟器模拟器MTK PC Simulator是用来在PC上仿真调试用的,要安装VC6 SP6(同时要安装Uuicode 静态和动态库,没有装Unicode库的可以用“huayu103_MTK模拟器DLL补丁.zip”中的库,拷到系统目录“%windir%system32”下即可)。我机器上的VC是有装Unicode库的,没装过Unicode库的如果在模拟器编译或运行中出现问题,建议重装下V

7、C6,安装时勾选Unicode库,并打上相关补丁到SP6。模拟器能模拟真机的大部分行为,这样能给调试带来很大便利,不需要每次改动都要烧录。模拟器要从源码编译,解压压缩包“huayu201_P1300_V1.7_Release.rar”里面的文件“HUAYU_P1300_V1.7_Release.rar”到目录“E:MTK_P1300”,此时会出现目录“E:MTK_P1300P1300_V1.7_Release”,这就是P1300的代码目录树了;接着打上最新的补丁,解压压缩包“huayu203_P1300_V1.7_Release_patch.rar”里面的压缩文件“HUAYU_P1300_V1

8、.7_Release_patch.rar”到目录“E:MTK_P1300P1300_V1.7_Release”,解压时选择全覆盖以替换被修改过的文件,打补丁之前对目录树里面的文件进行修改过的,需要手动再加上去。 编译PC仿真器之前需要先把刚才上面得到的目录树build一次,开一个dos窗,盘符和目录转到代码目录树对应的盘符和目录,例如: E: cd E:MTK_P1300P1300_V1.7_Releasemake new注3:第一次make的时候要用“make new”,make new的时间比较长(慢的机器搞不好要2小时以上),编译过程中间会出现一些文件找不到的信息,只要编译过程没意外终止

9、,那些信息可以忽略。编译日志文件位置: buildNEOTEL25_06Blog,要查看编译过程有啥问题就看这个目录下的文件了;生成的bin文件位置: buildNEOTEL25_06B*.bin,下载烧录就是烧bin文件。这里顺带介绍下build的命令格式:make new 清除后重新编译整个项目make resgen 重新生成资源make remake 重新编译链接项目make viewlog xxx 查看模块xxx的编译日志make 查看可以用make选项帮助信息 注4:如果机器上装了其他gcc编译工具链(比如winavr之类)的话可能要手动改下Path,否则编译会出错,修改Path的方

10、法见注1,也可以修改批处理文件“E:MTK_P1300P1300_V1.7_Releasemake.bat”,在“perl make2.pl %*”之前加上下面两句:set PERL5LIB=D:perllibset PATH=D:perlbin;d:progra1armadsv1_2bin;E:MTK_P1300P1300_V1.7_Releasetools;c:windowssystem32;windows;windowssystem注意,上面的路径是我机器上的,不是缺省安装路径,要根据自己的实际安装路径做修改。 下面开始编译PC仿真器了,用VC6打开工程文件“E:MTK_P1300P13

11、00_V1.7_Releaseplutommimmi PC_Simulator.dsw”,然后开始编译,编译时间比较长,具体看机器配置了,这时又可以干点别的啥了,呵呵。 因为仿真器工程涉及文件较多,编译费时,建议编译过程中电脑上少开窗口,特别是网络类的,如QQ,有时会发现开QQ后,编译过程中VC会挂死,呵呵。有可能是开QQ后防火墙过滤网络数据占用较多系统资源,如果发现VC编译特别慢或干脆挂死,可以重启动一下电脑,只开必要的窗口,然后开始编译。如果编译过程中发现怪异的问题,如:incomingstringiddef.h(120) : error C2059: syntax error : con

12、stant 或者error C2065:STR_CM_REDIAL : undeclared identifier 之类这个时侯你可能需要看一下你VC相关路径的设置顺序,如下图:把VC原本的头文件路径调整到最前面,我刚开始编译的时候SDK的头文件在前面,编译总是通不过,改一下就好了,库也一样都调整下比较保险,呵呵。6) Tracer跟踪工具解压文件P1300_Build_Guide.rar到E:MTK_P1300,然后在文件管理器进入目录“E:MTK_P1300P1300_Build_Guide”,接着解压Catcher_L1_v3.10.01.zip到当前目录下的Catcher_L1_v3.

13、10.01子目录,进入子目录Catcher_L1_v3.10.01,发送一个Catcher.exe的快捷方式到桌面。在需要用到TRACE的时候,在代码中使用函数void kal_prompt_trace(module_type mod_id, const kal_char *fmt,.); 打印需要查看的信息,使用Catcher跟踪查看。 这个有点类似Linux的Kernel Debug工具,具体使用方法见文档cather使用手册.doc,这个文档可在压缩包“huayu101_p1300软件使用工具及开发指南.rar”里面找到。7) 烧录工具解压文件“E:MTK_P1300P1300_Buil

14、d_Guide FlashTool_UI_exe_v3.1.05.zip”到当前目录,然后进入目录“E:MTK_P1300P1300_Build_GuideFlashTool_v3.1.05”,发送一个Flash_tool.exe的快捷方式到桌面好了。还有个下载工具FlashTool_v3.0844.00.rar,也是不用安装,解压后直接用的,据说烧录速度比上面那个快。具体使用方法见文档flash_tool_MT平台使用教程.doc,这个文档可在压缩包“huayu101_p1300软件使用工具及开发指南.rar”里面找到。8) USB串口下载线驱动运行压缩文件MTK_P1300P1300_Bu

15、ild_Guide PL2303_Driver_XP2K_v204102.zip”里面的可执行文件进行安装,一路下一步,这里不再赘述。 二、 Hello World上面一节我们建立好了开发环境,现在是时候实战一把了,在进行实质性的项目开发之前,我们先来了解下P1300上写程序的一般性做法。从“Hello World”开始吧,有句笑话讲:“会编程就是会Hello World,编程高手就是会写很多个Hello World”,虽然是句笑话,但是细想也是有道理的,麻雀虽小五脏俱全嘛,掌握了框架,剩下的就无非是些编程技巧的问题了。这和建房子一个道理,地基打的深不深,框架建的是否合理,决定房屋总体质量好不

16、好,其他就是装修的功夫了,当然还有水电线路的铺设,这涉及到习惯和技巧了,设计不好会漏水漏电,哈哈。扯远了,下面开始Hello World。下面为描述上的方便,我们将Hello World称为一个模块。首先建立新的模块目录,之后把模块相关文件都放到这个目录下统一进行管理,新的模块一般放到plutommiMMI下面,这里我们新建一个目录“HelloWorld”,然后在模块目录“HelloWorld”下再建三个子目录:“Inc”、“Src”和“Res”,分别用来存放模块的头文件、源文件和资源文件,目录结构如下图所示:接着我们在Inc下创建几个头文件:HelloWorldGprot.h,HelloWo

17、rldProt.h, HelloWorldTypes.h, HelloWorldDefs.h, 再在Src下创建一个源文件:HelloWorld.c,关于文件名和函数名等的命名标准每个公司及个人各有不同,统一就好,否则在进行大的项目开发时彼此协同会遇到问题,有时候弄不好光这些问题就能折腾你半天甚至数日或数月,呵呵。上面几个文件的作用我大致讲下:HelloWorldGprot.h 模块对外接口,供模块外部调用的函数原型在此申明,模块内部接口就不要放这里了HelloWorldProt.h 模块内部接口,供模块内部调用的函数原型在此申明HelloWorldTypes.h 本模块用到的一些常量、自定义

18、数据类型、结构的定义HelloWorldDefs.h 本模块用到的资源ID定义HelloWorld.c 模块功能函数的实现部分头文件HelloWorldGprot.h的内容大致如下:/*/#ifndef _HELLOWORLD_GPROT_H_#define _HELLOWORLD_GPROT_H_#include PixtelDataTypes.hHelloWorldTypes.hextern void mmi_HelloWorld_entry(void);/* 模块入口,理解成dos程序的main好了 */#endif /* _HELLOWORLD_GPROT_H_ */头文件HelloW

19、orldProt.h的内容的大致如下:#ifndef _HELLOWORLD_PROT_H_#define _HELLOWORLD_PROT_H_HelloWorldGprot.h /* 本模块主界面入口例程 */extern void mmi_HelloWorld_exit(void); /* 本模块主界面退出例程 */#endif /* _HELLOWORLD_PROT_H_ */其他几个文件的内容因模块功能而异,这里先略过,后面再讲。紧接着,我们要修改的相关系统文件,使这个模块成为整个项目的一部分,需要修改的系统文件如下:makeplutommiplutommi.inc 所有mmi部分的

20、头文件所在目录的相对路径列表makeplutommiplutommi.pth 所有mmi部分的源文件所在目录的相对路径列表makeplutommiplutommi.lis 所有mmi部分的源文件(相对路径)列表在上述3个文件里面分别加上我们模块的对应内容,就现在讲的HelloWorld而言,所加内容如下:makeplutommiplutommi.inc文件追加一行“plutommimmiHelloWorldInc”makeplutommiplutommi.pth文件追加一行“plutommimmiHelloWorldSrc”makeplutommiplutommi.lis文件追加一行“plut

21、ommimmiHelloWorldSrcHelloWorld.c”再接着,我们需要增加一个开关,以决定这个模块是否成为最终发布版本的一部分,这实际上是一个编译开关,需要修改系统文件及相关的模块源文件,需要修改的系统文件包括:plutommiCustomerCustResourcePLUTO_MMIMMI_featuresPLUTO.h,这里我们用 名字为“_MMI_HELLOWORLD_ENABLED_”这个开关好了,在这个文件里面追加一行:#define _MMI_HELLOWORLD_ENABLED_,同时在相关源文件里面用:#ifdef _MMI_HELLOWORLD_ENABLED_#

22、endif来框住相关代码行就OK了,当不打算将这个模块发布的时候,注释掉“#define _MMI_HELLOWORLD_ENABLED_”这一句重新make一次就好了。下面讲具体实现的部分,为了简化描述,我们暂时先将我们的模块入口挂接到主菜单入口处(后面讲到资源的部分可将入口移到某个新建的子菜单下),修改下文件“plutommimmimainmenumainmenusrcMainMenu.c”中的goto_main_menu函数,如下所示红色字体部分:void goto_main_menu(void) mmi_HelloWorld_entry(); return;#else / 此处为之前g

23、oto_main_menu的代码同时我们需要在文件MainMenu.c中包含头文件HelloWorldGprot.h,所以再在这个文件的头文件包含代码块(通常是文件的顶部区域)追加这一句:。下面是HelloWorld.c的内容:stdC.hMMI_Features.h /* 编译开关会出现在这个由make update生成的文件里面 */L4Dr.hL4Dr1.hAllAppGprot.hFrameworkStruct.hGlobalConstants.hEventsGprot.hmmiappfnptrs.hHistoryGprot.hHelloWorldProt.hHelloWorldDef

24、s.hMainMenuDef.hwgui_categories.hUnicodexdcl.h/* 模块入口 */void mmi_HelloWorld_entry(void) /* 强制退出当前屏幕,之后进入到我们的模块了 */ /* 上电缺省是idle屏幕,现进入MAIN_MENU_SCREENID屏 */ /* 注意看第二个参数,这个是当我们模块被强制退出时执行的一些操作 */ EntryNewScreen(MAIN_MENU_SCREENID, mmi_HelloWorld_exit, NULL, NULL); /* 关掉屏幕顶部的状态条,我们要用整个屏幕 */ entry_full_screen(); /* 擦除当前背景 */ clear_screen(); /* 移动文本输出光标 */ gui_move_text_cursor(50, 100); /* 设置字体颜色 */ gui_set_text_color(UI_COLOR_RED); /* 输出文本到显示缓冲, 注意是Unicode编码 */ gui_print_text(LHello, World); /* 刷新屏幕显示,MMI用的是双缓冲绘图方式,而且需要显式刷新 */ gui_BLT_double_buffe

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

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