初学者须知的嵌入式基础知识(二)
嵌入式系统中的处理器通常分为四大类:
- 微处理器(Micro-Processor Unit,MPU)
嵌入式微处理器的基础是通用计算机中的CPU。
嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。
嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机。 - 微控制器(Micro-Controller Unit,MCU)
嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成存储器(少量ROM/EPROM、RAM或两者都有)、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口等各种必要功能模块。
和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。 - 数字信号处理器(Digital Signal Processor,DSP)
嵌入式数字信号处理器对系统结构和指令进行了特殊设计,采用哈佛结构,程序和数据分开存储,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。
在数字滤波、FFT、语音识别、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP。 - 嵌入式片上系统(System On Chip,SoC)
SoC的全称叫做:System-on-a-Chip,中文的的意思就是“把系统都做在一个芯片上”,如果在PC时代我们说一个电脑的核心是CPU,那么在智能终端时代,手机的核心就是这个SoC
一般认为SoC具有以下特点:
1、SoC应由可设计重用的IP核组成,IP核是具有复杂系统功能的能够独立出售的VLSI块;
2、IP核应采用深亚微米以上工艺技术;
3、SoC中可以有多个MPU、DSP、MCU或其复合的IP核。
在嵌入式系统中最常用的存储器类型分为三类:
- 1、随机存储器(Random Access Memory,RAM)
RAM能够随时在任一地址读出或写入内容。
RAM的优点是读/写方便、使用灵活;
RAM的缺点是不能长期保存信息,一旦停电,所存信息就会丢失。
RAM用于二进制信息的临时存储或缓冲存储。
RAM主要有两大类存储设备,即静态RAM(SRAM)和动态RAM(DRAM)。两者都是易失性存储器,它们之间的最大差别是存储于其中的数据的寿命。
(1)SRAM的存储单元电路是以双稳态电路为基础的,因此状态稳定,只要不掉电,信息就不会丢失。
(2)DRAM的存储单元是以电容为基础的,电路简单,集成度高,功耗小,但DRAM即使不掉电也会因电容放电而丢失信息,需要定时刷新。 - 2、只读存储器(Read-Only Memory,ROM)
ROM中存储的数据可以被任意读取,断电后,ROM中的数据仍保持不变,但不可以写入数据。
ROM在嵌入式系统中非常有用,常常用来存放系统软件(如ROM BIOS)、应用程序等不随时间改变的代码或数据。
ROM存储器按发展顺序可分为:掩膜ROM、可编程ROM(PROM)和可擦写可编程ROM(EPROM)。 - 3、介于两者之间的混合存储器
混合存储器既可以随意读写,又可以在断电后保持设备中的数据不变。混合存储设备可分为三种:
(1)EEPROM(Electrical Erasable Programmed Programmable ROM)
EEPROM是电可擦写可编程存储设备,与EPROM不同的是EEPROM是用电来实现数据的清除,而不是通过紫外线照射实现的。
EEPROM允许用户以字节为单位多次用电擦除和改写内容,而且可以直接在机内进行,不需要专用设备,方便灵活,常用作对数据、参数等经常修改又有掉电保护要求的数据存储器。
(2)NVRAM
NVRAM通常就是带有后备电池的SRAM。当电源接通的时候,NVRAM就像任何其他SRAM一样,但是当电源切断的时候,NVRAM从电池中获取足够的电力以保持其中现存的内容。
NVRAM在嵌入式系统中使用十分普遍,它最大的缺点是价格昂贵,因此,它的应用被限制于存储仅仅几百字节的系统关键信息。
(3)FLASH
Flash(闪速存储器,简称闪存)是不需要Vpp电压信号的EEPROM,一个扇区的字节可以在瞬间(与单时钟周期比较是一个非常短的时间)擦除。
Flash比EEPROM优越的方面是,可以同时擦除许多字节,节省了每次写数据前擦除的时间,但一旦一个扇区被擦除,必须逐个字节地写进去,其写入时间很长。
微处理器MPU体系结构
1、冯·诺依曼体系
数据和指令存于同一存储器中
2、哈佛体系
数据和程序分开存放
流水线结构
详细请看这篇博文嵌入式流水线以及数据存储的大小端,这里就不详细讲了
就是关于指令并行执行的问题
AMBA总线(Advanced Microcontroller BusArchitecture, AMBA)先进微控制器总线架构
AMBA总线支持将CPU、存储器和外围设备都制作在同一个系统板中。AMBA规格说明具体包含有两条总线:
一是高性能总线(Advanced High-performance Bus, AHB)是为高速传输而经过优化的,它直接连接到CPU上。AHB适用于高性能、高时钟的系统模块,它构成了高性能的系统骨干总线,其主要技术特性有支持流水线技术、突发传输、数据分割传输和多总线主控器等。
二是连接外设的外围设备总线(Advanced Peripheral Bus, APB),属于本地二级总线,通过桥连接器(简称为桥)与AHB相连,它主要用于不需要高性能流水线接口或不需要高带宽接口的设备互连。
相关知识:
DMA控制器
2路通用无需CPU干涉的DMA控制器,2路桥式DMA控制器。采用6种DMA请求的桥式DMA支持I/O到内存、内存到I/O、I/O到I/O; DMA之间可编程外部引脚优先级次序,突发传送模式提高到FPDRAM、EDODRAM和SDRAM的传送率
嵌入式系统的通信接口可以分为有线传输和无线传输两种:
有线传输接口包括传统的RS-232接口(串行UART接口)、通用串行总线(USB)接口、快速数据传输接口IEEE 1394、CAN总线、以太网(Ethernet)接口等;
无线传输接口包括红外线(IrDA)、GSM、GPRS与蓝牙(Bluetooth)接口等
其中UART提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其他使用RS-232C接口的串行设备进行通信。在嵌入式系统软件开发调试时,常常通过UART来进行各种输入/输出操作。
ARM指令集
ARM指令集总体分为6大类:
• 数据处理指令
• 跳转指令(转移指令)
• Load/Store指令
• 程序状态寄存器(PSR)访问指令
• 协处理器指令
• 异常中断指令
指令格式:
< opcode >{< cond >}{< S >}< Rd >< Rn >{< Operand2 >}
ARM微处理器指令集是加载/存储型(Load/Store)的,只有加载/存储(Load/Store)指令可以访问存储器,数据处理指令只对寄存器的内容进行操作
ARM指令寻址方式
- 1、立即寻址
也叫立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。
例如以下指令:
ADD R0,R0,#1 ;R0←R0+1
ADD R0,R0,#0x3f ;R0←R0+0x3f - 2、寄存器寻址
寄存器寻址就是利用寄存器中的数值作为操作数,指令中地址码给出的是寄存器编号。
例如以下指令:
ADD R0,R1,R2 ;R0←R1+R2 - 3、寄存器间接寻址
寄存器间接寻址就是以寄存器中的值作为操作数的地址(这个寄存器相当于指针的作用,在基址加变址的寻址方式中,它作为基址寄存器来存放基址地址),而操作数本身存放在存储器中。
例如以下指令:
ADD R0,R1,[R2] ;R0←R1+[R2]
LDR R0,[R1] ;R0←[R1]
STR R0,[R1] ;[R1]←R0 - 4、基址变址寻址
基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址,用于访问基址附近的存储器单元。
变址寻址方式可分为 :
(1)前变址模式
LDR R0,[R1,#4] ;R0←[R1+4]
(2)自动变址模式
LDR R0,[R1,#4]!;R0←[R1+4]、R1←R1+4
(3)后变址模式
LDR R0,[R1],#4 ;R0←[R1]、R1←R1+4
(4)偏移地址
LDR R0,[R1,R2] ;R0←[R1+R2]
LDR R0,[R1,R2,LSL#2] ;R0←[R1+R2 * 4] - 5、多寄存器寻址
多寄存器寻址又称为块拷贝寻址,是多寄存器传送指令Load/Store的寻址方式,Load/Store指令可把存储器中的一个数据块加载到多个寄存器中,也可把多个寄存器中的内容保存到存储器中。
例如以下指令:
LDMIA R0,{R1,R2,R3,R4} ;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12] - 6、相对寻址
与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。
以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:
BL NEXT ;跳转到子程序NEXT处执行
……
NEXT ;子程序入口地址
……
MOV PC,LR ;从子程序返回 - 7、堆栈寻址
堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针(SP)的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶 。
(1)根据堆栈指针位置,分为:
i)满堆栈(Full Stack):堆栈指针指向最后压入堆栈的数据;
ii)空堆栈(Empty Stack):堆栈指针指向下一个将要放入数据的空位置 ;
(2)根据堆栈的生成方式 ,分为:
i)递增堆栈(Ascending Stack):堆栈由低地址向高地址生成
ii)递减堆栈(Decending Stack):堆栈由高地址向低地址生成
ARM微处理器支持这四种类型的堆栈工作方式:
满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成;
满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成;
空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成;
空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成;
在ARM指令中,堆栈寻址也是通过Load/Store指令来实现的,例如:
STMFD SP! {R1-R7,LR} ;将R1~R7,LR入栈
LDMFD SP! {R1-R7,LR} ;数据出栈,放入
R1~R7,LR寄存器
在Thumb指令中,堆栈寻址通过PUSH/POP指令来实现,例如:
PUSH {R1-R7,LR} ;将R1~R7,LR入栈
POP {R1-R7,PC} ;数据出栈,放入R1~R7,
PC寄存器
S3C2410微处理器
S3C2410是韩国三星电子公司推出的另一款基于ARM920T内核的16/32位RISC嵌入式微处理器。该处理器主要面向手持式设备以及高性价比、低功耗的应用。该处理器采用0.18 μm CMOS制造工艺,内部采用了新的Advanced MicrocontrollerBus Architecture (AMBA)总线(AMBA2)
ARM920T核由ARM9TDMI、存储管理单元MMU和高速缓存三部分组成。其中,MMU可以管理虚拟内存,高速缓存由独立的16 KB地址和16 KB数据高速Cache组成。内部含有两个内部协处理器CP14和CP15。CP14用于调试控制,CP15用于存储系统控制以及测试控制。
ARM920T核原理框图
S3C2410微处理器片内外设结构图
NAND Flash控制器启动过程
1、复位完成
2、在自启动模式下,将NAND Flash中的前4KB的启动代码拷贝到4KB内部缓存中
3、将4KB内部缓存地址映射为bank0起始地址
4、微控制器执行4KB缓存中的启动代码