嵌入式系统期末复习

更新时间:2024-02-03 14:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《嵌入式系统期末复习》

嵌入式系统源于微型计算机,是嵌入到对象体系中,实现嵌入对象智能化的计算机。

嵌入式系统的定义:嵌入到对象体系中的计算机中的专用计算机应用系统。(考试时一定要答到这一点)

基本特点(3个):嵌入性 内含计算机 专用性

{对嵌入式系统的定义多种多样,但没有一种定义是全面的。下面给出两种比较合理定义:

从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。(如果是简答题可以写一些)

嵌入式处理器可以分为以下几大类:

? 嵌入式微处理器; ? 嵌入式微控制器; ? 嵌入式DSP处理器; ? 嵌入式片上系统(SOC)。

嵌入式的运用领域:嵌入式系统在很多产业中得到了广泛的应用并逐步改变着这些产业,包括工业自动化、国防、运输和航天领域。例如

1

神州飞船和长征火箭中肯定有很多嵌入式系统,导弹的制导系统也是嵌入式系统,高档汽车中也有多达几十个嵌入式系统。

在日常生活中,人们使用各种嵌入式系统,但未必知道它们。事实上,几乎所有带有一点“智能”的家电(全自动洗衣机、电脑电饭煲…)都是嵌入式系统。嵌入式系统广泛的适应能力和多样性,使得视听、工作场所甚至健身设备中到处都有嵌入式系统。 基本概念

中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到: 1. 在前后台系统中,程序回到后台程序;

2. 对非占先式内核而言,程序回到被中断了的任务;

3. 对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。 时钟节拍

时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同应用,一般在10ms到200ms之间。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍率越快,系统的额外开销就越大。 RISC结构特性

RISC是精简指令集计算机的缩写,其目标是设计出在高时钟

2

频率下单周期执行,简单而有效的指令集。ARM内核采用RISC体系结构,因此具有RISC的结构特点:

1. 2. 3.

具有大量的通用存储器;

独特的装载/保存(load-store)结构; 简单的寻址模式;

4. 统一和固定长度的指令格式。 ARM体系结构

为了使ARM能够更好地满足嵌入式应用的需要,ARM体系结构还有以下特点:

? 每条数据处理指令可同时包含算术逻辑单元(ALU)的运算和移位处理,实现ALU和移位器的最大利用; ? 使用地址自增和自减的寻址方式优化程序循环;

? 装载/保存指令对数据的批量传输,实现最大数据吞吐量; ? 大多数指令的条件执行,实现最快速的代码执行。 存储器的字与半字

从偶数地址开始的连续2个字节构成一个半字; 以能被4整除的地址开始的连续4个字节构成一个字; ARM指令的长度刚好是一个(字),Thumb指令的长度刚好是一个(半字)。 ARM7TDMI

PC?0x4000 ADD PC,PC,#4 执行ADD PC,PC,#4指令后,PC

0x4004 的值为多少?

3

0x4008 0x400C

分析: 程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则:

PC值=当前程序执行位臵+8

注:ARM状态时,每条指令为4字节长。 PC指向0x4000地址,取指ADD指令。 PC指向0x4004地址,译码ADD指令

PC指向0x4008地址,执行ADD指令,所以指令执行的结果

为: PC=PC+4=0x4008+4=0x400C。。 ARM处理器状态

ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集

和Thumb指令,并且各自对应1种处理器的状态:

? ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;

? Thumb状态:16位,处理器执行半字方式的Thumb指令。

注意:两个状态之间的切换并不影响处理器模式或寄存器内容。 状态切换的一个例子

使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。

从ARM状态切换到Thumb状态的程序代码如下:

4

CODE32

LDR R0, =Lable+1 ;Lable跳转地址标号,地址最低位为1,表示切换到Thumb状态

BX R0; 执行完BX指令,处理器切换到ARM状态,开始执行ARM指令 CODE16

Lable MOV R1, #12

从状态Thumb切换到ARM状态的程序代码如下: CODE16

LDR R0, =Lable BX R0 CODE32

Lable MOV R1, #10

ARM处理器模式

ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。 ARM内部寄存器

在ARM处理器内部共有37个用户可访问的寄存器,分成两大类,分别为31个通用32位寄存器和6个状态寄存器。

5

ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。

寄存器R0~R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。

寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。

在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。

寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。

寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。

寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:

? 当使用BL指令调用子程序时,返回地址将自动存入R14中;

? 当发生异常时,将R14对应的异常模式版本设臵为异常返回地址(有些异常有一个小的固定偏移量)。

寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。 寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。

6

ARM和Thumb状态切换过程

1. 系统复位,自动切换到ARM状态。

2. 通过BX和BLX指令改变当前处理器模式,使之从ARM状态切换到Thumb状态。

3. 在Thumb状态下,正常程序执行时产生中断异常。 4. 处理器进入中断异常,自动的将模式切换到ARM状态。 5. 异常处理完毕,返回正常程序,此时处理器自动的将模式切换到Thumb状态。

6. 再次通过BX和BLX指令改变当前处理器模式,使之从Thumb状态切换到ARM状态。

ARM内核包含1个CPSR和5个仅供异常处理程序使用的

SPSR。CPSR反映当前处理器的状态,其包含:

? 4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V );

