MTK工作心得

来源:互联网 发布:淘宝口令红包入口 编辑:程序博客网 时间:2024/05/13 15:06

     已经做了四个月的MTK了,觉得应该写些东西分享,虽然做得不怎么好.毕竟人各有所长.写点经验仅供参考.

     MTK软件其实不难开发,因为代码别人都已经写好了.关键是拿来组合用,而MTk本身也希望我们这样做用他们的框架.新手做的时候只要不急噪就可以了,因为一旦急了就会犯简单的错误把事情做坏了,那么你就会更急噪的去看代码发疯式地改Bug又发疯式的搞出一大堆更严重的Bug来,因为你接触代码时间不多,根本很难在短时间内掌握代码结构(老手除外,呵呵)而很多这样的问题是可以小心避免的.犯错意味着你的老大会对你的工作能力有所怀疑,会......会......不说了吧.

     多问问老同事,他们的经验很有用,不过问了以后自己思考.毕竟人家的东西是人家的,你要吸收.还有就是老同事说的时候比较快,因为它们熟悉所以有些地方记下来,碰到比较高傲的技术同事,可以给自己定个目标,一年内赶超人家.

     

     开始正题,分析MTK的代码.首先你必须知道用什么编译代码?MTK编译项目的时候需要用到ARM编译工具(ARM很牛,几乎中国所有嵌入式的大小公司都用它!!!设计CPU ^v^),所以装个ARM的ADS集成开发环境吧,里面有ARM编译器链接器elf文件转换器等等.再有还要装个perl,因为MTK代码编译过程中用到的脚本语言是perl写的,选用perl的一个原因是它有强大的通配符操作功能,编译的时候要解吸很多的标志(Token).再者你要懂点批处理的写法.批处理的目的是因为一份代码上有很多项目存在,编译的时候只要把某个项目下私有的一些代码文件拷贝到编译目录下编译就可以了。一般这些私有代码多为资源代码.资源的编译目录为plutommi/Customer/ResGenerator.

      开始编译,cmd进入make目录,敲个make,就能看到编译帮助:

      Usage:
          make ["customer"|"mt62xx"] "project" "action" ["modules"]

      []表示可选,|表示要么选左边要么选右边.所以Customer表示客户,mt62xx表示代码的平台. project表示项目类型(GPRS or GSM or UMTS等),action表示make的动作(new update clean等),modules表示对哪个模块进行操作(mmi_app模块,conn_app模块,mmi_framework模块),举例:

          make A200M00 gprs new

       一般公司对客户的表示都有自己定的规则,都会把手机项目号定为customer.为了字面上隐藏设计公司的客户名称,不过会在版本号里面加上对客户名称替代的字符,比如001代码Moto,002代表Nokia等.

       大多公司都不会对make过程重视,特别是代码是买来的,感觉能编译通过就可以了,其实,只有当你了解整个编译过程,知道资源是怎么产生的,哪些文件要编译,模块是由哪些文件生成的,最后bin是怎么链接的,你才刚开始对此软件的结构有个初步的了解,所以我觉得分析编译过程很重要,下面开始分析.

       在MTK的跟目录下有make.bat这个批处理,打开一看就一句话:perl make2.pl %*把make命令后的所有参数交给make2.pl来解析.

       make2.pl做了什么呢?

       (1) 预检查一些编译条件,包含一些perl库
       (2) 设立一些变量

       (3) 把参数解析出来,并赋值给变量,其中action变量的动作看一下它的数组@actions

            print "custom=$custom; plat=$plat; project=$project/n";

       (4) 根据action的动作调用最重要的make文件进行编译.最最终要的make文件为$myMF = "gsm2.mak",而以项目名为命令的mak
            e文件:$theMF = "${makeFolder}${plat}_${project}.mak",$myMF 是整个MTK代码公共的makefile,而$theMF代表此
            项目私有的makefile.这些makefile的作用是里面设置了一些编译时的选项,打开的宏,设置一些动作如cleanall,new等.

       (5) 当action为生成modis时,调用一些modis相关函数来做一些处理,具体做什么还没看,待以后看后分析,因为modis这个东西可有可
             无,只是为了方便和加快应用层软件开发调试,可以在make2.pl里面看到,很多函数名里面都有modis这个单词.

       

       该分析那个重要的makefile文件了.即gsm2.mak

 

 

 

 

 

 

 

 

原创粉丝点击