ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:744.04KB ,
资源ID:12598511      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12598511.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统与应用实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统与应用实验报告.docx

1、嵌入式系统与应用实验报告嵌入式系统与应用实验报告 班级:网络111 姓名:石长江 学号:3 实验一 汇编指令试验一、实验目的􀀀 掌握ARM7TMDI 汇编指令的用法,并能编写简单的汇编程序;􀀀 学习ARM 微控制器的16 位Thumb 汇编指令的使用方法􀀀 掌握指令的条件执行二、实验设备􀀀 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。􀀀 软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。三、实验内容分别使用ARM、Thumb 指令ADD,MOV,CM

2、P,B 计算123N 的值。四、实验原理ARM 处理器共有两种工作状态:􀀀 ARM 32 位,这种状态下执行字对准的ARM 指令。􀀀 Thumb 16 位,这种状态下执行半字对准的Thumb 指令。注意:ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。ARM 处理器在两种工作状态之间可以切换。(1) 进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当从异常出来(IRQ、FIQ、Undef、Abort、SWI)返回时,自动切换到Thumb 状态。(2)进

3、入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 状态的R0-R7 一致。􀀀 Thumb 状态的CPSR 和SPSR 与ARM 状态下的CP

4、SR 和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 Execuatable Image 工程模板建立一个工程ASM_Project。2建立源文件test2.s,编写实验程

5、序,然后添加到工程中(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 位为1,“t”表示T 位为0)。7理解并掌握本实验原理及程序,完成练习题六、实验参考程序Thumb

6、汇编指令实验的参考程序代码清单;文件名: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指令THUMB_CODELDR R0,=N 伪指令R0=50BL SUM_N 跳转到SUM_N执行B THUMB

7、_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 SUM_ERR CMP R1,R2 R1与R2比较,设置标志位BHS SUM_END ADD R1,

8、#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 R0=0 MOV R1,#0 R1=0LOOP CMP R1,R2 比较R1与R2 BHI ADD_E

9、ND ADD R0,R0,R1 R0=R0+R1 ADD R1,R1,#1 R1=R1+1 B LOOP 转到loopADD_END B START 转到start END 实验二 ARM 微处理器工作模式实验一、实验目的通过实验掌握学会使用MSR/MRS 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解。二、实验设备硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。三、实验内容通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握A

10、RM 不同模式的进入与退出。四、实验原理1ARM 处理器模式ARM 体系结构支持表1- 所示的7 种处理器模式。处理器模式 说明用户 usr 正常程序执行模式FIQ fiq 支持告诉数据传送或通道处理IRQ irq 用于通用中断处理管理 svc 操作系统保护模式中止 abt 实现虚拟存储器和/或存储器保护未定义 und 支持硬件协处理器的软件仿真系统 sys 运行特权操作系统任务表1- 处理器模式在软件控制下也可以改变模式,外部中断或异常处理也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生

11、。这允许适当编写操作系统来控制系统资源的使用。除用户模式外的其他模式成为特权模式。它们可以自由地访问系统资源和改变模式。其中5 种称为异常模式,即:FIQ (Fast Interrupt Request);IRQ (Interrupt Request);管理 (Supervisor);中止 (Abort);未定义 (Undefined)当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。剩下的模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有相同的寄存器,但它是特权模式,不受用户模式的

12、限制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。2程序状态寄存器在所有处理模式下,都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态。CPSR 和SPSR 的格式如下:(1) 条件码标志N、Z、C、V:大多数指令可以检测这些条码标志,以决定程序指令如何执行。(2) 控制位最低8 位I、F、T 和M 位用作控制位。当异常出现时改变控制位。

13、当处理器在特权模式下时也可以由软件改变。l 中断禁止位:I 置1 则禁止IRQ 中断;F 置1 则禁止FIQ 中断。l T 位:T0 指示ARM 执行;T1 指示Thumb 执行。在这些体系结构的系统中,可自由地使用能在ARM 和Thumb 状态之间切换的指令。l 模式位:M0、M1、M2、M3 和M4(M4:0)是模式位。这些位决定处理器的工作模(3) 其他位程序状态寄存器的其他位保留,用作以后扩展。五、实验操作步骤1.启动ADS1.2,建立一个新的工程;2.建立汇编源程序文件TEST3.S,编写实验程序,添加到工程中;3.编译链接工程,点击Debug 按钮,启动AXD 进行调试;4.点击【

14、Processor Views】-【Registers】,打开Current 项监视个寄存器的值;5.单步运行程序,注意观察CPSR、SPSR 以及R0 寄存器值得变化。说明:CPSR 寄存器显示方式如图1- 所示。显示分为两部分,一部分是各个标志位,另一部分是工作模式。标志位NZCVQ 为条件码标志N、Z、C、V、Q,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。Q 标志在ARM 体系结构v5 及以上版本的E 变量中才有效。标志位IFT 为IRQ 中断禁止位I、FIQ 中断禁止位F、ARM 微控制器状态位T,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。T 标志在

15、ARM 体系结构v4 及以上版本的T 变量中才有效。寄存器显示窗口六、实验参考程序ARM 微控制器工作模式实验的参考程序如下:USR_STACK_LEGTH EQU 64 定义各块的长度SVC_STACK_LEGTH EQU 0FIQ_STACK_LEGTH EQU 16IRQ_STACK_LEGTH 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 R

16、1=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,#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

17、,CPSR R0的内容送入CPSR MSR CPSR_c,#0xd0 CPSR_c=0xd0 MRS R0,CPSR R0的内容送入CPSR HALT B HALT 暂停;名称:InitStack;功能:堆栈初始化,即初始化各模式下下的堆栈指针。;入口参数:无;出口参数:无InitStack MOV 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,指针指到Stac

