ARM嵌入式微处理器课程实验指导书 v20.docx
《ARM嵌入式微处理器课程实验指导书 v20.docx》由会员分享,可在线阅读,更多相关《ARM嵌入式微处理器课程实验指导书 v20.docx(70页珍藏版)》请在冰豆网上搜索。
ARM嵌入式微处理器课程实验指导书v20
《ARM嵌入式微处理器》课程实验指导书
实验学时:
34
实验类型:
验证性
实验要求:
必修
适用对象:
计算机专业、物联网专业
1.实验一:
ADS1.2集成开发环境实验2学时
一、实验目的
了解ADS1.2集成开发环境的使用方法,为后面仿真实验做好基础准备。
二、实验内容
1.建立一个新的工程。
2.建立一个C源文件,并添加到工程中。
3.设置文本编辑器支持中文。
4.设置编译链接控制选项。
5.编译链接工程。
6.调试工程。
三、实验原理、方法和手段
采用ADS1.2软件仿真的方法。
四、实验环境、条件
1.硬件:
PC机一台
2.软件:
Windows98/XP/2000系统,ADS集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2IDE集成开发环境,选择【File】->【New…】,使用ARMExecutable
Image工程模板建立一个工程,工程名称为ADS,见图1.1。
图1.1建立ARM指令代码的工程
(2)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中,见图1.2。
输入如程序清单1.1所示的代码,并保存,见图1.3。
图1.2新建文件TEST1.S
图1.3添加了TEST1.S的工程管理窗口
程序清单1.1TEST1.S文件代码
(3)由于ADS安装以后默认字体是CourierNew,对于中文支持不完善,因此建议修改字体。
选择【Edit】->【Perferences…】,可以看见以下对话框,如图1.4所示。
在Font选项设置字体是Fixedsys,Script是CHINESE。
由于Tab在不同文本编辑器解释不同,建议在TabInsertsSpaces前打勾,使Tab键插入的是多个空格。
图1.4字体和Tab设置
(4)选择【Edit】->【DebugRelSettings…】,在DebugRelSettings对话框的左边选择ARMLinker项,然后在Output页设置链接地址(见图1.5),在Options页设置调试入口地址(见图1.6)。
图1.5工程链接地址设置
图1.6工程调试入口地址设置
(5)选择【Project】->【Make】,将编译链接整个工程。
如果编译成功,见图1.7,Errors&Warnings对话框会报告编译错误为0,那么就可以对工程进行仿真。
图1.7编译错误和警告对话框
(6)选择【Project】->【Debug】,或者按下快捷键F5。
IDE环境就会启动AXD调试软件,见图1.8。
断点调试方法:
首先设置断点,只需要在第6行灰色区域双击鼠标即可,如果出现红色实心圆点,那么表示断点设置成功,然后选择【Execute】->【Go】全速运行,可以发现程序停止在第6行。
还有一种比较方便的调试方法就是RuntoCursor,单击鼠标第8行灰色区域,如果AXD将第8行高亮就表示设置成功,然后选择【Execute】->【RuntoCursor】运行到光标,可以发现程序停止在第8行。
通过断点调试可以观察ARM寄存器数值变化,具体的操作方法在后面的实验会具体介绍。
图1.8AXD调试窗口
2.实验二:
汇编指令实验12学时
一、实验目的
(1)了解ADS1.2集成开发环境及ARMulator软件仿真。
(2)掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。
(3)掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。
二、实验内容
(1)使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。
然后再次读取0x40003100上的数据,将数据加1,判断结果是否小于10……周而复此循环。
(2)使用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视R0、R1的值,打开存储器观察窗口(Memory)监视0x40003100上的值。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
2.软件:
Windows98/XP/2000系统,ADS集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程Instruction1。
(2)建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。
(3)设置工程链接地址ROBase为0x40000000,RWBase为0x40003000。
设置调试入口地址Imageentrypoint为0x40000000。
(6)编译链接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。
(7)打开寄存器窗口(ProcessorRegisters),选择Current项监视R0、R1的值。
打开存储器观察窗口(Memory)设置观察地址为0x40003100,显示方式Size为32Bit,监视0x40003100地址上的值。
说明:
在Memory窗口中点击鼠标右键,Size项中可以选择显示格式为8Bit、16Bit或32Bit,如图2.1所示。
可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,调试时观察寄存器和0x40003100地址上的值。
运行结果见图2.2。
图2.1Memory窗口显示格式设置
图2.2程序运行结果
(8)实验参考程序
程序清单2.1汇编指令实验1参考程序
3.实验三:
C语言调用汇编实验2学时
一、实验目的
掌握在C语言程序中调用汇编程序,了解ATPCS基本规则。
二、实验内容
在C程序调用汇编子程序,实现两个整数的加法运算。
汇编子程序的原型为:
uint32Add(uint32x,uint32y),其中uint32已定义为unsignedint。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程ProgramC1。
(2)建立源文件Startup.S、Add.S和Test.c,编写实验程序,然后添加到工程中。
(3)设置工程链接地址ROBase为0x40000000,RWBase为0x40003000。
设置调试入口地址Imageentrypoint为0x40000000。
(4)设置工程链接选项,位于开始位置的起始代码段设置为Startup.o的Start段。
(5)编译链接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。
(6)在Test.c文件中的调用Add()的代码处设置断点,然后全速动行程序。
(7)程序在断点处停止。
使用SetpIn单步运行程序,观察程序是否转到汇编程序Add.S。
(8)选择【ProcessorViews】->【Variables】)打开变量观察窗口,观察全局变量的值,单步/全速运行程序,判断程序的运算结果是否正确。
(5)实验参考程序
C语言调用汇编程序实验的参考程序见程序清单3.1。
汇编加法函数代码见程序清单3.2。
程序清单3.1C语言调用汇编程序实验参考程序
程序清单3.2汇编加法函数代码
4.实验四:
ARM微控制器工作模式实验2学时
一、实验目的
(1)掌握如何使用MRS/MSR指令实现ARM微控制器工作模式的切换。
(2)了解在各个工作模式下的寄存器。
二、实验内容
(1)使用MRS/MSR指令切换工作模式,并初始化各种模式下堆栈指针。
(2)观察ARM微控制器在各种模式下寄存器的区别
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程MODE。
(2)建立汇编源文件TEST7.S,编写实验程序,然后添加到工程中。
(3)设置工程连接地址ROBase为0x40000000,RWBase为0x40003000。
设置调试入口地址Imageentrypoint为0x40000000。
(4)编译连接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。
(5)打开寄存器窗口(ProcessorRegisters),选择Current项监视各寄存器的值。
(6)单步运行程序,注意观察CPSR、SPSR、R13(SP)、R14(LR)、R15(PC)寄存器。
说明:
CPSR寄存器显示方式如图4.1所示。
显示分为两部分,一部分是各个标志位,另一部分是工作模式。
标志位NZCVQ为条件码标志N、Z、C、V、Q,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。
Q标志在ARM体系结构v5及以上版本的E变量中才有效。
标志位IFT为IRQ中断禁止位I、FIQ中断禁止位F、ARM微控制器状态位T,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。
T标志在ARM体系结构v4及以上版本的T变量中才有效。
工作模式指示ARM微控制器当前的工作模式,包括User(用户模式)、FIQ(FIQ中断模式)、IRQ(IRQ中断模式)、SVC(管理模式)、Abort(中止模式)、Undef(未定义模式)、SYS(系统模式)。
图4.1CPSR寄存器显示方式
(7)实验参考程序
ARM微控制器工作模式实验的参考程序见程序清单4.1。
程序清单4.1ARM微控制器工作模式实验参考程序
5.实验五:
GPIO输出控制实验2学时
一、实验目的
熟悉LPC2000系列ARM7微控制器的GPIO控制。
二、实验内容
使用GPIO口控制8个LED流水灯显示。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程LEDCon_C。
(2)在user组中的main.c中编写主程序代码。
(3)选用DebugInExram生成目标,然后编译连接工程。
(4)将MagicARM2200教学实验开发平台上跳线器JP23全部短接,JP15跳线全部断开,见图5.1。
(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6)单步运行程序,通过LED1~LED8的显示判断输出是否正确。
全速运行程序,观察LED1~LED8的显示。
图5.1LED连接电路
(7)实验参考程序
GPIO输出控制实验2的参考程序见程序清单5.1。
程序清单5.1GPIO输出控制实验2参考程序
6.实验六:
存储器重映射实验2学时
一、实验目的
通过实验,熟悉LPC2000系列ARM7微控制器的存储器重映射机制。
二、实验内容
(1)设置MEMMAP=2,然后将0x40000000~0x4000003F地址上的存储单元全部写入0x55,同时观察0x00000000~0x0000003F地址上的数据;再写入0xAA,同时观察0x00000000~0x0000003F地址上的数据。
(2)设置MEMMAP=0,观察0x00000000~0x0000003F地址上的数据是否与0x7FFFE000~0x7FFFE03F地址上的数据是否一致。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程ReMap_c。
(2)在user组中的main.c中编写主程序代码。
(3)选用DebugInExram生成目标,然后编译连接工程。
(4)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(5)打开存储器观察窗口(Memory)设置观察地址为0x00000000,显示方式Size为8Bit,监视从0x00000000~0x0000003F的数据。
(6)单步运行程序,观察0x00000000~0x0000003F地址上的数据。
(7)当运行MEMMAP=0之后,观察0x00000000~0x0000003F地址上的数据是否与0x7FFFE000~0x7FFFE03F地址上的数据是否一致。
(8)实验参考程序
存储器重映射实验的参考程序见程序清单6.1。
程序清单6.1存储器重映射实验参考程序
7.实验七:
外部中断实验2学时
一、实验目的
(1)掌握向量中断控制器(VIC)的设置。
(2)掌握外部中断引脚功能设置及外部中断的工作模式设置。
(3)了解中断服务函数的编写。
二、实验内容
设置P0.20脚为EINT3功能,初始化为非向量中断,并设置为电平触发模式,然后等待外部中断。
中断服务程序将蜂鸣器控制输出信号取反,然后等待中断信号的撤消,最后清除中断标志并退出中断。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程VICDef_C。
(2)在user组中的main.c中编写主程序代码。
(3)选用DebugInExram生成目标,然后编译连接工程。
(4)将MagicARM2200教学实验开发平台上的跳线器JP9、JP22短接,JP20断开,见图7.1和图7.2。
图7.1蜂鸣器连接电路
图7.2按键连接电路
(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6)在中断服务程序中设置断点,全速运行程序,使EINT3为低/高电平,即反复按下与释放KEY1。
(7)单步/全速运行程序,观察程序是否正确运行,蜂鸣器是否蜂鸣。
(8)实验参考程序
外部中断实验的参考程序见程序清单7.1。
程序清单7.1外部中断实验参考程序
8.实验八:
外部存储器接口实验2学时
一、实验目的
通过实验掌握外部存储器控制器(EMC)的设置及外部存储器接口的应用。
二、实验内容
使用外部存储器接口的Bank0连接一片16位总线接口的FLASH(SST39VF160),然后使用程序初始化EMC,接着对FLASH进行全片擦除,编写两字节数据,再读出来校验,若校验通过则蜂鸣器响一声,否则不断地蜂鸣报警。
三、实验原理、方法和手段
见图8.1根据硬件电路正确设置PINSEL2寄存器和BCFG0寄存器,然后向SST39VF160发送命令进行擦除、编程操作。
图8.1片外FLASH芯片连接电路
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程EMC_C。
(2)在user组中的main.c中编写主程序代码。
(3)在Startup.s文件中可以修改BCFG0寄存器的值,也可以使用模板默认设置。
(4)选用DebugInExram生成目标,然后编译连接工程。
(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6)打开存储器观察窗口(Memory)设置观察地址为0x80000000,显示方式Size为16Bit,监视片外FLASH的数据。
(7)将MagicARM2200教学实验开发平台上跳线JP22短接,JP20全部断开。
(8)可以单步运行程序,观察片外FLASH的数据,观察err变量的值。
说明:
将鼠标移到err变量上,停留一定时间后即会显示该变量的当前值,移走鼠标则显示消隐。
(9)可以全速运行程序,若蜂鸣器响一声,表示FLASH擦除、编程操作成功。
若不断的蜂鸣报警,表示FLASH擦除或编程操作失败。
(10)实验参考程序
外部存储器接口实验的参考程序见程序清单8.1。
程序清单8.1外部存储器接口实验参考程序
9.实验九:
定时器实验2学时
一、实验目的
熟悉LPC2000系列ARM7微控制器的定时器0/1的基本设置及应用。
二、实验内容
使用定时器0实现1秒定时,控制蜂鸣器蜂鸣。
采用软件查询方式等待定时时间到达。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程TimeBeep_C。
(2)在user组中的main.c中编写主程序代码。
(3)选用DebugInExram生成目标,然后编译连接工程。
(4)将MagicARM2200教学实验开发平台上的JP22跳线短接,JP20跳线断开,见图9.1。
(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
可以全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒……依次循环。
(6)实验参考程序
定时器实验的参考程序见程序清单9.1。
程序清单9.1定时器实验参考程序
10.实验十:
UART实验2学时
一、实验目的
通过实验,掌握UART各个控制寄存器的设置,并能使用串口向PC机发送数据。
二、实验内容
使用UART0向PC机发送字符串“HelloWorld!
”。
UART0设置为通讯波特率115200,8位数据位,1位停止位,无奇偶校验。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集中授课形式。
六、实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程SendStr_C。
(2)在user组中的main.c中编写主程序代码。
(3)选用DebugInExram生成目标,然后编译连接工程。
(4)将MagicARM2200教学实验开发平台上的跳线JP30短接,JP28全部断开,见图10.1。
图10.1UART0的连接电路
(5)使用串口延长线把MagicARM2200教学实验开发平台的CZ4(UART0)与PC机的COM1连接。
PC机运行EasyARM软件,设置串口为COM1,波特率为115200,然后选择【设置】->【发送数据】,在弹出的发送数据窗口中点击“高级”即可打开接收窗口。
(6)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(7)全速运行程序,PC机上的EasyARM软件会不断的显示“HelloWorld!
”。
如图10.2所示。
图10.2UART实验运行结果
(8)实验参考程序
UART实验的参考程序见程序清单10.1。
程序清单10.1UART实验参考程序
11.实验十一:
I2C接口实验2学时
一、实验目的
(1)掌握LPC2000系列ARM7微控制器的硬件I2C接口的使用;
(2)了解CAT1025JI-30的E2PROM的操作方法及注意事项。
二、实验内容
使用主模式I2C向CAT1025JI-30的E2PROM写入10字节数据,然后读出校验,若校验通过则蜂鸣器响一声,否则不断地蜂鸣报警。
三、实验原理、方法和手段
采用ADS1.2软件仿真和ADX软件调试方法。
四、实验环境、条件
1.硬件:
PC机一台
MagicARM2200教学实验开发平台一套
2.软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
五、实验组织运行要求
集成授课形式。
六、实验步骤
(1)启动ADS1.2,使用A