什么是嵌入式系统 嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 嵌入式CPU分类 通用型嵌入式微处理器 微控制器 可扩展开发平台 嵌入式DSP处理器EDSP 可编程片上系统SOC 嵌入式单核/多核处理器 ARM处理器的基本组成 嵌入式硬件系统 & 嵌入式软件系统 嵌入式系统的硬件组成 1) CPU 2) 外围电路:I/O接口控制器电路、时钟电路、各式总线 等 3) 外部设备:RAM、ROM、Flash闪存、键盘、LED、液晶屏、触摸屏、手写笔 等 嵌入式系统的软件组成:含操作系统的嵌入式软件(LOSES) & 不含操作系统的嵌入式软件(NOSES) ARM数据对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据。显然在读取效率上下降很多。
ARM大端序小端序 ARM支持两种端序,大端序和小端序。端序选择由硬件引脚接线决定,默认设置为小端序(字节最低位存储在内存最低位) 七种处理器模式 用户模式 USR 正常程序执行模式 快中断模式 FIQ 支持高速数据传输或通道处理
中断模式 IRQ 用于通道中断处理 管理模式 SVC 操作系统保护模式 中止模式 ABT 实现虚拟存储器和/或存储器保护 未定义模式 UND 支持硬件协处理器的软件仿真 系统模式 SYS 运行特权级的操作系统任务
特权模式:除用户模式以外,其余6种模式称之为特权模式(Privileged Modes),当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的
异常模式:除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes), 常用于处理中断或异常,以及需要访问受保护的系统资源等情况
转变方式:用指令将特定的位序列写入到CPSR的M[4:0]字段(最低5位) ARM7两种工作状态 ARM 状态是 32 位指令,Thumb 状态是 16 位指令。 进入 Thumb 状态:执行 BX 指令,当操作数寄存器最低位为 1 时,可以使微处理器从 ARM 状态切换到 Thumb 状态(处理器工作在 Thumb 状态,如果发生异常并进入异常处理子程 序,则异常处理完毕返回时,自动从 ARM 状态切换到 Thumb 状态)。 进入 ARM 状态:执行 BX 指令,当操作数寄存器最低位为 0 时,可以使微处理器从 Thumb 状态切换到 ARM 状态(处理器工作在 Thumb 状态,如果发生异常并进入异常处理子程序, 则进入时处理器自动从 Thumb 状态切换到 ARM 状态)。 ARM寄存器的组织 共有37个32位寄存器,其中31个通用寄存器,6个状态寄存器,编程时按照模式不同采用不同分组的寄存器组 p60 R0-R3:a1-a4 R4-R11:v1-v8 R9-R11:SB,SL,FP R12-R15:IP(写入寄存器),SP(栈指针),LR(链接指针),PC ARM7TDMI含义 T:支持Thumb指令 D:可线上调试(JTAG) M:8位乘法器 I:Embedded ICE 逻辑单元,实现断点观测,变量观测 流水线 三级流水线:取值,译码,执行(PC=当前+8,Thumb+4) 五级流水线:取值,译码,执行,数据缓冲,写回 ARM寻址方式 寄存器寻址,立即寻址,移位寄存器寻址,寄存器间接寻址,变址寻址,多寄存器寻址,堆栈寻址,快拷贝寻址,相对寻址
LSL:逻辑左移,LSR:逻辑右移,ASR:算术右移,ROR:循环右移,RRX:扩展循环右移 ARM体系结构 低档处理器多采用哈佛结构,高档处理器多采用冯·诺伊曼结构。 哈佛结构 即数据存储空间和程序存储空间分离 较大的程序存储器(用于固化已调试好的控制程序) 较小的数据存储器(用于存放少量的随机数据——高速)
异常与中断 5个异常类型:复位,未定义指令,软件中断SWI,指令预取异常,数据访问中止 2个中断异常:外部中断请求,快速中断请求 响应过程:
- 将CPSR中的内容保存到将要执行的异常中断模式的SPSR中
- 设置当前程序状态寄存器CPSR中的模式字段位,改变处理器模式
- 将异常发生时程序的下一条指令地址保存到新的异常模式的R14(未定义指令,软件中断SWI,指令预取异常LR+4、数据访问中止,外部中断请求,快速中断请求LR+8)
返回过程:
- 所有修改过的用户寄存器必须从处理程序的保护栈中恢复
- 恢复被中断程序在被终端时刻的CPSR寄存器,即将SPSR_mode恢复到CPSR中
- 返回到发生异常中断的指令位置或异常中断的下一条指令,即LR_mode经过减法计算复制到PC中
- 清除CPSR的终端禁止标志位(I,T)
指令
|