? 2个中断禁止位(IRQ禁止与FIQ禁止); ? 5个对当前处理器模式进行编码的位(M[4:0]); ? 1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。

条件代码标志

各标志位的含义如下:

? 负标志N:运算结果的第31位值,记录标志设臵操作的结果; ? 零标志Z:如果标志设臵的操作为0,则臵位;

7

? 进位标志C:记录无符号加法溢出,减法无借位,循环移位; ? 溢出标志V:记录标志设臵操作的有符号溢出。 处理器状态位T;

当控制位T臵位时,处理器正在Thumb状态下运行 当控制位T清零时,处理器正在ARM状态下运行。 当控制位I臵位时,IRQ中断被禁止; 当控制位F臵位时,FIQ中断被禁止。

警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。 存储器系统有两种映射机制:

小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。 大端存储器系统:在大端格式中,数据的高字节存放在低地址中。 小端存储模式下,0x12345678在A地址开始的一个字空间的存储(1); 0x12 0x78 0x34 0x56 0x56 0x34 0x78 0x12 (1) (2)

大端存储模式下,0x12345678在A地址开始的一个字空间的存储(2); ARM体系的异常 异常的进入

? 将异常处理程序的返回地址(加固定的偏移量)保存到相应异

8

常模式下的LR;

? 将CPSR的当前值保存到相应异常模式下的SPSR; ? 设臵CPSR为相应的异常模式;

? 设臵PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行; 异常的退出

当异常处理程序结束时,异常处理程序必须:

? 返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC; ? 将SPSR的值复制回CPSR;

? 清零在入口处臵位的中断禁止标志。

1.MOV指令与LDR指令都是往目标寄存器中传送数据,但是它们有什么区别吗?

MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。LDR指令用于从内存中读取数据放入寄存器中。 2.以下8位图立即数是否合法? 0x0103C000 ×

0x12800000 可以由0x4A循环右移10位得到 3.请列举2个8位图立即数? 0x4000003B(0xED循环右移2位)

9

0x0016C000(0x5B循环右移18位) ? Rm,shift——寄存器移位方式 例如:

ADD R1,R1,R1,LSL #3 ;R1=R1+R1*8=9R1 SUB R1,R1,R2,LSR R3 ;R1=R1-(R2/2R3)

4.用R1寄存器的最低字节替换掉R2寄存器的最低字节,并不影响条件标志位?

AND R1,R1,#0x000000FF AND R2,R2,#0xFFFFFF00 ORR R2,R2,R1

5. 使用MSR和MRS指令,通过修改CPSR寄存器,实现打开/关闭IRQ中断的两个子程序,注意不能影响其它位? ;子程序:使能IRQ中断 Enable_IRQ

MRS R0, CPSR BIC R0, R0,#0x80 MSR CPSR_c,R0 MOV PC,LR

;1.将CPSR寄存器内容读出到R0; ;2.修改对应于CPSR中的I控制位; ;子程序:禁能IRQ中断 Disable_IRQ

10

MRS R0 CPSR ORR R0, R0,#0x80 MSR CPSR_c,R0 MOV PC,LR

;3.将修改后的值写回 CPSR寄存器的对应控制域; ;4.返回上一层函数;

6.请使用NOP伪指令、比较指令、条件跳转指令等完成一个软件延时子程序,延时长度由R0寄存器的数值控制? Delay

NOP ;空操作 NOP NOP

SUBS R0,R0,#1 ;循环次数减一

BNE Delay ;如果循环未结束,跳转Delay继续 MOV PC,LR ;子程序返回

