一、 实验目的
熟悉ARM SDT 2.5 开发环境,学会ARM 并行口仿真器的使用。使用SDT 编译,
下载,调试,并跟踪一段已有的程序。了解嵌入式开发的基本思想和过程。
二、 实验内容
本次实验使用ARM SDT 2.5 集成开发环境。新建一个基于操作系统的工程文件,并编
译这个工程。学习ARM 并行口仿真器的使用和开发环境的设置。下载已经编译好的文件到
嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下
基础。
三、 预备知识
C 语言的基础知识、程序调试的基础知识和方法
四、 实验设备及工具(包括软件调试工具)
硬件:ARM 嵌入式开发板、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentumn100 以
上
软件:PC 机操作系统win98、ARM SDT 2.51 集成开发环境、仿真器驱动程序
五、 实验步骤
1、运行ARM SDT 2.5 集成开发环境(ARM Project Manager)。选择File | New
菜单,在对话框中选择Project,并在如图1-1 所示,新建一个工程文件(work1.apj)
2、在新建的工程中,如图1-2 所示,选中工程树的“根部”。使用菜单Project | Tool
Configuration for work1.apj | <asm> = armasm | Set,对整个工程的汇编进行设置。
3、因为开发板上的嵌入式处理器ARM7TDMI 没有浮点处理器,所以,如图1-3 所示,
在弹出的对话框中设置Floating Point Processor 为none。保持其它的设置不变。
4、把\Inc、\Src、\Lib、\Startup、\Ucos-II 等目录复制到work1 的目录下。如图1-4 所示,
选中工程树中Debug 子树的Sources 选项。通过菜单Project | Add Files to Sources,把
\SRC\main.c 和\STARTUP\目录下的*.s 文件加入工程的源文件中。
5、选中工程树中Debug 子树的IncludedFiles 选项。通过菜单Project | Add Files to
IncludedFiles,把\work1 目录下(包括子目录)的所有*.h 文件都加入工程中。
6、选中工程树中Debug 子树的Libraries 选项。通过菜单Project | Add Files to Libraries,
把\Lib 目录下的两个*.alf 文件都加入工程中。这两个文件是操作系统的库文件,包含了所有
的API 函数库。
7、选中工程树的“根部”,通过菜单Project | Tool Configuration for work1.apj | asmlink |
Set,对整个工程的连接方式进行设置。
8、在弹出的对话框中,选中Entry Base 选项卡,如图1-5 所示,设置连接的Read-Only
(只读)和Read-Write(读写)地址。地址0xC000000 是开发板上SDRAM 的真实地址,
是由系统的硬件决定的;0xC200000 指的是系统可读写的内存的地址。也就是说,在
0xC000000—0xC1ffffff 之间是只读区域,存放程序的代码段,在0xC200000 开始是程序的
数据段。
9、选择Linker Configuration 的ImageLayout 选项卡,设置程序的入口
模块。指定在生成的代码中,程序是从44binit.s 开始运行的。
10、选择Project | Edit Project Templete 菜单,使用New 按钮,为编译器新建一个步骤。
取名为RomImage。
11、按照如图1-8 的内容设置RomImage 的内容。使编译器编译的时候可以生成
system.bin 文件,这就是系统的启动文件。
12、回到Project Templete Editor 对话框中,点击Edit Detail 按钮,在弹出的对话框中可
以重新命名模板。
13、选中工程树中DebugRel 子树,用Delete 键删除。
提示:
在系统工程树中Debug 子树下面生成的是应用程序的调试版本,在生成的目标代
码中,包含了系统的调试信息。Release 子树是应用程序的发行版本,生成的代码中不
包括调试信息,而且编译器还针对速度和代码的大小进行优化。DebugRel 子树是一个
折衷版本,通常用不到,所以,在这里删除。
14、至此,工程文件设置完毕。因为设置过程比较繁琐,可以保存此工程,下次新建项
目的时候复制即可。
提示:可以使用File | Save as Templete 菜单把当前工程的设置保存为模板,比如,
armRom.apj 文件。把此文件复制到ARM SDT 编译器的\ARM251\Template 目录下,以后创
建工程的时候,就可以直接选择使用此模板了。模板文件也是一个工程文件(*.apj),但是,
模板文件中不包括工程中文件的信息,只有编译器环境的设置。
15、选中工程树中Debug 子树,通过Project | Build work1.apj “Debug”菜单(或者工具
栏中的相应按钮)编译整个工程。
16、把ARM 的JTAG 仿真器连接到PC 机的并行口和开发板上,打开开发板的电源,
运行仿真器的驱动程序armJTAG.exe。
17、使用Project | Debug work1.apj “Debug”菜单(或者工具栏中的相应按钮)启动ARM
Debugger 软件调试程序。
18、在ARM Debugger 中,通过Options | Configure Debugger 菜单设置仿真器。如图1-9
所示,在弹出的对话框中,设置Target Environment 为Remote_A
19、单击Configure 按钮,按照如图1-10 所示,设置仿真器,添加本机的IP 地址。
20、设置完成以后,ARM Debbuger 开始通过仿真器装载程序。如图1-11 所示。
图 1-11
21、装载完毕以后,通过Execute | Go 菜单(或者工具栏中的相应按钮)运行程序。
22、程序运行的时候,可以使用Execute | Stop 菜单(或者工具栏中的相应按钮)暂停
运行程序。如图1-12 所示,在Execute 窗口中将显示出程序暂停的位置。
图 1-12
23、通过Execute | Step 菜单(或者工具栏中的相应按钮)可以单步运行程序。也可以
使用Step In、Step Out 菜单命令进入或者跳出函数的调用。
24、在程序停止运行的时候,选择View | Source Files 菜单命令,可以打开如图1-13 所示的源程序列表窗口,双击列表中的文件名可以查看相应的源文件。
25、在源文件列表中打开Main.c 文件。选择源文件中的某一行,右击鼠标,如图1-14
所示,用Toggle Breakpoint 快捷菜单命令可以设置断点,使程序运行到这里停下来。
26、使用在View 菜单下的Registers、Variables 和Memory 命令可以查看工作寄存器或
者内存变量。读者可以逐一的尝试,为以后调试程序打下基础。
评论
查看更多