MTK从入门到精通第5章+MTK开发平台搭建.docx
- 文档编号:18342545
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:20
- 大小:393.26KB
MTK从入门到精通第5章+MTK开发平台搭建.docx
《MTK从入门到精通第5章+MTK开发平台搭建.docx》由会员分享,可在线阅读,更多相关《MTK从入门到精通第5章+MTK开发平台搭建.docx(20页珍藏版)》请在冰点文库上搜索。
MTK从入门到精通第5章+MTK开发平台搭建
第五章:
MTK开发平台搭建
导读:
前面几章,我们一直都在讲一些MTK的背景知识,试图让大家对MTK有个感性的认识,当你对即将要向大家学习的MTK开发有个大概的了解之后,再来研究里面的一些细节,对你接下来的学习肯定是大有益处。
从这一章开始,我们将慢慢地向大家铺开MTK开发实战方面的内容,让大家尽快步入MTK开发的殿堂,也就是我们所说的“入门”。
好了,言归正传,我们把话题切换到平台搭建上来。
古人云:
君欲行其事,必先利其器,那么学习MTK也一样,必须要有好的工具来辅助我们学习,辅助我们开发,工具选好了,选对了,让我们接下来的学习和工作事半功倍。
本章我们将详细的介绍MTK开发平台的搭建过程,首先是介绍MTK开发平台所需的资源和工具,以及获得这些资源的方式,接下来介绍如何正确安装和配置相应的软件工具,并告诉读者如何检测环境搭建是否成功,然后我们重点介绍了SourceInsight软件,并介绍如何把代码加载到SourceInsight软件当中,接着,文章还给出了分布式编译的原理,在MTK开发中引入分布式编译的意义,以及如何搭建自己的分布式编译系统,最后对整章做了一下总结。
因为本章是学习接下来知识的基础,所以希望读者能认真阅读。
如果遇到问题,也可以到我们的iMTKoo论坛()来发帖询问,我们的版主会尽快的给予解答。
需掌握的内容:
1.了解MTK开发平台所需的各种软件。
2.掌握开发平台的搭建过程。
3.掌握如何应用MTK工具检测开发平台是否搭建成功。
4.了解各种第三方软件在我们的编译过程中扮演的角色。
5.了解各种官方软件的作用。
6.掌握分布式编译的原理以及分布式编译系统的搭建。
5.1MTK开发所需的资源和工具
在进行MTK开发平台搭建的讲解之前,笔者觉得有必要对这些软件做一些简单的介绍,让大家大致了解,这些软件在我们平台中的作用。
然后我们还将告知大家如何去获取这些软件,以及对这些软件版本的要求,这一点非常的重要,我这里做一次强调,平台搭建中所需的软件版本,并不是越新越好,请使用我们推荐的版本,否则可能会出现各种编译错误。
5.1.1第三方软件
这些软件都是由第三方提供,但是在MTK开发平台中都扮演了很重要的角色。
本节所使用的软件名称、软件版本、软件说明参见表5-1。
软件名称
版本
软件说明
ADS
1.2
ADS是ARM公司的集成开发环境软件,同时要下载升级补丁包8.4.2,或者更高的升级补丁,笔者推荐ADS1.2_update_848.exe,把ADS升级到v1.2_848(注意软件升级是必须的)。
ActivePerl
5.6.1
PERL编译器,MTK编译脚本是用perl来完成的,所以该工具也是必须的,推荐使用ActivePerl-5.6.1版本,更高的版本在使用过程中,都会出现各种无法预料的问题,请使用推荐版本。
MinGW
3.1.0
MinGW工具,它是MinimalistGNUonWindows的略称,MinGW是gcc在Windows下的编译环境,通俗的讲它就是gcc在windows上的一个实现。
MSYS
1.0.10
MSYS工具,它是MinimalGNU(POSIX)systemonWindows的简称,是一个小型的GNU环境,包括基本的bash,make工具等等,是Windows下最优秀的GNU环境。
7zip
3.13
7zip压缩工具(7za.exe),在编译过程中,程序会调用它解压缩图片资源。
当然很多读者拿到的代码中可能只带这个工具,具体情况,将在接下来的内容中讲解。
ImageMagick
6.4.1-Q16
安装这个软件只是为了软件里面的一个工具——convert.exe,该工具可以把图片转换为数组,在编译的过程中会被用到,这里不做详细的说明,当然很多读者的release版本源代码中已经包含了这个工具,就没有必要安装该软件了。
MicrosoftVisualC++
6.0
在MTK模拟器上调试程序的时候,就需要这个开发工具了。
这里要注意的是,VC6.0必须带SP6补丁。
打开VC软件,选择Help菜单下面的AboutVisualC++,弹出窗口中就可以了解到是否打了SP6补丁了。
安装过程非常简单,就不做介绍了。
Excel
2003
Windowsoffice里面的MicrosoftOfficeExcel,因为在MTK编译的过程中需要用到excel的相关函数来打开内存list表单提取相关数据。
SourceInsight
3.5
因为MTK源文件代码量相当的惊人,用其他的编译器来查看代码修改代码会相当的不方便,这里强烈推荐该软件,必定会让你的开发事半功倍。
安装过程非常简单,就不做介绍了。
XoreaxIncrediBuild
3.30b
可以在CMD和VC6下面让读者搭建自己的分布式编译系统,让编译变的更快捷,具体如何应用,我们也会在接下来的内容中给予详细介绍。
表5-1平台所需第三方软件
5.1.2MTK自带软件
接下来要介绍的几款软件是MTK提供的,他们都有各自的用途,这里我们只做一些简单的介绍,他们的安装也非常的简单,书中不做介绍,当我们在实际的应用中用到他们的时候,我们再来好好的讨论它们的使用方法。
本节所使用的软件名称、软件版本、软件说明参见表5-2。
表5-2MTK自带软件
软件名称
版本
软件说明
MCT
6.0
该软件为UI制作工具,包括菜单制作,图片制作,字体制作等等。
具体如何使用,将在以后讲解。
META
无
是MobileEngineeringTestingArchitecture的简称。
是官方提供射频、NVRAM访问等方面内容的测试工具。
Catcher
L1_v3.12.03
是MTK提供的PC端的trace调试工具,主要是记录调试信息,开发人员可以根据这些信息分析手机的各种行为。
Flash_tool
3.2.00
这个不多说了,就是烧机工具,等以后讲到如何烧机的时候,会用到这个软件。
注1:
5.1.1和5.1.2提到的所有软件都可以在网上下载到,也可以到我们iMTKoo官方网站下载()。
请使用推荐版本,这些版本经过测试,可以正常使用,否则可能会出现各种问题。
5.2MTK开发平台搭建
接下来我们将介绍在WindowsXPsp3操作系统上,搭建MT62250812平台的开发环境。
虽然我们知道,现行MTK的平台很多,但是环境的搭配是相同的。
MTK开发平台的搭建相对于其他的手机平台,比j2me,Windowmobile都要复杂一些,不过只要读者认真的阅读下面所讲的内容,搭建就会变的轻而易举。
5.2.1ADS1.2的安装
在安装ADS1.2的时候,我们推荐大家安装在默认的路径下面(C:
\ProgramFiles\ARM\ADSv1_2),这样可以减少很多不必要的麻烦。
当然很多喜欢去了解问题实质的读者肯定要问,是否可以安装在其他的路径呢?
答案是肯定的,但是这个时候你不得不去修改源码中的一些设置。
这里假设我们把ADS安装在D:
\ADS1.2\ARM目录地下,此时我们打开源码的make目录,找到Option.mak文件,我们用UE或者使用记事本打开,找到如下一段:
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
上面一段的意思是,如果我们的编译器用的是ADS,我们应该把DIR_ARM设置成ADS的安装路径。
我们发现,默认的值就是ADS的默认安装路径。
这里我们需要把DIR_ARM的值修改为D:
\ADS1.2\ARM,其他的地方不需要改变(强调一下,安装路径中不要包含中文)。
在接下来的安装过程中,安装程序会跳出对话框要求读者提供License,如果没有自动跳出ARMLicenseWizard对话框,请点依次点击开始程式ARMDeveloperSuitev1.2LicenseInstallationWizard,如图5-1所示:
图5-1ADS1.2注册界面1
选择InstallLicense后点击下一步,进入一个新界面,如图5-2所示:
图5-2ADS1.2注册界面2
选择上图的Browse按钮,然后在ADS安装源文件的CRACK目录下找到LICENSE.DAT文件,点击打开按钮,完成注册。
注意本软件请到本书官方网站下载,确保版本和步骤完全一致。
接下来要为ADS打一个升级补丁,双击下载的补丁文件,你会看到如下图5-3所示界面,如果你的ADS1.2是默认安装,直接点击Unzip就可以了,如果非默认安装,请选择你的安装目录,然后点击Unzip,这样ADS1.2就升级好了。
图5-3安装补丁包
5.2.2ActivePerl的安装
ActivePerl的安装相对比较简单,一路默认安装就可以了,可以选择你想安装的任何地方,安装结束后,请打开CMD窗口,在命令行下面输入perl–v命令(该命令是在CMD命令行下面打印出perl的版本信息),然后按回车,如果出现以下信息,说明安装成功。
Thisisperl,v5.6.1builtforMSWin32-x86-multi-thread
(with1registeredpatch,seeperl-Vformoredetail)
Copyright1987-2001,LarryWall
Binarybuild638providedbyActiveStateCorp.http:
//www.ActiveS
ActiveStateisadivisionofSophos.
BuiltApr13200419:
24:
21
PerlmaybecopiedonlyunderthetermsofeithertheArtisticLicenseorthe
GNUGeneralPublicLicense,whichmaybefoundinthePerl5sourcekit.
......
如果没有出现以上信息,则说明perl工具没有安装成功,请检查环境变量中path变量的值,是否含有perl程序bin的路径,类似X:
\Perl\bin,如果没有,请补上,用“;”号和后面的路径隔开(不包括引号),默认安装时,bin的路径为C:
\Perl\bin。
5.2.3MinGW和Msys的安装
很多读者拿在手上的源代码中可能已经包含了这两个工具,请在你的MTK源代码目录下找到tools目录并打开,看看是不是包含了MinGW和MSYS两个文件夹,如果已经存在了,就无需安装了,如果不存在,请到本书官方网站下载这两个工具,解压后拷贝到tools目录下面即可。
5.2.47zip和ImageMagick的安装
在源代码的plutommi\Customer\ResGenerator目录下查看是否包含了7za.exe和convert.exe两个工具,如果文件已经存在,就跳过本小节,如果无法找到,请到官方论坛()直接下载这两个工具放到该文件夹下面。
当然你也可以到网上下载7zip和ImageMagick软件,安装后,将7zip安装目录下面的7z.exe文件拷贝到plutommi\Customer\ResGenerator目录下面,并改名为7za.exe,同时在ImageMagick的安装目录下面找到convert.exe放到ResGenerator文件夹里面。
到此为止,我们的编译环境所需要的软件就安装好了。
5.2.5开发环境检测
本小节我们将利用MTK提供的chk_env.exe工具检测我们前面的安装配置和是否成功,该工具可以在源代码tools目录下面找到。
打开CMD界面,然后进入到源代码的tools目录下面,输入chk_env然后敲回车,工具开始自动检测环境搭建的各种信息。
CMD下显示信息如下:
OSisWindows2000orXP.=>[OK]
Shelliscmd.exe.=>[OK]
......
Perlinstalled.=>[OK]
sh.exeshallnotexistinpath.=>[OK]
C:
\Progra~1\ARM\ADSv1_2\Bin\tcc.exeshallexist.=>[OK]
C:
\ProgramFiles\ARM\ADSv1_2\Bin\tcpp.dllmodifiedtimeshalllaterthan2/9/200
2.=>[OK]
make.exemodifiedtimeshalllaterthan18/6/2003.=>[OK]
MinGW\bin\gcc.exemodifiedtimeshalllaterthan7/8/2003.=>[OK]
MSYS\bin\make.exemodifiedtimeshalllaterthan9/7/2003.=>[OK]
..\plutommi\Customer\ResGenerator\7za.exemodifiedtimeshalllaterthan1/1/200
3.=>[OK]
Buildenvironmentisready!
chk_env工具首先检测操作系统,然后依次检测Shell、Perl、sh.exe、ADS1.2、make工具、MinGW、MSYS、7za.exe工具。
以上的检测结果必须都显示为[OK],否则就代表相应的工具没有被正确安装,或者漏装,此时请认真检查你的安装过程,如果仍然无法解决问题,请到官方论坛发帖询问。
最后,如果全部通过,会给出Buildenvironmentisready!
这样的提示。
注:
很多初学者在开发的过程中,都会在MTK提供的Modis模拟器上调试自己的程序,那么还必须做一个工作,把下表中包含的和MFC相关的DLL放到系统盘的WINDOWS\system32目录下。
DLL参见表5-3:
表5-3MFC相关的dll
DLL名称
所需版本
mfc42d.dll
6.0.8168.0
mfc42ud.dll
6.0.8168.0
mfc70.dll
7.0.9466.0
mfc71d.dll
7.10.3077.0
mfc71ud.dll
7.10.3077.0
mfcn42ud.dll
6.0.8168.0
mfco42d.dll
6.0.8168.0
mfco42ud.dll
6.0.8168.0
msvcr70.dll
7.0.9064.0
msvcr71d.dll
7.10.3077.0
MSVCRTD.DLL
6.0.8168.0
5.3SourceInsight使用
SourceInsight软件在我们的开发过程中并不是可有可无的,它提供了最快速的对源代码的导航和任何程序编辑器的源信息。
把它应用到你的项目开发过程中并切实感受它为你项目开发的效率带来的变化。
5.3.1软件概述
SourceInsight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++,C#和Java等程序的分析。
SourceInsight能分析你的源代码并在你工作的同时动态维护它自己的符号数据库,并自动为你显示有用的上下文信息。
与众多其它编辑器产品不同,SourceInsight能在你编辑的同时分析你的源代码,为你提供实用的信息并立即进行分析。
SourceInsight支持团队开发,可以根据上下文解析动态类型,为每一个文件提供符号窗口。
在开发工程,可以方便开发者快速寻找参数,在代码中进行关键字搜索。
5.3.2把源代码加载到SourceInsight
打开SourceInsight软件,点击Project下面的NewProject菜单。
跳出对话框如图5-4所示:
图5-4创建SourceInsight工程
给工程取一个名字,选择项目存放的目录,这里我们选择我们的源代码的目录就可以了。
然后点击OK,进入下一个界面,如图5-5所示:
图5-5新工程设置
点击Browse按钮,选择你的源代码的目录,然后选择OK,进入下一个界面,如图5-6所示:
图5-6把源代码里面的文件添加到工程
在上图Directory下面选择源代码所在的目录,然后点击右面的AddTree按钮,程序会自动搜索源代码中有多少个文件,然后跳出对一个话框,点击确定,就把代码添加到我们的工程了。
接下来还有一步,必须对项目进行一次扫描分析。
点击Project下面的SynchronizeFiles菜单,跳出如下5-7所示菜单:
图5-7分析扫描项目
点选Addnewfilesautomatically,Removemissingfilesfromproject,Suppresswarningmessages三项,然后点选OK,程序自动开始扫描分析,结束后,源代码才被真正的加载到了SourceInsight当中。
5.4分布式编译
分布式编译的原理很简单,就是将编译的整个工作量通过分布计算的方法分配到多个计算机上执行,这样可以获得极大的效率提升。
关于书中是否引入分布式编译这一小节,本书的几个编者经过了一番激烈的讨论,严格的来说,分布式编译并非本章说涉及的范围,对于MTK开发并不是必须的。
但是最后几位笔者一致决定详细的讲解一下分布式编译系统的搭建,该系统在很多MTK开发公司中得到广泛的应用。
5.4.1分布式编译引入的意义
在MTK源码的编译过程中,编译时间是一道非常严重的坎,以笔者的双核笔记本为例,new一次代码大概需要1个小时左右,而很多读者甚至还在使用很低端的电脑进行开发工作,那么new一次可能需要一个半,或者两个小时,升至更多,这样build一次代码,简直就是一场灾难。
那么有没有办法来解决这个棘手的问题呢?
答案就是分布式编译。
笔者利用自己的电脑,和公司的两台普通电脑,组成分布式编译系统,每build一次代码只花费8-10分钟,从40分钟到10分钟以内,是不是很神奇,这就是为什么我们最终还是下决心花很大的篇幅来讲分布式编译的原因,我们也希望我们的这本书,可以为读者真正带来益处,当然如果你觉得没有必要,请跳过整个第5节,因为这个并不是必须的。
5.4.2IncrediBuild介绍
IncrediBuild是一款非常强大的分布式编译软件,这里我们做一下简单的介绍,它是一个对应VisualC++的分布式编译软件,通过VisualC++强大的IDE扩展功能,它有着非常友好的界面,可以将整个分布式编译过程直观的展现给用户,并且它通过一个“虚拟机”的技术,使能编译的参与者可以与编译发起者有着不同的系统配置(Windows操作系统版本,库文件等),甚至无需在参与者机器上安装VisualC++。
IncrediBuild需要一个特定的计算机做仲裁者(服务器端),其他的所有计算机作为客户(客户端),有了仲裁者的好处是,可以由它来统一安排所有客户端所发起的编译请求,一旦某个客户发起编译请求,则仲裁者会根据其他客户的CPU空闲情况而安排分布式编译,当多个客户同时发起编译请求时,仲裁者会自动平衡分布计算负担,使得编译参与者不会占用过多的CPU。
5.4.3分布式编译系统搭建
之所以叫分布式编译,肯定需要有很多的电脑加入,这个一般不成问题,因为很多公司都会有很多不怎么使用的服务器,或者你的同事一样在做MTK的工作,而他的CPU相当的空闲,那为什么不拿过来利用呢?
首先你必须选一台不关机,或者不这么关机的电脑作为分布式编译的服务器,最好选用公司不怎么使用的服务器,因为你不会希望因为服务器端关闭而导致整个编译系统瘫痪。
好了,在服务器上安装软件的服务器端。
双击安装文件,一路默认直到看到如下界面,如图5-8所示:
图5-8安装选择服务器端还是客户端
我们选择IncrediBuildCoordinator选项,然后点击Next,接下来默认安装就可以了。
这里有一点注意了,要让服务器也参加到分布式编译当中来,我们必须在服务器上也安装软件的客户端。
这样我们再次点击安装文件,到了如图5-8后,选择IncrediBuildAgent,然后选择Next按钮,一路Next直到出现如图5-9所示:
图5-9客户端设置界面
这里我们必须为客户端指定服务器的IP地址,假设我们的服务器端安装的电脑在局域网内的IP地址是10.0.5.217,然后点击Test测试,如果成功了,点击Next继续安装。
安装好后,我们可以在操作系统的管理工具的服务里面找到一个IncrediBuildAgent服务。
接下来我们要为这个系统添加更多的客户端,这些客户端只要在你编译的时候开机,并保持IncrediBuildAgent服务被开启,而且CPU有空闲,就可以帮助你来编译你的源代码。
为了让接下来的阐述更加方便简单,我们这里做一个假设,我们把读者的电脑叫做一个Agent,那么其它在这个系统里面的客户端,被叫做该Agent的helperAgent,如图5-10所示:
图5-10分布式系统
该软件安装后会嵌入到VC6里面成为VC6的一个插件,这样每次利用VC6来编译代码的时候,都可以使用该工具来取代原来的VC6自带的编译系统。
那么,读者可能要问,如果我在CMD下面想编译代码,生成bin文件来烧机,能否使用这个工具呢?
答案是肯定的。
当然要实现这个功能,我们必须修改源代码里面的一些文件,我们这里以MT62250812代码为例,进行讲述。
整个过程包括下面三步:
第一步,在源代码的make文件夹中找到Gsm2.mak文件,用记事本打开,修改make工具的编译项为IncredBuild增加运行参数。
具体操作是在该文件中查找#@echotools\make.exe字符串,找到这一段中的如下两句:
1、(tools\make.exe-fmake\comp.mak-k-r-R$(strip$(CMD_ARGU))COMPONENT=$*>$(strip$(COMPLOGDIR))\$*.log2>&1)\
2、(tools\make.exe-fmake\comp.mak-r-R$(strip$(CMD_ARGU))COMPONENT=$*>$(strip$(COMPLOGDIR))\$*.log2>&1)\
分别修改成如下两句:
1、 (XGConsole/command="tools\make.exe-fmake\comp.mak-k-r-R$(strip$(CMD_ARGU))COMPONENT=$*>$(strip$(COMPLOGDIR))\$*.log2>&1"/NOLOGO/profile="tools\XGConsole.xml")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK 入门 精通 开发 平台 搭建