分享

嵌入式

 嗳伱^_^诶^_^ 2012-10-21

计算机硬件系统主要运算器、控制器、存储器、输入输出设备组成。

·诺依曼结构

冯诺依曼结构采用单存储空间,程序指令和数据公用一个存储空间,使用单一的数据和地址总线,取指令和取操作数都是通过一条总线分时进行的。并且当进行高速运算是,会造成数据传输通道的瓶颈现象,其工作速度较慢。

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,从而提高了执行速度,提高了数据的吞吐率

DRAM:动态随机读写存储器,SRAM:静态随机读写存储器。SRAM的特点是工作速度快,只要电源不撤除,写入SRAM的信息就不会消失,不需要刷新电路,同时在读出时不破坏原来存放的信息,一经写入可多次读出,但集成度较低,功耗较大。DRAM集成度较高,功耗较低,但缺点是保存在DRAM中的信息随着电容器的漏电而会逐渐消失,一般信息保存时间为2ms左右。为了保存DRAM中的信息,必须每隔12ms对其刷新一次。因此,采用 DRAM的计算机必须配置动态刷新电路,防止信息丢失

RISC:精简指令集,CISC复杂指令集

CISC优点:指令越多功能越强,强调代码效率,容易和高级语言接轨。可以对存储器直接操作,实现从存储器到存储器的数据转移,可加入DSP指令。
缺点:指令太多不易记忆;CPU内部结构复杂造成频率不高;指令执行速度慢。
RISC
优点:指令少容易记忆,尽量将操作码和操作数用116位数或32位数表示,指令整齐。CPU时钟频率可以做得很高,指令执行速度快。
缺点:同样功能的程序,产生的代码量比较大;不能对存储器直接访问,不能实现存储器到存储器的数据转移。

ldrloader):读取存储器中的数据到寄存器   LDR R0[R1];将存储器地址为R1的子数据读入寄存器R0strstore)将寄存器中的数据保存到存储器中      STR R0[R1];R0的数据保存到R1指定的地址中。

BootLoader在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

主流ARM处理器属于32位。字对齐分配四个存储空间

T支持高密度16位的Thumb指令集 ;       D支持片上调试;

M支持64位乘法;                        I支持EmbededICE观察硬件;

从偶数地址开始的连续2个字节构成一个半字;

以能被4整除的地址开始的连续4个字节构成一个字;

Stach: 栈,一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。

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

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

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

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

寄存器R15称为程序计数器(PC),它指向正在取指的指令。

寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器程序状态保存寄存器(SPSR可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR

异常响应:

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

CPSR的当前值保存到相应异常模式下的SPSR

设置CPSR为相应的异常模式;

设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行。

异常返回:

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

SPSR的值复制回CPSR

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

地址

异常

进入时的模式

进入时I的状态

进入时F的状态

0x00000000

复位

管理

禁止

禁止

0x00000004

未定义指令

未定义

I

F

0x00000008

软件中断异常

管理

禁止

F

0x0000000C

中止(预取)

中止

I

F

0x00000010

中止(数据)

中止

I

F

0x00000014

保留

保留

0x00000018

IRQ

中断

禁止

F

0x0000001C

FIQ

快速中断

禁止

禁止

异常或入口

返回指令

返回地址

 

SWI

MOVS PC,R14_svc

R14

 

未定义的指令

MOVS PC,R14_und

R14

 

预取中止

SUBS  PC,R14_abt,#4

R144

 

快速中断

SUBS  PC,R14_fiq,#4

R144

 

中断

SUBS  PC,R14_irq,#4

R144

 

数据中止

SUBS  PC,R14_abt,#8

R148

 

复位

 

抛出异常之后,自动触发中断。中断的处理代码会修复异常,然后返回

固件(Firmware)就是写入EROMEPROM(可编程只读存储器)中的程序,通俗的理解就是固化的软件,  固件担任着一个系统最基础最底层工作的软件。

ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。

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

程序状态寄存器   CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是异常  中断模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。 

§         小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。

§         大端存储器系统: 在大端格式中,数据的高字节存放在低地址中。

并行口与串行口的区别是交换信息的方式不同,并行口能同时通过8条数据线传输信息,一次传输一个字节;而串行口只能用1条线传输一位数据,每次传输一个字节的一位。并行口由于同时传输更多的信息,速度明显高于串行口,但串行口可以用于比并行口更远距离的数据传输。

指令:LSL逻辑左移(低位空出的位补0   LSR逻辑右移(高位空出的位补0

ASR算术右移(保持符号位不变)          ROR循环右移

RRX带扩展的循环右移(右移1位,高位空出的位用原C标志值填充)

ADD:加法运算ADD  R3,R1, #0x08    ;R3=R1+8

ADC:带进位加法运算SUB:减法运算RSB:逆向减法运算

SBC:带进位减法运算RSC:带进位逆向减法运算

AND:逻辑运算AND R3,R1, #0xFF    ;R3=R1 & 0x000000FF

ORR :逻辑运算ORR     R3,R1, R2    ;R3=R1|R2

EOR:逻辑异或运算EOR    R3,R1, R2,LSL 0x03   ;R3=R1 ^ (R2 ×8)

BIC:位清除运算CMP     R3,R1     ;R3R1并影响标志位

MUL  R3,R2,R1     ; R3=R2×R1MLA R3,R2,R1,R0     ; R3=R2×R1 + R0

B指令为简单的跳转指令,不附带其它功能。跳转范围限制在当前指令的±32M字节地址内

带链接的分支指令——BL指令除了具有跳转功能,还能在跳转之前将下一条指令的地址拷贝到R14(LR) 链接寄存器中,它适用于子程序调用。跳转范围限制在当前指令的±32M字节地址内。

带状态切换的分支指令——BX指令除了具有跳转功能,还能在跳转的同时切换处理器状态。其跳转范围不受限制。

软件中断产生指令:SWI

 

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多