ARM芯片可以存在片内和片外存储器,这些存储器本身不具有地址信息,它们在芯片中的地址是由芯片厂家或用户分配的,那么给物理存储器分配逻辑地址的过程称为存储器映射。通过这些逻辑地址就可以访问到相应存储器的物理存储单元。 AHB和VPB

AHB(先进的高性能总线)和VPB(VLSI外设总线)外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字

11

节,这样就简化了每个外设的地址译码。

注意:外设寄存器的地址都是字对齐。AHB 和VPB外设区域中不管是字还是半字,都是一次性访问。例如不可能对一个字寄存器的最高字节执行单独的读或写操作。

引导块(Boot Block)是芯片设计厂家在LPC2000系列ARM内部固化的一段代码,用户无法修改或删除。这段代码在芯片复位后被首先运行,其功能主要是:

? 判断运行哪个存储器上的程序; ? 检查用户代码是否有效; ? 判断芯片是否被加密;

? 芯片的在应用编程(IAP)以及在系统编程功能(ISP)。

异常向量表的重映射

异常向量表可以来自四个不同的区域:Boot Block、片内Flash、片内RAM和外部存储器。微控制器可以执行这些存储器中的代码。 除了片内Flash的向量表位于0x0000~0x003F地址上,其他存储器的向量表都不位于这个地址。为了能让ARM内核通过访问0x0000~0x003F地址访问到其他存储区域的向量表,这样向量表必须进行重映射。 时钟系统

时钟是计算机系统的脉搏,处理器核在一拍接一拍的时钟驱动下完成指令执行、状态变换等动作。

12

外设部件在时钟的驱动下进行着各种工作,比如串口数据的收发、A/D转换、定时器计数等。

所以时钟对于一个计算机系统是至关重要的,通常时钟系统出现问题也是最致命的,比如振荡器不起振、振荡不稳、停振等。 唤醒定时器与时钟的关系

唤醒定时器检测到有效时钟信号后,计数4096个时钟脉冲,并在这段时间里初始化系统硬件。如芯片满足运行条件(Flash初始化完成、外部复位信号已撤除等),接通系统时钟,处理器开始执行指令。 总之,LPC2000系列芯片的唤醒定时器是根据晶振的情况来执行最短时间的复位,它在处理器从掉电模式中唤醒或发生了任何复位时激活。

? 外部存储器控制器(EMC)特性 1.支持静态存储器映射器件;

2. 4个存储器组(Bank0 ~ Bank3)可单独配臵,每个存储器组可访问16M字节空间; 3.总线空闲周期可编程;

4.可对静态RAM器件的读写等待时间进行编程; 5.可编程外部数据总线宽度——8位、16位和32位。 GPIO

使用GPIO注意要点

? 引脚设臵为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;

13

? 大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA); ? 复位后默认所有GPIO为输入模式。 使用定时器的注意要点

? 定时计数器(TC)本身不能产生中断,只有与匹配寄存器发生匹配后才能引起中断事件;

? 在定时器匹配发生后,可以不停止定时器工作,而动态修改匹配寄存器的值;

? 定时器使用匹配功能的同时,还可以使用捕获功能,而不必分时使用;

? 定时器计数时钟频率 = Fpclk / (PR+1) 使用SPI接口的注意要点

? 作主机时,SSEL引脚必须接上拉电阻,不能作为IO口使用; ? 作主机时,在发送一字节数据的同时接收一字节数据; ? SPI时钟分频值必须大于或等于8;

? 数据寄存器与内部移位寄存器之间没有缓冲区,写SPDR会使数据直接进入移位寄存器。因此数据只能在上一次数据发送完成后写入SPDR寄存器。 使用A/D转换器的注意要点

? AD转换器的时钟不能大于4.5MHz;

? 使用MAT引脚触发AD转换启动时,相应的MAT信号不必输出到引脚。使用MAT引脚触发的方法,可以实现AD转换定时启

14

动;

? BURST模式下,每次转换结束后立即开始下一路的转换,所以BURST模式具有最高的效率;

? 软件模式下,SEL字段中只能有一位臵位,如果多位臵位,将使用最低有效位。 实时时钟

LPC2000系列微控制器内部集成了一个功能完整的实时时钟模块,它具有如下特性:

? 带有日历和时钟功能; ? 超低功耗设计;

? 提供秒、分、小时、日、月、年和星期;

? 可编程基准时钟分频器允许调节RTC以适应不同的晶振频率。

最小系统

一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。

15

本文来源:https://www.bwwdw.com/article/un5w.html

Top