声明:资料来自公司同事整理
一、 MTK的框架理解
MTK手机开发平台是由MediaTek研发的一套手机开发平台,在MediaTek的源代码中封装了手机的的一些基本的功能,我们公司MMI就是在MTK源码的基础上针对不同的客户群体需求进行软件开发(包括调整UI资源、封装SP、相应应用程序)。
MTK的主要框架如下:
PS:
MMI Application Layer:包含一些用户自定的应用程序。
UI Layer:封装一些与UI相关的函数
Framework:封装消息管理和事件处理。
Layer Operating System & Protocol Stack Layer & Driver :协议栈和驱动相关的信息。
一、 开发环境的搭建
为更方便的在MTK平台上进行研发,需要安装如下软件:
1、 ADS 编译器。由于MTK平台使用的ARM处理器,需要使用ADS编译器进行编译。
2、 beyond compare。使用该软件能比较两个文件(文本文件尤其明显)的差异,方便我们了解自己做了哪些修改。
3、 分布式编译工具。由于MTK的文件数目很多,如果采用单机编译的方式比较费时,因此需要使用分布式编译软件increditbuild来加快程序的编译速度。
4、 加密软件。公司的MTK源码是经过加密的,因此需要安装亿赛通软件来解密(具体有IT人员安装)。
5、 CC。由于公司版本更新速度比较快,我们使用CC来进行版本管理。
6、 CQ。使用CQ来方便测试和开发人员的沟通,测试人员通过CQ提交BUG,开发人员可以查看BUG的状态,处理完成后修改状态,然后测试人员再进行测试。
7、 VC6.0(最好安装vc助手插件查看代码更明显)。方便我们调试。
8、 Sourceinsigt。方便查看和修改代码。
二、 MTK的文件结构
MTK程序包含的文件数量比较多,对于开发人员我们只需要了解其中开发比较常用的几个文件夹就可以了。常用的几个文件结构的结构如下。
PS:
Customer:存放一些资源的定义、模拟器的皮肤和图标等。如图片、菜单、字符串、字体、语言、主题….
MMI:我们主要做代码修改的地方之一。其中INC是一些头文件,Framework中有文件管理、事件处理、NVRam、历史、OSL、任务管理,xxxAPP是一些应用程序的代码(如Call、Message等),GUI中定义一些UI组件和category。
Mtkapp:应用程序的定义(其中包含INC和SRC),如Camera、TV等
一、 开发常用工具的使用
在MTK开发过程中可能会用到如下工具,具体使用方法如下:
1、 ADS编译器的使用。由于MTK已将程序的具体编译过程写成批处理文件,因此我们不需要写繁琐的make文件,只需要调用MTK的批处理文件就可以完成编译。使用cmd命令进入命令行界面,使用cd命令转到我们工程文件的code路径。具体命令如下:、
Ø make "project" gprs new:编译整个工程(时间最长,除非添加资源或者修改mak文件,一般少使用)。
Ø make "project" gprs r [模块名]:编译修改的c文件,如果知道修改在哪个模块可以直接后面跟模块名。
Ø make "project" gprs gen_modis(simulator_gen "project" gprs)重新生成模拟器。
Ø make ratech35_08b gprs resgen:修改了资源文件需要执行该命令来将资源转换成C文件。
2、 CQ的使用方法(查询条件双击添加)
开始à程序àRational software àRational ClearQuestàClear Questà使用用户名和密码登录à点击左上角Create Grid Queryà弹出界面选择nextà选择要查询的列(id,Owner,project,State,Headline,Description)à在Filter界面中选择查询选项(Project,State)Nextà点击选择好的选项(如Project)点击Value按钮来添加条件后Run就可以显示出Bug的状态
3、 CC的使用。
开始à程序àRational software àRational ClearCaseàClearCase ExporeràBaseClearCaseàCreateView来创建一个View。创建后我们就可以在已存在的View上执行Update、CheckOut、CheckIn等操作。其中在创建View(以后也可以修改)是需要定义Update的规则,示例如下:
element * CHECKEDOUT
element * .../rgt_m800_base/LATEST
element * /main/LATEST -mkbranch rgt_m800_base
load /RATECH35_08BW0912MP_V1_F1_MMI
PS:可以按如下方式在CC中建立自己的分支
在CC中点击自己的文件右键à选择Explorer Typeà打开brunch type文件夹,在该文件夹中新建自己的节点。
4、 Flash Tool的使用。
在ratech35_08b.mak中的RGT_MODIS_BUILD设置为FASLE
Ø Make New 生成Bin文件
Ø 打开Flash Tool 在download agent 选择Flash Tool的安装目录下的MTK_AllinOne_DA.bin,点Scatter-Loading选择code/build/RATECH35_08B/RATECH35_08B_PCB01_gprs_MT6235B_S01.M800_XXX_UIM_0910.bin
Ø 接通主板电源,使用usb线连接到主板,然后点击Flash Tool的download即开始下载
PS:
Ø 在关掉电源的时候,先需要将主板的电源线拿掉,然后在关闭电源
Ø 电源的电压应该在3.9v左右,不能高于4.1v
5、 使用串口线打log的方法(代码中格式:kal_prompt_trace(MOD_USB, "lcd_backlight = %d,%d", lcd_backlight,time_enum);)
Ø 将bin文件下载到手机
Ø 开机在手机中输入*#9646633#进入工作模式,在作模式中选择设备,选择Set UART,在Set UART菜单中选择UART Setting,在UART Setting菜单中设置TST-PS-Config为UART-1(波特率设置为115200),设置PS-Config为无(波特率同上)。
Ø 用串口线将手机和PC连在一起。打开Catcher.exe,并在其中做如下设置: Config菜单àSetDatabasePathà路径选择/code/tst/database_classb/....srcp… à选择Catcher的快捷图标loading mode