嵌入式处理器原理及应用上机实验.ppt

上传人:小飞机 文档编号:6414929 上传时间:2023-10-28 格式:PPT 页数:29 大小:514KB
返回 下载 相关 举报
嵌入式处理器原理及应用上机实验.ppt_第1页
第1页 / 共29页
嵌入式处理器原理及应用上机实验.ppt_第2页
第2页 / 共29页
嵌入式处理器原理及应用上机实验.ppt_第3页
第3页 / 共29页
嵌入式处理器原理及应用上机实验.ppt_第4页
第4页 / 共29页
嵌入式处理器原理及应用上机实验.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《嵌入式处理器原理及应用上机实验.ppt》由会员分享,可在线阅读,更多相关《嵌入式处理器原理及应用上机实验.ppt(29页珍藏版)》请在三一办公上搜索。

1、嵌入式处理器原理及应用上机实验,一、实验目的,理解并实现ARM7处理器的模式切换、C语言中对ARM汇编子程序的调用、中断处理程序的设计和编写。理解 W90P710 高级中断控制器使用的基本方法和一般的中断处理方法。,了解 W90P710 ARM7处理器中用于输入输出的 GPIO 的基本用法,了解外部芯片 BC7281B 中 LED7 段数码管显示功能的基本使用方法。掌握使用 W90P710 处理器通过 GPIO 对外部芯片进行控制的基本原理。,二、实验设备,硬件:PC 机 一台 W90P710 学习板一台 软件:Windows2000/XP 系统 LambdaEDU3 集成开发环境,三、实验内

2、容,配置 AIC;配置 Timer;配置LED7,利用GPIO实现对LED7的控制;为 Timer 中断编写中断处理程序,响应时钟中断并将中断次数在LED7上显示。,四、实验原理,1.定时器原理Timer,能产生特定的周期性中断。这个中断可以看作是操作系统心脏的脉动,用于实现时间的延时和确认超时。时钟节拍的频率越高,系统用于处理时钟中断的额外开销也越大。W90P710 的24位 Timer 含有两个通道,分别是 Timer0 和 Timer1。每个通道有一个独立的时钟源,每隔一定时间,计数寄存器的值减 1,当计数寄存器的值达到零时,就会触发一次中断。设计通用软件可以在每个中断发生时加 1,达到

3、计数的目的。,对于 W90P710,晶振输入频率为 15MHZ,用户可根据上面的等式计算出 Timer 中断的频率,如下表:,2.中断Timer 触发中断并在中断服务子程序里实现相关的计数功能。中断是操作系统处理事件的一种机制,以异步的方式通知 CPU 有个事件发生了。中断一旦被识别,CPU 保存现场,进入中断服务子程序(ISR),在返回前又恢复现场。这种机制使得 CPU 可以在事件发生时予以处理,克服了早期的操作系统中,CPU 轮询某个事件是否发生,造成 CPU 资源的浪费的缺点。,ARM 有 7 种异常,分别为:复位(reset),未定义指令(undefined instruction),

4、软件中断(software interrupt),指令预取中止(prefetch abort),数据访问中止(data abort),外部中断请求(IRQ),快速中断请求(FIQ)。对应于这 7 类异常,ARM 有相应的异常工作模式,如下图所示:,在上图下方的方格代表 ARM 的 7 种模式。其中 User 和SYS 模式共用一组寄存器,其它 5 种模式各有自己的一套寄存器组,褐色部分的寄存器是各模式下的特殊寄存器,只有进入了该模式,才可以访问。而淡蓝色部分的寄存器是共用的,对各个模式可见。观察该图可知,ARM 共有 37 个寄存器,每个寄存器 32 位宽,无论何时,至多只有 18个寄存器对处

5、理器是可见的:r0-r15,cpsr,spsr。R0-R12:通用寄存器,用于保存数据和指针。R13:通常被看作堆栈指针寄存器(SP)R14:链接寄存器,通常用于保存返回地址 R15:程序计数器(PC),CPSR:程序状态寄存器,用于记录当前程序运行的状态。这里有必要再介绍下它的格式,如下图(因为它可控制CPU 对中断是否响应):,这里我们关注的是与中断相关的两个位:I,F(中断禁止位):当 I=1 时禁止 IRQ 中断,为零时则打开中断当 F=1 时禁止 FIQ 中断,为零时则打开中断,M4-M0(M 控制位):用于控制处理器模式,它们与处理器模式的对应关系如下图:,SPSR:备份程序状态寄

6、存器。当特定的异常中断发生时,这个寄存器用于保存当前程序状态器的内容。在异常中断程序退出时,可以用 SPSR 中保存的值来恢复 CPSR。,3.异常向量表通常有两种方法将异常中断处理程序注册到异常中断向量表中。一种是使用跳转指令 BL,另一种使用数据读取指令 LDR。但由于跳转指令只能在 32MB 的范围内跳转,所受的局限较大。故我们只介绍使用 LDR 的情况,这大体又可以分为用 c 语言安装和用汇编语言安装两种。在 LambdaEDU3 集成开发环境中,已经编写好了针对华邦 W90P710 这块板子的异常向量表,使用的是用汇编语言安装中断处理例程的方法,具体的启动代码在 Lambda EDU

