嵌入式实验报告周忆莲.docx
《嵌入式实验报告周忆莲.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告周忆莲.docx(28页珍藏版)》请在冰点文库上搜索。
嵌入式实验报告周忆莲
嵌入式系统
实验报告
姓名:
周忆莲
学号:
2013180519
专业:
计算机科学与技术
年级:
2013级
教师:
杨进宝老师
湖南师范大学工程与设计学院实验报告
实验课程:
嵌入式系统实验
实验题目:
实验一、ADS1.2集成开发环境练习
实验日期:
2016年6月30日
实验目的
了解ADS1.2集成开发环境的使用方法。
实验设备
硬件:
PC机1台
MagicARM2410教学实验开发平台1台
软件:
Windows98/2000/XP操作系统
ADS1.2集成开发环境
实验内容
建立一个新的工程;
建立一个汇编源文件,并添加到工程中;
设置文本编辑器支持中文;
设置编译链接控制选项;
编译链接工程;
调试工程。
实验步骤
(1)在D:
\新建一个目录,目录名为experiment。
(2)启动ADS1.2IDE集成开发环境,选择【File】->【New…】,使用ARMExecutableImage工程模板建立一个工程,名称为ADS,目录为D:
\experiment。
(3)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中。
输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。
(4)选择【Edit】->【Perferences…】,在Font选项设置字体是Fixedsys,Script是CHINESE。
(5)选择【Edit】->【DebugRelSettings…】,在DebugRelSettings对话框的左边选择ARMLinker项,设置链接地址。
(6)选择【Project】->【Make】,或者按下快捷键F7,将编译链接整个工程。
(7)选择【Project】->【Debug】,或者按下快捷键F5。
IDE环境就会启动AXD调试软件,接着可以执行单步、全速运行调试。
实验程序清单
AREAExample1,CODE,READONLY;声明代码段Example1
ENTRY;标识程序入口
CODE32;声明32位ARM指令
STARTMOVR0,#15;设置参数
MOVR1,#8
ADDSR0,R0,R1;R0=R0+R1
BSTART
END
实验总结
本次实验是了解ADS1.2集成开发环境的使用方法,学会了如何建立工程以及进行调式。
对编写程序的调试,直接点击工程窗口的“Make”图标按钮,即可完成编译连接。
若编译出错,会有相应出错提示,双击出错提示行信息,编辑窗即会使用光标指出当前出错的源代码行。
通过这次实验我接触到了工程模板。
在这次实验中,我觉得收获还是挺大的,第一次熟悉了ADS的集成开发环境,对嵌入式程序的编译连接有了较为清晰的概念。
湖南师范大学工程与设计学院实验报告
实验课程:
嵌入式系统实验
实验题目:
实验二、ARM处理器工作模式实验
实验日期:
2016年6月30日
实验目的
掌握如何使用MRS/MSR指令实现ARM处理器工作模式的切换;
了解在各个工作模式下的寄存器。
实验设备
硬件:
PC机1台
MagicARM2410教学实验开发平台1台
软件:
Windows98/2000/XP操作系统
ADS1.2集成开发环境
实验内容
使用MRS/MSR指令切换工作模式,并初始化各种模式下堆栈指针;
观察ARM处理器在各种模式下寄存器的区别。
实验步骤
(1)启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程MODE。
(2)建立汇编源文件TEST5.S,编写实验程序,然后添加到工程中。
(2)设置工程链接地址ROBase为0x40000000,RWBase为0x40003000。
设置调试入口地址Imageentrypoint为0x40000000。
(3)编译链接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。
(4)打开寄存器窗口(ProcessorRegisters),选择Current项监视各寄存器的值。
(6)单步运行程序,注意观察CPSR、SPSR、R13(SP)、R14(LR)、R15(PC)寄存器。
实验程序清单
;定义堆栈的大小
USR_STACK_LEGTHEQU64
SVC_STACK_LEGTHEQU0
FIQ_STACK_LEGTHEQU16
IRQ_STACK_LEGTHEQU64
ABT_STACK_LEGTHEQU0
UND_STACK_LEGTHEQU0
AREAExample5,CODE,READONLY;声明代码段Example5
ENTRY;标识程序入口
CODE32;声明32位ARM指令
STARTMOVR0,#0
MOVR1,#1
MOVR2,#2
MOVR3,#3
MOVR4,#4
MOVR5,#5
MOVR6,#6
MOVR7,#7
MOVR8,#8
MOVR9,#9
MOVR10,#10
MOVR11,#11
MOVR12,#12
BLInitStack;初始化各模式下的堆栈指针
;打开IRQ中断(将CPSR寄存器的I位清零)
MRSR0,CPSR;R0<=CPSR
BICR0,R0,#0x80
MSRCPSR_cxsf,R0;CPSR<=R0
;切换到用户模式
MSRCPSR_c,#0xd0
MRSR0,CPSR
;切换到管理模式
MSRCPSR_c,#0xdf
MRSR0,CPSR
HALTBHALT
;名称:
InitStack
;功能:
堆栈初始化,即初始化各模式下的堆栈指针。
;入口参数:
无
;出口参数:
无
;说明:
在特权模式下调用此子程序,比如复位后的管理模式
InitStack
MOVR0,LR;R0<=LR,因为各种模式下R0是相同的
;设置管理模式堆栈
MSRCPSR_c,#0xd3
LDRSP,StackSvc
;设置中断模式堆栈
MSRCPSR_c,#0xd2
LDRSP,StackIrq
;设置快速中断模式堆栈
MSRCPSR_c,#0xd1
LDRSP,StackFiq
;设置中止模式堆栈
MSRCPSR_c,#0xd7
LDRSP,StackAbt
;设置未定义模式堆栈
MSRCPSR_c,#0xdb
LDRSP,StackUnd
;设置系统模式堆栈
MSRCPSR_c,#0xdf
LDRSP,StackUsr
MOVPC,R0
StackUsrDCDUsrStackSpace+(USR_STACK_LEGTH-1)*4
StackSvcDCDSvcStackSpace+(SVC_STACK_LEGTH-1)*4
StackIrqDCDIrqStackSpace+(IRQ_STACK_LEGTH-1)*4
StackFiqDCDFiqStackSpace+(FIQ_STACK_LEGTH-1)*4
StackAbtDCDAbtStackSpace+(ABT_STACK_LEGTH-1)*4
StackUndDCDUndtStackSpace+(UND_STACK_LEGTH-1)*4
;分配堆栈空间
AREAMyStacks,DATA,NOINIT,ALIGN=2
UsrStackSpaceSPACEUSR_STACK_LEGTH*4;用户(系统)模式堆栈空间
SvcStackSpaceSPACESVC_STACK_LEGTH*4;管理模式堆栈空间
IrqStackSpaceSPACEIRQ_STACK_LEGTH*4;中断模式堆栈空间
FiqStackSpaceSPACEFIQ_STACK_LEGTH*4;快速中断模式堆栈空间
AbtStackSpaceSPACEABT_STACK_LEGTH*4;中止义模式堆栈空间
UndtStackSpaceSPACEUND_STACK_LEGTH*4;未定义模式堆栈
END
实验总结
本次实验是使用MRS/MSR指令来实现ARM处理器工作模式的切换,目的是通过实验了解在各个工作模式下的寄存器,在实验中必须注意的是初始化各种模式下的堆栈指针,ARM处理器在各种模式下寄存器都是有区别的,在软件控制下可以改变模式。
通过本次实验,我回顾并加深理解了理论课上已经学过的处理器的7种模式,大多数应用程序运行在用户模式下,当处于用户模式时,系统资源是不能被访问的,系统模式使用与用户模式相同的寄存器,但它是特权模式,可以访问系统资源。
本次实验,让我受益匪浅,同时也认识到这门课程在生活中的应用是那么的广泛。
湖南师范大学工程与设计学院实验报告
实验课程:
嵌入式系统实验
实验题目:
实验三、GPIO输出控制实验
实验日期:
2016年6月30日
实验目的
掌握DeviceARM2410专用工程模板的使用;
掌握EasyJTAG-H仿真器的安装和使用;
能够在MagicARM2410实验箱上运行第一个程序(无操作系统);
熟悉S3C2410A处理器的I/O配置方法及GPIO输出控制。
实验设备
硬件:
PC机1台
MagicARM2410教学实验开发平台1台
软件:
Windows98/2000/XP操作系统
ADS1.2集成开发环境
实验内容
控制MagicARM2410实验箱上的LED1~LED4显示及蜂鸣器报警。
先使用片外SDRAM进行调试,调试通过后将程序固化到片外NORFLASH中,脱机运行程序。
实验步骤
调试程序
(1)为ADS1.2增加DeviceARM2410专用工程模板(若已增加过,此步省略)。
(2)连接EasyJTAG-H仿真器和MagicARM2410实验箱,然后安装EasyJTAG-H仿真器(若已经安装过,此步省略)。
(3)启动ADS1.2,使用ARMExecutableImageforDeviceARM2410工程模板建立一个工程LEDCON。
(4)在工程src组中的main.c中编写实验代码。
(5)选用DebugRel生成目标,然后编译链接工程。
(6)将MagicARM2410实验箱上的蜂鸣器跳线JP9短接,将启动方式选择跳线JP8短接,然后按RST键复位系统。
(7)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试(需要正确设置仿真器,参考<<…实验指导>>第2章的内容)。
-
(8)全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。
(9)单步运行程序,或者全速运行程序,判断蜂鸣器及LED1~LED4的控制是否正确。
固化程序
(10)仿真调试通过后,关闭AXD。
在ADS1.2集成开发环境中选用Release生成目标,并设置生成LEDCON.hex文件(或者LEDCON.bin文件),然后编译链接工程。
(11)将启动方式选择跳线JP8断开,然后按RST键复位系统。
(12)使用FlashProgrammer软件将LEDCON.hex烧写到片外NORFLASH,或者使用WR_NORFlash工程将LEDCON.bin烧写到片外NORFLASH。
(13)将EasyJTAG-H仿真器拔出,断开与MagicARM2410实验箱的连接,然后给MagicARM2410实验箱下电,然后再重新上电,观察程序是否能脱机运行。
实验程序清单
实验总结
本次实验是控制MagicARM2410实验箱上的LED1~LED4显示及蜂鸣器报警。
先使用片外SDRAM进行调试,调试通过后将程序固化到片外NORFLASH中,脱机运行程序。
通过实验,我对其实验程序如何实验其功能有了一定的认识,并能对其某一句程序作相应的修改,使其实现我们所需的功能。
通过此实验,我也初步了解了GPIO各寄存器的功能与应用。
我觉得实验过程中一定要将细节弄清楚,弄明白,实验后还要思考总结,这样印象才深刻。
湖南师范大学工程与设计学院实验报告
实验课程:
嵌入式系统实验
实验题目:
实验四、外部中断实验
实验日期:
2016年6月30日
实验目的
●掌握S3C2410A处理器外部中断的引脚功能设置
●掌握中断初始化以及中断服务函数的编写
实验设备
硬件:
PC机1台
MagicARM2410教学实验开发平台1台
软件:
Windows98/2000/XP操作系统
ADS1.2集成开发环境
实验内容
设置GPF4引脚为外部中断EINT4功能,下降沿触发模式。
初始化S3C2410A中断控制器,设置EINT4为IRQ中断,并使能中断允许。
初始化完成后,等待外部中断产生。
中断服务程序里负责把LED1控制口输出信号取反,清除中断标志后退出中断
实验步骤
(1)启动ADS1.2,使用ARMExecutableImageforDeviceARM2410工程模板建立一个工程EINT。
(2)在工程src组中的main.c中编写实验代码。
(3)选用DebugRel生成目标,然后编译链接工程。
(4)将MagicARM2410实验箱上的启动方式选择跳线JP8短接,然后按RST键复位系统。
(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6)在中断服务程序中设置断点,全速运行程序,按下/释放KEY1按键,使EINT4为低/高电平(产生中断)。
(7)取消中断服务程序中有断点,全速运行程序,按下/释放KEY1按键,观察LED1灯的变化。
实验程序清单
实验总结
本次实验是外部中断实验,实验的目的是掌握S3C2410A处理器外部中断的引脚功能设置,并且掌握中断初始化以及中断服务函数的编写。
由于S3C2410A的中断控制器不是向量中断控制器,也就是说处理器硬件不能自动获取对应于中断源的中断服务程序地址,所以在IRQ中断服务程序中要通过中断标志寄存器INTPND来获得对应的中断服务程序地址。
在实验中,我懂得了按键KEY1电路使用了GPF4口,设置GPFCON寄存器可以选择GPF4引脚为外部中断EINT4功能,此时通过按下KEY1键即可触发外部中断。
每次实验都让我有很多收获,让我对之前模糊的知识有了一个较为清晰的认识。
湖南师范大学工程与设计学院实验报告
实验课程:
嵌入式系统实验
实验题目:
实验五设计实验
实验日期:
2016年7月01日
实验目的
●掌握S3C2410A处理器外部中断的引脚功能设置
●掌握中断初始化以及中断服务函数的编写
●掌握LED显示计数器的设备
实验设备
硬件:
PC机1台
MagicARM2410教学实验开发平台1台
软件:
Windows98/2000/XP操作系统
ADS1.2集成开发环境
实验内容
设置GPF4引脚为外部中断EINT4功能,下降沿触发模式。
初始化S3C2410A中断控制器,设置EINT4为IRQ中断,并使能中断允许。
初始化完成后,等待外部中断产生。
中断服务程序里负责数字倒计时,LED数字灯显示,清除中断标志后退出中断
实验步骤
(4)启动ADS1.2,使用ARMExecutableImageforDeviceARM2410工程模板建立一个工程EINT。
(5)在工程src组中的main.c中编写实验代码。
(3)选用DebugRel生成目标,然后编译链接工程。
(4)将MagicARM2410实验箱上的启动方式选择跳线JP8短接,然后按RST键复位系统。
(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6)在中断服务程序中设置断点,全速运行程序,按下/释放KEY1按键,使LED数字灯显示(产生中断)。
(7)取消中断服务程序中有断点,全速运行程序,按下/释放KEY1按键,观察LED数字灯的变化,应该是递减的。
实验程序清单
实验总结
本次实验是设置GPF4引脚为外部中断EINT4功能,下降沿触发模式。
初始化S3C2410A中断控制器,设置EINT4为IRQ中断,并使能中断允许。
初始化完成后,等待外部中断产生。
中断服务程序里负责数字倒计时,LED数字灯显示,清除中断标志后退出中断。
一开始我对很多的概念都比较模糊,所以在开始做实验时,真是有点茫然,在实验中也遇到了很多问题,通过与同学讨论,上网查资料,收获还是不少,它让我学会了如何去分析问题,继而去排队问题,这就是一个自我学习的过程。
当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。