配色: 字号:
从C语言到MTK2
2012-08-06 | 阅:  转:  |  分享 
  
开始前有2个基本问题需要解决。

什么是工程?比如我的是6225的代码,文件夹名称叫S200,打开后下面有很多文件和很多文件夹。这个S200整个文件夹就是我们通常所说的工程。工程文件夹的名字最好以工程名命名。

什么是工程名?比如我们的工程文件夹的名字是S200,那么在S200/make这个文件夹下面有一个S200_GPRS.mak,其中S200就是我们说的工程名(因为我的工程名是S200,所以文件名字是S200_GPRS.mak。如果工程名是S300,这个文件的名字就是S300_GPRS.mak)。

工程名不要随意改动,至少我们现在不知道应该怎么去更改它而不会出现错误。

在开始前,先进入CMD。进入我们的工程文件夹,再输入下图所示的命令。



其中S200是工程名,如果你的工程名是S300,那么这里的命令就是makeS300gprsnew.

这个命令是编译命令。拿到一个新的工程,首先就要NEW一下。

当这一切都搞定以后,就可以进行下面的教学了。

如果出错,就请别人提供一份能够编译通过的源代码,然后再输入makeS200gprsnew.

只有编译成功以后才能进行下面的教学。

利器篇

工具的使用

1VisualC++6.0

相信学过C语言的都知道,这个是编译C语言的工具。其实MTK有其DOS的编译命令,这个在后面会讲到。VC的主要应用是在模拟器上。而且,在装载下面的sourceinsight也有用到VC。

当然,必要的VC助手是不可缺少的。

2sourceinsight3.5

这个工具是一款很主流的函数查找工具,这个工具会一直陪伴你直到你转行。下面介绍下这个函数的基本使用。

如何安装和如何第一次设置请参考网上的资料。

首先,我们要把我们的源代码全部包括进来。源代码在http://www.52rd.com/bbs/Detail_RD.BBS_98467_118_1_1.html这里有622605C的源代码,估计可以用(因为我自己没有下过,不清楚。我自己用的是6225的),如果与我的源代码不同的地方,请找6225的代码(论坛其他帖子里面有)。

下面讲怎么包含代码。

1首先,我们要把原先的代码关掉(如果新开始就忽略掉这一步,但是以后会用到)



2建立新工程



Newprojectname:你的工程名(自己编的),为了方便寻找,最好写工程的名字。

下面那个where……什么的,初学者不用管他。当你在工作中有需要用到这个的时候可以问同事。一直选择OK,直到进入下一个画面。

3设置工程位置



其中



是工程所在的位置。记住,这个位置是工程的位置。比如我们的文件夹名字是S200,那么就是F:/……/S200这里为止(我这里是F盘)。这里是整个工程的位置。

然后点OK,其他的选项暂时不需要理他。

4添加工程



现在到了这一步。点击ADDTREE。系统自动添加我们的工程。(中间有提示,选继续)

成功了以后,出现如下所示



这样,工程就包括进来了。然后选择Close.

先别急着找东西,这一步很重要,先要关联我们的工程。大家都知道在C语言中,可以互相引用,声明。在大工程中文件是非常多的,为了分类,所以需要先关联。



图中所示就是关联的选项。

选择之后,选关联所有选项。如下图



点击OK。关联所有选项。

关联需要的时间,大概5分钟左右(4核)。

下面介绍如何使用该工具。

首先是上关联,就是追溯某个东西的定义。

关联完成后会出现一下画面



在右下角可以寻找我们需要的文件,输入其名字就行。下面以mainmenu为例。

在右下角的输入框中输入mainmenu,选择mainmenu.c文件,回车。

会看到以下画面



正中间是我们的函数主体。左边是函数的概况。如果我们想要找函数,知道该函数的名称,就可以在左边概况的最上面输入框中输入想要的函数即可。

现在我们要查找goto_main_menu这个函数。在左边输入goto_main_menu,选这个函数点击回车。

会出现



现在往下走,到CodeBody里面。



我们以第一个函数为例(图中选中的函数)。这个函数的具体表现就在左下角的框体里面。但是太小了,我们可以双击这个框体把它变到主框体上面。还有个办法就是选中这个函数,右键点击,选择图中所示



即可把该函数显示到主框体中



