在CodeWarrior中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。这样就会打开一个如图8.1所示的对话框。
图8.1新建工程对话框在这个对话框中为用户提供了7种可选择的工程类型。
ARM
ARM
Empty
Makefile
Thumb
Thumb
Thumb
在这里选择ARM
这个时候会出现ledcircle.mcp的窗口,如图8.2所示,有三个标签页,分别为files,link
图8.2新建工程打开窗口对于本例,由于所有的源文件都还没有建立,所以首先需要新建源文件。
在“File”菜单中选择“New”,在打开的如图8.1所示的对话框中,选择标签页File,在File
在打开的文件编辑框中输入下面的汇编代码:
;**************************************************************
;Chinese
;File
IMPORTMainAREAInit,CODE,READONLYENTRYLDR
4K
完成上述操作后,程序跳转到Main函数执行。
保存Init.s汇编程序。
用同样的方法,再建立一个名为main.c的C源代码文件。具体代码内容如下:
//*****************************************************************
//Chinese
//File
//Author:JuGuang.Li//Date://***************************************************************
#defineIOPMOD(*(volatile
int
{
unsigned
for(;;){
LED=IOPDATA;LED=(LED<<1);IOPDATA=LED;Delay(10);if(!(IOPDATA&0x0F))IOPDATA=0x01;}
return(0);}
void
{
unsigned
for(i=0;i<=x;i++)
for(j=0;j<0xff;j++)for(k=0;k<0xff;k++);}
该段代码首先将I/O模式寄存器设置为输出模式,为I/O数据寄存器赋初值为0x1,通过将I/O数据寄存器的数值进行周期性的左移,实现使接在P0~P3口的LED显示器轮流被点亮的功能。(注意这里的if语句,是为了保证当I/O数据寄存器中的数在移位过程中,第4位为数字“1”时,使数字1通过和0xFF相与,又重新回到I/O数据寄存器的第0位,从而保证了数字1一直在I/O数据寄存器的低四位之间移位。)
在这里还有一个细节,希望读者注意。在建立好一个工程时,默认的target是DebugRel,还有另外两个可用的target,分别为Realse和Debug,这三个target的含义分别为:
DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;
Debug:使用该目标为每一个源文件生成最完全的调试信息;
Release:使用该目标不会生成任何调试信息。
在本例中,使用默认的DebugRel目标。
现在已经新建了两个源文件,要把这两个源文件添加到工程中去。
为工程添加源码常用的方法有两种,既可以使用入图8.2所示方法,也可以在“Project”菜单项中,选择“Add
图8.3选择添加文件到指定目标到目前为止,一个完整的工程已经建立。
下面该对工程进行编译和链接工作。
8.2.2编译和链接工程在进行编译和链接前,首先讲述一下如何进行生成目标的配置。
点击Edit菜单,选择“DebugRel
这个对话框中的设置很多,在这里指介绍一些最为常用的设置选项,读者若对其他未涉及到的选项感兴趣,可以查看相应的帮助文件。
1.target设置选项Target
Linker选项供用户选择要使用的链接器。在这里默认选择的是ARM
链接器,将使用armlink链接编译器和汇编器生成的工程中的文件相应的目标文件。
图8.4DebugRel设置对话框这个设置中还有两个可选项,None不是不用任何链接器,如果使用它,则工程中的所有文件都不会被编译器或汇编器处理。ARM
Pre-linker:目前CodeWarrior
Post-Linker:选择在链接完成后,还要对输出文件进行的操作。因为在本例中,希望生成一个可以烧写到Flash中去的二进制代码,所以在这里选择ARM
2.Language
还有一个需要注意的就是ARM
细心的读者可能会注意到,在设置框的右下脚,当对某项设置进行了修改,该行中的某个选项就会发生相应的改动,如图8.5所示。实际上,这行文字就显示的是在8.1中介绍的相应的编译或链接选项,由于有了CodeWarrior,开发人员可以不用再去查看繁多的命令行选项,只要在界面中选中或撤消某个选项,软件就会自动生成相应的代码,为不习惯在DOS下键入命令行的用户提供了极大的方便。
3.Linker设置鼠标选中ARM
在标签页Output中,Linktype中提供了三种链接方式。Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple方式是默认的链接方式,也是最为频繁使用的链接方式,它链接生成简单的ELF格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered方式使得链接器要根据scatter格式文件中指定的地址映射,生成复杂的ELF格式的映像文件。这个选项一般情况
图8.5命令行工具选项设置图8.6链接器设置下,使用不太多。
因