ARM嵌入式系统与应用-实验报告(共32页).doc

上传人:飞****2 文档编号:13432884 上传时间:2022-04-29 格式:DOC 页数:32 大小:998KB
返回 下载 相关 举报
ARM嵌入式系统与应用-实验报告(共32页).doc_第1页
第1页 / 共32页
ARM嵌入式系统与应用-实验报告(共32页).doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《ARM嵌入式系统与应用-实验报告(共32页).doc》由会员分享,可在线阅读,更多相关《ARM嵌入式系统与应用-实验报告(共32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上华中科技大学武昌分校信息科学与技术系ARM嵌入式系统与应用实验报告专业班级: 通信工程0801 学 号 _姓 名 _ 朱焱_实验老师 _ 刘丽_ _ 总 评 分 _ 实验一 汇编指令试验一、实验目的􀀀 掌握ARM7TMDI 汇编指令的用法,并能编写简单的汇编程序;􀀀 学习ARM 微控制器的16 位Thumb 汇编指令的使用方法􀀀 掌握指令的条件执行二、实验设备􀀀 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。􀀀 软件:Windows 98/2000/NT/XP 操作系统、仿

2、真器驱动程序、ADS 开发软件一套。三、实验内容分别使用ARM、Thumb 指令ADD,MOV,CMP,B 计算123N 的值。四、实验原理ARM 处理器共有两种工作状态:􀀀 ARM 32 位,这种状态下执行字对准的ARM 指令。􀀀 Thumb 16 位,这种状态下执行半字对准的Thumb 指令。注意:ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。ARM 处理器在两种工作状态之间可以切换。(1) 进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当从异

3、常出来(IRQ、FIQ、Undef、Abort、SWI)返回时,自动切换到Thumb 状态。(2)进入ARM 状态。当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状态。处理器进行异常处理(IRQ、FIQ、Undef、Abort、SWI)。在此情况下,把PC 放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM 状态。Thumb 状态下的寄存器集是ARM 状态下寄存器集的子集。程序员可以直接访问8 个通用寄存器(R0R7)、PC、SP、LR 和CPSP。每一种特权模式都有一组SP、LR 和SPSR。􀀀 Thumb 状态的R0-R7 与ARM 状态的R

4、0-R7 一致。􀀀 Thumb 状态的CPSR 和SPSR 与ARM 状态下的CPSR 和SPSR 一致。􀀀 Thumb 状态的SP 映射到ARM 状态的R13。􀀀 Thumb 状态的LR 映射到ARM 状态的R14。􀀀 Thumb 状态的PC 映射到ARM 状态的PC(R15)。本程序使用R0 保存结果,所以一开始就要初始化为0;循环执行R0=R0+R1,R1 为循环计数器,从1 开始计数,每一次循环R1 加1;当循环计数器R1 的值到达N 时,运算结束。五、实验操作步骤1启动ADS1.2,使用ARM Execuatab

5、le Image 工程模板建立一个工程ASM_Project。2建立源文件test2.s,编写实验程序,然后添加到工程中(ARM 指令和Thumb 指令实验的test2.s 程序源码分别见下清单) 。3设置工程链接地址RO Base 为0x0C4编译链接工程,选择【Project】-【Debug】,启动AXD 进行调试。5打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。6单步运行程序,注意执行BX R0 指令前后CPSR 寄存器的T 位。说明:在寄存器窗口的CPSR 寄存器,大写字母的位表示该位为1,小写字母的位表示该位为0(比如“T”表示T

6、位为1,“t”表示T 位为0)。7理解并掌握本实验原理及程序,完成练习题六、实验参考程序Thumb 汇编指令实验的参考程序代码清单;文件名:test.s;功能:计算123+N 的值N EQU 50 定义N的值为50 AREA testcode,CODE,READONLY 区域名为testcode,代码,只读ENTRY 入口CODE32ARM_CODE LDR SP,=0x40003F00 sp=0x40003F00ADR R0,THUMB_CODE+1 将分支目标地址送R0,使R1的bit0=1BX R0 分支并且转换为thumb状态LTORGCODE16 汇编以下代码为thumb指令THUM

7、B_CODELDR R0,=N 伪指令R0=50BL SUM_N 跳转到SUM_N执行B THUMB_CODE 跳转到THUMB_CODE,thumb模式;名称:SUM_N;功能:计算123+N 的值;入口参数:R0( N 的值 );出口参数:R0( 运算结果 )SUM_NPUSH R1-R7,LRMOVS R2,R0 R0的内容放入R2BEQ SUM_END 相等转到SUM_ENDCMP R2,#1 R2与1比较 ,设置标志位BEQ SUM_END 相等转到SUM_ENDMOV R1,#1 将1送入R1MOV R0,#0 将0送入R0SUM_L1 ADD R0,R1 R0=R0+R1BCS

8、SUM_ERR CMP R1,R2 R1与R2比较,设置标志位BHS SUM_END ADD R1,#1 R0=R0+1B SUM_L1 转到SUM_L1SUM_ERR MOV R0,#0_ 将0送入R0SUM_END POP R1-R7,PCENDARM 汇编指令实验的参考程序代码清单:;文件名:add.s;功能:计算123+N 的值N EQU 5; 定义N的内容为5 AREA Example,CODE,READONLY 定义区域,区域名为Example,代码,只读 ENTRY 入口 CODE32START LDR R0,=N R0=5 MOV R2,R0 R2=R0 MOV R0,#0 R

9、0=0 MOV R1,#0 R1=0LOOP CMP R1,R2 比较R1与R2 BHI ADD_END ADD R0,R0,R1 R0=R0+R1 ADD R1,R1,#1 R1=R1+1 B LOOP 转到loopADD_END B START 转到start END七、练习题1.如何切换处理器状态?使R1的bit0=1,分支并且转换为thumb状态,使R1的bit0=0,分支并且转换为ARM状态2.在Thumb 指令只有哪一条指令具有条件执行功能?BL SUM_N实验二 ARM 微处理器工作模式实验一、实验目的通过实验掌握学会使用MSR/MRS 指令实现ARM 处理器工作模式的切换,观察

10、不同模式下的寄存器,加深对CPU 结构的理解。二、实验设备硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。三、实验内容通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM 不同模式的进入与退出。四、实验原理1ARM 处理器模式ARM 体系结构支持表1- 所示的7 种处理器模式。处理器模式 说明用户 usr 正常程序执行模式FIQ fiq 支持告诉数据传送或通道处理IRQ irq 用于通用中断处理管理 svc 操作系统保护模式中止 abt 实现虚拟存储器和/或存储

11、器保护未定义 und 支持硬件协处理器的软件仿真系统 sys 运行特权操作系统任务表1- 处理器模式在软件控制下也可以改变模式,外部中断或异常处理也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。这允许适当编写操作系统来控制系统资源的使用。除用户模式外的其他模式成为特权模式。它们可以自由地访问系统资源和改变模式。其中5 种称为异常模式,即:FIQ (Fast Interrupt Request);IRQ (Interrupt Request);管理 (Supervisor);中止 (Abo

12、rt);未定义 (Undefined)当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。剩下的模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有相同的寄存器,但它是特权模式,不受用户模式的限制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。2程序状态寄存器在所有处理模式下,都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息

13、。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态。CPSR 和SPSR 的格式如下:(1) 条件码标志N、Z、C、V:大多数指令可以检测这些条码标志,以决定程序指令如何执行。(2) 控制位最低8 位I、F、T 和M 位用作控制位。当异常出现时改变控制位。当处理器在特权模式下时也可以由软件改变。l 中断禁止位:I 置1 则禁止IRQ 中断;F 置1 则禁止FIQ 中断。l T 位:T0 指示ARM 执行;T1 指示Thumb 执行。在这些体系结构的系统中,可自由地使用能在ARM 和Thumb 状态之间切换的指令。l 模式位:M0、M1、M2、M3 和

14、M4(M4:0)是模式位。这些位决定处理器的工作模(3) 其他位程序状态寄存器的其他位保留,用作以后扩展。五、实验操作步骤1.启动ADS1.2,建立一个新的工程;2.建立汇编源程序文件TEST3.S,编写实验程序,添加到工程中;3.编译链接工程,点击Debug 按钮,启动AXD 进行调试;4.点击【Processor Views】-【Registers】,打开Current 项监视个寄存器的值;5.单步运行程序,注意观察CPSR、SPSR 以及R0 寄存器值得变化。说明:CPSR 寄存器显示方式如图1- 所示。显示分为两部分,一部分是各个标志位,另一部分是工作模式。标志位NZCVQ 为条件码标

15、志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 微控制器工作模式实验的参考程序如下:USR_STACK_LEGTH EQU 64 定义各块的长度SVC_STACK_LEGTH EQU 0FIQ_STACK_LEGTH EQU 16IRQ_STACK_LEGT

16、H EQU 64ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0 AREA Example3,CODE,READONLY 定义区域,区域名为Example3,代码,只读 ENTRY 入口 CODE32START MOV R0,#0 R0=0 MOV R1,#1 R1=1 MOV R2,#2 R2=2 MOV R3,#3 R3=3 MOV R4,#4 R4=4 MOV R5,#5 R5=5 MOV R6,#6 R6=6 MOV R7,#7 R7=7 MOV R8,#8 R8=8 MOV R9,#9 R9=9 MOV R10,#10 R10=10 MOV R11

17、,#11 R11=11 MOV R12,#12 R12=12 BL InitStack MRS R0,CPSR R0的内容送入CPSR BIC R0,R0,#0X80 MSR CPSR_cxsf,R0 CPSR_cxsf =R0 MSR CPSR_c,#0xd0 CPSR_c=0xd0 MRS R0,CPSR R0的内容送入CPSR MSR CPSR_c,#0xd0 CPSR_c=0xd0 MRS R0,CPSR R0的内容送入CPSR HALT B HALT 暂停;名称:InitStack;功能:堆栈初始化,即初始化各模式下下的堆栈指针。;入口参数:无;出口参数:无InitStack MOV

18、 R0,LR LR=R0 MSR CPSR_c,#0xd3 CPSR_c=0xd3 LDR SP,StackSvc SP= StackSvc,指针指到StackSvc MSR CPSR_c,#0xd2 CPSR_c=0xd2 LDR SP,StackIrq SP= StackIrq,指针指到StackIrq MSR CPSR_c,#0xd1 CPSR_c=0xd1 LDR SP,StackFiq SP= StackFiq,指针指到StackFiq MSR CPSR_c,#0xd7 CPSR_c=0xd7 LDR SP,StackAbt SP= StackAbt,指针指到StackAbt MSR

19、 CPSR_c,#0xdb CPSR_c=0xdb LDR SP,StackUnd SP= StackUnd,指针指到StackUnd MSR CPSR_c,#0xdf CPSR_c=0xdf LDR SP,StackUsr SP= StackUsr,指针指到StackUsr MOV PC,R0 PC=R0StackUsr DCD UsrStackSpace+(USR_STACK_LEGTH-1)*4 字定义StackSvc DCD SvcStackSpace+(SVC_STACK_LEGTH-1)*4StackIrq DCD IrqStackSpace+(IRQ_STACK_LEGTH-1)

20、*4StackFiq DCD FiqStackSpace+(FIQ_STACK_LEGTH-1)*4StackAbt DCD AbtStackSpace+(ABT_STACK_LEGTH-1)*4StackUnd DCD UndStackSpace+(UND_STACK_LEGTH-1)*4 AREA MyStacks,DATA,NOINIT,ALIGN=2 区域名为MyStacks,数据,UsrStackSpace SPACE USR_STACK_LEGTH*4 SvcStackSpace SPACE SVC_STACK_LEGTH*4IrqStackSpace SPACE IRQ_STAC

21、K_LEGTH*4FiqStackSpace SPACE FIQ_STACK_LEGTH*4AbtStackSpace SPACE ABT_STACK_LEGTH*4UndStackSpace SPACE UND_STACK_LEGTH*4 END七、练习题1.说明各模式下cpsr的值的含义及相关寄存器的值的变化。 实验三 通用 IO 口试验 一、实验目的 熟悉ARM 芯片I/O 口编程配置方法; 掌握ARM 芯片I/O 口控制LED 显示的方法。 二、实验设备 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。 软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、A

22、DS 开发软件一套。 三、实验内容 控制嵌入式实验箱上的LED轮流点亮。 四、实验原理 S3CRRB0X 芯片上共有71 个多功能I/O 引脚,他们分别为7 组I/O 端口: 2 个9 位I/O 端口 (端口E 和F) 2 个8 位I/O 端口 (端口D 和G) 1 个16 位I/O 端口 (端口C) 1 个10 位I/O 端口 (端口A ) 1 个11 位I/O 端口 (端口B ) 每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。在运行主程序之 前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的附庸功能没有使用,那么 可以先将该引脚设置为I/O口。 S3C44B0X 芯片

23、与端口相关的寄存器 (1)端口控制寄存器 (PCONAG):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。PCONn(端口控制寄存器)能够定义引脚功能。如果 PG0PG7 作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。 (2)端口数据寄存器 (PDATAG):如果端口定义为输出口,那么输出数据可以写入 PDATn 中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读 入。 (3)端口上拉寄存器 (PUPCG):通过配置端口上拉寄存器,可以使该组端口与上拉 电阻连接或断开。当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当

24、寄存器中相应位 配置为1 时,该引脚不接上拉电阻。 (4 )外部中断寄存器 (EXTINT ):通过不同的信号方式可以使8 个外部中断被请求。 EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。 五、实验操作步骤 1启动ADS1.2,使用ARM Execuatable Image 工程模板新建一个工程; 2添加两个组INC 和SRC; 3将INC 文件夹下所有文件添加到组INC 中; 4将SRC 文件夹下所有文件添加到组SRC 中; 5建立源文件test5.C,编写实验程序,添加到工程中; 6编译链接选项的设置同前

25、面实验; 7编译链接工程,点击Debug 按钮,启动AXD进行调试; 8连续点击step in 按钮,单步运行程序,主板上的三个LED 灯循环点亮。 9理解并掌握本实验原理及程序,完成练习题 六、实验参考程序 #include option.h #include def.h #include 44b.h #include 44blib.h void Isr_Init(void); void HaltUndef(void); void HaltSwi(void); void HaltPabort(void); void HaltDabort(void); void Main(void) rSYS

26、CFG=SYSCFG_8KB; #if (PLLON 1) ChangePllValue(PLL_M,PLL_P,PLL_S); #endif Isr_Init(); Port_Init(); Uart_Init(0,); 波特率是 Uart_Select(0); Delay(0); /calibrate Delay() 延迟 Led_Display(7); 0111三个灯全亮 Delay(1000); /calibrate Delay() Led_Display(0); Delay(5000); /calibrate Delay() Led_Display(7); Uart_Printf(n

27、 start n); while(1) Delay(5000); /calibrate Delay() Led_Display(1); 亮第一个灯,其他灭 Delay(5000); /calibrate Delay() Led_Display(2); 亮第二个灯,其他灭 Delay(5000); /calibrate Delay() Led_Display(4); 亮第三个灯,其他灭 void Isr_Init(void) U32 i; pISR_UNDEF=(unsigned)HaltUndef; pISR_SWI =(unsigned)HaltSwi; pISR_PABORT=(unsig

28、ned)HaltPabort; pISR_DABORT=(unsigned)HaltDabort; for(i=_RAM_STARTADDRESS;i(_RAM_STARTADDRESS+0x20);i+=4) *(volatile unsigned *)i)=0xEA+0x1FFE; rINTCON=0x5; / Non-vectored,IRQ enable,FIQ disable rINTMOD=0x0; / All=IRQ mode rINTMSK|=BIT_GLOBAL|BIT_EINT3; / All interrupt is masked. void HaltUndef(void

29、) Uart_Printf(Undefined instruction exception!n); while(1); void HaltSwi(void) Uart_Printf(SWI exception!n); while(1); void HaltPabort(void) Uart_Printf(Pabort exception!n); while(1); void HaltDabort(void) Uart_Printf(Dabort exception!n); while(1); 思考题 本试验中共用到了那些寄存器,他们的作用是什么? 在原程序的基础上改变led灯的闪烁方式。将其中

