文档详情

arm嵌入式系统——基于ads1.2及proteus仿真 教学课件 作者 邓力讲义 补充)ads axd汇编实验.doc

发布:2019-10-09约2.33千字共6页下载文档
文本预览下载声明
课时授课计划 课 题 (章节名称) ADS1.2 集成开发环境实验 时间 2012年3月12日 星期1 教学目的与要求 CodeWarrior的界面和使用 2.使用AXD 进行仿真调试 教学重点 项目的编译和调试 教学难点 AXD的调试 教学方法 练习 教学时数 2 课外作业 主要内容 时间分配 1.进一步熟悉CodeWarrior的界面和使用 2.进一步熟悉使用AXD 进行仿真调试 3.汇编指令的编译与调试 4.完成汇编指令两个数相加的代码与调试 15 15 35 35 课后小结 学生对AXD仿真还要加强 1.学习如何使用ADS 中的CodeWarrior ——项目管理器来管理源代码。一个嵌入式系统项目通常是由多个文件构成的,这其中包括用不同的语言(如汇编或C)、不同的类型(源文件,或库文件)的文件。CodeWarrior 通过“工程(Project)”来管理一个项目相关的所有文件。因此,在我们正确编译这个项目代码以前,首先要建立“工程”,并加入必要的源文件、库文件等。 2使用AXD 进行仿真调试 在CodeWarrior编译环境中,工程经过编译成功,产生了*.axf 文件之后,就可以进行调试了。点击 按钮,进入了AXD 视窗界面 AXD调试器的使用 AXD观测窗口 AXD 提供了许多有用的观察窗口,点击菜单项中的Processor View ,可以从它的下拉菜单项中 了解可观察的项目。 这里说明一下其中常用的项目: Registers:可以查看CPU 在各个工作模式下内部寄存器的值; Variables :查看变量,本地变量、全局变量、类变量; Watch :可以用表达式查看变量的值; Backtrace:函数调用情况(堆栈)查看; Memory:查看存储器内容。输入地址,即可查看这个地址开始的存储单元的值。 3.汇编指令的运行: 0xAA0x55 0xAA 0x55 R2 R1 运行MOV R1,R2 通过AXD查看R1,R2的值 若原有:0x 0x55 R1 R2 00xAA 0x4000000C 查看以下指令的运行结果 LDR R1,[R2] LDR R1,[R2] 若: 0xBB 0xBB 0x400000CC 0x55 0x55 R2 R3 00xAA 0x4000000C 运行LDR R2,[R3,#0x0C] 加法运算: AREA TEST1,CODE,READONLY ; 声明代码段TEST1 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令 START MOV R0,#15 ; 设置参数 MOV R1,#8 ADDS R0,R0,R1 ; R0 = R0 + R1 B START END 建立ADS工程项目,添加TEST1.S程序到项目中,启ADX进行后,使用单步方式运行程序,注意查看相对应的寄存器的值。 子程序加法运算: ;文件名:TEST1.S ;功能:实现两个寄存器相加 ;说明:使用ARMulate软件仿真调试 AREA TEST2,CODE,READONLY ;声明代码段TEST2 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 START MOV R0,#0 ;设置参数 MOV R1,#10 LOOP BL ADD_SUB ;调用子程序ADD_SUB B LOOP ;跳转到LOOP ADD_SUB ADDS R0,R0,R1 ;R0 = R0 + R1 MOV PC,LR ;子程序返回 END ;文件结束 建立ADS工程项目,添加TEST2.S程序到项目中,启ADX进行后,使用单步方式运行程序,注意查看相对应的寄存器的值。编写程序时注意标号顶格写。 ADX运行C语言: 编写C语言的入口汇编程序(add.s): IMPORT main AREA add,CODE,READONLY CODE32 ENTRY BL main END 编写C语言程序(main.c): int main(void) { while(1); } 将ADD.S和main.c程序添加到项目中后进行如下设置: 设置ARM Linker中: (1).在Output中Linktype选Simple,将Simple image中RO BO Base设为0x0,RE Base为空。 (2)Options中的Image entry point
显示全部
相似文档