嵌入式系统原理与应用-基于Cortex-A53微处理器 课件 第5章 硬件平台_第1页
嵌入式系统原理与应用-基于Cortex-A53微处理器 课件 第5章 硬件平台_第2页
嵌入式系统原理与应用-基于Cortex-A53微处理器 课件 第5章 硬件平台_第3页
嵌入式系统原理与应用-基于Cortex-A53微处理器 课件 第5章 硬件平台_第4页
嵌入式系统原理与应用-基于Cortex-A53微处理器 课件 第5章 硬件平台_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统原理与应用电子与电气工程学院第五章硬件平台教师:程蔚正大气象厚德载物MinnanUniversityofScienceandTechnology硬件平台CONTENTS01.Cortex-A53处理器02.GEC6818开发平台简介03.通用I/O—点亮LED灯04.

外部中断05.UART串口通信正大气象厚德载物MinnanUniversityofScienceandTechnology01PARTONECortex-A53处理器正大气象厚德载物MinnanUniversityofScienceandTechnology正大气象厚德载物MinnanUniversityofScienceandTechnology1.Cortex-A53内部功能及特点Cortex-A53处理器,属于A50系列处理器的产品,这一系列产品标志着进一步扩大ARM在高性能与低功耗领域的领先地位,Cortex-A53处理器就是由此诞生的。ARMCortex-A53是实现ARMHoldings设计的ARMv8-A64位指令集的前两个微体系结构之一。Cortex-A53是一款功耗效率很高的ARM应用处理器。可独立运作或整合为ARMbig.LITTLE处理器架构。该处理器系列的可扩展性使ARM的合作伙伴能够针对智能手机、高性能服务器等各类不同市场需求开发系统级芯片(SoC)。Cortex-A53将持续推动移动计算体验的发展,提供最多可达现有超级手机(superphone)三倍的性能,还可将现有超级手机体验延伸至入门级智能手机。配合ARM及ARM合作伙伴所提供的完整工具套件与仿真模型以加快并简化软件开发,全面兼容现有的ARM32位软件生态系统,并能与ARM快速发展中的64位软件生态系统相整合。IP内核硬化加速技术以及先进互补型场效应晶体管(ComplementaryMetalOxideSemiconductor,CMOS)与鳍式场效应晶体管(FinField-EffectTransistor,FinFET)制程技术的支持下,Cortex-A53处理器可提供数GHz级别的性能。正大气象厚德载物MinnanUniversityofScienceandTechnologyCortex-A53内部构造和内核特点Cortex-A53内核特点概述:具有双向超标量,有序执行的8级流水线处理器。每个核心都必须使用DSP和NEONSIMD扩展。板载VFPv4浮点单元(每个核心)。硬件虚拟化支持。TrustZone安全扩展。10项L1TLB和512项L2TLB。4Kbit件分支预测器,256项间接分支预测器。正大气象厚德载物MinnanUniversityofScienceandTechnology2.ARM的基本数据类型ARMv8架构支持的基本数据类型有以下5种。Byte:字节,8bit。Halfword:半字,16bit(半字必须与2字节边界对齐)。Word:字,32bit(字必须与4字节边界对齐)。DoubleWord:双字,64bit。QueaWord:四字,128bit。存储器可以看作是序号为0~232-1的线性字节阵列。表3-1所示为ARM存储器的组织结构。其中每一个字节都有唯一的地址。字节可以占用任意位置。半字占有两个字节的位置,该位置开始于偶数字节地址(地址最末一位为0)。长度为1个字的数据项占用一组4字节的位置,该位置开始于4的倍数的字节地址(地址最末两位为00)。正大气象厚德载物MinnanUniversityofScienceandTechnology存储器大/小端从软件角度看,内存相对于一个大的字节数组,其中每个数组元素(字节)都是可寻址的。ARM支持大端模式(big-endian)和小端模式(little-endian)两种内存模式。大端模式和小端模式数据存放的特点正大气象厚德载物MinnanUniversityofScienceandTechnology3.内核工作模式ARM架构中处理器有不同的运行模式,因此同一个功能的寄存器在不同的运行模式下可能对应不同的物理寄存器,这些寄存器被称为备份寄存器。如SPSR_svc表示svc模式下使用的SPSR寄存器。

