《微机原理与嵌入式系统基础实验指导书Ver02》.docx
- 文档编号:16998780
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:71
- 大小:1.82MB
《微机原理与嵌入式系统基础实验指导书Ver02》.docx
《《微机原理与嵌入式系统基础实验指导书Ver02》.docx》由会员分享,可在线阅读,更多相关《《微机原理与嵌入式系统基础实验指导书Ver02》.docx(71页珍藏版)》请在冰点文库上搜索。
《微机原理与嵌入式系统基础实验指导书Ver02》
微机原理与嵌入式系统基础
实验指导
嵌入式系统教研室
2010年4月7日
第1章ADS1.2IDE工具简介3
1.1ADS1.2简介3
1.2ADS1.2集成开发环境练习4
第2章ARM指令系统及运算基础实验10
2.1二进制数加减运算10
2.2带符号数的加减法运算13
2.3简单分支程序设计15
2.4数据块转储实验(循环程序设计)16
2.5数值1到数值100的累加程序设计18
2.6搜寻最大数、最小数程序设计19
2.7数据排序实验(申辉补充本部分内容)21
2.8子程序实验21
第3章ARM(LPC2000系列)体系结构实验24
3.1EasyARM2131实验板简介24
3.2JTAG仿真器的启动与设置24
3.3基于嵌入式系统的C语言程序实验26
3.4GPIO输出控制实验1(单点)27
3.5GPIO输出控制实验2(多点)29
3.6GPIO输入实验31
3.7外中断实验32
3.8定时器基本功能实验1(匹配反转输出功能应用)35
3.9定时器基本功能实验2(定时器中断)36
3.10UART串行数据通信实验1(查询方式)38
3.11UART串行数据通信实验2(中断方式)42
第1章ADS1.2IDE工具简介
1.1ADS1.2简介
ARMADS全称为ARMDeveloperSuite,是由ARM公司提供的专门用于ARM处理器应用开发和调试的综合性工具软件。
目前使用的ADS1.2版本是一款功能强大的开发工具和易于使用的集成开发环境(IntegratedDevelopmentEnvironment,IDE)。
它可以安装在WindowsNT4,Windows2000,Windows98,Windows95,WindowsXP和WindowsMe等操作系统。
ADS主要包含CodeWarriorIDE、AXD两部分;
①CodeWarriorIDE工具主要用于工程的管理配置、源程序的编辑、编译和链接;嵌入式系统开发人员在此环境中,用C、C++或ARM汇编语言编写ARM和Thumb处理器源程序,将源代码文件、库文件、其他相关的文件以及编译环境设置等组织在一个工程中,并可以设置生成在SRAM调试(DebugInSRAM)、在Flash调试(DebugInFLASE)或发布版(RelInFLASH)等不同的生成目标。
各生成目标在同一个工程中共享源文件、库文件等,便于用户在不同开发阶段的使用。
工具界面参见图11。
图11CodeWarriorIDE视窗
②AXD主要用于工程的下载和调试。
嵌入式系统开发人员使用此工具软件可以对用户程序进行诸如断点的设置与清除、程序运行控制、单步执行、寄存器数据监视和变量的查看等调试操作。
另外,AXD挂接在CodeWarriorIDE中,用户可在CodeWarriorIDE中直接点击启动AXD,调试用户程序;也可以单独启动AXD,加载、调试用户代码。
工具界面参见图12。
图12AXD视窗
1.2ADS1.2集成开发环境练习
1.实验目的
学习ADS1.2集成开发环境的使用方法。
2.实验设备
●硬件:
PC机一台
●软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
3.实验内容
(1)ADS的启动;
(2)使用asmforlpc2131工程模板,建立一个新的工程。
(3)在模板文件main.S文件中,加入用户汇编代码。
(4)编译链接工程。
(5)调试工程。
(6)学习ADS工具的使用。
4.实验预习要求
阅读《ADS集成开发环境及仿真器应用》文档或其它相关资料,了解系统调试技术,了解ADS、AXD的基本功能。
5.实验步骤
1启动ADS1.2IDE集成开发环境。
图13启动ADS
2在ADS主窗口主菜单选择File->New,使用asmforlpc2131工程模板建立一个工程(图例中工程名称为:
ZQL_LIB1),指定工程路径(图例中工程路径为D:
\ARM_Lib_Bak\ARM_asm)。
图14使用模板在ADS中创建工程
3点击确认<按钮>,创建工程。
4在ZQL_LIB1工程窗口,双击模板文件main.S,打开该文件。
图15ADS工程管理器
5可在主窗口菜单选择Edit->Perferences,设置字体和字号。
6在main.S文件编辑窗的“addtheusercodehere.添加用户代码”行下建立用户汇编程序代码。
图16ADS视窗的主要组成
7选择Project->Make(或快捷键
若编译成功,则Erros&Warnings对话框会报告编译错误为0,此时即可对工程进行仿真。
图17ADS主菜单
图18ADS编译报告窗口
8选择Project->Debug(或快捷键
图19从ADS中启动AXD
图110AXD工具窗口的主要构成
6.调试方法
1单步运行;在AXD调试器主窗口,选择Execute->Step(或快捷键
2设置断点;在AXD调试器“代码调试窗口”双击目标代码行,若出现红色实心圆点,则表示断点设置成功;然后选择Execute->Go全速运行,处理器执行程序停止在断点行;
3运行到光标行;在AXD调试器“代码调试窗口”单击选择目标代码行,然后在AXD调试器主窗口,选择Execute->RuntoCursor运行到光标处;通过断点调试可以观察ARM寄存器和存储单元的数值变化,具体操作方法在后面的实验中会作详细介绍。
图111AXD工具调试用户代码与查看内存
7.思考
(7)工程模板有哪些作用?
(提示:
对照VCStudioIDE。
)
(8)如何强行重新编译工程的所有文件?
(提示:
选择Project->RemoveObjectCode删除工程中的*.obj文件。
)
第2章ARM指令系统及运算基础实验
2.1二进制数加减运算
8.实验目的
●了解ADS1.2集成开发环境及ARMulator软件仿真。
●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。
●学习使用LDR/STR/ADD/SUB指令完成存储器的访问及二进制数据加减运算。
●领会处理器进行数据处理的方式原理。
9.实验设备
●硬件:
PC机一台
●软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
10.实验内容
(9)使用LDR指令读取Data1、Data2数据,完成两数相加/减,将结果写入到Data3单元。
(10)使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视R0和R1的值,打开存储器观察窗口(Memory)监视Data1、Data2和Data3存储单元的值。
11.实验预习要求
学习ADS工程编辑和AXD调试工具的使用,二进制运算,处理器运行原理。
12.实验步骤
1启动ADS1.2IDE集成开发环境,选择asmforlpc2131工程模板建立一个工程TEST2。
2在模板文件main.S中,补加用户代码,编写实验程序,保存。
3选择主窗口菜单Project->Make(或直接快捷键
4联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。
5注意首次使用AXD时,需要设置AXD仿真环境,AXD主菜单:
选择Options->ConfigureTarget…,打开ChooseTarget窗口,并在其中选择:
ARMUL仿真器;方法如下图示:
备注:
ARMUL仿真器是AXD环境下的软件仿真器,在PC机上仿真了ARM处理器的执行情况;可用于软件算法调试,不能仿真硬件外设系统。
图21为AXD配置仿真环境
图22配置AXD使用软件仿真
6打开寄存器窗口(Registers),选择Current项,监视R0、R1和R2的值。
打开存储器观察窗口(Memory)设置观察Data1、Data2和Data3单元值,显示方式Size为32bit。
13.实验参考程序
Data3=Data1+Data2运算汇编指令实验1的参考程序见程序清单21
程序清单21汇编指令实验1参考程序
AREAExample1,CODE,READONLY;声明代码段Example1
ENTRY;标识程序入口
CODE32;声明32位ARM指令
STARTLDRR11,=Data1;R11<=address(Data1)
LDRR0,[R11];R0<=Data1
LDRR11,=Data2;R11<=address(Data2)
LDRR1,[R11];R0<=Data2
ADDR2,R1,R0
LDRR11,=Data3;R11<=address(Data3)
STRR2,[R11];[R1]<=R2,即设置COUNT为0
HALTBHALT
Data1DCD0x12345678
Data2DCD0x87654321
Data3DCD0x00
END
Data3=Data2-Data1运算汇编指令实验2的参考程序见程序清单22。
程序清单22汇编指令实验2参考程序
AREAExample1,CODE,READONLY;声明代码段Example1
ENTRY;标识程序入口
CODE32;声明32位ARM指令
STARTLDRR11,=Data1;R11<=address(Data1)
LDRR0,[R11];R0<=Data1
LDRR11,=Data2;R11<=address(Data2)
LDRR1,[R11];R0<=Data2
SUBR2,R1,R0
LDRR11,=Data3;R11<=address(Data3)
STRR2,[R11];[R1]<=R2,即设置COUNT为0
HALTBHALT
Data1DCD0x12345678
Data2DCD0x87654321
Data3DCD0x00
END
14.思考
(11)LDR伪指令与LDR加载指令的功能和应用有哪些区别,举例说明?
(提示:
LDR伪指令的形式为“LDRRn,=expr”。
)
(12)LDR/STR指令的前索引偏移指令应如何编写?
指令是怎样操作的?
(13)在AXD调试是如何复位程序?
(提示:
选择File->ReloadCurrentImage重新加载映像文件。
)
2.2带符号数的加减法运算
15.实验目的
●了解ADS1.2集成开发环境及ARMulator软件仿真。
●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。
●学习使用LDR/STR/ADD/SUB指令完成存储器的访问及带负号数的加减运算。
●领会处理器进行数据处理的方式原理及符号数的表示与运算。
16.实验设备
●硬件:
PC机一台
●软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
17.实验内容
(14)使用LDR指令读取Data1、Data2数据,完成两数相加/减,将结果写入到Data3单元。
(15)使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视R0和R1的值,打开存储器观察窗口(Memory)监视Data1、Data2和Data3存储单元的值。
(16)注意观察“CPSR_标志位”的情况,领会CPSR标志位的工作情况与含义;
(17)注意观察符号数的计算机表示方式;
18.实验预习要求
学习ADS工程编辑和AXD调试工具的使用,符号数的表示与运算,处理器运行原理。
19.实验步骤
(18)启动ADS1.2IDE集成开发环境,选择asmforlpc2131工程模板建立一个工程TEST2。
(19)在模板文件main.S中,补加用户代码,编写实验程序,保存。
(20)选择主窗口菜单Project->Make(或直接快捷键
(21)联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。
(22)打开寄存器窗口(Registers),选择Current项,监视R0、R1和R2的值。
打开存储器观察窗口(Memory)设置观察Data1、Data2和Data3单元值,显示方式Size为32bit,注意观察CPSR寄存器中的各标志位的情况。
20.实验参考程序
Data3=Data1+Data2运算汇编指令实验1的参考程序见程序清单23。
程序清单23汇编指令实验3参考程序
INCLUDELPC2294.INC;Includetheheadfile引入头文件
;声明MAIN函数
;ExportMAINfuncton
EXPORTMAIN;MAINFunction主程序
CODE32
AREAmain,CODE,READONLY;声明代码段Example1
ENTRY;标识程序入口
CODE32;声明32位ARM指令
MAIN
;addtheusercodehere.添加用户代码
LDRR11,=Data1;R11<=address(Data1)
LDRR0,[R11];R0<=Data1
LDRR11,=Data2;R11<=address(Data2)
LDRR1,[R11];R0<=Data2
ADDSR2,R1,R0
LDRR11,=Data3;R11<=address(Data3)
STRR2,[R11];[R1]<=R2,即设置COUNT为0
HALTBHALT
Data1DCD-18
Data2DCD6
Data3DCD0
END
Data3=Data2-Data1运算汇编指令实验4的参考程序见程序清单24。
程序清单24汇编指令实验4参考程序
INCLUDELPC2294.INC;Includetheheadfile引入头文件
;声明MAIN函数
;ExportMAINfuncton
EXPORTMAIN;MAINFunction主程序
CODE32
AREAmain,CODE,READONLY;声明代码段Example1
ENTRY;标识程序入口
CODE32;声明32位ARM指令
MAIN
;addtheusercodehere.添加用户代码
LDRR11,=Data1;R11<=address(Data1)
LDRR0,[R11];R0<=Data1
LDRR11,=Data2;R11<=address(Data2)
LDRR1,[R11];R0<=Data2
SUBSR2,R1,R0
LDRR11,=Data3;R11<=address(Data3)
STRR2,[R11];[R1]<=R2,即设置COUNT为0
HALTBHALT
Data1DCD0x87654321
Data2DCD0x12345678
Data3DCD0
END
21.思考
(23)模拟32bit处理器对带符号数(63)+(-65)在计算机中的表示与运算。
(24)参考程序清单中关于加减法指令,如果不加S后缀的话,对CPSR会有什么影响?
2.3简单分支程序设计
22.实验目的
●掌握ARM条件执行指令的使用方法,学习分支程序设计。
●加深领会处理器可以自动区分情况进行数据处理的方式原理。
23.实验设备
●硬件:
PC机一台
●软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
24.实验内容
使用条件执行指令编写完成下述C代码功能的分支程序。
if(x==y)z=a+b;
elseif(x elsez=b–a; 25.实验预习要求 分支程序设计,ARM指令条件执行等相关知识。 26.实验步骤 1启动ADS1.2IDE集成开发环境,选择asmforlpc2131工程模板,建立工程TEST3。 2在模板文件main.S中,补加用户代码,编写实验程序,保存。 3选择链接工程,选择Project->Debug,启动AXD进行软件仿真调试。 4打开寄存器窗口(ProcessorRegisters),选择Current项监视各相关寄存器值。 5打开存储器观察窗口(Memory),观察a、b和z存储单元的值情况。 6单步运行程序,跟踪程序执行的流程,观察寄存器和a、b和z存储单元值的变化。 7修改x、y单元数据重复上述操作,观察寄存器和a、b和z存储单元值的变化。 27.实验参考程序 汇编指令实验3的参考程序见错误! 未找到引用源。 程序清单25汇编指令实验3的参考程序 ;文件名: main.S ;功能: 使用条件执行指令实现分支程序功能 ;说明: x、y、a、b和z均为符号整数 AREAExample,CODE,READONLY;声明代码段Example ENTRY;标识程序入口 CODE32;声明32位ARM指令 STARTLDRR11,=x;R11指向x LDRR0,[R11];取x到R0 LDRR11,=y;R11指向y LDRR1,[R11];取y到R1 LDRR11,=a;R11指向a LDRR2,[R11];取a到R2 LDRR11,=b;R11指向b LDRR3,[R11];取b到R3 LDRR11,=r;R11指向z CMPR0,R1;比较x与y ADDEQR4,R2,R3;使用R4资源,if(x=y)thenR4=a+b SUBLTR4,R2,R3;if(x SUBGTR4,R3,R2;if(x>y)thenR4=b-a STRR4,[R11];保存结果到z HALTBHALT xDCD0x01;定义x的值 yDCD0x02;定义y的值 aDCD0x03;定义a的值 bDCD0x04;定义b的值 zDCD0x00 END 28.思考 (25)若将实现条件变成if((x==y)&&(a==b))thenz=z+1,考虑如何修改实验参考程序? 2.4数据块转储实验(循环程序设计) 29.实验目的 ●了解ADS1.2集成开发环境及ARMulator软件仿真。 ●掌握ARM7TDMI常用汇编指令的用法,并能编写简单的汇编程序。 ●学习使用LDR/STR/ADD/CMP/B指令完成存储器的访问及加法运算。 30.实验设备 ●硬件: PC机一台 ●软件: Windows98/XP/2000系统,ADS1.2集成开发环境 31.实验内容 1数据块转储;使用LDR指令读取src中的数据,再通过STR指令完成存入dst中。 2使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视R0、R1、R2、R3、src和dst单元的值,打开存储器观察窗口(Memory)监视dst存储单元的值。 3注意观察“CPSR_标志位”的情况,领会CPSR标志位的工作情况与含义; 32.实验预习要求 多寄存器存储器访问指令,简单循环程序设计设计。 33.实验步骤 1启动ADS1.2IDE集成开发环境,选择asmforlpc2131工程模板建立一个工程TEST2。 2在模板文件main.S中,补加用户代码,编写实验程序,保存。 3选择主窗口菜单Project->Make(或直接快捷键 4联编无错后,选择主窗口菜单Project->Debug,启动AXD进行软件仿真调试。 5打开寄存器窗口(Registers),选择Current项,监视R0、R1、R2和R3的值。 打开存储器观察窗口(Memory)设置观察src和dst单元值,显示方式Size为32bit,注意观察CPSR寄存器中的各标志位的情况。 34.实验参考程序 INCLUDELPC2294.INC;Includetheheadfile引入头文件 numEQU20;需要拷贝的字符个数 ;声明MAIN函数 ;ExportMAINfuncton EXPORTMAIN;MAINFunction主程序 AREAmain,CODE,READONLY;声明代码段main ENTRY;标识程序入口 CODE32;声明32位ARM指令 MAIN ;addtheusercodehere.添加用户代码 LDRR0,=src;R0<=address(src) LDRR1,=dst;R1<=address(dst) MOVR2,#num;R2等于带拷贝的字符个数 wordcopy LDRR3,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与嵌入式系统基础实验指导书Ver02 微机 原理 嵌入式 系统 基础 实验 指导书 Ver02