《嵌入式电子系统设计》课程实验指导书实验1:最小系统实验,(2014.7.11).doc_第1页
《嵌入式电子系统设计》课程实验指导书实验1:最小系统实验,(2014.7.11).doc_第2页
《嵌入式电子系统设计》课程实验指导书实验1:最小系统实验,(2014.7.11).doc_第3页
《嵌入式电子系统设计》课程实验指导书实验1:最小系统实验,(2014.7.11).doc_第4页
《嵌入式电子系统设计》课程实验指导书实验1:最小系统实验,(2014.7.11).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 最小系统实验一、实验目的熟悉最小系统的硬件构成,掌握复位电路、晶振电路、电源电路(尤其是滤波电容的应用),编写一个例程,并在最小系统上运行;了解嵌入式开发的基本思想和过程。掌握最小系统的构成,在将来的项目运用中能根据不同的场合选择相应的复位电路。二、实验原理本实验通过一个简短的 Boot 引导程序介绍 ARM 开发平台的启动过程,同时该引导程序也可其他章节程序引导的示例程序。本程序主要为了让读者能够清晰理解启动程序的基本架构组成部分以及掌握 ARM 引导程序的编写方法。三、主要实验设备1硬件:宿主机、ARM教学试验箱; 2软件:Windows操作系统、ADS1.2集成开发环境。四、实验内容 构建最小系统,用示波器观察一下晶振电路的波形,测一下晶振正常工作时的电压。编写一个例程,编译并运行。设置ARM仿真器的开发环境。程序架构如下:1程序头 IMPORT MDCNFG ;声明 MDCNFG(读写寄存器)物理地址0x48000000 IMPORT MDREFR ;声明 MDREFR(刷新寄存器)0x48000004 IMPORT MDMRS ;声明 MDMRS(模式/设置寄存器 0x48000040 IMPORT init_MDCNFG ; 声明 init_MDCNFG 0x02000ac9 IMPORT init_MDREFR ; 声明 init_MDREFR 0x0011e018 IMPORT init_MDMRS ; 声明 init_MDMRS 0x320032 IMPORT StackSvc ; 声明 StackSvc 0xa0600000 IMPORT StackIrq ; 声明 StackIrq 0xa0605000 IMPORT StackFiq ; 声明 StackFiq 0xa060a000 IMPORT StackAbt ; 声明 StackAbt 0xa060e000 IMPORT StackUnd ; 声明 StackUnd 0xa0714000 IMPORT StackUsr ; 声明 StackUsr 0xa0720000 IMPORT mainIMPORT宏通知编译器本源码文件需要引用在其他文件中定义的变量或函数。2程序入口 AREA boot ,CODE ,READONLY ENTRY ;初始化入口点 B Reset_Handler 该代码段定义了 boot 程序所在的段(CODE)、属性(READONLY)等属性; 图1.1 程序链接配置 ENTRY宏表示程序的入口,一个程序可设置有多个入口,可通过工程配置设置程序执行入口函数(如图 1-1),在引导程序中,boot代码段程序初始化入口点。由于AREA和ENTRY都是伪操作,不分配成实质的指令,所以,B Reset_Handler为程序执行第一条指令。3设置中断向量表 表1-1 ARM中断向量表地址 异常类型 进入时的模式 进入时I的状态 进入时F的状态0x0000 0000复位管理禁止禁止0x0000 0004未定义指令未定义IF0x0000 0008软件中断管理禁止F0x0000 000C中止(预取)中止IF0x0000 0010中止(数据)中止IF0x0000 0014保留保留0x0000 0018IRQ中断禁止F0x0000 001CFIQ快中断禁止禁止 每当一个中断发生后,ARM 处理器便强制把程序计数器(PC)指针置为向量表中对应中断类型所对应的地址值。由于 ARM 微处理器每个中断向量中只有 4 个字节的大小,所以通常在中断向量位置存放 1 条跳转指令或存放 1 条直接对程序计数器(PC)寄存器赋值的指令,使程序能跳转到相应的异常中断处理程序中执行。如果中断处理程序所在的物理地址小于 32MB,可使用 B 跳转指令;当跳转范围大于 32MB 时,需使用 LDR 指令。对于程序中未使用的中断,可使中断异常跳转到一个只含返回指令的哑函数或跳转到自身标号地址处,以防止中断异常引起系统的混乱。如:Undefined_Handler B Undefined_Handler 下面代码为 ARM 微处理器中断向量表的初始化过程。B Reset_Handler ;跳转复位 0x0000,0000 复位 管理模式 B Undefined_Handler ;跳转未定义指令 0x0000,0004 未定义指令 未定义模式 B SWI_Handler ;跳转软件中断 0x0000,0008 软件中断 管理模式 B Prefetch_Handler ;跳转预取指令 0x0000,000C 预取指令 中止模式 B DataAbort_Handler ;跳转数据异常 数据异常 中止模式 NOP ;延时保留 B IRQ_Handler ;跳转 IRQ(中断请求)0x0000,0018 IRQ IRQ B FIQ_Handler ;跳转 FIQ(快速中断请求) 0x0000,001C FIQ FIQ 从表1-1分析可知NOP一定不能去掉,必须要保证中断向量表正确建立。4程序初始化部分 ;* ;Check if run in the SDRAM ;* MOV R0,PC CMP R0,#0x00000040 BNE SetStack BL InitMem ;如果相等的话,则跳转到初始化内存代码段InitMem SetStack ;定义设置堆栈标签BL InitStack ;设置初始化堆栈 BL InitGPIO ;初始化GPIO B main ;跳转到C语言main.c主应用程序 CMP R0,#0x00000040语句判断程序是否从0x0开始运行。ARM处理器上电首先从地址0开始执行,然后跳转到复位中断,0x00000038为Reset_Handle标号地址所在的位置(图1.2,程序地址映射表),0x00000040为0x00000038+8后的地址。图1.2 程序地址映射表5汇编程序详解 GPIO初始化过程:PXA270微处理器的GPIO引脚具有为多功能复用,需要在使用之前,需要对具体的GPIO引脚进行编程配置,从图1.3可知,要控制一个GPIO口,需要对GPIO方向寄存器(GPDR)、功能寄存器GAFR、电平设置寄存器GPSR/GPCR)等GPIO控制寄存器进行编程配置。图1.3 PXA270 GPIO 功能示意图GPIO初始化代码段: ;* ;Init GPIO ;* ALIGN InitGPIO LDR R1,=0x40e00000 MOV R0,#0x10000 STR R0,R1,#0x20 LDR R0,=0xa0000000 STR R0,R1,#0x64 LDR R0,=0x01c000 STR R0,R1,#0x14 LDR R0,=0x402 STR R0,R1,#0x68 MOV PC,LR GPIO初始化代码段完成对GPIO的输入/输出、复用、电平等功能进行配置,一般情况,需要根据具体平台的GPIO的实际功能进行编程设置。LDR R1,=0x40e00000 MOV R0,#0x10000 ;GPIO64-95 status Output-High STR R0,R1,#0x20 该代码实现将GPIO80口设置为高电平输出(图1.4 GPSR2控制寄存器位定义)。 图1.4 GPSR2控制寄存器位定义LDR R0,=0xa0000000 STR R0,R1,#0x64 上面两条语句通过对 GPIO 功能转换控制寄存器进行设置,将 GPIO78、GPIO79 口的功能配置成转换输出功能 2,即GPIO78、GPIO79分别设置为nCS,nCS片选功能。图1.5、GAFR2_L 控制寄存器位定义;图1.6为GPIO78、GPIO79为转换功能表;图1.7为GPDR2控制寄存器位定义。图1.5 GAFR2_L 控制寄存器位定义图1.6 GPIO78、GPIO79 为转换功能表图1.7 GPDR2 控制寄存器位定义LDR R0,=0x01c000 STR R0,R1,#0x14 该代码实现将将 GPIO78、GPIO79、GPIO80 口的配置成输出端口。LDR R0,=0x402 STR R0,R1,#0x68 该代码完成将 GPIO80 口的功能设置成 nCS,将 GPIO85 口的功能设置成 FFRXD。图1.8 为GAFR2_U 控制寄存器位定义,图1.9为GPIO80、GPIO85为转换功能表。图18 GAFR2_U 控制寄存器位定义图1.9 GPIO80、GPIO85转换功能表 存储控制器初始化过程:对于 EELiod Pxa270 教学实验平台,SDRAM 初始化的工作是通过配置存储控制器寄存器来完成,这些寄存器包括主要包括SDRAM 配置寄存器(MDCNFG),SDRAM 刷新控制寄存器(MDREFR),SDRAM 模式设置配置寄存器(MDMRS)。SDRAM配置寄存器MDCNFG主要完成对SDRAM的使能(DEn)、位宽(DWINn)、行列地址线(DRACn、DCACn)、内部块的数量(DNBn)以及时序参数(DTCn)等参数的配置,图 1.10 为 MDCNFG配置SDRAM的控制位。图1.10 MDCNFG 寄存器EELiod平台的SDRAM配置代码如下: LDR R11, =MDCNFG LDR R1, =init_MDCNFG ; 0x02000ac9 STR R1, R11 EELiod平台由两块4banks x 4Mbit x16位的HYB25L256160AC SDRAM芯片组成64M32位的存储空间,该芯片使用9位列地址,13位行地址,且内部采用4个bank设计方式,tRP=3,CL=3,RCD=3,tRAS7,tRC10,采用普通寻址模式;平台利用分区0(Partition 0)进行寻址该存储芯片组。所以对SDRAM配置寄存器MDCNFG赋值为0x02000AC9。动态 RAM 在使用过程中为防止数据丢失,需要不停地对其进行充电刷新。SDRAM刷新控制寄存器除了完成对SDRAM刷新参数进行配置之外,还对存储器的时钟选择等参数进行配置,如图1.11、1.12为寄存器的控制位。图1.11 MDREFR寄存器的控制位图1.12 MDMRS寄存器的控制位配置代码如下: LDR R11, =MDREFR LDR R1, =init_MDREFR ; 0x0011e018 STR R1,R11 写入 SDRAM 中的 MRS 值,设置到模式寄存器后,存储控制器初始化完毕。在 SDRAM 芯片内部有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次开机时 SDRAM 都要先对这个控制逻辑核心进行初始化,也就是配置 MDMRS 寄存器。寄存器的信息由地址线来提供。在设置到模式寄存器之后,SDRAM 就开始了进入正常的工作状态:LDR R11, =MDMRS LDR R1, =init_MDMRS ; 0x320032 STR R1,R11 堆栈初始化过程:ARM 处理器有 7 种异常工作模式,每一种异常工作模式的必须使用其影子寄存器进行必要的数据处理,但 ARM 处理器进入异常工作模式时,需要对现场进行保护,以便实现正确返回。所以必须对各异常工作模式的堆栈进行设置。具体方法是改变状态寄存器(CPSR)内的状态位,使处理器切换到不同的状态,然后给 SP 赋值,初始化代码如下: ;* ; Init Stack ;* ALIGN InitStack ;Set IRQ mode(IRQ) MSR CPSR_c, #0xd2 ;设置 IRQ 模式,且只更新 CPSR7:0 LDR SP, =StackIrq ;设置 IRQ 堆栈的起始地址 ;Set FIQ mode(FIQ) MSR CPSR_c, #0xd1 ;设置 FRQ 模式,且只更新 CPSR7:0 LDR SP, =StackFiq ;设置 FRQ 堆栈的起始地址 ;Set Abort mode(ABT) MSR CPSR_c, #0xd7 ;设置 ABT 模式,且只更新 CPSR7:0 LDR SP, =StackAbt ;设置 ABT 堆栈的起始地址 ;Set Undefine mode(UND) MSR CPSR_c, #0xdb ;设置 UND 模式,且只更新 CPSR7:0 LDR SP, =StackUnd ;设置 UND 堆栈的起始地址 ;Set User/System mode(USR) MSR CPSR_c, #0xdf ;设置 USR 模式,且只更新 CPSR7:0 LDR SP, =StackUsr ;设置 USR 堆栈的起始地址 ;Set Supervisor mode(SVC) MSR CPSR_c, #0xd3 ;设置 SVC 模式,且只更新 CPSR7:0 LDR SP, =StackSvc ;设置 SVC 堆栈的起始地址 MOV PC,LR END 堆栈的大小要根据具体需要而定,但是要尽可能给堆栈分配快速的存储空间,以提高系统性能。6C语言代码部分 该引导程序实验通过完成对系统的引导配置,并对平台中的八个LED灯实现向右循环流水点亮。硬件连接如图 1.13、1.14所示: 图1.13 LED_CS4 片选地址图1.14 LED 电路图由图1.13、图1.14可知,LED-CS4为八个 LED 的控制芯片74HC574的片选,而LED-CS4接在3-8译码器74LCx138的Y5输出74

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论