软件一二部新员工培训期计划MMI开发工程师_第1页
软件一二部新员工培训期计划MMI开发工程师_第2页
软件一二部新员工培训期计划MMI开发工程师_第3页
软件一二部新员工培训期计划MMI开发工程师_第4页
软件一二部新员工培训期计划MMI开发工程师_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件新员工培训期计划软件新员工培训期计划 MMI 开发工程师 开发工程师 修改记录修改记录 版本号版本号 拟制人拟制人 修改人修改人 拟制拟制 修改日期修改日期更改理由更改理由 V1 0佚名2010 02 01 V1 1Kite2010 02 11增加了常用软件安装 编译命令注意事项 实践部分注意 点 字串资源添加部分 V1 2Kite2010 02 26依据 yy 的建议 增加版本修改部分 并对实践部分继续 进行完善和补充 并对文档进行了标准化 1 前言前言 本计划主要针对新入职的无工作经验的新员工在 MTK 平台的开发和日常相关工作的 培训计划 培训主要关注点为日常工作的基本工作技能培养 有关系统性的深入培养暂不 纳入本计划之内 有待工作中持续加强和通过内部专项培训进行提高 对于有一定工作经验但无 MTK 平台经验的新入职员工 指导老师可以根据实际情况 调整培训计划 而不用完全按照本计划表进行 但是所作调整也需要另拟培训计划表 作 为培训之依据 且培训之最终效果也应达到本计划中所列所有培训目标项 对于有一定工作经验 且具 MTK 平台经验的新入职员工 指导老师可以依据本计划 中所列的培训目标项对其进行评估 如果能达到我们培训目标的培训项可以略过 如果无 法达到的 必须也按照本计划相应培训项的措施进行培养 2 开发环境搭建开发环境搭建 常用软件安装指南常用软件安装指南 如下是常用软件的安装地址 相关软件的按照指导文档见 192 168 24 40 编译环境 SCM 常用软件安装指南 最新版本 doc 重点需要注意的是 ADS CC 和 CQ 的安装 序号序号软件软件说明说明下载地址下载地址备注备注 1VC ftp 192 168 24 8 soft MStudio98 2sourceinsight代码浏览器网络下载 或者找周围同事 3ultraedit文本编辑器网络下载 或者找周围同事 4beyond compare比较工具网络下载 或者找周围同事 5perl编译环境 192 168 24 40 编译环境 ActivePerl 5 8 6 811 MSWin32 x86 msi 6ADS12编译环境 192 168 24 40 编译环境 ads 1 2 参照 SCM 常用软件安装指南 doc 注意安装在 C 盘 7ADS patch编译环境 192 168 24 40 编译环境 ADS1 2 Patch To Build 848 ADS12 安装完毕之后 把 ADS patch 下 的文件直接 copy 到安装目录下覆盖原文 件即可 8MinGW编译环境 192 168 24 40 编译环境 MinGW 直接 copy 到 ARM 安装目录 与 ADSv1 2 目录并列 9msys编译环境 192 168 24 40 编译环境 msys同上 10incredibuild分布式编译 192 168 24 40 分布式编译客户端极其补丁 3 40 Coordinator location computer 选择 192 168 24 100 12incredibuild分布式编译 192 168 24 40 分布式编译客户端极其补丁 3 40 incredibuild 3 40patch 运行 key bat 文件即可 注意该软件有 30 天试用期 在试用期到期之前重新运行 key bat 则恢复试用期到 30 天 有个 task 的补丁 可以每周自动更新时间为 30 天 13Flashtool工具找周围同事要 用于把 bin 文件下载到手机上 操作参考 相关文档 14Cather工具找周围同事要用于调试跟踪故障 操作参考相关文档 15Meta工具找周围同事要查看手机文件系统 操作参考相关文档 16cc clearcase 版本控制 192 168 24 40 clearcase setup参照 SCM 常用软件安装指南 doc 17cq clearquest 故障管理 192 168 24 40 cq参照 SCM 常用软件安装指南 doc 常用软件安装注意要点常用软件安装注意要点 1 ADS 安装请注意导入 license dat 在 ADS 安装目录下 否则 ADS 编译报错 2 sourceinsight 输入注册码后请注意不要回车 而应该点击 OK 按钮 否则回车会按照试 用 try it 处理 3 分布式编译过程中运行 build monitor 可以观察到分布式编译所用到的计算机 其实也 是判断分布式编译是否有效的一种方法 4 Ultraedit 如果打开文本文件为乱码 请另存一下 然后从新打开 5 CC 上软件版本 config spec 的查询 请登录 http 192 168 24 15 cqweb login 可以问技 术管理部申请账号 选择版本管理系统登录进入 公共查询 版本跟踪 all project 查找并选择项目名称 再选择 FOR 自动编译 即可 3 基本技能学习基本技能学习 版本控制工具学习版本控制工具学习 关于 CC CQ 使用的简单培训 学习目标 a 会自己使用 CC 建立相应项目的代码环境 能够明白 CC 中 label branch vob cs 节点 view 等概念 b 能够熟悉 CQ 中 BUG 的管理流程 此时并不要求对 CC 其他功能的熟练使用 后续会有相应安排 编译命令学习编译命令学习 学习学习 target 环境的编译命令环境的编译命令 学习目标 能够区分 new remake update clean resgen 等的用法 编译出错如何在 LOG 目录下寻找相应信息 这里先简单介绍一下几个命令的区别 1 new 用于生成 bin 文件 它包含以下动作 clean scan compile link 使用方法一般是这样的 make D901 gprs gsm new 其中 D901 是 cusotmer 名称 为了表述方便以 D901 为例 gprs gsm 是 project 2 update 编译一个或多个模块 它包含以下动作 scan compile link 使用方法是 make D901 gprs gsm update mmiresource 其中 mmiresource 是具体某个模块的名称 update 会首先检查文件之间的依赖关系 然后编译发生 改变的代码 Update 后面如果不跟模块名称 则是编译所有模块 3 remake 应该是最常用的编译命令 使用方法是 make D901 gprs gsm remake mmiresource 它包含以下动作 compile link 学习学习 PC 模拟器的编译模拟器的编译 培训目标 学习 modis 的编译 能够生成所需要的工作组文件 MoDIS dsw 并在该工 作组下进行代码调试 一般情况下 为了产生 modis dsw 文件 需要进行以下几步 make D901 gprs new make D901 gprs gen modis make D901 gprs codegen modis 其中命令 new 只需编译大约几分钟 等资源编译成功后 就可以终止 然后执行 gen modis codegen modis 生成工作组文件 modis dsw 就说明命令执行成功了 以上简单介绍了比较常用的几个编译命令 具体请参考 MTK 文档 MTK MakeBuild Design Customer pdf 该文档详细介绍了 make 指令 Gsm mak Option mak Verno bld make bat 以及每条指令是怎么解析的 告诉开发人 员如何新添加一个模块并编译它 编译命令注意事项编译命令注意事项 1 如果新员工对于 GNU gcc 编译过程有理解的话 没有这方面的经验 则可以补充一下 这方面的知识 MTK 的编译过程本质上也是对 GNU gcc 编译的应用 只不过做了一定 的封装 并借助了 perl 语言 将有助于理解 MTK 的编译过程 2 不管是编译还是 Modis 编译 请事先启动分布式编译工具 Incredibuild Agent Tray icon 启动之后在电脑屏幕右下角有一个箭头显示 以提高编译效率 否则编译时间会 很长 3 VC 可以直接关联分布式 这样在 VC 上就可以出现分布式的按钮 4 编译过程中请注意不要改动 cmd 窗口属性中缓冲区大小的设置 如果设置过大 可能 因内存不足导致编译时间过长 即使是启动了分布式编译 5 在 VC 环境下运行 Modis 如果出现头文件找不到的情况 请查看 modis 目录下各个子 目录下相关 ini 文件中有关该头文件的指定路径 并检查该路径下是否存在该头文件 6 运行 modis 看不到界面 请检查 MoDIS MoDIS Skins 目录下的图片文件是否没有解压 缩 从而造成图片资源无法加载 7 如果 modis 运行报有些函数或者变量找不到的链接错误 则在 MoDIS drv sim src w32 dummy wndrv c 源文件中添加该函数或者变量定义 并重新运 行即可 8 分布式编译错误排除 定位是哪个模块出现分布式编译错误 对该模块进行 clean 操作 重新对该模块单独进行 remake 最后再对整个工程 remake 9 如果只修改了 lis 文件 即增加了源文件 并且头文件没有被放在新增加的目录下 只需要 remake modis 需要重新 gen modis 4 MTK 框架文档学习框架文档学习 本阶段主要进行 MMI 相关方面知识的学习 主要是 MTK 框架理论知识的学习 是比 较重要的 为以后深入研究各个模块 解决系统性问题打下了基础 学习目标 学习目标 1 大致了解 MTK 软件框架和相关的基本概念 2 熟悉 MTK 的 category 概念 3 MMI 框架的学习 MMI FrameWork History 机制 screen app 概念 4 了解 nvram 的作用 MMI framework and architecture MMI Framework 介绍了 MTK 的 MMI 方面的软件架构 这部分主要包括 1 事件的处理 2 history 的管理 3 OSL Wrapper 4 NVRAM 5 文件系统管理 6 UI layer 与 Layer 4 的交互 7 解触摸屏的响应机制 这部分的参考文档有 a MMI framework and architecture pdf b MMI Platform Source Code Training pdf 如上两篇文档非常重要 要对整个 MTK 软件架构 尤其是 MMI 架构要有一个整理的 理解 学习注意点 1 L4 层很多术语和 GSM GPRS 通信协议相关 要求新员工有一定的通信知识基础 没有 学过的要补补基础课 比如通信原理 计算机网络 GSM GPRS 无线通信原理等 重 点是对通信模型 OSI 七层协议栈 GSM GPRS 相关的术语的理解 2 请参考傅贵写的 MTK MMI 初学者培训文档 里面有详细的编程示例介绍 NVRAM 的学习的学习 NVRAM 为用户提供了数据存取的途径 用户可以以一种统一固定的方式访问 NVRAM 中的数据 而不用关心存储数据的物理设备的介质是 EEPROM 还是 FLASH 所 以当底层存储数据的介质变化时 用户上层的应用程序接口无需变化 这部分主要的学习文档有 1 NVRAM Configuration Guide User 2 pdf 2 FS NVRAM Oct2004 1 pdf 3 NVRAM Restore Factory Default SOP pdf File System 的学习的学习 这部分包括文件系统的 API 函数 以及 file manager 其中 file manager 分为两部分 FMGR Engine FMGR UI FMGR Engine 为 audio player Image viewer camera profile 等提供了文件操作的接口 这部分的参考文档有 1 Presentation FileSystem pdf 2 MMI DD File Manager pdf 3 DD FRM GDI pdf 4 DD FRM GDI ROTATE pdf 5 Training GDI pdf GDI 的学习的学习 模块研究模块研究 在学习了以上理论知识之后 可以选择一个模块为入口点 来进行代码研读 以一斑 以窥全局 这样可以快速地熟悉 MTK 代码结构 5 实践部分实践部分 这部分主要是完成一些简单任务 1 在模拟器上完成某个菜单下增加一个 mytest 菜单 mytest 下有两个子菜单 子菜单 1 用来一个 list 菜单 子菜单 2 用来弹出一个 pop 窗口 并且在定时 30 秒后自 动退出 每个菜单需要使用新的字符串和 icon 培训目标 培训目标 熟悉各类资源 字串 图片 菜单等 的使用 keyhandler 的概念 hilight 概念 定时器 Timer 使用 2 在现有 8 张墙纸基础上添加一张墙纸 以支持 9 张壁纸 并设置新加墙纸为缺省墙纸 缺省屏保打开 等待时间为 30 秒 培训目标 培训目标 nv 的概念 nv 项的修改 3 客户版本制作 培训目标 培训目标 与客户版本相关的文件熟悉 熟悉编译过程中这些客户资源相关的文件的 来龙去脉 CC 新文件提交 老文件修改 客户版本发布流程 6 MTK 开发工具使用开发工具使用 MTK 开发工具主要包括以下几部分 这些工具都是以后工具过程中经常使用的 1 catch 工具 手机的 trace 工具 通过把消息和 trace 打印到屏幕上 清晰地显示出手机 的运行过 MTK release 过来的 Catcher 可能隐藏一些消息 Catcher 打印到屏幕的消息 比较常用的函数有 PRINT INFORMATION kal prompt trace kal buffer trace 具 体使用说明请参照 Catcher User Manual for Customer 2007 11 30 pdf 2 Flash tool exe 工具 用于下载 bin 文件到手机 3 File2Array exe 工具 转化 mp3 图片文件为二进制文件 供程序使用 4 META 工具 META 可以查看手机文件系统 NVRAM 项等 7 新员工技术小结新员工技术小结 分配具体模块 熟悉该模块 解决该模块相应的故障 并负责研究该模块 写出相应 模块的学习文档 8 部门转正评审部门转正评审 使用内部答辩会的形式进行转正答辩 由非指导方来对培训效果进行检验 9 MMI 学习要点总结学习要点总结 模块代码添加步骤模块代码添加步骤 MTK MMI 模块添加三步骤 1 源文件的添加 添加新的 MMI 模块一般放在 plutommi mmi 目录下面 最好在 plutommi mmi 目录下另建子目录 头文件和源代码分开两个子目录存放 目录名 称一般遵循如下命名规范 inc src 2 模块的编译配置 在 make 目录下建立子目录 该子目录为功能名称和源文件所在 目录名对应起来 该目录下依据如下命名规范分别创建 4 个文件 lis pth inc def 其中 inc 文件中要包含本 模块源文件所用到的所有头文件路径位置所有头文件路径位置 def 文件可以为空 如果缺少该文件 make gen modis 的时候可能会出异常 3 编译输出 在 option mak 文件中添加模块名和宏开关 关键字为 COMPLIST 和 COM DEFS 以确保所加代码能够被正确的编译 以上三个步骤回答和解决了如下三个问题 1 你所编写的代码源文件和头文件在物理存储文件上是如何组织的 逻辑上的组织要 看设计文档或者存在于编码者的脑子里 2 你所编写的源码告知编译器如何编译 告知编译器源码的相对路径 源文件列表和 头文件 其实这些配置文件的内容最终会被作为 tcc 编译命令的编译参数 3 编译的输出是什么 编译的输出是库文件 最终体现在 option mak 文件的配置中 字串资源添加步骤字串资源添加步骤 1 MMIDataType h 中添加两个宏定义 BASE BASE MAX 用于定义本模块资源 ID 的起始位和资源 ID 数量最大数 我们所有 资源 ID 的定义都要基于 BASE 这个宏进行累加 MMIDataType h 中 的理解重点是两个宏定义 GET RESOURCE BASE id 和 GET RESOURCE MAX id 这涉及到一个 符号是宏组合的概念 2 在defs h 文件定义一个字串的枚举类型 用于罗列所有字串 ID 的定义 3 在 ref list 09A xls 定义各个字串的内容 要注意和 defs h 中的 ID 要对应 4 在 plutommi Customer CustResource PLUTO MMI Res MMI 目录下新建一个源文件 res c 新建一个函数并调用 ADD APPLICATION STRING2 宏添加本 模块所用到的所有的字符资源 5 如果 res c 中包含了自定义的头文件 则需要在 plutommi Customer ResGenerator makefile 文件中添加该头文件的路径 以便编译 res c 文件时能够顺利编译通过 否则下一步的 make 命令可能执行报 错 该 makefile 文件是资源装载预编译程序的 makefile 文件 6 执行资源编译命令 make gprs resgen 7 如果字串出现部分乱码 请检查在资料列表中资源的位置放的地方是否正确 比如 把繁体字体和简体字体的位置搞反了 屏幕模板理解重点屏幕模板理解重点 对于屏幕模板的理解重点是三个数据结构 1 组件结构 例子 const U8 categoryxxx 该结构定义了一个 Category 中包含的控 件 一个 Category 是由多个控件组成的 2 组件属性结构数组 例子 const S16 coordinate setxxx 该结构定义了一个 Category 中包含的控件属性 3 映射表 数组 dm category id control set map struct g category controls map 该映射表通过 category id 建立起 CategoryScreen DM TouchScreen 之间的联系 各种 ShowCategoryScreen 函数定义可以参考文档 MTK MMI 函数手册 pdf Category 中所包含的控件定义可以在 CustCoordinates c 中参阅到 定时器的使用定时器的使用 MTK 使用的定时器函数在 Mmi frm timer gprot h 中有定义 使用定时器的步骤如下 1 timer id 的定义 在 TimerEvents h 中定义自己的 timerID 请注意务必放在 MAX TIMERS 之前定义 2 定义定时处理函数 在定时时间到达之后进行相关处理 典型的操作包括 StopTimer 和 GoBackHistory 3 在 ShowCategoryScreen 之后 StartTimer 4 注意 delay 的时间为毫秒 资源编译错误定位资源编译错误定位 资源编译可能出现的错误定位 1 如果出现 Makefile 166 missing separator did you mean TAB instead of 8 spaces Stop 类似的错误 请检查对应的 makefile 文件 可能是该 makefile 文件中出现了 空格 2 如果运行时字串显示不出来 请检查一下如下文件是否包含了自己定义的字串 plutommi Customer CustResource ref list txt 如果没有 则有可能没有把该文件从 code 目录下 copy 过来 需要重新执行 make gprs resgen 其它注意事项其它注意事项 1 各个版本的入口程序会与傅贵教材可能会有出入 请请教一下自己的师傅所取版本 的入口程序位置 2 Modis 能够编译通过 tcc 未必能够编译通过 不同的编译器对于语法的规则要求 是不同的 比如在 VC 下可能是 warning 但在 tcc 环境下可能就是错误了 就个人 感觉来说 tcc 的编译要比 vc 严格的多 10 常用常用 Category 速查速查 序号序号Category 编号编号类型类型说明说明 1 ShowCategory1Screen ShowCategory4Screen ShowCategory6Screen ShowCategory55Screen ShowCategory56Screen 列表 文本列表显示框 4 附带右软键及 icon 6 附带左右软键 使用场景示例 通讯录显 示 1ShowCategory2Screen提示错误提示框 附带左右软键 ShowCategory7Screen提示选择提示框 附带左右软键 使用场景示例 删除提示 2ShowCategory3Screen列表文本列表显示框 并能显示 4 列 icon 3 ShowCategory1Screen ShowCategory4Screen ShowCategory6Screen ShowCategory55Screen ShowCategory56Screen 列表 文本列表显示框 4 附带右软键及 icon 6 附带左右软键 使用场景示例 通讯录显 示 4 ShowCategory23Screen ShowCategory24Screen ShowCategory73Screen ShowCategory85Screen ShowCategory89Screen 列表 文本列表显示框 23 能够显示两列文本 icon 在左 24 附带左右软键 icon 在右 73 能够显示一列文本 两列 icon 并有高亮参数 85 附带数字 icon 89 与 85 的区别在于文本列自动生成 ShowCategory101Screen列表 5 ShowCategory5Screen ShowCategory21Screen文本显示 文本显示框 5 附带左右软键 21 附带左软键 ShowCategory9Screen ShowCategory58Screen ShowCategory59Screen ShowCategory60Screen ShowCategory61Screen ShowCategory62Screen ShowCategory63Screen ShowCategory64Screen ShowCategory65Screen 文本显示 文本显示框 9 的 icon 在文本下方 58 59 附带左右软件 icon 在文本的左边 58 和 59 只有一个参数的区别 后者参 数为指针 60 61 附带标题 标题附带 icon 60 和 61 只有一个参数的区别 后者参数为指针 62 63 附带 icon 并显示在中间 且不全屏显示 62 和 63 只有一个参数的区别 后 者参数为指针 64 65 和 62 63 只有显示位置的区别 62 63 的文本在上 icon 在下 64 65 反之 ShowCategory69Screen ShowCategory70Screen 文本显示文本显示框 文本可编辑 69 和 70 只有一个参数的区别 后者参数为指针 ShowCategory28Screen ShowCategory29Screen 文本显示显示短信内容 ShowCategory34Screen ShowCategory35Screen 文本显示文本和图片显示 附带左右软键 35 增加了一个可编辑的文本框 ShowCategory74Screen文本显示Scroll 用于显示较长的文本 尤其是一屏显示不完的 超出一屏可以滚动显示 ShowCategory71Screen ShowCategory72Screen 进度显示进度显示框 71 和 72 只有一个参数的区别 后者参数为指针 ShowCategory87Screen ShowCategory88Screen 进度显示进度条显示 88 有主辅两个进度条 ShowCategory8Screen ShowCategory67Screen ShowCategory68Screen 图片 动画 图片显示框 附带左右软键 8 可显示图片和文本 67 只显示 icon 68 停用 ShowCategory142Screen图片 动画显示图片 ShowCategory301Screen图片 动画显示 icon 的消息框 ShowCategory106Screen ShowCategory166Screen ShowCategory313Screen 图片 动画 显示动画 106 用于显示屏保动画 166 用于显示其它动画 313 和 166 从参数上看 无区别 ShowCategory10Screen ShowCategory25Screen ShowCategory26Screen ShowCategory27Screen ShowCategory90Screen 时间 日期 日历 系统时间显示框 附带左右软键 10 只显示系统时间 25 显示时间和日期并可以编辑 26 只显示日期并可编辑 27 只显示时间并可编辑 90 ShowCategory80Screen ShowCategory81Screen ShowCategory82Screen 时间 日期 日历 80 81 公历显示 82 农历显示 ShowCategory11Screen ShowCategory36Screen 单选 单选按钮显示框 附带左右软键 36 增加了一个高亮参数 使用场景示例 情景模 式选择 ShowCategory12Screen ShowCategory13Screen 复选 11 12 复选按钮显示框 附带左右软键 11 显示的列表是静态的 12 显示的列表是 动态的 ShowCategory50Screen ShowCategory51Screen ShowCategory75Screen 50 51 51 比 50 多了高亮参数 75 停用 ShowCategory14Screen九宫格显示 ShowCategory22Screen字符选择框 附带左右软键 使用场景示例 特殊字符选择 ShowCategory52Screen ShowCategory53Screen ShowCategory54Screen ShowCategory57Screen ShowCategory165ScreenPopup 11 MMI 实例训练实例训练 pdf 勘误勘误 傅贵 MMI 实例训练 pdf 共 108 页 中有些是明显的错误 有些是因为软件版本升 级而导致 在这里一并罗列出来 以便新员工查阅 避免无谓的时间浪费 1 72 页代码 15 4 I MENUITEM CENTER ICON Y 应为 UI MENUITEM CENTER ICON Y 2 73 页代码 15 5 函数 gui set fixed list menu item functions 的参数数量不够 这 应该是软件版本的不一致所致 调整后的函数写法如下 gui set fixed list menu item functions 建议 gui show fixed icontext menuitem 和 resize fixed icontext menuitem 两个回调 函数进行重写 否则 15 5 代码可能执行会报错 3 86 页代码 18 1 disable menu shortcut box display 1 这行代码可以去掉 因为找 不到定义的地方 4 87 页代码 18 4 这段代码应该放在代码 18 3 之前 否则执行会出错 5 91 页代码 19 2 这段代码 gui measure string MMI fixed icontext list menuitems index item texts 建 议改为 gui measure string UI string type MMI fixed icontext list menuitems index item texts 建议改 为 gui print bordered text UI string type MMI fixed icontext list menuitems index item texts 如果不做这些修改 可能在 VC 下可以编译通过 tcc 环境编译不过 6 99 页代码 20 2 这段代码应该放在 wgui categories enum h 中 而不是 wgui categories defs h 中 这应该是软件版本的不一致所致 7 10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论