ARM架构中常用的运行模式。ARMv8-A架构还有安全监控模式(MonitorMode,mon)工作模式,用于处理器安全状态与非安全状态的切换。捕获异常模式(HypervisorMode,hyp)模式则用于对虚拟化有关功能的支持。正大气象厚德载物MinnanUniversityofScienceandTechnology4.存储系统ARM的存储器系统是由多级构成的,可以分为内核级、芯片级、板卡级和外设级。存储器的层次结构如图:正大气象厚德载物MinnanUniversityofScienceandTechnology5.指令流水线处理器按照一系列步骤来执行每一条指令,典型的步骤如下:从存储器读取指令(fetch)。译码以鉴别它属于哪一条指令(decode)。从指令中提取指令的操作数(这些操作数往往存在于寄存器reg中)。将操作数进行组合以得到结果或存储器地址(ArithmeticandLogicUnit,ALU)。如果需要,则访问存储器以存储数据(mem)。将结果写回到寄存器堆(res)。正大气象厚德载物MinnanUniversityofScienceandTechnology3级流水线到ARM7为止的ARM处理器使用简单的3级流水线,它包括下列流水线级。取指令(fetch):从寄存器装载一条指令。译码(decode):识别被执行的指令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通路。执行(excute):处理指令并将结果写回寄存器。3级流水线指令的执行过程,如下图:当处理器执行简单的数据处理指令时,流水线使得平均每个时钟周期能完成1条指令。但1条指令需要3个时钟周期来完成,因此,有3个时钟周期的延时(latency),但吞吐率(throughput)是每个周期1条指令。正大气象厚德载物MinnanUniversityofScienceandTechnology5级流水线所有的处理器都要满足对高性能的要求,在ARM核中使用的3级流水线的性价比是很高的。但是,为了得到更高的性能,需要重新考虑处理器的组织结构。有两种方法来提高性能。提高时钟频率。时钟频率的提高,必然引起指令执行周期的缩短,所以要求简化流水线每一级的逻辑,流水线的级数就要增加。减少每条指令的平均指令周期数CPI。这就要求重新考虑3级流水线ARM中多于1个流水线周期的实现方法,以便使其占有较少的周期,或者减少因指令执行造成的流水线停顿,也可以将两者结合起来。在ARM9TDMI中使用了典型的5级流水线,5级流水线包括下面的流水线级。取指令(fetch):从存储器中取出指令,并将其放入指令流水线。译码(decode):指令被译码,从寄存器堆中读取寄存器操作数。在寄存器堆中有3个操作数读端口,因此,大多数ARM指令能在1个周期内读取其操作数。执行(execute):将其中1个操作数移位,并在ALU中产生结果。如果指令是Load或Store指令,则在ALU中计算存储器的地址。缓冲/数据(buffer/data):如果需要则访问数据存储器,否则ALU只是简单地缓冲1个时钟周期。⑤回写(write-back):将指令的结果回写到寄存器堆,包括任何从寄存器读出的数据。5级流水线指令的执行过程正大气象厚德载物MinnanUniversityofScienceandTechnology影响流水线性能的因素1.互锁在典型的程序处理过程中,经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数。例如,有如下指令序列:

LDRX0,[X0,#0]

ADDX0,X0,X1//在5级流水线上产生互锁

从例子可以看出,流水线的操作产生中断,因为第1条指令的结果在第2条指令取数时还没有产生。第2条指令必须停止,直到结果产生为止。2.跳转指令跳转指令也会破坏流水线的行为,因为后续指令的取指步骤受到跳转目标计算的影响,因而必须推迟。但是,当跳转指令被译码时,在它被确认是跳转指令之前,后续的取指操作已经发生。这样一来,已经被预取进入流水线的指令不得不被丢弃。如果跳转目标的计算是在ALU阶段完成的,那么在得到跳转目标之前已经有两条指令按原有指令流读取。正大气象厚德载物MinnanUniversityofScienceandTechnology6.寄存器组织AArch32重要寄存器简介寄存器类型Bit描述R0-R1432bit通用寄存器,但是ARM不建议使用有特殊功能的R13、R14、R15作为通用寄存器使用SP_x32bit通常称R13为堆栈指针,除了User和Sys模式外,其他各种模式下都有对应的SP_x寄存器:x={und/svc/abt/irq/fiq/hyp/mon}LR_x32bit称R14为链接寄存器,除了User和Sys模式外,其他各种模式下都有对应的SP_x寄存器:x={und/svc/abt/svc/irq/fiq/mon},用于保存程序返回链接信息地址,AArch32环境下,也用于保存异常返回地址,也就说LR和ELR是公用一个,AArch64下是独立的ELR_hyp32bitHypmode下特有的异常链接寄存器,保存异常进入Hypmode时的异常地址PC32bit通常称R15为程序计算器PC指针,AArch32中PC指向取指地址,是执行指令地址+8,AArch64中PC读取时指向当前指令地址CPSR32bit记录当前PE的运行状态数据,CPSR.M[4:0]记录运行模式,AArch64下使用PSTATE代替APSR32bit应用程序状态寄存器,EL0下可以使用APSR访问部分PSTATE值SPSR_x32bit是CPSR的备份,除了User和Sys模式外,其他各种模式下都有对应的SPSR_x寄存器:x={und/svc/abt/irq/fiq/hpy/mon},注意:这些模式只适用于32bit运行环境HCR32bitEL2特有,HCR.{TEG,AMO,IMO,FMO,RW},控制EL0/EL1的异常路由SCR32bitEL3特有,SCR.{EA,IRQ,FIQ,RW},控制EL0/EL1/EL2的异常路由,注意EL3始终不会路由VBAR32bit保存任意异常进入非Hypmode&非Monitormode的跳转向量基地址HVBAR32bit保存任意异常进入Hypmode的跳转向量基地址MVBAR32bit保存任意异常进入Monitormode的跳转向量基地址ESR_ELx32bit保存异常进入ELx时的异常综合信息,包含异常类型EC等,可以通过EC值判断异常classPSTATE

不是一个寄存器,是保存当前PE状态的一组寄存器统称,其中可访问寄存器有:PSTATE.{NZCV,DAIF,CurrentEL,SPSel},属于ARMv8新增内容,主要用于64bit环境下正大气象厚德载物MinnanUniversityofScienceandTechnologyA32状态下寄存器组织正大气象厚德载物MinnanUniversityofScienceandTechnology程序状态寄存器在AArch32状态下使用当前程序状态寄存器(CurrentProgramStatusRegister,CPSR)记录程序的执行状态,可以在任何处理器模式下被访问,它包含下列内容:ALU(ArithmeticLogicUnit,算术逻辑单元)状态标志的备份。当前的处理器模式。中断使能标志。设置处理器的状态。每一种处理器模式下都有一个专用的物理寄存器做备份程序状态寄存器(SavedProgramStatusRegister,SPSR)。当特定的异常中断发生时,这个物理寄存器负责存放当前程序状态寄存器的内容。当异常处理程序返回时,再将其内容恢复到当前程序状态寄存器。正大气象厚德载物MinnanUniversityofScienceandTechnology标志位N(Negative)、Z(Zero)、C(Carry)和V(Overflow)通称为条件标志位。这些条件标志位会根据程序中的算术指令或逻辑指令的执行结果进行修改,而且这些条件标志位可由大多数指令检测以决定指令是否执行。在ARMv4T架构中,所有的ARM指令都可以条件执行,而Thumb指令却不能。各条件标志位的具体含义如下。(1)N本位设置成当前指令运行结果的bit[31]的值。当两个由补码表示的有符号整数运算时,N=1表示运算的结果为负数,N=0表示结果为正数或零。(2)ZZ=1表示运算的结果为零,Z=0表示运算的结果不为零。(3)C下面分4种情况讨论C的设置方法。在加法指令中(包括比较指令CMN),当结果产生了进位,则C=1,表示无符号数运算发生上溢出;其他情况下C=0。在减法指令中(包括比较指令CMP),当运算中发生错位(即无符号数运算发生下溢出),则C=0;其他情况下C=1。对于在操作数中包含移位操作的运算指令(非加/减法指令),C被设置成被移位寄存器最后移出去的位。对于其他非加/减法运算指令,C的值通常不受影响。(4)V下面分两种情况讨论V的设置方法。对于加/减运算指令,当操作数和运算结果都是以二进制的补码表示的带符号的数时,且运算结果超出了有符号运算的范围是溢出。V=1表示符号位溢出。对于非加/减法指令,通常不改变标志位V的值(具体可参照ARM指令手册)。尽管以上C和V的定义看起来颇为复杂,但使用时在大多数情况下用一个简单的条件测试指令即可,不需要程序员计算出条件码的精确值即可得到需要的结果。正大气象厚德载物MinnanUniversityofScienceandTechnology控制位CPSR的低8位(I、F、T、M[4]及M[3:0])统称为控制位。当异常发生时,这些位的值将发生相应的变化。另外,如果在特权模式下,也可以通过软件编程来修改这些位的值。(1)中断禁止位I=1,IRQ被禁止。F=1,FIQ被禁止。(2)状态控制位T位是处理器的状态控制位。T=0,处理器处于ARM状态(即正在执行32位的ARM指令)。T=1,处理器处于Thumb状态(即正在执行16位的Thumb指令)。当然,T位只有在T系列的ARM处理器上才有效,在非T系列的ARM版本中,T位将始终为0。正大气象厚德载物MinnanUniversityofScienceandTechnology模式控制位M[3:0]作为位模式控制位,这些位的组合确定了处理器处于哪种状态。如表所示列出了其具体含义。M[3∶0]处理器模式0b0000User0b0001FIQ0b0010IRQ0b0011Supervisor0b0111Abort0b1010Hyp0b1011Undefined0b1111System正大气象厚德载物MinnanUniversityofScienceandTechnology芯片内部构成框图02PARTTWO开发平台简介正大气象厚德载物MinnanUniversityofScienceandTechnology正大气象厚德载物MinnanUniversityofScienceandTechnologyGEC6818开发板是广州粤嵌通信科技股份有限公司研发的一款基于三星的S5P6818的硬件平台,如图所示。GEC6818开发平台,核心板采用10层板工艺设计,确保稳定可靠,可以批量用于平板电脑,车机,学习机,POS机,游戏机,行业监控等多种领域。该平台搭载三星Cortex-A53系列高性能八核处理器S5P6818,最高主频高达1.4GHz,可应用于嵌入式Linux和Android等操作系统的驱动、应用开发。开发板留有丰富的外设,支持千兆以太网、板载LVDS接口、MIPI接口、USB接口等。03PARTTHERE通用I/O-点亮LED灯正大气象厚德载物MinnanUniversityofScienceandTechnology正大气象厚德载物MinnanUniversityofScienceandTechnology一、分析LED的原理图1、控制引脚2、亮灭原理I/OA/B/C/D/E/F32个引脚GPIOA0-GPIOA31GPIOC7---function1GPIOC8---function1GPIOC17---function1GPIOE13---function0正大气象厚德载物MinnanUniversityofScienceandTechnology

二、裸机编程的思路(1)分析原理图,理解硬件的控制原理—>(2)找到控制LED的GPIO口—>(3)查找CPU的使用手册,找到控制GPIO的寄存器—>(4)理解寄存器的控制原理—>(5)编写程序,通过寄存器的地址来访问寄存器。正大气象厚德载物MinnanUniversityofScienceandTechnology

三、寄存器ARMPoweredProductsCPU使用:SEC_S5P6818X_Users_Manual_preliminary_Ver_0.00.pdf(S5P6818说明手册)正大气象厚德载物MinnanUniversityofScienceandTechnology

1、引脚功能配置寄存器--GPIOxALTFN0/GPIOxALTFN1ARMPoweredProductsI/O口是复用的,多功能可以将一个引脚配置成普通的GPIO,引脚的功能对应关系,需要查看手册的第二章。配置功能C7---GPIOCALTFN0[1514]=01C8---GPIOCALTFN0[1716]=01C17--GPIOCALTFN1[32]=01E13--GPIOEALTFN0[2726]=00正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts2、设置GPIO为输入/输出模式---GPIOxOUTENBARMPoweredProductsC7---GPIOCALTFN0[1514]=01C8---GPIOCALTFN0[1716]=01C17--GPIOCALTFN1[32]=01E13--GPIOEALTFN0[2726]=002、配置输出模式:GPIOCOUTENB[7]=1GPIOCOUTENB[8]=1GPIOCOUTENB[17]=1GPIOEOUTENB[13]=1正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts3、GPIO输出电平的设置寄存器---GPIOxOUTARMPoweredProducts当一个普通GPIO设置成输出后,可以通过这个寄存器设置输出的电平2、配置输出高/低电平:GPIOCOUT[7]=1—高电平—灭GPIOCOUT[7]=0—低电平—亮GPIOCOUT[8]=1/0GPIOCOUT[17]=1/0GPIOEOUT[13]=1/0正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProductsARMPoweredProducts4、检测GPIO输出的电平寄存器---GPIOxPAD当一个引脚配置成输入引脚后,通过这个寄存器读取引脚输入的电平正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts四、LED控制程序的流程(以GPIOE13控制D7为例)ARMPoweredProducts正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts五、配置寄存器的值ARMPoweredProducts1、将控制引脚配置成普通的GPIO(0xC001E020)GPIOEALTFN0[27:26]=00b2、将GPIO配置成输出模式(0xC001E004)GPIOEOUTENB[13]=1b3、让GPIO输出低电平,LED亮(0xC001E000)GPIOEOUT[13]=0b让GPIO输出高电平,LED灭(0xC001E000)GPIOEOUT[13]=1b正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts五、配置寄存器的值ARMPoweredProducts3、GPIOxALTFN0是32位的寄存器。假设要配置GPIOxALTFN0[1514]=011、按位与(&)任何数和0与等于0

x&0=0

2、按位或(|)任何数和1或等于1

x|1=1元素1元素2与结果000010100111元素1元素2或结果000011101111313029282726252423222120191817161514131211109876543210xxxxxxxxxxxxxxxx11xxxxxxxxxxxxxx11111111111111110011111111111111xxxxxxxxxxxxxxxx00xxxxxxxxxxxxxx00000000000000000100000000000000xxxxxxxxxxxxxxxx01xxxxxxxxxxxxxx正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts六、编译裸机程序步骤ARMPoweredProducts1、编写程序和Makefile文件//GPIOE13----D7//寄存器的定义#defineGPIOEOUT(*(volatileunsignedint*)0xC001E000)//GPIOEOUT-->寄存器的内容#defineGPIOEOUTENB(*(volatileunsignedint*)0xC001E004)#defineGPIOEALTFN0(*(volatileunsignedint*)0xC001E020)#defineGPIOEALTFN1(*(volatileunsignedint*)0xC001E024)//裸机程序不能使用标准C库,如果要使用,需要移植标准C库voiddelay(unsignedvalue);//裸机程序的入口是_start(),_start()需要放在源文件的最开始位置void_start(void){//1、将控制引脚配置成普通的GPIO,GPIOEALTFN0[27:26]=00bGPIOCALTFN0&=~(3<<14);//2、将GPIO配置成输出模型,GPIOEOUTENB[13]=1bGPIOEOUTENB|=(1<<13);while(1){//3、让GPIO输出电平取反,LED反转 GPIOEOUT^=(1<<13); delay(0x2000000); }}voiddelay(unsignedvalue){ while(value--);}正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProductsARMPoweredProductsMakefile文件程序正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts2、Ubuntu上编译程ARMPoweredProducts将写好的C程序和Makefile放在一个文件里面,放在Ubuntu的共享目录里,然后用make进行编译生成一些文件。(arm-none-linux-gnueabi-gcc)正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts电脑、ARM连接:网线、串口转usb、电源线正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProductsARMPoweredProducts正大气象厚德载物MinnanUniversityofScienceandTechnology

ARMPoweredProducts04PARTFOUR外部中断正大气象厚德载物MinnanUniversityofScienceandTechnology正大气象厚德载物MinnanUniversityofScienceandTechnology在ARM体系结构中,存在7种异常处理。ARM处理器中有7种类型的异常,按优先级从高到底的排列如下:复位异常(Reset)、数据异常(DataAbort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(PrefetchAbort)、软中断异常(SWI)和未定义指令异常(Undefinedinterrupt)。当异常发生时,处理器会把PC设置为一个特定的存储器地址。这一地址存放在被称为向量表(vectortable)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。ARM异常中断简介正大气象厚德载物MinnanUniversityofScienceandTechnologyS5P6818通用中断控制器S5P6818芯片内部集成了通用中断控制器(GIC),采用的是ARM公司提供的GIC-400版本。GIC通用中断控制器主要包括AMBA总线从接口(AMBAsalveinterface),分配器(Distributor),CPU接口(CPUinterface),虚拟接口控制器(Virtualinterfacecontrol),虚拟CPU接口(VirtualCPUinterface),时钟和复位(ClockandReset)。虚拟CPU接口只在支持虚拟化扩展的系统存在,不在我们讨论的范围。正大气象厚德载物MinnanUniversityofScienceandTechnology分配器在系统中所有的中断源都被分配器控制。分配器有相应的寄存器控制每个中断优先级、状态、安全,路由信息的属性并启用状态。分配器确定哪些中断通过所连接的CPU接口转发到核心。分配器提供如下功能:①使能挂起中断是否传递到CPU接口。②使能和禁用任意中断。③设定任意中断优先级。④设置任意目标处理器。⑤设置中断为电平触发或者边沿触发。⑥设置中断为组别。⑦传递任意SGI到一个或者多个目标处理器。⑧查看任意中断的状态。⑨提供软件方式设置或清除任意中断的挂起状态。 ⑩中断使用中断号来标识,每个CPU接口可以处理多达1020个中断。正大气象厚德载物MinnanUniversityofScienceandTechnologyCPU接口通过这些核心收到中断。该CPU接口主机寄存器屏蔽,识别和控制中断转发到内核。每个核心都有一个单独的CPU系统接口。每个CPU接口提供如下编程接口:①使能通知ARM核中断请求。②应答中断。③指示中断处理完成。④设置处理器的中断优先级屏蔽。⑤定义处理器中断抢占策略。⑥为处理器决定最高优先级的挂起中断。正大气象厚德载物MinnanUniversityofScienceandTechnologyGIC中断控制器中断类型GIC中断控制器中断类型分为三种:1.软件产生中断(SoftwareGeneratedInterrupt,SGI)软件生成的中断,软中断的产生是通过软件写入到一个专门的寄存器,软中断产生中断寄存器(ICDSGIR),它常用在内核间通信。软中断能以所有核为目标或选定的一组系统中的核心为目标,中断号0-15为此保留。2.专用外设中断(PrivatePeripheralInterrupt,PPI)这是由外设产生的是专用特定核心处理的中断。中断号码16-31为PPI保留。这些中断源对核心是私有的,并且独立于其他核上相同的中断源,例如每个核上的定时器中断源。3.共享外设中断(SharedPeripheralInterrupt,SPI)这些是由外设的产生的可以发送给一个或多个核心处理的中断源。中断号32-1020用于共享外设中断。正大气象厚德载物MinnanUniversityofScienceandTechnologyGIC中断信号由许多不同的状态:1.无效态(Inactive)无效状态表示中断没有发生。2.挂起态(Pending)挂起状态表示中断已经发生,但等待核心来处理。待处理中断都作为通过CPU接口发送到核心处理的候选者。3.激活态(Active)激活态表示中断信号发送给了核心,目前正在进行中断处理。4.激活挂起态(Activeandpending)一个中断源正进行中断处理而GIC又接收到来自同一来中断源的中断触发信号。中断状态转移图正大气象厚德载物MinnanUniversityofScienceandTechnologyGIC中断处理流程当ARM核心接收到中断时,它会跳转到异常向量表中,PC寄存器获得对应异常向量并开始执行中断处理函数。在中断处理函数中,先读取GIC控制器CPU接口模块内的中断响应寄存器(GICC_IAR),一方面获取需要处理的中断ID号,进行具体的中断处理,另一方面也作为ARM核心对GIC发来的中断信号的应答,GIC接收到应答信号,GIC分配器会把对应中断源的状态设置为激活态。当中断处理程序执行结束后,中断处理函数需要写入相同的中断ID号到GIC控制器cpu接口模块内的中断结束寄存器(GICC_EOIR),作为给GIC控制器的中断处理结束信号。GIC分配器会把对应中断源的状态由激活态设置为无效态(如果在中断处理过程中,又有相同中断触发,状态设置为无效挂起态)。同时GIC控制器CPU接口模块就可以继续提交一个优先级最高的状态为挂起态的中断到ARM核心进行中断处理,一次完整的中断处理就此完成。正大气象厚德载物MinnanUniversityofScienceandTechnology按键中断电路与程序设计

K6对应的GPIOB9管脚,在没有按下的时候K6引脚处于高电平,我们可以把K6设为中断模式并为双边沿触发,因此,产生GPIO中断进入相应的中断函数,处理中断事件。1.按键中断的原理图正大气象厚德载物MinnanUniversityofScienceandTechnology2.中断寄存器设置设置管脚为中断功能引脚设置管脚为输入模式正大气象厚德载物MinnanUniversityofScienceandTechnology配置GPIO的中断是否清零找到GPIOB对应的中断源找到相关的中断使能设置异常向量表中断函数处理:主函数:见程序正大气象厚德载物MinnanUniversityofScienceandTechnology更改交叉编译工具链的路径。vimMakefile编译步骤:

1、把工程源码拷贝到Ubuntu中。

2、进入目录中,修改Makefile文件。正大气象厚德载物MinnanUniversityofScienceandTechnology下载执行程序现象当K6按下时,终端会打印GPIO9Interupt,LED灯D8亮,松开的时候,灯灭。05PARTFIVEUART串口通信正大气象厚德载物MinnanUniversityofScienceandTechnology正大气象厚德载物MinnanUniversityofScienceandTechnology1.串行通信的基本概念同步通信和异步通信通信,最少要有两个对象,一个收,一个发同步通信:一般情况下同步通信指的是通信双方根据同步信号进行通信的方式。比如通信双方有一个共同的时钟信号,大家根据时钟信号的变化进行通信SPISPI发/收收/发CLK正大气象厚德载物MinnanUniversityofScienceandTechnology异步通信:是指数据传输速度匹配依赖于通信双方有自己独立的系统时钟,大家约定好通信的速度。异步通信不需要同步信号,但是并不是说通信的过程不同步UARTUART发/收收/发正大气象厚德载物MinnanUniversityofScienceandTechnology串行通信和并行通信的区别串行通信:指的是同一时刻只能收或发一个bit位信息。因此只用1根信号线即可。并行通信:指的是同一时刻可以收或发多个bit位的信息,因此需要多根信号线才行-并行传输:数据各个位同时传输,如内存。-优点:速度快-缺点:占用引脚资源多-串行传输:数据按位顺序传输,比如串口。-优点:占用引脚资源少-缺点:速度相对较慢设备设备设备设备串行并行正大气象厚德载物MinnanUniversityofScienceandTechnology单工、半双工、全双工单工:要么收,要么发,只能做接收设备或者发送设备。比如收音机半双工:可以收,可以发,但是不能同时收发,比如对讲机全双工:可以在同一时刻既接收,又发送。手机单工半双工全双工正大气象厚德载物MinnanUniversityofScienceandTechnology常见通信总结通信标准引脚说明通信方式通信方向UART(通用异步收发器)TXD:发送端RXD:接受端GND:公共地异步通信全双工单总线(1-wire)DQ:发送/接受端异步通信半双工SPISCK:同步时钟MISO:主机输入,从机输出MOSI:主机输出,从机输入同步通信全双工I2CSCL:同步时钟SDA:数据输入/输出端同步通信半双工正大气象厚德载物MinnanUniversityofScienceandTechnology串口电路连接正大气象厚德载物MinnanUniversityofScienceandTechnology串口电路连接正大气象厚德载物MinnanUniversityofScienceandTechnology串口通信协议介绍0101000000TXD串口输出0x05波形图、低位先发送:

温馨提示

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

评论

0/150

提交评论