7、3 安装目录下的:LambdaEDUtargettoolbspsboardsarmw90p710_evbstartredboot _debugvectors.S 中。,这些代码是用符合 GCC 汇编器规范的代码写的。第一行代码是声明该段并赋以.vectors,ax的属性。以后的 8 条语句是数据读取指令(除 NOP 外,表示不操作),分别对应 ARM 的 7 中异常发生时,处理开始的第一条指令。这里简要介绍下另一种安装中断处理程序的方法,它是用 C 语言实现的。下面给出实际代码:,其中 INT32U 是无符号整型数据类型,0 xE59FF018 是 LDR PC,PC,#0 x18指令的编码,

8、读者可根据先前的描述仔细分析。,4.W90P710 硬件中断控制在 W90P710 微处理器中有一个叫中断控制器(AIC,advanced interrupt controller)的部件,可以处理多达 32 个中断源,目前只定义了 31 种,每个中断源都对应了唯一的中断号,如下图所示:,此外,为了更好的管理中断,AIC 还实现了一个 8 级(0-7)的中断优先级位表。如下表:,其中中断号越低,优先级就越高。例如 1 号看门狗中断优先级最高。另外优先级为0 的四个中断触发的是 FIQ 中断,而其余级别的中断全都属于 IRQ 中断。,5.通过GPIO控制LED7GPIO 意为通用目的的输入输出接

9、口,通过与其相关的寄存器进行特定的配置,该微处理器引脚将与微处理器中特定的电路进行逻辑连接,实现特定的功能。每个 GPIO 组中包含的一个微处理器引脚一般由寄存器(GPIO_CFG)中特定位置的两个 BIT 来控制,最多情况下,一个微处理器引脚可以被配置成 4 种模式(00、01、10、11),但是某一个配置下仅仅能使用其中一个功能。具体寄存器及相关控制位的使用参见DATA SHEET。,五、实验步骤,使用交叉网线(网线的一头为 T568A,另一头为 T568B)连接 W90P710 学习板的网卡接口可 PC 机的网卡接口。使用串口线连接 W90P710 学习板的 UART0 和 PC 机的串

10、口。配置超级终端(具体操作,请参考W90P710 学习板实验指南)。启动 LambdaEDU3,新建一个“标准应用项目”,项目名称自拟,使用“w90p710 标准应用(ARM)”作为其应用程序框架(模板),选择“w90p710_evb_elf_RedBoot_debug”作为其配置。在工程的 src 文件夹下分别创建自己的源程序文件并填写相应的程序代码。,完成代码后,展开“W90PP710_evb_elf_RedBoot_Debug”,双击“目标板配置”,在打开的页面中,点击“W90P710_Excpetion 配置”,修改“IRQ”设置为“false”,保存所作的修改。,右击项目名称选择“重

11、建 BSP 及项目”,完成该项目的编译和链接。在“目标机管理”中添加一个“基于标准 RSP 的连接方式”,名称为“RedBoot”,体系结构选择“arm”,连接类型选择“TCP”,IP 地址为“192.168.1.211”,端口 号 为“9000”。完 成 后,在“目 标 机 管 理”中 右 击“RedBoot(TCP;192.168.1.211:9000)”,选择“连接”。在“C/C+项目”中右击项目中的“w90p710_evb_elf_RedBoot_debug”,选择“运行”,执行程序(开始向目标板上下载程序前,大约需要 5 秒钟时间进行连接准备)。,运行后,请从超级终端中可以看到运行结

12、果,同时也可从LED7上看到时钟中断的次数。注意:RedBoot 使用了 Timer0,为了不和 RedBoot 冲突,实验中应使用Timer1。另外,在读代码过程中,一些伪指令的写法和我们课堂上所讲的伪指令略有区别。比如:.extern W90P710_CPU_ISR_Handler 就是extern.global IRQ_ISR_Handler 就是GLOBAL.equ NO_INT,0 xC0 就是EQU,实验报告需完成内容,1.需在实验报告中回答以下问题:系统的初始化由哪几个函数实现?每个函数分别需要完成什么功能(可用文字叙述)?init.c里为什么有个空循环while(1)?AIC中

13、断控制器支持多少个中断,优先级如何?每个中断所对应的中断处理程序的名字是什么?(以如下表格形式写出),实验报告需完成内容,1.需在实验报告中回答以下问题:系统的初始化由哪几个函数实现?每个函数分别需要完成什么功能(可用文字叙述)?init.c里为什么有个空循环while(1)?AIC中断控制器支持多少个中断,优先级如何?每个中断所对应的中断处理程序的名字是什么?(以如下表格形式写出),实验报告需完成内容,W90P710_CPU_A.S中间有两行注释需要回答。写出三级中断所对应的三级中断函数分别是什么。W90p710_aic.c 中函数W90P710_T1_INT_ISR()中变量i的作用是什么

14、?修改LED更新频率的方法有几种?每种方法需要在哪个源代码文件的哪一个地方把代码修改成什么样?,实验报告需完成内容,2.在代码中补全内容:在W90P710_CPU_A.S中CPSR_Init标号的相应之处补全代码,完成更新CPSR使开中断。在W90P710_CPU_A.S中最后一部分补全恢复现场的代码。在LED7.c中补全注释里要求的1行代码。注:补上的代码不仅需写在源文件相应之处,还应写在实验报告中。,实验需注意事项,需请老师或助教确认实验的完整性,包括演示程序的正确运行过程和LED显示结果。当天内完成实验报告,并提交。格式要求:正文为小四号宋体,行间距为1.25倍行距。离开之前,删除自己电脑上的相关文件,并关闭电脑后方可离开。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号