现在我们要回到goto_main_menu里面。在最上面有一排快捷图标,其中的功能就是返回上一个/下一个主框体。这个功能很常用。现在我们返回goto函数



如果我们要查找一个函数在这个工程的哪些地方都出现过,可以用下面的方法。

1选择图标,然后在这里输入该函数的名称。



或者选中你所需要的函数,右键选择



这个也可以达到目的。

现在我们查找mmi_phb_reset_scr_id这个函数。

点了search后出现对话框,点第一个

就会看到出现下图



点选其中第一个



前面的这个小图标,就会出现该函数在这个函数中的具体位置。



点选最上面的小图标,可以切换到下一个/上一个位置。

这款工具基本应用就介绍到这里。还有一些操作跟WORD的操作是一样的,比如ctrl+z,ctrl+s之类的操作,就不一一介绍了。



3beyandcompare2

这款软件是比较软件。可以把2个不同的文件或文件夹相比较,找出其中不同的部分,并且可以从一个文件复制到另外一个文件中。

安装这个软件以后,普通文件/文件夹点击右键就有一个选项



点击选择,再在另外一个文件夹上右键点击后,



就会看到这个选项。点击这个选项,就会出现2个不同文件的比较了。

只要经历过一次SP移植,对这个文件就会很熟悉了。一般不会用到此工具的,所以只是略微介绍一下有这个工具。见过一次如何使用就知道了。

4ultraedit

这个工具是文字处理工具,在出现错误后寻找错误,在TXT文档中寻找具体函数有帮助。只要安装即可,快捷方式跟WORD是一样的。

5USB1.1TORS232Cable

这个工具非常重要,他是USB端口的驱动。我们要进行烧机就必须要装载这个驱动。

5flashtool

这是烧机工具。我们把软件编出来还要把软件烧到手机里面去运行。当然关于MMI部分用模拟器就可以了。但是有时候也需要烧机进行测试。

打开后会出现以下画面。



点选这个按钮,选择



这个文件,就在打开的文件夹里面,不需要另外找。



然后选择这个按钮,再

选择S200/build/S200/scatS200.txt这个文件,也就是图中所示。其中的S200是工程名,如果你的工程叫S300,这个文件名也会相应的改变。点击打开。点选



ROM字体(不是把勾给去掉,是点ROM这个英文字),出现



这个提示,选择其中的.bin文件,如果有多个,就选择你编译成功后的那个时间点建立的BIN文件。(如果你想烧改编译的文件进去的话)

而且每次编译后就要选择一次BIN文件。

下一步是选择端口。

选择端口位置在下图所示。



不要选择COM1,选择COM1以外的端口即可。如果有3个以上的接口,就试试哪一个是烧录线的接口。选择接口以后,再点选,然后把联通烧录线和电脑。如果手机正打开必须先关闭手机。然后再开机,就发现手机没有开,而是已经开始烧录了。

在烧录过程中请不要有任何关于手机的操作。如果出现问题(比如接触不良导致烧录失败)重复上面的步骤,然后把手机的电池取下来等5秒钟再放回去,再打开手机进行烧机。

6catcher

这个工具的作用是显示程序在手机中的运行顺序,以及运行中的情况。

首先,我们在需要显示的地方输入下列语句:



kal_prompt_trace(MOD_CC,"AlmExpiryHandlerCB=%d,%d",currTime.nHour,index);

这句话加进去以后,当执行到这一条语句时,就会显示currTime.nHour的值和index的值。

下面是如何设置。

现在我们在mainmenu.c的highlight_mainmenu_organizer这个函数中加上这句话。这个函数的意思是在主菜单中如果高亮organizer这个菜单就执行函数。



现在我们在这里加上这句话,如果主菜单高亮这里就会显示“thisishighlightorganizer=1”这句话。

要记住,如果修改了程序一定要进行重新编译。这里是修改mainmenu.c文件,所以只需要进行makeS200gprsremake即可。这个命令在第二章会详细解释。

现在开始CATCH的设置。首先进入CATCH。



进入后就会有这个界面。



先点选这个地方,设置database。

选择后出现下面对话框,点查找。



这个database文件在S200/tst/database_classb/下面。其中有一个BPLGUXXXXXSrcP_XXXX的文件,选择这个文件。点击OK。



