呵。
6 Tracer 跟踪工具 解压文件 P1300_Build_Guide.rar 到 E:MTK_P1300,然后在文件管理器进入目录 “E:MTK_P1300P1300_Build_Guide” ,接着解压 Catcher_L1_v3.10.01.zip 到当前目录 下 的 Catcher_L1_v3.10.01 子 目 录 , 进 入 子 目 录 Catcher_L1_v3.10.01 , 发 送 一 个 Catcher.exe 的快捷方式到桌面。
在需要用到 TRACE 的时候,在代码中使用函数 void kal_prompt_tracemodule_type mod_id const kal_char fmt... 打印需要查看的 信息,使用 Catcher 跟踪查看。
这个有点类似 Linux 的 Kernel Debug 工具,具体使用方法见文档《cather 使用手 ,这个文档可在压缩包“huayu101_p1300 软件使用工具及开发指南.rar”里面找到。
册.doc》 7 烧录工具 解压文件“E:MTK_P1300P1300_Build_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 串口下载线驱动 运行压缩文件 “E:MTK_P1300P1300_Build_Guide PL2303_Driver_XP2K_v204102.zip”里面的可 执行文件进行安装,一路下一步,这里不再赘述。
二、 Hello World 上面一节我们建立好了开发环境, 现在是时候实战一把了, 在进行实质性的项目开发之前,我们先来了解下 P1300 上写程序的一般性做法。
从“Hello World”开始吧,有句笑话讲:“会编程就是会 Hello World,编程高手就是会写很多个 Hello World”虽然是句笑话,但是细想也是有道理的,麻雀虽小五脏俱全嘛,掌握了框架,剩下的就无非是些编程技巧的问题了。
这和建房子一个道理,地基打的深不深,框架建的是否合理, 决定房屋总体质量好不好,其他就是装修的功夫了,当然还有水电线路的铺设,这涉及到习惯和技巧了,设计不好会漏水漏电,哈哈。
扯远了,下面开始 Hello World。
下面为描述上的方便,我们将 Hello World 称为一个模块。
首先建立新的模块目录,之 新后把模块相关文件都放到这个目录下统一进行管理,的 模块一般放到 plutommiMMI 下面,这里我们新建一个目录“HelloWorld”,然后在模块目录“HelloWorld”下再建三个子目录: 、 ,分别用来存放模块的头文件、源文件和资源文件,目录结构如下“Inc”“Src”和“Res”图所示: 接 着 我 们 在 Inc 下 创 建 几 个 头 文 件 : HelloWorldGprot.h , HelloWorldProt.hHelloWorldTypes.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 quotPixtelDataTypes.hquot include quotHelloWorldTypes.hquot extern 理解成 dos 程序的 main 好了 / void mmi_HelloWorld_entryvoid/ 模块入口, endif / __HELLOWORLD_GPROT_H__ / // 头文件 HelloWorldProt.h 的内容的大致如下: // ifndef __HELLOWORLD_PROT_H__ define __HELLOWORLD_PROT_H__ include quotHelloWorldGprot.hquot extern void mmi_HelloWorld_entryvoid / 本模块主界面入口例程 / extern void mmi_HelloWorld_exitvoid / 本模块主界面退出例程 / endif / __HELLOWORLD_PROT_H__ / // 其他几个文件的内容因模块功能而异,这里先略过,后面再讲。
紧接着,我们要修改的相关系统文件,使这个模块成为整个项目的一部分,需要修改的系统文件如下: makeplutommiplutommi.inc 所有 mmi 部分的头文件所在目录的相对路径列表 makeplutommiplutommi.pth 所有 mmi 部分的源文件所在目录的相对路径列表 makeplutommiplutommi.lis 所有 mmi 部分的源文件相对路径列表 在上述 3 个文件里面分别加上我们模块的对应内容,就现在讲的 HelloWorld 而言,所加内容如下: makeplutommiplutommi.inc 文件追加一行“plutommimmiHelloWorldInc” makeplutommiplutommi.pth 文件追加一行“plutommimmiHelloWorldSrc” makeplutommiplutommi.lis 文件追加一行“plutommimmiHelloWorldSrcHelloWorld.c” 再接着,我们需要增加一个开关,以决定这个模块是否成为最终发布版本的一部分,这实际上是一个编译开关, 需要修改系统文件及相关的模块源文件, 需要修改的系统文件包括: plutommiCustomerCustResourcePLUTO_MMIMMI_featuresPLUTO.h,这里我们用 名字为“__MMI_HELLOWORLD_ENABLED__”这个开关好了,在这个文件里面追加一行: define __MMI_HELLOWORLD_ENABLED__,同时在相关源文件里面用: ifdef __MMI_HELLOWORLD_ENABLED__ endif 来框住相关代码行就 OK 了,当不打算 将这个模块发布 的时候,注释 掉“define __MMI_HELLOWORLD_ENABLED__”这一句重新 make 一次就好了。
下面讲具体实现的部分,为了简化描述,我们暂时先将我们的模块入口挂接到主菜单入口处后面讲到资源的部分可将入口移到某个新建的子菜单下,修改下文件“plutommimmimainmenumainmenusrcMainMenu.c”中的 goto_main_menu 函数,如下所示红色字体部分: void goto_main_menuvoid ifdef __MMI_HELLOWORLD_ENABLED__ mmi_HelloWorld_entry return else … // 此处为之前 goto_main_menu 的代码 endif 同时我们需要在文件 MainMenu.c 中包含头文件 HelloWorldGprot.h,所以再在这个文件的头文件包含代码块通常是文件的顶部区域追加这一句:include quotHelloWorldGprot.hquot。
下面是 HelloWorld.c 的内容: // include quotstdC.hquot include quotMMI_Features.hquot / 编译开关会出现在这个由 make update 生成的文件里面/ include quotL4Dr.hquot include quotL4Dr1.hquot include quotAllAppGprot.hquot include quotFrameworkStruct.hquot include quotGlobalConstants.hquot include quotEventsGprot.hquot include quotmmiappfnptrs.hquot include quotHistoryGprot.hquot include quotHelloWorldProt.hquot include quotHelloWorldTypes.hquot include quotHelloWorldDefs.hquot include quotMainMenuDef.hquot include quotwgui_categories.hquot include quotUnicodexdcl.hquot / 模块入口 / void mmi_HelloWorld_entryvoidifdef __MMI_HELLOWORLD_ENABLED__ / 强制退出当前屏幕,之后进入到我们的模块了 / / 上电缺省是 idle 屏幕,现进入 MAIN_MENU_SCREENID 屏 / / 注意看第二个参数,这个是当我们模块被强制退出时执行的一些操作 / EntryNewScreenMAIN_MENU_SCREENID mmi_HelloWorld_exit N
上一篇:
【精品】Microsoft Visual SourceSafe 6使用说明
下一篇:
经典高三励志演讲稿