18、kIrq 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 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 P

19、C=R0StackUsr DCD UsrStackSpace+(USR_STACK_LEGTH-1)*4 字定义StackSvc DCD SvcStackSpace+(SVC_STACK_LEGTH-1)*4StackIrq DCD IrqStackSpace+(IRQ_STACK_LEGTH-1)*4StackFiq DCD FiqStackSpace+(FIQ_STACK_LEGTH-1)*4StackAbt DCD AbtStackSpace+(ABT_STACK_LEGTH-1)*4StackUnd DCD UndStackSpace+(UND_STACK_LEGTH-1)*4 ARE

20、A MyStacks,DATA,NOINIT,ALIGN=2 区域名为MyStacks,数据,UsrStackSpace SPACE USR_STACK_LEGTH*4 SvcStackSpace SPACE SVC_STACK_LEGTH*4IrqStackSpace SPACE IRQ_STACK_LEGTH*4FiqStackSpace SPACE FIQ_STACK_LEGTH*4AbtStackSpace SPACE ABT_STACK_LEGTH*4UndStackSpace SPACE UND_STACK_LEGTH*4 END 各模式下cpsr的值的含义及相关寄存器的值的变化。

21、 实验三 通用 IO 口试验 一、实验目的 熟悉ARM 芯片I/O 口编程配置方法; 掌握ARM 芯片I/O 口控制LED 显示的方法。 二、实验设备 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。 软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。 三、实验内容 控制嵌入式实验箱上的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

22、位I/O 端口 (端口A ) 1 个11 位I/O 端口 (端口B ) 每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。在运行主程序之 前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的附庸功能没有使用,那么 可以先将该引脚设置为I/O口。 S3C44B0X 芯片与端口相关的寄存器 (1)端口控制寄存器 (PCONAG):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。PCONn(端口控制寄存器)能够定义引脚功能。如果 PG0PG7 作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。 (2)端口数据寄存器 (PDATAG):如果端口

23、定义为输出口,那么输出数据可以写入 PDATn 中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读 入。 (3)端口上拉寄存器 (PUPCG):通过配置端口上拉寄存器,可以使该组端口与上拉 电阻连接或断开。当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当寄存器中相应位 配置为1 时,该引脚不接上拉电阻。 (4 )外部中断寄存器 (EXTINT ):通过不同的信号方式可以使8 个外部中断被请求。 EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。 五、实验操作步骤 1启动ADS1.2,使

24、用ARM Execuatable Image 工程模板新建一个工程; 2添加两个组INC 和SRC; 3将INC 文件夹下所有文件添加到组INC 中; 4将SRC 文件夹下所有文件添加到组SRC 中; 5建立源文件test5.C,编写实验程序,添加到工程中; 6编译链接选项的设置同前面实验; 7编译链接工程,点击Debug 按钮,启动AXD进行调试; 8连续点击step in 按钮,单步运行程序,主板上的三个LED 灯循环点亮。 9理解并掌握本实验原理及程序,完成练习题 六、实验参考程序 #include option.h #include def.h #include 44b.h #incl

25、ude 44blib.h void Isr_Init(void); void HaltUndef(void); void HaltSwi(void); void HaltPabort(void); void HaltDabort(void); void Main(void) rSYSCFG=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 Dela

26、y() 延迟 Led_Display(7); 0111三个灯全亮 Delay(1000); /calibrate Delay() Led_Display(0); Delay(5000); /calibrate Delay() Led_Display(7); Uart_Printf(n start n); while(1) Delay(5000); /calibrate Delay() Led_Display(1); 亮第一个灯,其他灭 Delay(5000); /calibrate Delay() Led_Display(2); 亮第二个灯,其他灭 Delay(5000); /calibrat

27、e Delay() Led_Display(4); 亮第三个灯,其他灭 void Isr_Init(void) U32 i; pISR_UNDEF=(unsigned)HaltUndef; pISR_SWI =(unsigned)HaltSwi; pISR_PABORT=(unsigned)HaltPabort; pISR_DABORT=(unsigned)HaltDabort; for(i=_RAM_STARTADDRESS;i(_RAM_STARTADDRESS+0x20);i+=4) *(volatile unsigned *)i)=0xEA+0x1FFE; rINTCON=0x5; /

28、 Non-vectored,IRQ enable,FIQ disable rINTMOD=0x0; / All=IRQ mode rINTMSK|=BIT_GLOBAL|BIT_EINT3; / All interrupt is masked. void HaltUndef(void) Uart_Printf(Undefined instruction exceptionn); while(1); void HaltSwi(void) Uart_Printf(SWI exceptionn); while(1); void HaltPabort(void) Uart_Printf(Pabort

29、exceptionn); while(1); void HaltDabort(void) Uart_Printf(Dabort exceptionn); while(1); 思考题 本试验中共用到了那些寄存器,他们的作用是什么? 在原程序的基础上改变led灯的闪烁方式。将其中部分程序改为以下程序,使其变为每次两个灯一起亮 Uart_Printf(n start n); while(1) Delay(5000); /calibrate Delay() Led_Display(3); Delay(5000); /calibrate Delay() Led_Display(5); Delay(500

30、0); /calibrate Delay() Led_Display(6); 实验四 串口试验 一、实验目的 1. 掌握ARM的串行口工作原理 2. 学习编程实现ARM的UART 通讯 3. 掌握CPU利用串口通讯的方法 二、实验设备 硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC、串口线。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集 成开发环境、仿真器驱动程序、超级终端通讯程序 三、预备知识 1. 用ARM ADS1.2集成开发环境,编写和调试程序的基本过程 2. ARM应用程序的框架结构 3. 了解串行总线 四

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1