为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 武汉理工大学嵌入式复习重点

武汉理工大学嵌入式复习重点

2020-06-03 7页 doc 2MB 3阅读

用户头像 个人认证

wsqfg88

项目管理施工技术

举报
武汉理工大学嵌入式复习重点.第一章1.嵌入式系统的定义:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。2.3.4.嵌入式系统的特点:嵌入专用嵌入式处理器与通用处理器的最大不同就是嵌入式处理器嵌入在针对特定应用设计的系统中综合性强嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一个技术密集、资金密集、知识高度分散、不断创新的知识集成系统设计高效可裁剪——嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗...
武汉理工大学嵌入式复习重点
.第一章1.嵌入式系统的定义:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。2.3.4.嵌入式系统的特点:嵌入专用嵌入式处理器与通用处理器的最大不同就是嵌入式处理器嵌入在针对特定应用的系统中综合性强嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一个技术密集、资金密集、知识高度分散、不断创新的知识集成系统设计高效可裁剪——嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余程序固化软件一般都固化在存储器芯片或处理器本身中,这样提高了系统的执行速度和可靠性需要独立的开发系统嵌入式系统本身不具备自举开发能力,必须有一套开发工具和环境才能进行开发生命周期长嵌入式系统和具体应用结合在一起,其升级换代一般与具体产品同步进行,因此具有较长的生命周期可靠性高、成本低、资源受限、功耗低等等第二章1.嵌入式设计方法的演变硬件设计的进步旧方法:选择和使用通用集成电路器件新方法:自己设计和制作部分专用的集成电路器件•由各种EDA工具软件提供支持的软件设计的进步旧方法:无操作系统新方法:基于操作系统设计•简化多任务、实时、复杂软件设计第三章(3.7以后是重点,第三章前面的都不考。从3.7往后看)1.ARM微处理机的工作模式ARM微处理器支持7种工作模式User-用户模式(usr)•ARM处理器正常的程序执行状态System-系统模式(sys)•运行具有特权的操作系统任务IRQ-外部中断模式(irq)•用于通用的中断处理FIQ-快速中断模式(fiq)•用于高速数据传输或通道处理Supervisor-管理模式(svc)•操作系统使用的保护模式•复位、软中断调用(SWI)Abort-中止模式(abt)•当数据或指令预取中止时进入该模式•可用于虚拟存储及存储保护Undefined-未定义指令模式(und)•当未定义的指令执行时进入该模式•可用于支持硬件协处理器的软件仿真特权模式除用户模式以外,其余6种模式称之为特权模式(PrivilegedModes),当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。异常模式除去用户模式和系统模式以外的5种又称为异常模式(ExceptionModes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况2.工作模式的改变通过软件改变•系统调用通过外部中断或异常处理改变•外部中断:IRQ、FIQ–来自中断控制器•异常处理–来自CPU部工作模式的改变举例SWI软件中断指令•SWI0x0;调用0号软中断•SWI0x12;调用12号软中断IRQ外部中断•__irqvoidHandlerTIMER5(void)•{•timeval++;//当前时刻递增•pIC->I_ISPC=INT_TIMER5;//清除中断请求位•}3.ARM微处理器的工作状态一般有两种第一种为ARM状态•处理器执行32位的ARM指令•ARM指令要求字对齐第二种为Thumb状态•处理器执行16位的Thumb指令•Thumb指令要求半字对齐工作状态切换在程序的执行过程中,处理器可以随时在两种工作状态之间切换,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的容ARM微处理器在开始执行代码时总是处于ARM状态,也就是复位后进入ARM状态工作状态切换方法进入Thumb状态•执行BX指令–BX:带状态切换的跳转指令–当操作数寄存器的最低位[0]为1时,可以使微处理器从ARM状态切换到Thumb状态–BXR0;R0的最低位[0]为1•处理器工作在Thumb状态,如果发生异常并进入异常处理子程序,则异常处理完毕返回时,自动从ARM状态切换到Thumb状态工作状态切换举例BLabelCMPR1,#0BEQLabelADRLR0,ThumbFun+1BXR0BLXLabel4.ARM处理器的寄存器37个32位寄存器•31个通用寄存器•6个状态寄存器这些寄存器不能被同时访问•取决于处理器的–工作状态–工作模式1)通用寄存器通用寄存器包括R0~R15可以分为三类2)未分组寄存器R0~R7未分组寄存器R0~R7在所有的工作模式下,每个未分组寄存器都指向对应的一个物理寄存器。在中断或异常处理进行工作模式转换时,由于不同的处理器工作模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏分组寄存器R8~R14分组寄存器R8~R14R8~R12•每个寄存器对应2个不同的物理寄存器•当使用FIQ模式时,访问R8_fiq~R12_fiq•当使用其他模式时,访问R8_usr~R12_usrR13、R14•每个寄存器对应6个不同的物理寄存器•其中一个寄存器是用户模式与系统模式共用•另外5个物理寄存器对应于其他5种不同的工作模式R13寄存器一种习惯用法,常用作堆栈指针SP(StackPointer),也可使用其他的寄存器作为堆栈指针,在Thumb指令集中,某些指令强制使用R13作为堆栈指针。在应用程序初始化时,一般都要初始化每种模式下的R13,使其指向该工作模式的栈空间不同物理寄存器的区分。R14寄存器也称寄存器LR(LinkRegister)•当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份•BLLabel;下一条指令地址LR,LabelPC当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值其他情况下,R14用作通用寄存器R13_<mode>R14_<mode>mode为:usr、fiq、irq、svc、abt、und例如:•R13_usr、R13_fiq、R13_irq•R14_svc、R14_abt、R14_und3)程序计数器R15(PC)R15寄存器R15寄存器用作程序计数器(PC)在ARM状态下,位[1:0]为0,位[31:2]用于保存PC在Thumb状态下,位[0]为0,位[31:1]用于保存PC由于ARM体系结构采用了多级流水结构,对于ARM指令集而言,PC总是指向当前执行指令的下两条指令的地址,即PC的值为当前执行指令的地址值加8个字节。R15也可用作通用寄存器,但一般不这么使用。因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。4)CPSR寄存器用作CPSR(CurrentProgramStatusRegister)CPSR可在任何工作模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。异常模式下有一个专用的物理状态寄存器,称为SPSR(SavedProgramStatusRegister),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。用户模式和系统模式不属于异常模式,没有SPSR。5.Thumb状态下的寄存器Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集程序可以直接访问•8个通用寄存器(R7~R0)•程序计数器(PC)•堆栈指针(SP)•连接寄存器(LR)•CPSR:在每一种异常模式下都有一组SP、LR和SPSR6.程序状态寄存器程序状态寄存器的构成一个当前程序状态寄存器(CPSR)五个备份程序状态寄存器(SPSR):备份的程序状态寄存器用来进行异常处理程序状态寄存器的功能:保存ALU中的当前操作信息,控制允许和禁止中断,设置处理器的工作模式。标志位N当用两个补码表示的带符号数进行运算时N=1表示运算结果为负数N=0表示运算结果为正数或零标志位ZZ=1表示运算结果为零;Z=0表示运算结果为非零标志位V对于加/减法运算指令,当操作数和运算结果为补码表示的带符号数时,V=1表示符号位溢出对于其他的非加/减运算指令,V的值通常不改变标志位C加法运算(包括比较指令CMN):•当运算结果产生了进位时(无符号数溢出),C=1,否则C=0减法运算(包括比较指令CMP):•当运算时产生了借位(无符号数溢出),C=1,否则C=0对于包含移位操作的非加/减运算指令,C为移出值的最后一位对于其他的非加/减运算指令,C的值通常不改变中断禁止位I和FI=1禁止IRQ中断;I=0允许IRQ中断F=1禁止FIQ中断;F=0允许IRQ中断运行状态控制位T对于ARMv5及以上的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态对于ARMv5及以上的非T系列处理器,当该位为1时,执行下一条指令以引起未定义指令异常;当该位为0时,表示运行于ARM状态工作模式位M[4:0]这些位决定了处理器的工作模式7.ARM微处理器的寻址方式1)立即寻址:操作数本身就在指令中2)寄存器寻址:利用寄存器中的数值作为操作数3)寄存器间接寻址:以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中4)基址寻址:寄存器(该寄存器一般称作基址寄存器)的容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址5)相对寻址:相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址6)多寄存器寻址:采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送,最多传送16个通用寄存器的值例如•LDMIAR0!,{R1,R2,R3,R4};R1←[R0],R0=R0+4•;R2←[R0],R0=R0+4•;R3←[R0],R0=R0+4•;R4←[R0],R0=R0+4指令后缀IA表示在每次执行操作后R0按字长度增加注意:在寄存器列表中同一寄存器仅能指定一次;加载/存储操作按照寄存器固定次序进行,所以寄存器排列先后关系随意。多寄存器寻址(块拷贝寻址)(特别注意!!!)IA:IncrementAfter,操作完成后地址递增;IB:IncrementBefore,地址先递增后完成操作;DA:DecrementAfter,操作完成后地址递减;DB:DecrementBefore,地址先递减后完成操作7)堆栈寻址:堆栈按先进后出(FILO)的工作方式寻址。8.指令格式<opcode>{<cond>}{S}<Rd>,<Rn>{,operand2}opcode:指令助记符,如ADD,LDR,STRcond:执行条件,如NE,EQS:是否影响CPSR的值Rd:目标寄存器Rn:第一操作数寄存器operand2:第二操作数•灵活使用第二操作数能够提高代码质量例子:ADDEQSR0,R1,#0x3f1)指令助记符2)指令条件域条件执行当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行当指令的执行条件满足时,指令被执行,否则忽略条件码每一条ARM指令包含4位的条件码,位于指令码的最高4位[31:28]条件码共有15种,每种条件码可用两个字符表示,这两个字符可添加在指令助记符的后面。下面的实例多研究下!!!实例1C代码:if(a>b)a++;elseb++;ARM代码:CMPR0,R1ADDHIR0,R0,#1ADDLSR1,R1,#1C代码:if((a!=10)&&(b!=20))a=a+b;ARM代码:CMPR0,#10CMPNER1,#20ADDNER0,R0,R1实例2if((a==10)&&(b!=20))a=a+b;ARM指令:CMPR0,#10CMPEQR1,#20ADDNER0,R0,R1?第四章1.常用的几种存储器SRAM(静态随机存储器):存储密度小,6管结构,占用较大芯片面积,价格较高,功耗较高,容量较小,存取速度快,接口时序简单。DRAM(动态随机存储器):存储密度大,单管结构,单位存储成本较低,功耗较低,容量较大,接口时序复杂,需要刷新电路。EEPROM:非挥发,存储密度小,单位存储成本较高,容量小,写入有限制,页写要等待,接口时序简单,一般采用串行接口,小量存储。Flash(闪存存储器):非挥发,存储密度大,单位存储成本较低,容量大,接口时序复杂——需要擦除及Block写,NORFlash&NANDFlash。FRAM(铁电存储器):非挥发,功耗低,读写速度快,接口时序简单,类似SRAM接口,成本高。并行接口存储器:引脚数目多——三大总线•地址、控制总线•数据总线(8/16/32位)存储容量大•适用于大容量存储场合存取速度快接口时序复杂,编程透明串行接口存储器引脚数目极少存储容量较小•适用于较小存储容量场合存取速度较慢使用串行接口通信,接口标准化,编程不透明•I2C、SPI•可以用软件通过GPIO模拟2.S3C44B0x的存储分配一共有8个Bank:Bank0~Bank5可接ROM(Flash)、SRAM存储器,Bank6~Bank7可接FPM/EDO/SDRAM存储器支持两种端格式的存储器:Big/LittleEndian如何支持多种存储器字宽的引导ROM?OM引脚,外部连接决定引导ROM的字宽如何支持多种存储器字宽的其他存储器?在引导ROM里对其他存储器进行配置3.建立/保持时间表征时钟边沿触发时数据需要在锁存器的输入端持续的时间建立时间在时钟信号边沿到来之前,数据信号必须提前一段时间保持稳定有效保持时间在时钟信号边沿到来之后,数据信号必须在随后的一段时间保持稳定有效所有数据信号在时钟信号边沿(触发器采集)前/后一段时间必须满足建立/保持时间的要求性能和鲁棒性的折中,一定的裕量。第五章1.总线概述总线设备类型主设备(Master)•启动一个总线周期(总线事务)•每次只能有一个主设备控制总线•例:CPU、DMAC等等从设备(Slave)•响应主设备的请求•同一时间里有一个或多个从设备响应主设备的请求•例:DMAC、UART控制器、USB控制器、I2C控制器、SPI控制器等等2.总线仲裁集中式仲裁由中央仲裁器裁决,每个主设备有两条线接到中央仲裁器•一条是送往仲裁器的总线请求线•另一条是仲裁器送出的总线授权线采用集中式仲裁的总线•AMBA(AdvancedMicrocontrollerBusArchitecture)、PCI总线等•主要是系统总线采用这种仲裁方式分布式仲裁主设备都有自己的仲裁号和仲裁器,不需要中央仲裁器。当有总线请求且总线空闲时,则把惟一的仲裁号发到共享的仲裁总线上,以优先级策略为基础,以获胜者的仲裁号保留在仲裁线上(OC、OD门)采用分布式仲裁的总线•CAN、I2C总线等•主要是通信总线采用这种仲裁方式3.总线分类按传输关系分类主从结构(Master/Slave)•只有主设备才能启动数据传输,协议简单•单主设备–USB、RS485——无需仲裁•多主设备–PCI、AMBA、Wishbone»集中式总线仲裁器–I2C、CAN»分布式位仲裁对等结构•每个设备都可以启动数据传输,协议复杂•以太网–介质访问控制方式——CSMA/CD•令牌网(总线、环)–介质访问控制方式——令牌•RS485——令牌•IEEE13944.PCI总线(PeripheralComponentInterconnect)是一种同步的独立于处理器之外的32/64位系统总线PCI总线支持32/64位地址/数据总线PCI从设备必需的信号是47根,PCI主设备必需的信号是49根必需信号可分为五组•系统信号、地址和数据信号、接口控制信号、仲裁信号(主设备具有)和错误信号可选信号也可分为五组•64位扩展信号、接口控制信号、中断信号和JTAG、边界扫描信号1)系统信号CLK:输入,时钟信号(Clock)•为PCI设备提供时钟信号•除了RST#、INTA#、INTB#、INTC#、INTD#、PME#、CLKRUN#以外,其它所有PCI信号在时钟上升沿进行采样判决RST#:输入,复位信号(Reset)•为PCI设备提供异步(与时钟无关)复位信号•复位信号RST#有效后,设备处于给定的初始状态2)地址和数据信号AD[31:0]:主设备输出地址,主设备输入输出数据•32位地址数据线(AddressandData)•地址和数据线是分时复用的PAR:主设备输出•偶校验(Parity)•校验信号包括AD[31:0]和C/BE[3:0]#•以出现“1”的个数的奇偶性进行判决C/BE[3:0]#:主设备输出•总线命令或者字节使能(BusCommandandByteEnables)•在总线事务的地址段,该信号定义总线命令•在总线事务的数据段,该信号定义字节使能–C/BE[0]#使能字节0,C/BE[1]#使能字节1–C/BE[2]#使能字节2,C/BE[3]#使能字节33)接口控制信号FRAME#:主设备输出•总现事务启动信号(CycleFrame)•有效,表明总线事务开始和数据传输正在进行中•无效,表明总线事务处于最后一个数据段或者已经完成IRDY#:主设备输出•主设备就绪(InitiatorReady)•用于控制主设备的传输速率–当IRDY#无效时则总线事务插入等待周期TRDY#:从设备输出•从设备就绪(TargetReady)•用于控制从设备的传输速率–当TRDY#无效时则总线事务插入等待周期STOP#:从设备输出•从设备请求停止总线事务(Stop)•从设备请求主设备停止当前总线事务IDSEL#:主设备输出•选择芯片(InitializationDeviceSelect)•用于配置空间读/写事务DEVSEL#:主设备输入输出•设备选择(DeviceSelect)•作为输出信号,用于选择从设备•作为输入信号,表明是否有设备被选中4)仲裁信号REQ#:主设备输出,仲裁器输入•总线请求信号(Request)GNT#:仲裁器输出,主设备输入•总线授权信号(Grant)5)错误报告信号PERR#:•数据校验错(ParityError)•PCI总线事务(特殊周期除外)数据校验错误SERR#:•系统错误(SystemError)•PCI特殊周期命令地址校验错误、数据校验错误,或者其它灾难性系统错误5.总线命令A.总线读读事务包括两个部分,一个地址段和若干个数据段地址段开始FRAME#有效,也表示读总线事务开始地址段时期AD[31:0]包含有效地址C/BE[3:0]表明了当前总线命令地址段一般持续一个时钟(双地址周期持续两个时钟)数据段开始在地址段之后接着就是数据段数据段时期数据段可能有多个,一个数据段传输一拍数据,一个数据段持续一个或者多个时钟AD[31:0]包含需要读的数据C/BE[3:0]表明了当前传输数据的字节使能情况数据段有效,IRDY#和TRDY#同时有效转换周期(turnaround-cycle)在地址段和数据段之间需要一个转换周期由信号TRDY#无效进行确认最后一个数据段主设备知道哪一个数据段是最后一个数据段主设备使IRDY#有效的同时使FRAME#无效,用来告诉从设备这是最后一个数据段B.总线写写事务也包括两个部分,一个地址段和若干个数据段地址段开始FRAME#有效,也表示写总线事务开始地址段时期AD[31:0]包含有效地址C/BE[3:0]表明了当前总线命令地址段一般持续一个时钟(双地址周期持续两个时钟)数据段开始在地址段之后接着就是数据段数据段时期数据段可能有多个一个数据段传输一拍数据一个数据段持续一个或者多个时钟AD[31:0]包含需要写的数据C/BE[3:0]表明了当前传输数据的字节使能情况数据段有效IRDY#和TRDY#同时有效最后一个数据段主设备知道哪一个数据段是最后一个数据段主设备使IRDY#有效的同时使FRAME#无效,用来告诉从设备这是最后一个数据段。6.RS232C通信接口7.RS485总线8.机械电气特性(记住他们的特性!!!)USB规定义了四种传输控制(Control)传输——所有设备都支持•双向,查询、配置USB设备批量(Bulk)传输——低速设备不支持•单向,数据量大、突发性强的传输,延时不确定中断(Interrupt)传输•单向,少量、分散、不可预测传输,延迟短等时(Isochronous)传输——低速设备不支持•单向,实时、不可靠传输,延时确定第六章1.接口电路的基本组成2.3.I/O数据传送方式查询•最简单、最可靠的数据传送方式中断•嵌入式系统最常用的数据传送方式直接存访问(DMA)•批量数据传送方式4.需要关注的几个问(1)关键字static关键字static有三个作用在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变在文件域(但在函数体外),一个被声明为静态的变量可以被文件域所有函数访问,但不能被文件域外其它函数访问。它是一个本地的全局变量在文件域,一个被声明为静态的函数只可被这一文件域的其它函数调用。那就是,这个函数被限制在声明它的文件的本地围使用C语言中static的语义1.static局部变量a.静态局部变量在函数定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数使用。退出该函数后,尽管该变量还继续存在,但不能使用它。b.基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。2.static变量全局全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。非静态全局变量的作用域是整个源程序(多个源文件可以共同使用);而静态全局变量则限制了其作用域,即只在定义该变量的源文件有效,在同一源程序的其它源文件中不能使用它。3.static函数(也叫部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于一般的非静态函数(外部函数)(2)关键字const(3)关键字volatile(4)访问绝对地址(5)死循环5.S3C44B0X的GPIO接口6.GPIO应用7.UART接口7.部件编程1)串口初始化串口初始化的操作步骤一般步骤第一步:设置波特率除数因子寄存器(UBRDIV0/1)以确定发送/接收波特率第二步:设定通信的数据格式(ULCON0/1),即数据位长度、奇偶校验位、停止位个数第三步:设置FIFO控制(UFCON0/1),启用FIFO使能,并分别设置发送/接收FIFO触发中断/DMA级别第四步:设置MODEM控制(UMCON0/1),是否使用自动流控第五步:设置数据传送方式(UCON0/1),是采用查询方式、中断方式还是DMA方式,并使能串口控制器,设置接收超时、接收错误中断实例:voiduart_init(void)//串口初始化{UBRDIV0=BRD;//19200bpsULCON0=0x03;//帧长度8位,停止位1位,无校验UFCON0=0x21;//启用FIFO,发送FIFO触发级别为空,//接收FIFO触发级别为12字节UCON0=0x0C5;//接收中断/查询允许,发送中断/查询允//许,允许接收错误中断、接收超时中断}2)查询通信方式查询通信的思想循环读取串口状态,以决定收发(数据收发!!!URXH0和UERSTAT0)发送数据(以UART0为例)•CPU写字符到发送保持寄存器UTXH0,则此时发送保持寄存器非空,因此发送接收状态寄存器UTRSTAT0.b1=0•当发送保持寄存器空时(数据发送出去),则UTRSTAT0.b1=1,CPU可以写入新的字符发送程序设计•发送时不断检测UTRSTAT0.b1即可接收数据(以UART0为例)接收过程•首先,数据串入接收移位寄存器•然后,去掉奇偶校验、起始位和停止位•最后,数据进入接收保持寄存器URXH0,同时UTRSTAT0.b0=1,若出错,则UERSTAT0(反映错误的原因)相应位会置1接收程序设计•接收时先检测UTRSTAT0.b0(是否有数据)•然后检测UERSTAT0(是否存在错误)3)中断通信方式4)DMA通信方式Word文档
/
本文档为【武汉理工大学嵌入式复习重点】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索