MTK手机开发入门教程1Word文档下载推荐.docx
- 文档编号:21465185
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:45
- 大小:497.51KB
MTK手机开发入门教程1Word文档下载推荐.docx
《MTK手机开发入门教程1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MTK手机开发入门教程1Word文档下载推荐.docx(45页珍藏版)》请在冰豆网上搜索。
\MTK_P1300\ADS1.2\CRACK\license.dat”,然后接着一路下一步直到安装完。
安装完后删掉目录“E:
\MTK_P1300\ADS1.2\”,节省磁盘空间。
2)安装ADS补丁
运行huayu102_ADS12_Patch_Windows.rar压缩文件中的ADS_Patch_Window.exe,这是个自解压的压缩文件,选Unzip解压到上一步ADS的安装目录(缺省是C:
\ProgramFiles\ARM\ADSv1_2),解压过程中如果问到是否覆盖,全部选覆盖好了。
3)安装脚本解释器Perl
直接运行压缩包huayu106_perlzip.rar里面扩展名为msi的安装文件,缺省安装就好,一路Next,呵呵。
上述几步完成后,编译环境基本建立,此时可以开一个dos窗(开始菜单->
运行->
输入cmd->
确定)看一下,安装正常应该能顺利执行以下命令,如下图:
注意看版本号,应该是ADS1.2[Build842],不是的话可能没打补丁,或补丁打的位置不对,请看第2步ADS补丁部分的说明并重新打一次,直到版本号对为止,哈哈。
这是perl解释器的运行画面。
注1:
上述安装过程会自动创建编译环境所需的环境变量,如果发现编译不正常了,可能是安装了其他编译工具导致冲突,这时建议查看下系统环境变量,把Perl和ADS的安装目录调到最前面,同时从path中去掉可能会产生冲突的编译工具链的路径(例如winavr),如下图所示(我是安装到D盘滴,缺省是C盘,不过我C盘几乎被我塞满了):
如果嫌改path麻烦(因为要用到其他编译工具链的时候还得改回去),还有一种办法,就是改make.bat批处理,具体见注4中相关说明。
注2:
如果安装ADS时,改变了默认安装路径,需要修改源码中的设置,源码目录树解压过程见模拟器编译环节相关介绍。
make\Option.mak
----------------------------------
ifeq($(strip$(COMPILER)),ADS)
DIR_ARM=c:
\progra~1\arm\adsv1_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”就好了
4)代码编辑环境
运行压缩文件huayu108_SourceInsight3.5.rar中的安装文件安装即可。
至于编辑器,这个看个人喜好了,不过SourceInside看代码蛮方便的。
5)PC机模拟器
模拟器MTKPCSimulator是用来在PC上仿真调试用的,要安装VC6SP6(同时要安装Uuicode静态和动态库,没有装Unicode库的可以用“huayu103_MTK模拟器DLL补丁.zip”中的库,拷到系统目录“%windir%\system32”下即可)。
我机器上的VC是有装Unicode库的,没装过Unicode库的如果在模拟器编译或运行中出现问题,建议重装下VC6,安装时勾选Unicode库,并打上相关补丁到SP6。
模拟器能模拟真机的大部分行为,这样能给调试带来很大便利,不需要每次改动都要烧录。
模拟器要从源码编译,解压压缩包“huayu201_P1300_V1.7_Release.rar”里面的文件“HUAYU_P1300_V1.7_Release.rar”到目录“E:
\MTK_P1300”,此时会出现目录“E:
\MTK_P1300\P1300_V1.7_Release”,这就是P1300的代码目录树了;
接着打上最新的补丁,解压压缩包“huayu203_P1300_V1.7_Release_patch.rar”里面的压缩文件“HUAYU_P1300_V1.7_Release_patch.rar”到目录
“E:
\MTK_P1300\P1300_V1.7_Release”,解压时选择全覆盖以替换被修改过的文件,打补丁之前对目录树里面的文件进行修改过的,需要手动再加上去。
编译PC仿真器之前需要先把刚才上面得到的目录树build一次,开一个dos窗,盘符和目录转到代码目录树对应的盘符和目录,例如:
E:
cdE:
\MTK_P1300\P1300_V1.7_Release\
makenew
注3:
第一次make的时候要用“makenew”,makenew的时间比较长(慢的机器搞不好要2小时以上),编译过程中间会出现一些文件找不到的信息,只要编译过程没意外终止,那些信息可以忽略。
编译日志文件位置:
build\NEOTEL25_06B\log\,要查看编译过程有啥问题就看这个目录下的文件了;
生成的bin文件位置:
build\NEOTEL25_06B\*.bin,下载烧录就是烧bin文件。
这里顺带介绍下build的命令格式:
makenew清除后重新编译整个项目
makeresgen重新生成资源
makeremake重新编译链接项目
makeviewlogxxx查看模块xxx的编译日志
make查看可以用make选项帮助信息
注4:
如果机器上装了其他gcc编译工具链(比如winavr之类)的话可能要手动改下Path,否则编译会出错,修改Path的方法见注1,也可以修改批处理文件“E:
\MTK_P1300\P1300_V1.7_Release\make.bat”,在“perlmake2.pl%*”之前加上下面两句:
setPERL5LIB=D:
\perl\lib
setPATH=D:
\perl\bin;
d:
\progra~1\arm\adsv1_2\bin;
E:
\MTK_P1300\P1300_V1.7_Release\tools;
c:
\windows\system32;
\windows;
\windows\system
注意,上面的路径是我机器上的,不是缺省安装路径,要根据自己的实际安装路径做修改。
下面开始编译PC仿真器了,用VC6打开工程文件“E:
\MTK_P1300\P1300_V1.7_Release\plutommi\mmi\PC_Simulator.dsw”,然后开始编译,编译时间比较长,具体看机器配置了,这时又可以干点别的啥了,呵呵。
因为仿真器工程涉及文件较多,编译费时,建议编译过程中电脑上少开窗口,特别是网络类的,如QQ,有时会发现开QQ后,编译过程中VC会挂死,呵呵。
有可能是开QQ后防火墙过滤网络数据占用较多系统资源,如果发现VC编译特别慢或干脆挂死,可以重启动一下电脑,只开必要的窗口,然后开始编译。
如果编译过程中发现怪异的问题,如:
incomingstringiddef.h(120):
errorC2059:
syntaxerror:
'
constant'
或者
errorC2065:
STR_CM_REDIAL'
:
undeclaredidentifier之类
这个时侯你可能需要看一下你VC相关路径的设置顺序,如下图:
把VC原本的头文件路径调整到最前面,我刚开始编译的时候SDK的头文件在前面,编译总是通不过,改一下就好了,库也一样都调整下比较保险,呵呵。
6)Tracer跟踪工具
解压文件P1300_Build_Guide.rar到E:
\MTK_P1300,然后在文件管理器进入目录“E:
\MTK_P1300\P1300_Build_Guide”,接着解压Catcher_L1_v3.10.01.zip到当前目录下的Catcher_L1_v3.10.01子目录,进入子目录Catcher_L1_v3.10.01,发送一个Catcher.exe的快捷方式到桌面。
在需要用到TRACE的时候,在代码中使用函数
voidkal_prompt_trace(module_typemod_id,constkal_char*fmt,...);
打印需要查看的信息,使用Catcher跟踪查看。
这个有点类似Linux的KernelDebug工具,具体使用方法见文档《cather使用手册.doc》,这个文档可在压缩包“huayu101_p1300软件使用工具及开发指南.rar”里面找到。
7)烧录工具
解压文件“E:
\MTK_P1300\P1300_Build_Guide\FlashTool_UI_exe_v3.1.05.zip”到当前目录,然后进入目录“E:
\MTK_P1300\P1300_Build_Guide\FlashTool_v3.1.05”,发送一个Flash_tool.exe的快捷方式到桌面好了。
还有个下载工具FlashTool_v3.0844.00.rar,也是不用安装,解压后直接用的,据说烧录速度比上面那个快。
具体使用方法见文档《flash_tool_MT平台使用教程.doc》,这个文档可在压缩包“huayu101_p1300软件使用工具及开发指南.rar”里面找到。
8)USB串口下载线驱动
运行压缩文件
\MTK_P1300\P1300_Build_Guide\PL2303_Driver_XP2K_v204102.zip”里面的可执行文件进行安装,一路下一步,这里不再赘述。
二、HelloWorld
上面一节我们建立好了开发环境,现在是时候实战一把了,在进行实质性的项目开发之前,我们先来了解下P1300上写程序的一般性做法。
从“HelloWorld”开始吧,有句笑话讲:
“会编程就是会HelloWorld,编程高手就是会写很多个HelloWorld”,虽然是句笑话,但是细想也是有道理的,麻雀虽小五脏俱全嘛,掌握了框架,剩下的就无非是些编程技巧的问题了。
这和建房子一个道理,地基打的深不深,框架建的是否合理,决定房屋总体质量好不好,其他就是装修的功夫了,当然还有水电线路的铺设,这涉及到习惯和技巧了,设计不好会漏水漏电,哈哈。
扯远了,下面开始HelloWorld。
下面为描述上的方便,我们将HelloWorld称为一个模块。
首先建立新的模块目录,之后把模块相关文件都放到这个目录下统一进行管理,新的模块一般放到plutommi\MMI下面,这里我们新建一个目录“HelloWorld”,然后在模块目录“HelloWorld”下再建三个子目录:
“Inc”、“Src”和“Res”,分别用来存放模块的头文件、源文件和资源文件,目录结构如下图所示:
接着我们在Inc下创建几个头文件:
HelloWorldGprot.h,HelloWorldProt.h,HelloWorldTypes.h,HelloWorldDefs.h,再在Src下创建一个源文件:
HelloWorld.c,关于文件名和函数名等的命名标准每个公司及个人各有不同,统一就好,否则在进行大的项目开发时彼此协同会遇到问题,有时候弄不好光这些问题就能折腾你半天甚至数日或数月,呵呵。
上面几个文件的作用我大致讲下:
HelloWorldGprot.h模块对外接口,供模块外部调用的函数原型在此申明,模块内部接口就不要放这里了
HelloWorldProt.h模块内部接口,供模块内部调用的函数原型在此申明
HelloWorldTypes.h本模块用到的一些常量、自定义数据类型、结构的定义
HelloWorldDefs.h本模块用到的资源ID定义
HelloWorld.c模块功能函数的实现部分
头文件HelloWorldGprot.h的内容大致如下:
/*************************************************************************/
#ifndef__HELLOWORLD_GPROT_H__
#define__HELLOWORLD_GPROT_H__
#include"
PixtelDataTypes.h"
HelloWorldTypes.h"
externvoidmmi_HelloWorld_entry(void);
/*模块入口,理解成dos程序的main好了*/
#endif/*__HELLOWORLD_GPROT_H__*/
头文件HelloWorldProt.h的内容的大致如下:
#ifndef__HELLOWORLD_PROT_H__
#define__HELLOWORLD_PROT_H__
HelloWorldGprot.h"
/*本模块主界面入口例程*/
externvoidmmi_HelloWorld_exit(void);
/*本模块主界面退出例程*/
#endif/*__HELLOWORLD_PROT_H__*/
其他几个文件的内容因模块功能而异,这里先略过,后面再讲。
紧接着,我们要修改的相关系统文件,使这个模块成为整个项目的一部分,需要修改的系统文件如下:
make\plutommi\plutommi.inc所有mmi部分的头文件所在目录的相对路径列表
make\plutommi\plutommi.pth所有mmi部分的源文件所在目录的相对路径列表
make\plutommi\plutommi.lis所有mmi部分的源文件(相对路径)列表
在上述3个文件里面分别加上我们模块的对应内容,就现在讲的HelloWorld而言,所加内容如下:
make\plutommi\plutommi.inc文件追加一行“plutommi\mmi\HelloWorld\Inc”
make\plutommi\plutommi.pth文件追加一行“plutommi\mmi\HelloWorld\Src”
make\plutommi\plutommi.lis文件追加一行“plutommi\mmi\HelloWorld\Src\HelloWorld.c”
再接着,我们需要增加一个开关,以决定这个模块是否成为最终发布版本的一部分,这实际上是一个编译开关,需要修改系统文件及相关的模块源文件,需要修改的系统文件包括:
plutommi\Customer\CustResource\PLUTO_MMI\MMI_featuresPLUTO.h,这里我们用名字为“__MMI_HELLOWORLD_ENABLED__”这个开关好了,在这个文件里面追加一行:
#define__MMI_HELLOWORLD_ENABLED__,同时在相关源文件里面用:
#ifdef__MMI_HELLOWORLD_ENABLED__
#endif
来框住相关代码行就OK了,当不打算将这个模块发布的时候,注释掉“#define__MMI_HELLOWORLD_ENABLED__”这一句重新make一次就好了。
下面讲具体实现的部分,为了简化描述,我们暂时先将我们的模块入口挂接到主菜单入口处(后面讲到资源的部分可将入口移到某个新建的子菜单下),修改下文件“plutommi\mmi\mainmenu\mainmenusrc\MainMenu.c”中的goto_main_menu函数,如下所示红色字体部分:
voidgoto_main_menu(void)
{
mmi_HelloWorld_entry();
return;
#else
…//此处为之前goto_main_menu的代码
}
同时我们需要在文件MainMenu.c中包含头文件HelloWorldGprot.h,所以再在这个文件的头文件包含代码块(通常是文件的顶部区域)追加这一句:
。
下面是HelloWorld.c的内容:
stdC.h"
MMI_Features.h"
/*编译开关会出现在这个由makeupdate生成的文件里面*/
L4Dr.h"
L4Dr1.h"
AllAppGprot.h"
FrameworkStruct.h"
GlobalConstants.h"
EventsGprot.h"
mmiappfnptrs.h"
HistoryGprot.h"
HelloWorldProt.h"
HelloWorldDefs.h"
MainMenuDef.h"
wgui_categories.h"
Unicodexdcl.h"
/*模块入口*/
voidmmi_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(L"
Hello,World"
);
/*刷新屏幕显示,MMI用的是双缓冲绘图方式,而且需要显式刷新*/
gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);
/*注册一个按键处理,右软键弹起时返回到之前被我们强制退出的模块*/
SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP);
/*模块出口
*当我们的模块被其他模块强制退出时会执行这个函数,
*这个函数的常见写法,包括:
*1、模块已申请资源的释放(如果需要的话),这一步可选
*2、手动把自己压栈到窗口(实际是整个屏)堆栈里面,
*便于强制我们退出的模块执行完后重新把我们叫出来
*不像Window的窗口管理是自动压栈的,PlutoMMI需要手动压栈
*3、其他一些清理动作
*/
voidmmi_HelloWorld_exit(void)
historycurrHistory;
S16nHistory=0;
currHistory.scrnID=MAIN_MENU_SCREENID;
currHistory.entryFuncPtr=mmi_HelloWorld_entry;
pfnUnicodeStrcpy((S8*)currHistory.inputBuffer,(S8*)&
nHistory);
AddHistory(currHistory);
编码的部分基本上就是这些了,然后我们开始make,这次要用“makeupdate”,基于上述对相关系统文件的改动,makeupdate会自动将刚才的模块加入到整个项目中去,同时也会更新仿真器VC工程文件,如下图所示,HelloWorld模块的相关文件已经被自动加入到MMI库里面了:
后续的make,如果是不涉及到系统相关文件的修改,用“makeremake”就可以了,以节省编译时间,因为make一次太耗时间了。
注意:
对于仿真程序的编译,“makeupdate”似乎缺少一些处理,导致可能还需要手工在文件“plutommi\mmi\GlobalSimulatorPathDef”中追
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK 手机 开发 入门教程