嵌入式实验指导书.doc
《嵌入式实验指导书.doc》由会员分享,可在线阅读,更多相关《嵌入式实验指导书.doc(37页珍藏版)》请在一课资料网上搜索。
1、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、码的工程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】-【DebugR
3、el 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掌
4、握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.
5、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】,启
6、动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窗口显示格式设置图7 汇编实验1程序运行结果2.6
7、实验参考程序汇编指令实验1的参考程序见程序清单2。程序清单2 汇编指令实验1参考程序COUNT EQU 0x40003100 ; 定义一个变量,地址为0x40003100AREA 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 LOOP LDR R1,=COUNT LDR R0,R1 ; R0 = R1 ADD R0,R0,#1 ; R
8、0 = R0 + 1 CMP R0,#10 ; R0与10比较,影响条件码标志MOVHS R0,#0 ; 若R0大于等于10,则此指令执行,R0 = 0 STR R0,R1 ; R1 【Reload Current Image】重新加载映象文件) 3 汇编指令实验2 3.1 实验目的1. 掌握ARM数据处理指令的使用方法;2. 了解ARM指令灵活的第2个操作数。3.2 实验设备 硬件:PC机 一台 软件:Windows98/XP/2000系统,ADS 1.2集成开发环境3.3 实验内容1. 使用MOV和MVN指令访问ARM通用寄存器;2. 使用ADD、SUB、AND、ORR、CMP、TST等指
9、令完成数据加减运算及逻辑运算。3.4 实验预习要求仔细阅读ARM与嵌入式系统基础教程第4章ARM指令系统的内容;仔细阅读本书第2.2、2.3节ADS工程编辑和AXD调试的内容。(本实验使用软件仿真) 3.5 实验步骤1. 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction2。2. 建立汇编源文件TEST3.S,编写实验程序,然后添加到工程中。3. 设置工程连接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point为0x40000000。4. 编译连接工程,选择【P
10、roject】-【Debug】,启动AXD进行软件仿真调试。5. 打开寄存器窗口(Processor Registers),选择Current项监视各寄存器的值。说明:使用鼠标左键选择某一个寄存器,然后点击鼠标右键,Format项中选择显示格式Hex、Decimal等等。如图1.8所示。图8 设置寄存器显示格式6. 单步运行程序,观察寄存器值的变化。说明:有变化的寄存器会以红色显示。如图1.9所示。图9 寄存器值更新的显示3.6 实验参考程序汇编指令实验2的参考程序见程序清单3。程序清单3 汇编指令实验2参考程序X EQU 11 ; 定义X的值为11 Y EQU 8 ; 定义Y的值为8 BIT
11、23 EQU (123) ; 定义BIT23的值为0x00800000 AREA Example3,CODE,READONLY ; 声明代码段Example3 ENTRY ; 标识程序入口CODE32 ; 声明32位ARM指令START ; 使用MOV、ADD指令实现:R8 = R3 = X + Y MOV R0,#X ; R0 = X,X的值必须是8位图数据MOV R1,#Y ; R1 = Y,Y的值必须是8位图数据ADD R3,R0,R1 ; 即是R3 = X + Y MOV R8,R3 ; R8 (2*X)吗?若大于则R5 = R5&0xFFFF0000,否则R5 = R5|0x0000
12、00FF MOV R0,#Y ADD R0,R0,R0,LSL #2 ; 计算R0 = Y + 4*Y = 5*Y MOV R0,R0,LSR #1 ; 计算R0 = 5*Y/2MOV R1,#X MOV R1,R1,LSL #1 ; 计算R1 = 2*X CMP R0,R1 ; 比较R0和R1,即(5*Y/2)和(2*X)进行比较LDRHI R2,=0xFFFF0000 ; 若(5*Y/2)(2*X),则R2 (2*X),则R5 = R5&R2 ORRLS R5,R5,#0x000000FF ; 若(5*Y/2)(2*X),则R5 = R5|0x000000FF ; 使用TST指令测试R5的
13、bit23是否为1,若是则将bit6位清零(使用BIC指令) TST R5,#BIT23 BICNE R5,R5,#0x00000040 B START END 3.7 思考指令MOV R0,#0x12345678是否正确?为什么?将参考程序中应用CMP指令的代码,功能改为若(5*Y/2)(2*X)则R5 = R5|0x000000FF,否则R5 = R5&0xFFFF0000,程序应如何修改?更改参考程序的X的值为200,Y的值为163,单步运行程序,每执行一步程序的结果是多少?如何实现64位加法运算(R6、R5) = (R6、R5) + (R3、R2)?(提示:使用ADC指令) 4 汇编指
14、令实验3 4.1 实验目的1. 掌握ARM乘法指令的使用方法;2. 了解子程序编写及调用。4.2 实验设备 硬件:PC机 一台软件:Windows98/XP/2000系统,ADS 1.2集成开发环境4.3 实验内容使用STMFD/LDMFD、MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算的值。4.4 实验预习要求仔细阅读ARM与嵌入式系统基础教程第4章ARM指令系统的内容;仔细阅读本书第2.2、2.3节ADS工程编辑和AXD调试的内容。(本实验使用软件仿真) 4.5 实验原理= X*X *X *X,其中相乘的X的个数为n个。先将X的值装入R0和R1,使用寄存器R2进行计数,
15、循环n-1次R0 = R0*R1,运算结果就保存在R0中。(不考虑结果溢出问题) 注意,若n为0,则运算结果直接赋1;若n为1,则运算结果直接赋X。4.6 实验步骤1. 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction3。2. 建立汇编源文件TEST4.S,编写实验程序,然后添加到工程中。3. 设置工程连接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point为0x40000000。4. 编译连接工程,选择【Project】-【Debug】,启动AXD进行软件仿
16、真调试。5. 打开寄存器窗口(Processor Registers),选择Current项监视寄存器R0、R1、R13(SP)和R14(LR)的值。6. 打开存储器观察窗口(Memory) 设置观察地址为0x40003EA0,显示方式Size为32Bit,监视从0x40003F00起始的满递减堆栈区。7. 单步运行程序,跟踪程序执行的流程,观察寄存器值的变化和堆栈区的数据变化,判断执行结果是否正确。8. 调试程序时,更改参数X和n来测试程序,观察是否得到正确的结果。例如:先复位程序(选择【File】-【Reload Current Image】),接着单步执行到“BL POW”指令,在寄存器
17、窗口中将R0、R1的值进行修改,然后继续运行程序。说明:用鼠标双击寄存器窗口的寄存器,即可修改寄存器的值。输入数据可以是十进制数(如136、198),也可以是十六进数(如0x123,0xF0),输入数据后回车确定。4.7 实验参考程序汇编指令实验3的参考程序见程序清单4。程序清单4 汇编指令实验3参考程序; 文件名:TEST4.S ; 功能:计算X的n次方的值; 说明:X和n均为无符号整数XEQU 9 ; 定义X的值为9 n EQU 8 ; 定义n的值为8 AREA Example4,CODE,READONLY ; 声明代码段Example4 ENTRY ; 标识程序入口CODE32 ; 声明
18、32位ARM指令STARTLDR SP,=0x40003F00 ; 设置堆栈(满递减堆栈,使用STMFD/LMDFD指令) LDR R0,=X LDR R1,=n BL POW ; 调用子程序POW,返回值为R0 HALT B HALT ; 名称:POW; 功能:整数乘方运算。; 入口参数:R0 底数; R1 指数; 出口参数:R0 运算结果; 占用资源:R0、R1 ; 说明:本子程序不考虑溢出问题POW STMFD SP!,R1-R12,LR ; 寄存器入栈保护MOVS R2,R1 ; 将指数值复制到R2,并影响条件码标志MOVEQ R0,#1 ; 若指数为0,则设置R0=1 BEQ POW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实验 指导书
一课资料网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。



国家标准安全标准化6710.ppt
推销学论文.doc
工商管理:第七章.pdf
考试单词全记牢.xls

![MLSPGO8Q0C2L%`J2QI2M]C3.png](https://www.ekdoc.com/FileUpload/ueditor_s/upload/2020-5/8/6372452921073120799898817.png)