再选择Control(Mode(Logging



就会出现下面的屏幕



再选择这个图标



出现选择COM的对话框。选择不是COM1的那一个(如果只有2个)。



再点选下面的图标,连接。





再点选下面这个图标,选择我们需要CATCH的地方。



点选之后出现下图,找找看,里面有个MOD_CC



我们回到函数中看看,发现这个地方跟函数中第一个参数一样。



因为我们不会自己创建新的MOD,所以只有借用已有的。

然后选择L1Filter,再选择AllFilterOff。把所有的勾去掉。如果有这么多显示你是很难找到你需要的显示的……



再点击确定,回到主界面。

但是现在还不能CATCH,我们要在mauiMETA软件里面进行设定。

打开mauiMETA,出现下面的界面。



选择COM,除了COM1以外的那个。



点击Reconnect,开机,然后灯会变黄。



这里注意,如果显示无法连接。请关机,退出程序,拔线。再打开程序,插线,点击reconnect,开机。必须按照顺序来。

连接成功后我们要选择下图所示的地方,选择NVRAMEditor。我们目前在这个软件上只用到这个项目。



选择后,出现下面的对话框



选择readfromNVRAM,然后弹出对话框选择文件。文件跟CATCH那个文件是一样的。

S200/tst/database_classb/下面的BPLGUXXXXXSrcP_XXXX文件。

然后出现下面的屏幕,选择OtherLID













往下拉,选择NVRAM_EF_PORT_SETTING_LID下面的1,再点击一次readfromNVRAM,出现下面的情况。







在tst_port_ps后面的数字改为0X00,ps_port改为0X63。再点击savetoNVRAM。



然后再关闭程序。(一定要先saveNVRAM)

现在我们就可以进行CATCH了。

现在我们开机,发现会显示一下画面。



如果不能CATCH,就再点击一次这个,再点击确定。就刷新出来了。

现在我们在主菜单上高亮ORGANIZER的时候,就发现其中会显示你所要显示的字样。你可以显示在当前状态下的某个值。



这样,你就可以知道程序到底运行没有运行到这里,还有运行到这里某个值是什么。



应用篇

MTK的所有CMD的命令

前面提到makeS200gprsnew和makeS200gprsremake。这2句话是什么意思呢?下面一一说明。

首先,我们先要输入make。这个是执行文件,没有变动。

第2个字串S200是工程名,如果你的工程是S300或者W500,那么对应的这里应该改为你的工程名。

第3个字串是gprs,因为我们联网是用的gprs,所以这里是输入的是gprs。一般都是gprs,如果有其他的(比如gms)其他同事会告诉你的。

第4个字串可以变动。不过我认为最常用的是new,update,remake,resgen,下面详细介绍这4个命令是什么意思

New——这个命令是当你拿到一个新的工程的时候,或者改变了.mak文件的时候必须要执行这个命令。

Update——当你既更换资源又改写代码的时候使用。

Remake——这个命令是在不更换资源的情况下改写代码的时候使用。

Resgen——这个是在只更换资源不改写代码的时候使用。

在富贵的教材中就有资源的说明。有字串资源,菜单资源和图片资源3大资源。一般来说,如果只改写.c和.h代码都只需要remake即可。

如果要运行模拟器,则在new编译之后,再执行makeS200gprsnew_modis。然后再在S200\MoDIS下面的WIN32FS文件夹改为只读。然后再执行S200\MoDIS\MoDIS.dsw这个文件,就会发现打开了VC。然后再运行即可出现模拟器。

如何快速查找函数

现在介绍3种快速查找函数的方法。这3种快速查找函数对应的是3种资源。

图片资源——在plutommi/Customer/Images/PLUTOXXXXXX/image.zip文件里面,其中PLUTOXXXXXX是指屏幕的大小。我们需要把这个ZIP文件解压缩,然后进入里面找相关的图片。

字串资源——在plutommi\Customer\CustResource\PLUTO_MMI/ref_list.txt里面。这里面有所有国家的文字,第一项是这个文字的ID。

菜单资源——在res_XXXX.C文件里面。比如我们要找主菜单的资源,就在res_mainmenu.c文件里面。所有res文件都是资源文件。

说明完资源在哪里后,下面结合实例介绍寻找资源的方法。









献花(0)
+1
(本文系小云蔡首藏)