计算机硬件系统主要运算器、控制器、存储器、输入输出设备组成。 冯·诺依曼结构
冯诺依曼结构采用单存储空间,程序指令和数据公用一个存储空间,使用单一的数据和地址总线,取指令和取操作数都是通过一条总线分时进行的。并且当进行高速运算是,会造成数据传输通道的瓶颈现象,其工作速度较慢。
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,从而提高了执行速度,提高了数据的吞吐率 DRAM:动态随机读写存储器,SRAM:静态随机读写存储器。SRAM的特点是工作速度快,只要电源不撤除,写入SRAM的信息就不会消失,不需要刷新电路,同时在读出时不破坏原来存放的信息,一经写入可多次读出,但集成度较低,功耗较大。DRAM集成度较高,功耗较低,但缺点是保存在DRAM中的信息随着电容器的漏电而会逐渐消失,一般信息保存时间为2ms左右。为了保存DRAM中的信息,必须每隔1~2ms对其刷新一次。因此,采用
DRAM的计算机必须配置动态刷新电路,防止信息丢失 RISC:精简指令集,CISC:复杂指令集 CISC:–优点:指令越多功能越强,强调代码效率,容易和高级语言接轨。可以对存储器直接操作,实现从存储器到存储器的数据转移,可加入DSP指令。 ldr(loader):读取存储器中的数据到寄存器 LDR R0,[R1];将存储器地址为R1的子数据读入寄存器R0,str(store)将寄存器中的数据保存到存储器中 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; 清零在入口处置位的中断禁止标志。
抛出异常之后,自动触发中断。中断的处理代码会修复异常,然后返回
固件(Firmware)就是写入EROM或EPROM(可编程只读存储器)中的程序,通俗的理解就是“固化的软件”,
固件担任着一个系统最基础最底层工作的软件。 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
;R3减R1并影响标志位 MUL R3,R2,R1
; R3=R2×R1MLA R3,R2,R1,R0 ; R3=R2×R1 + R0 B指令为简单的跳转指令,不附带其它功能。跳转范围限制在当前指令的±32M字节地址内 带链接的分支指令——BL指令除了具有跳转功能,还能在跳转之前将下一条指令的地址拷贝到R14(即LR) 链接寄存器中,它适用于子程序调用。跳转范围限制在当前指令的±32M字节地址内。 带状态切换的分支指令——BX指令除了具有跳转功能,还能在跳转的同时切换处理器状态。其跳转范围不受限制。 软件中断产生指令:SWI
|
|