版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-作者xxxx-日期xxxx武汉理工大学嵌入式复习重点【精品文档】第一章1. 嵌入式系统的定义:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。2. 3.4.嵌入式系统的特点:嵌入专用Ø 嵌入式处理器与通用处理器的最大不同就是嵌入式处理器嵌入在针对特定应用设计的系统中综合性强Ø 嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一个技术密集、资金密集、知识高度分散、不断创新的知识集成系统设计高效Ø 可裁剪嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣
2、、去除冗余程序固化Ø 软件一般都固化在存储器芯片或处理器本身中,这样提高了系统的执行速度和可靠性需要独立的开发系统Ø 嵌入式系统本身不具备自举开发能力,必须有一套开发工具和环境才能进行开发生命周期长Ø 嵌入式系统和具体应用结合在一起,其升级换代一般与具体产品同步进行,因此具有较长的生命周期可靠性高、成本低、资源受限、功耗低等等第二章1嵌入式设计方法的演变硬件设计的进步Ø 旧方法:选择和使用标准通用集成电路器件Ø 新方法:自己设计和制作部分专用的集成电路器件 由各种EDA工具软件提供支持的软件设计的进步Ø 旧方法:无操作系统Ø
3、 新方法:基于操作系统设计 简化多任务、实时、复杂软件设计第三章(3.7以后是重点,第三章前面的都不考。从3.7往后看)ARM微处理器支持7种工作模式Ø User-用户模式(usr) ARM处理器正常的程序执行状态Ø System-系统模式(sys) 运行具有特权的操作系统任务Ø IRQ-外部中断模式(irq) 用于通用的中断处理Ø FIQ-快速中断模式(fiq) 用于高速数据传输或通道处理Supervisor-管理模式(svc) 操作系统使用的保护模式 复位、软中断调用(SWI)Ø Abort-中止模式(abt) 当数据或指令预取中止时进入该
4、模式 可用于虚拟存储及存储保护Ø Undefined-未定义指令模式(und) 当未定义的指令执行时进入该模式 可用于支持硬件协处理器的软件仿真特权模式Ø 除用户模式以外,其余6种模式称之为特权模式(Privileged Modes),当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。异常模式Ø 除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况通过软件改变 系统调用 通过外部中断或异常处理改变 外部中断:IRQ、FIQ 来自中断控制器 异常处理 来自CPU内部工
5、作模式的改变举例ØSWI软件中断指令 SWI 0x0 ; 调用0号软中断 SWI 0x12 ; 调用12号软中断ØIRQ外部中断 _irq void HandlerTIMER5(void) timeval+; / 当前时刻递增 pIC->I_ISPC = INT_TIMER5; / 清除中断请求位 3.ARM微处理器的工作状态一般有两种Ø 第一种为ARM状态 处理器执行32位的ARM指令 ARM指令要求字对齐Ø 第二种为Thumb状态 处理器执行16位的Thumb指令 Thumb指令要求半字对齐工作状态切换Ø 在程序的执行过程中,处理器可
6、以随时在两种工作状态之间切换,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容ARM微处理器在开始执行代码时总是处于ARM状态,也就是复位后进入ARM状态工作状态切换方法Ø 进入Thumb状态 执行BX指令 BX:带状态切换的跳转指令 当操作数寄存器的最低位0为1时,可以使微处理器从ARM状态切换到Thumb状态 BX R0 ;R0的最低位0为1 处理器工作在Thumb状态,如果发生异常并进入异常处理子程序,则异常处理完毕返回时,自动从ARM状态切换到Thumb状态工作状态切换举例B LabelCMP R1, #0BEQ LabelADRL R0, ThumbFun+
7、1BX R0BLX Label4. ARM处理器的寄存器37个32位寄存器 31个通用寄存器 6个状态寄存器Ø 这些寄存器不能被同时访问 取决于处理器的 工作状态 工作模式1)通用寄存器Ø 通用寄存器包括R0R15Ø 可以分为三类2)未分组寄存器R0R7未分组寄存器R0R7在所有的工作模式下,每个未分组寄存器都指向对应的一个物理寄存器。在中断或异常处理进行工作模式转换时,由于不同的处理器工作模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏分组寄存器R8R14分组寄存器R8R14ØR8R12 每个寄存器对应2个不同的物理寄存器 当使用FIQ模式时,
8、访问R8_fiqR12_fiq 当使用其他模式时,访问R8_usrR12_usrØR13、R14 每个寄存器对应6个不同的物理寄存器 其中一个寄存器是用户模式与系统模式共用 另外5个物理寄存器对应于其他5种不同的工作模式R13寄存器Ø 一种习惯用法,常用作堆栈指针SP(Stack Pointer),也可使用其他的寄存器作为堆栈指针,在Thumb指令集中,某些指令强制使用R13作为堆栈指针。在应用程序初始化时,一般都要初始化每种模式下的R13,使其指向该工作模式的栈空间不同物理寄存器的区分。R14寄存器Ø 也称链接寄存器LR (Link Register) 当执行B
9、L子程序调用指令时,R14中得到R15(程序计数器PC)的备份 BL Label;下一条指令地址à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
10、、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(Current Program
11、 Status Register)ØCPSR可在任何工作模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。异常模式下有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。用户模式和系统模式不属于异常模式,没有SPSR。5. Thumb状态下的寄存器Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集Ø 程序可以直接访问 8个通用寄存器(R7R0) 程序计数器(PC) 堆栈指针(SP)
12、 连接寄存器(LR) CPSR:在每一种异常模式下都有一组SP、LR和SPSR6. 程序状态寄存器程序状态寄存器的构成Ø 一个当前程序状态寄存器(CPSR)Ø 五个备份程序状态寄存器(SPSR):备份的程序状态寄存器用来进行异常处理程序状态寄存器的功能:保存ALU中的当前操作信息,控制允许和禁止中断,设置处理器的工作模式。标志位N当用两个补码表示的带符号数进行运算时Ø N=1 表示运算结果为负数Ø N=0 表示运算结果为正数或零标志位ZZ=1 表示运算结果为零;Z=0 表示运算结果为非零标志位V对于加/减法运算指令,当操作数和运算结果为补码表示的带符号数
13、时,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Ø 对于ARM v5及以上的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态&
14、#216; 对于ARM v5及以上的非T系列处理器,当该位为1时,执行下一条指令以引起未定义指令异常;当该位为0时,表示运行于ARM状态工作模式位M4:0Ø 这些位决定了处理器的工作模式7. ARM微处理器的寻址方式1)立即寻址:操作数本身就在指令中2)寄存器寻址:利用寄存器中的数值作为操作数3)寄存器间接寻址:以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中4)基址寻址:寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址 5)相对寻址:相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到
15、操作数的有效地址6)多寄存器寻址:采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送,最多传送16个通用寄存器的值Ø 例如 LDMIA R0!, R1, R2, R3, R4 ; R1R0,R0=R0+4 ; R2R0,R0=R0+4 ; R3R0,R0=R0+4 ; R4R0,R0=R0+4Ø 指令后缀IA表示在每次执行操作后R0按字长度增加Ø 注意:在寄存器列表中同一寄存器仅能指定一次;加载/存储操作按照寄存器固定次序进行,所以寄存器排列先后关系随意。多寄存器寻址(块拷贝寻址)(特别注意!)IA:Increment After,操作完成后地址递增;n I
16、B:Increment Before,地址先递增后完成操作;n DA:Decrement After,操作完成后地址递减;n DB:Decrement Before,地址先递减后完成操作7)堆栈寻址:堆栈按先进后出(FILO)的工作方式寻址。<opcode><cond>S <Rd>, <Rn>, operand2Ø opcode: 指令助记符,如ADD, LDR, STRØ cond: 执行条件,如NE, EQØ S: 是否影响CPSR的值Ø Rd: 目标寄存器Ø Rn: 第一操作数寄存器
17、6; operand2: 第二操作数 灵活使用第二操作数能够提高代码质量Ø 例子:ADDEQS R0, R1, 0x3f1)指令助记符2)指令条件域条件执行当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行当指令的执行条件满足时,指令被执行,否则忽略条件码每一条ARM指令包含4位的条件码,位于指令码的最高4位31:28条件码共有15种,每种条件码可用两个字符表示,这两个字符可添加在指令助记符的后面。下面的实例多研究下!实例1Ø C代码: if (a>b) a+; else b+;Ø ARM代码: CMP R0,
18、R1Ø ADDHI R0, R0, #1Ø ADDLS R1, R1, #1Ø C代码: if (a!=10)&&(b!=20) a=a+b;Ø ARM代码: CMP R0, #10Ø CMPNE R1, #20Ø ADDNE R0, R0, R1实例2if (a=10)&&(b!=20)a=a+b;ARM指令:CMP R0, #10CMPEQ R1, #20ADDNE R0, R0, R1?第四章SRAM(静态随机存储器):存储密度小,6管结构,占用较大芯片面积,价格较高,功耗较高,容量较小,存取速度
19、快,接口时序简单。DRAM(动态随机存储器):存储密度大,单管结构,单位存储成本较低,功耗较低,容量较大,接口时序复杂,需要刷新电路。EEPROM:非挥发,存储密度小,单位存储成本较高,容量小,写入有限制,页写要等待,接口时序简单,一般采用串行接口,小量参数存储。Flash(闪存存储器):非挥发,存储密度大,单位存储成本较低,容量大,接口时序复杂需要擦除及Block写,NOR Flash & NAND Flash。FRAM(铁电存储器):非挥发,功耗低,读写速度快,接口时序简单,类似SRAM接口,成本高。并行接口存储器:Ø 引脚数目多三大总线 地址、控制总线 数据总线(8/1
20、6/32位)Ø 存储容量大 适用于大容量存储场合Ø 存取速度快Ø 接口时序复杂,编程透明串行接口存储器Ø 引脚数目极少Ø 存储容量较小 适用于较小存储容量场合Ø 存取速度较慢Ø 使用串行接口通信,接口标准化,编程不透明 I2C、SPI 可以用软件通过GPIO模拟一共有8个Bank: Bank0Bank5可接ROM(Flash)、SRAM存储器,Bank6Bank7可接FPM/EDO/SDRAM存储器n 支持两种端格式的存储器:Big/Little Endiann 如何支持多种存储器字宽的引导ROM?Ø OM引脚,外
21、部连接决定引导ROM的字宽n 如何支持多种存储器字宽的其他存储器?Ø 在引导ROM里对其他存储器进行配置表征时钟边沿触发时数据需要在锁存器的输入端持续的时间n 建立时间Ø 在时钟信号边沿到来之前,数据信号必须提前一段时间保持稳定有效n 保持时间Ø 在时钟信号边沿到来之后,数据信号必须在随后的一段时间内保持稳定有效所有数据信号在时钟信号边沿(触发器采集)前/后一段时间内必须满足建立/保持时间的要求性能和鲁棒性的折中,一定的裕量。第五章总线设备类型Ø 主设备(Master) 启动一个总线周期(总线事务) 每次只能有一个主设备控制总线 例:CPU、DMAC等等
22、Ø 从设备(Slave) 响应主设备的请求 同一时间里有一个或多个从设备响应主设备的请求 例: DMAC、UART控制器、USB控制器、I2C控制器、SPI控制器等等2总线仲裁集中式仲裁Ø 由中央仲裁器裁决,每个主设备有两条线接到中央仲裁器 一条是送往仲裁器的总线请求线 另一条是仲裁器送出的总线授权线Ø 采用集中式仲裁的总线 AMBA(Advanced Microcontroller Bus Architecture)、PCI总线等 主要是系统总线采用这种仲裁方式分布式仲裁Ø 主设备都有自己的仲裁号和仲裁器,不需要中央仲裁器。当有总线请求且总线空闲时,则
23、把惟一的仲裁号发到共享的仲裁总线上,以优先级策略为基础,以获胜者的仲裁号保留在仲裁线上(OC、OD门)Ø 采用分布式仲裁的总线 CAN、I2C总线等 主要是通信总线采用这种仲裁方式按传输关系分类Ø 主从结构(Master/Slave) 只有主设备才能启动数据传输,协议简单 单主设备 USB、RS485无需仲裁 多主设备 PCI、AMBA、Wishbone» 集中式总线仲裁器 I2C、CAN» 分布式位仲裁Ø 对等结构 每个设备都可以启动数据传输,协议复杂 以太网 介质访问控制方式CSMA/CD 令牌网(总线、环) 介质访问控制方式令牌 RS48
24、5令牌 IEEE13944.PCI总线(Peripheral Component Interconnect)是一种同步的独立于处理器之外的32/64位系统总线PCI总线支持32/64位地址/数据总线Ø PCI从设备必需的信号是47根,PCI主设备必需的信号是49根Ø 必需信号可分为五组 系统信号、地址和数据信号、接口控制信号、仲裁信号(主设备具有)和错误报告信号Ø可选信号也可分为五组 64位扩展信号、接口控制信号、中断信号和JTAG、边界扫描信号1)系统信号ØCLK:输入,时钟信号(Clock) 为PCI设备提供时钟信号 除了RST#、INTA#、INT
25、B#、INTC#、INTD#、PME#、CLKRUN#以外,其它所有PCI信号在时钟上升沿进行采样判决ØRST#:输入,复位信号(Reset) 为PCI设备提供异步(与时钟无关)复位信号 复位信号RST#有效后,设备处于给定的初始状态2)地址和数据信号Ø AD31:0:主设备输出地址,主设备输入输出数据 32位地址数据线(Address and Data) 地址和数据线是分时复用的ØPAR:主设备输出 偶校验(Parity) 校验信号包括AD31:0和C/BE3:0# 以出现“1”的个数的奇偶性进行判决C/BE3:0#:主设备输出 总线命令或者字节使能(Bus C
26、ommand and ByteEnables) 在总线事务的地址段,该信号定义总线命令 在总线事务的数据段,该信号定义字节使能 C/BE0#使能字节0,C/BE1#使能字节1 C/BE2#使能字节2,C/BE3#使能字节33)接口控制信号ØFRAME#:主设备输出 总现事务启动信号(Cycle Frame) 有效,表明总线事务开始和数据传输正在进行中 无效,表明总线事务处于最后一个数据段或者已经完成ØIRDY#:主设备输出 主设备就绪(Initiator Ready) 用于控制主设备的传输速率 当IRDY#无效时则总线事务插入等待周期TRDY#:从设备输出 从设备就绪(Ta
27、rget Ready) 用于控制从设备的传输速率 当TRDY#无效时则总线事务插入等待周期ØSTOP#:从设备输出 从设备请求停止总线事务(Stop) 从设备请求主设备停止当前总线事务ØIDSEL#:主设备输出 选择芯片(Initialization Device Select) 用于配置空间读/写事务ØDEVSEL#:主设备输入输出 设备选择(Device Select) 作为输出信号,用于选择从设备 作为输入信号,表明是否有设备被选中4)仲裁信号ØREQ#:主设备输出,仲裁器输入 总线请求信号(Request)ØGNT#:仲裁器输出,主设备
28、输入 总线授权信号(Grant)5)错误报告信号ØPERR#: 数据校验错(Parity Error) PCI总线事务(特殊周期除外)数据校验错误ØSERR#: 系统错误(System Error) PCI特殊周期命令地址校验错误、数据校验错误,或者其它灾难性系统错误5总线命令A总线读读事务包括两个部分, 一个地址段和若干个数据段地址段开始ØFRAME#有效,也表示读总线事务开始地址段时期 AD31:0包含有效地址 C/BE3:0表明了当前总线命令地址段一般持续一个时钟(双地址周期持续两个时钟)数据段开始在地址段之后接着就是数据段数据段时期数据段可能有多个,一个数
29、据段传输一拍数据,一个数据段持续一个或者多个时钟Ø AD31:0包含需要读的数据Ø C/BE3:0表明了当前传输数据的字节使能情况数据段有效,IRDY#和TRDY#同时有效n 转换周期(turnaround-cycle)Ø 在地址段和数据段之间需要一个转换周期Ø 由信号TRDY#无效进行确认最后一个数据段Ø 主设备知道哪一个数据段是最后一个数据段Ø 主设备使IRDY#有效的同时使FRAME#无效,用来告诉从设备这是最后一个数据段B总线写写事务也包括两个部分,一个地址段和若干个数据段地址段开始ØFRAME#有效,也表示写总线事
30、务开始n 地址段时期Ø AD31:0包含有效地址Ø C/BE3:0表明了当前总线命令Ø 地址段一般持续一个时钟(双地址周期持续两个时钟)数据段开始Ø 在地址段之后接着就是数据段n 数据段时期Ø 数据段可能有多个Ø 一个数据段传输一拍数据Ø 一个数据段持续一个或者多个时钟Ø AD31:0包含需要写的数据Ø C/BE3:0表明了当前传输数据的字节使能情况数据段有效ØIRDY#和TRDY#同时有效n 最后一个数据段Ø 主设备知道哪一个数据段是最后一个数据段Ø 主设备使IRDY#有效
31、的同时使FRAME#无效,用来告诉从设备这是最后一个数据段。7. RS485总线(记住他们的特性!)USB规范定义了四种传输Ø 控制(Control)传输所有设备都支持 双向,查询、配置USB设备Ø 批量(Bulk)传输低速设备不支持 单向,数据量大、突发性强的传输,延时不确定Ø 中断(Interrupt)传输 单向,少量、分散、不可预测传输,延迟短Ø 等时(Isochronous)传输低速设备不支持 单向,实时、不可靠传输,延时确定第六章2. 3I/O数据传送方式查询 最简单、最可靠的数据传送方式Ø 中断 嵌入式系统最常用的数据传送方式
32、16; 直接内存访问(DMA) 批量数据传送方式4. 需要关注的几个问题n (1)关键字static关键字static有三个作用Ø 在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变Ø 在文件域内(但在函数体外),一个被声明为静态的变量可以被文件域内所有函数访问,但不能被文件域外其它函数访问。它是一个本地的全局变量Ø 在文件域内,一个被声明为静态的函数只可被这一文件域内的其它函数调用。那就是,这个函数被限制在声明它的文件的本地范围内使用C语言中static的语义a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。b.基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。非静态全局变量的作用域是整个源程序(多个源文件可以共同使用)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防疫工作先进事迹简介(6篇)
- 《供配电技术》6.9 教案
- 景区讲解员实习总结(11篇)
- 有关校园安全的演讲稿范文(33篇)
- 幼儿园生命教育的教案6篇
- 销售公司总经理年会发言稿
- 企业为居民供水合同
- 山西省长治市(2024年-2025年小学五年级语文)人教版竞赛题(上学期)试卷及答案
- 2024年民航运输项目资金筹措计划书代可行性研究报告
- 高考生物复习教案生命活动的调节
- 小学生汉语拼音田字格练习
- 《旅行社经营与管理》教学课件汇总全套电子教案(完整版)
- 消防工程技术标书(暗标)
- DBJ∕T 15-138-2018 建筑电气防火检测技术规程
- 北师大版数学七年级上册期中测试题【含答案】(共4套)
- 2022年WABCO防抱死系统
- 离婚登记申请受理回执单(民法典版)
- 《过敏性休克》PPT课件(PPT 32页)
- 宿舍管理制度及台账
- 多吃健脑食物,预防老年痴呆症
- 清洗效果监测方法--ppt课件
评论
0/150
提交评论