30、部分程序改为以下程序,使其变为每次两个灯一起亮 Uart_Printf(n start n); while(1) Delay(5000); /calibrate Delay() Led_Display(3); Delay(5000); /calibrate Delay() Led_Display(5); Delay(5000); /calibrate Delay() Led_Display(6); 3 用汇编语言实现led灯的闪烁。 实验四 串口试验 一、实验目的 1. 掌握ARM的串行口工作原理 2. 学习编程实现ARM的UART 通讯 3. 掌握CPU利用串口通讯的方法 二、实验设备 硬件

31、:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC、串口线。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集 成开发环境、仿真器驱动程序、超级终端通讯程序 三、预备知识 1. 用ARM ADS1.2集成开发环境,编写和调试程序的基本过程 2. ARM应用程序的框架结构 3. 了解串行总线 四、实验内容 学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的 UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM 和计算机实现串行通讯。 ARM监视串行口,将接收到的字符再发送给串口(计算机

32、与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。 五、 实验原理 串行通讯是微计算机之间 种常见的近距离通讯手段,因使用方便、编程简单而 广泛使用,几乎所有的微控制器、PC都提供串行通讯接口。 1. 异步串行I O 异步串行方式是将传输数据的每个字符 位接 位(例如先低位、后高位)地传 送。数据的各不同位可以分时使用同传输通道,因此串行I O 可以减少信号连线, 最少用 对线即可进行。接收方对于同 根线上 连串的数字信号,首先要分割成 位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中 大量使用异步串行I O方式,双方使用各自的时钟信号,而且允许时钟频率有 定 误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都 要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。 图4.1 串行通信字符格式 图4.1给出异步串行通信中 个字符的传送格式。开始前,线路处于空闲状态, 送出连续1”。传送开始时首先发 个 ”作为起始位,然后出现在通信线上的是字 符的二进制编码数据。每个字符的数据位长可以约定

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