1、ADS 1.2集成开发环境练习
1.1 实验目的
了解ADS 1.2集成开发环境的使用方法。
1.2 实验设备
硬件:PC机 一台
软件:Windows98/XP/2000系统,ADS 1.2集成开发环境
1.3 实验内容
1. 建立一个新的工程;
2. 建立一个C源文件,并添加到工程中; 1. 设置编译连接控制选项; 4. 编译连接工程。
1.4 实验预习要求
仔细阅读本书第2.2节ADS工程编辑的内容。
1.5 实验步骤
1. 启动ADS1.2 IDE集成开发环境,选择【File】-> 【New?】,使用ARM Executable Image
工程模板建立一个工程,工程名称为ADS,见图1。
图1 建立ARM指令代码的工程
2. 选择【File】->【New?】建立一个新的文件TEST1.S,设置直接添加到项目中,见
图1.2。输入如程序清单1所示的代码,并保存,见图1.3。
图2 新建文件TEST1.S 程序清单1 TEST1.S文件代码
AREA Example1,CODE,READONLY ; 声明代码段Example1 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令
START MOV R0,#15 ; 设置参数
MOV R1,#8
ADDS R0,R0,R1 ; R0 = R0 + R1
B START END
图3 添加了TEST1.S的工程管理窗口 1. 选择【Edit】->【DebugRel Settings?】,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Output页设置连接地址(见图1.4),在Options页设置调试入口地址(见图 1.5)。
图4 工程连接地址设置
图5 工程调试入口地址设置 4. 选择【Project】->【Make】,将编译连接整个工程。 1.6 思考
工程模板有何作用?(提示:编译控制设置)
如何强行重新编译工程的所有文件?(提示:选择【Project】->【Remove Object Code?】
删除工程中的*.obj文件)
2 汇编指令实验1 2.1 实验目的
1.了解ADS 1.2集成开发环境及ARMulator软件仿真;
2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序; 3.. 掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。
2.2 实验设备
硬件:PC机 一台
软件:Windows98/XP/2000系统,ADS 1.2集成开发环境
2.3 实验内容
使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指
令把结果写回原地址,若结果大于等于10,则把0写回原地址。
使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor
Registers)监视R0、R1的值,打开存储器观察窗口(Memory) 监视0x40003100上的值。
2.4 实验预习要求
仔细阅读《ARM与嵌入式系统基础教程》第4章ARM指令系统的内容;
仔细阅读本书第2.2、2.3节ADS工程编辑和AXD调试的内容。(本实验使用软件仿真)
2.5 实验步骤
1. 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction1。
2. 建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。
3. 设置工程连接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入
口地址Image entry point为0x40000000。
4. 编译连接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。 5. 打开寄存器窗口(Processor Registers),选择Current项监视R0、R1的值。打开存储
器观察窗口(Memory) 设置观察地址为0x40003100,显示方式Size为32Bit,监视
0x40003100地址上的值。
说明:在Memory窗口中点击鼠标右键,Size项中选择显示格式为8Bit、16Bit、32Bit。
如图1.6所示。
6. 可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,调试
时观察寄存器和0x40003100地址上的值。运行结果见图1.7。
图6 Memory窗口显示格式设置
…… 此处隐藏21字 ……
汇编指令实验1的参考程序见程序清单2。 程序清单2 汇编指令实验1参考程序
COUNT EQU 0x40003100 ; 定义一个变量,地址为0x40003100
AREA Example2,CODE,READONLY ; 声明代码段Example2 ENTRY ; 标识程序入口
CODE32 ; 声明32位ARM指令
START LDR R1,=COUNT ; R1 <= COUNT
MOV R0,#0 ; R0 <= 0
STR R0,[R1] ; [R1] <= R0,即设置COUNT为0