
一、安装ADS1.2软件:
1.打开桌面上ADS1.2的文件夹,双击SETUP.EXE。安装界面如下图1-1,选择“Next”继续。
图1-1
2.选择“YES”,同意安装许可,如同1-2。
图1-2
3.选择安装路径,安装到适当的地方,保证空间足够(200M左右),此处默认为C:\\Program Files\\ARM,选择“Next”继续,如同1-3。
图1-3
4.选择完全安装Full的方式,点击“Next”继续,如图1-4。
图1-4
5. 连续点击“Next”继续,如图1-5,图1-6,图1-7。
图1-5
图1-6
图1-7
6.开始安装,界面如图1-8。
图1-8
7.选择“下一步”,如图1-9。
图1-9
8.选择“Install License”项,如图1-10,点击“下一步”,如图1-11。
图1-10
图1-11
9.此步骤是安装License,需要用到安装包里的CRACK文件夹,将此文件夹复制到软件安装目录的ADSv1_2下,此处为C:\\Program Files\\ARM\ ADSv1_2。拷贝完后点击图1-11中的“Browse”按钮,出现如图1-12所示界面,在查找范围处浏览到安装目录下C:\\Program Files\\ARM\ ADSv1_2\CRACK文件夹并双击“LICENSE.DAT”即可,此时出现如图1-13所示界面。
图1-12
图1-13
10.依次点击“下一步”,“完成”,“Finish”,完成整个安装过程。
二、使用ADS1.2软件:
1.新建工程
现在可以通过“开始”—“程序”—“ ARM Developer Suite v1.2”—“ CodeWarrior for ARM Developer Suite”来打开开发软件了,如图1-14所示。
图1-14
启动Metrowerks CodeWarrior for ARM Developer Suite v1.2后界面如图1-15所示。
图1-15
在CodeWarrior中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,如图1-16所示。也可以在“File”菜单中选择“New。。”菜单,如图1-17所示。
图1-16
图1-17
这样打开一个如图1-18所示的窗口。该窗口有Project、File和Objict三个选项卡,现在我们新建工程,故选Project选项卡。这个对话框中为用户提供了7种可选择的工程类型。此7种工程类型已经在图中标出,大家熟悉一下。
这里我们选择第一种ARM Executable Image工程类型,在“Project name:”下输入工程名,如test,点击“Location:”文本框的“Set..”按钮,浏览选择想要将该工程保存的路径。如存放在E盘的armtest文件夹中,进入E盘后按照图1-19,图1-20的步骤完成。
图1-18
图1-19
图1-20
改完名后,双击armtest(此处亦可根据个人喜好进行文件夹更名)文件夹再点击“保存”按钮,就会出现图1-21所示界面,此时点击“确定”按钮即可建立一个新的名为test的工程,这个时候会出现test.mcp的窗口,如图1-22所示。
图1-21
图1-22
此时点击“最大化”按钮可以将test.mcp窗口扩大,如图1-23所示。
图1-23
2.设置目标及其参数
开发环境要经过设置才能与实验平台配套使用。在工具栏中有一个用于选择目标的下拉列表框,如图1-24圈中所示。新建工程的默认目标是DebugRel,另外还有两个可选择的目标,分别是Debug和Release,他们的含义如下:
DebugRel:生成目标时,为每一个源文件生成调试信息;
Release: 生成目标时,不生成调试信息;
Debug: 生成目标时,为每一个源文件生成最完全的调试信息。
图1-24
这里我们选择Debug,接下来对Debug目标进行参数设置。单击工具栏上的设置按钮或使用Edit—Debug Settings菜单命令打开设置对话框,方法如图1-25所示,设置对话框如图1-26所示。
图1-25
图1-26
在Debug Setting对话框中需要设置的内容比较多。设置方法是首先在左侧的树形目录中选中需要设置的对象,然后在右侧面板中进行相应的设置。下面对经常使用的设置选项进行介绍。
(1)目标设置(Target Setting)
在树形目录中选中Target—Target Setting项,在右侧面版的Post-linker下拉表框中选择ARM fromElF,使得工程连接后通过fromElF产生二进制代码,使其可以烧写到ROM中。方法如图1-27所示。
图1-27
(2)语言设置(Language Settings)
开发语言有汇编、C、C++及其混合语言等。我们在开发前要对其设置,这里主要是对其硬件(架构或处理器)的支持设置,如我们实验是在采用S3C2410处理器的实验平台中开发的,所以在右侧面板Architecture or Processer(架构或处理器)下拉列表框中选择ARM920T。
具体设置方法是先选中树形目录中Language Settings下的开发语言,然后在本语言对应的右侧面板的Architecture or Processer下拉列表框中选择ARM920T,其他选项保持默认。注意,在开发中用到的语言都要进行这样设置。汇编语言的设置过程如图1-28所示,其他语言设置方法与此一样。
图1-28
(3)链接器设置(Linker)
在左侧的树形目录中选中Linker—ARM Linker,出现链接器的设置对话框,如图1-29所示。此处设置很重要,详细介绍一下各个选项卡的设置方法。
1)Output选项卡:如图1-29所示。
其中Linktype选项中为链接器提供3种链接类型:
Partial:表示链接器只进行部分链接,链接后的目标文件可以作为以后
进一步链接的输入文件;
Simple: 表示链接器将生成简单的ELF格式的映像文件,地址映射关系
在Simple image选项区域中设置;
Scattered:表示链接器将生成复杂的ELF格式的映像文件,地址映射关系在Scatter格式的文件中指定。
这里我们选择常用的Simple类型,选择Simple后,在其右侧Simple
image选项区域中包含RO Base和RW Base两个文本框。
RO Base:用来设置程序代码存放的起始地址。
RW Base:用来设置程序数据存放的起始地址。
这两项的地址均由硬件决定,并应该在SDRAM的地址范围内。本实验系统使用的是M SDRAM,其地址范围是0x30000000—0x33FFFFFF,故采用首地址作为程序代码的存放的首地址,即在RO Base文本框中输入0x30000000, RW Base文本框用户自定义,只要保证在SDRAM地址空间内,并且是字对齐即可,这里我们暂时可以不输入,即保持RW Base地址为空。
如果RW Base处输入的地址为0x31000000,则表明在地址为0x30000000--0x31000000之间是只读区域,用来存放程序代码,从0x31000000开始用来存放程序数据。
图1-29
2)Option选项卡:如图1-30所示。
本选项卡只对Image entry point进行设置,该项是程序代码的入口地址。如果程序在SDERAM中运行,针对本实验平台可选择的地址范围0x30000000 RW Base首地址之间设置地址。通常程序代码的入口地址与RO Base中程序代码的首地址相同,这里为0x30000000。其他默认即可。
图1-30
3)Layout选项卡:如图1-31所示。
该选项卡在链接方式为Simple时有效,他用来安排一些输入段在映像文件中的位置。即在Place at beginning of image区域中Object/Symbol文本框中填写启动程序的目标文件名2410init.o和Section文本框中填写程序入口起始段的标号Init。其作用是通知编译器,整个项目从该段开始执行。
图1-31
如果希望将编译后生成的二进制文件放到指定文件夹,可以在左侧的树形目录中选中Linker—ARM frpmELF进行设置,如图1-32所示。此框如为空,将默认在工程目录下生成二进制文件。该二进制文件可用于以后下载到Flash(实验平台等硬件)中执行。
图1-32
至此,对Debug Settings的设置基本完成,单击Apply--OK按钮,保存设置。
为了避免以后每次新建工程再这样设置,我们可以将该新建的空工程作为模板保存起来。方法是:在ADS1.2的安装目录的Stationary文件夹下新建一个适合模板的目录名,如S3C2410 ARM Executable Image ;然后将刚设置好的工程文件以一个适合的名字如S3C2410 ARM .mcp另存到该模板目录中即可。以后使用File--New。。菜单命令新建工程时就可以在弹出的New对话框中看到S3C2410 ARM Executable Image工程模板,如图1-33所示。选用该模板创建工程就可以免去设置过程,直接向工程中添加文件、进行编码就可以了。
图1-32
3.向工程中添加源文件
工程创建、设置好以后就会出现test.mcp的窗口,该窗口包含File、Link Order和Targets三个选项卡,如图1-33所示。默认情况下显示的是File选项卡,此时可以通过执行Project—Add File..菜单命令把与工程有关的所有源文件加入到该工程,如图1-34。或者通过鼠标右击空白处弹出的快捷菜单Add File..来完成,如图1-25所示。
图1-33
图1-34
图1-35
对于本次试验,没有源文件可用,首先需要新建源文件。这里以新建文件类型为C语言文件,文件名为led.c为例向大家说明一下过程。选择File--New。。菜单命令,如图1-36所示。在弹出的窗口中选择File选项卡;在File name文本框中输入新建文件的文件名led.c,注意:文件名后缀与要使用的开发语言种类有关,如用C语言开发时文件名后缀为.c,汇编语言开发时文件名后缀为.s;在Location文本框中输入文件的保存位置E:\\armtes\est;选中Add to Project复选框;在Project下拉列表框中选择将文件添加到的工程test。mcp;在Targets复选框中选中文件要添加的目标Debug,过程如图1-37所示。单击确定即可将新建的文件添加到工程中,文件添加到工程后的窗口如图1-38所示。接下来只需在新建文件中进行编码、保存即可,如图1-39所示。注意:此时Metrowerks CodeWarrior for ARM Developer Suite v1.2窗口中包含工程和文件两个窗口,如图1-40所示。我们需要点击相应的最小化或向下还原按钮来进行切换。如图1-38和图1-39中圈中所示。
图1-36
图1-37
图1-38
图1-39
图1-40
工程创建好以后,接下来就是对其进行编译和链接。选择Metrowerks CodeWarrior for ARM Developer Suite v1.2窗口的“Project”—“Make”菜单命令或点击按钮来完成编译和链接。如果有错误或警告,窗口如图1-41所示,用户可根据提示更改程序。
图1-41
如果没有语法错误,将在工程所在目录下生成一个名为“工程名_data”的文件夹。如本例的工程名为test.mcp,生成的文件夹名为test_data。在该文件夹下,针对不同类型的目标将生成多个文件夹。本例中由于使用的是Debug目标,因此生成的最终文件都在Debug文件夹下。进入Debug文件夹会看到编译、链接后生成的映像文件(xxx.axf)和二进制文件(xxx.bin)。映像文件用于调试,二进制文件用于烧写到Flash中运行。
三、ADS1.2环境下工程的仿真、调试及配置方法
通过“开始菜单”—“ ARM Developer Suite v1.2”—“ AXD Debugger”来打开调试软件,如图1-42所示。
图1-42
如果程序代码没有错误或警告,也可以点击Metrowerks CodeWarrior for ARM Developer Suite v1.2窗口的Project—Debug菜单命令或点击按钮或点击工程窗口的按钮来直接调出AXD 调试窗口,方法如图1-43和图1-44
所示。
图1-43
图1-44
AXD调试窗口如图1-45所示。
图1-45
第一次使用需要对AXD进行配置,具体方法如下:
初次运行AXD,左侧的目标平台为ARM7TDMI。实验平台采用的CPU为ARM920,所以需要配置AXD使之匹配。方法为点击AXD窗口的Options—Configure Target菜单命令,如图1-46。
图1-46
Configure Target窗口如图1-47所示。在图1-47中,Target栏代表不同的目标CPU。“ADP”和“ARMUL”是缺省的设置。选择ARMUL,表示使用软件仿真,此时PC机可以不连接任何目标板,ARM系统中CPU的行为完全由软件模拟。我们使用软件仿真,故选择ARMUL。
图1-47
要设置CPU类型需双击ARMUL,然后在出现的设置对话框中点Processor区域中的Variant下拉菜单,找到ARM920T并选中,然后点击Ok--Ok即可。设置过程如图1-48所示。
图1-48
设置好的AXD界面左侧就会显示ARM920T了。现在可以向AXD调试软件中添加工程的映像文件了。方法为点击AXD窗口的File—Load Image菜单命令选择要加载的映像文件(后缀为.axf),如图1-49所示。
图1-49
加载完映像文件就可以对程序代码进行调试了。下面介绍一下AXD界面的一些常用的工具和窗口。AXD界面如图1-50所示。
图1-50
1.文件操作工具条
加载调试文件
重新加载文件
2.调试观察窗口工具条
打开寄存器窗口
打开观察窗口
打开变量观察窗口
打开存储器观察窗口
打开反汇编窗口
3.运行调试工具条
全速运行(GO),直到结束或断点停止
停止运行(Stop)
单步运行,遇到函数调用则转入函数内部
单步运行,遇到函数调用不进入函数内部
单步运行,从被调函数中返回
运行到光标处停止
设置或取消断点
4.CPU显示窗口
5.程序代码和反汇编窗口
6.系统信息输出窗口
显示程序运行过程中输出的提示信息或错误信息。可以通过System Views—Output菜单命令设置为显示或隐藏。
7.寄存器窗口
用于查看和修改CPU中个寄存器的值。在不同模式下,不同窗口对应不同的寄存器。通过双击寄存器的值可以对其进行修改。可以通过Processor Views—Registers菜单命令设置为显示或隐藏。
8.变量窗口
用于查看程序运行过程中各变量值的变化。可以通过Processor Views—Variables菜单命令设置为显示或隐藏。
9.存储器窗口
用于查看相应存储器地址中的数据。用户可以输入地址,查看相应地址内的数据,如果输入地址是无效的,则显示错误的数据。可以通过Processor Views—Memory菜单命令设置为显示或隐藏。
