炮制了一篇,基本是拿来主义,不算技术,只能算杂谈。
主要来源是脑中的记忆和《主流ARM嵌入式系统设计技术与实例精解》,欢迎指正。
*******************************************************************************
关于嵌入式
*******************************************************************************
嵌入式应用的特点:功能特定,规模灵活,实时稳定
类别:MCU, MPU, DSP, SoC
硬件:核心 + 外围接口
软件:Bootloader, Kernel & Driver, File System & Application
Bootloader是嵌入式系统的启动代码,主要用来初始化处理器、传递内核启动参数给内核,
使得内核可以按照传递的参数启动。通常还具有搬运内核代码到RAM并跳转到内核代码地址
执行的功能。
内核主要进行进程管理、进程间通信和同步、内存管理和IO资源管理。
驱动,一般作为内核的一部分,主要给上层应用程序提供通过处理器外设接口控制器和外
设进行通信的媒介。
嵌入式OS: Windows CE, Linux, Plam OS, Symbian OS, VxWorks, uCOS, pSOS,
Nucleus, EPOC等
RSIC的典型特点:所有指令宽度相同,所有指令都单周期执行(许多实现并不严格尊从,
比如ARM处理器),指令流水线
*******************************************************************************
关于ARM
*******************************************************************************
ARM处理器系列
ARM7, ARM9, ARM9E, ARM10E, SecurCore, ARM11
ARM内核功能模块:
T(Thumb,支持Thumb指令)
D(Debug,JTAG,可使CPU进入调试模式,从而设置断点,进行单步调试)
I(Embedded ICE,实现断点和变量观测的逻辑电路部分,包括TAP控制器)
M(Multiplier,8位乘法器)
E(DSP Enhancement,提供某些DSP指令)
J(Jazelle DBX,Java加速模块,甚至可以直接执行某些JAVA指令)
S(softcore,可综合的软核)
ARM处理器工作模式
共支持7种工作模式,具体取决于体系结构的版本,模式对应了异常向量表。
+----------+----------+--------------------+
| 普通模式 | | 用户模式 |
+----------+ 正常模式 +--------------------+
| | | 系统模式 |
| |----------+--------------------+
| | | 快速中断模式 |
| | +--------------------+
| | | 外部中断模式 |
| 特权模式 | 异常模式 +--------------------+
| | | 特权模式 |
| | +--------------------+
| | | 数据访问中止模式 |
| | +--------------------+
| | | 未定义指令中止模式 |
+----------+----------+--------------------+
注: 此处正常模式和普通模式是我生造的术语,没有确定是否存在,各位请暂且忽略。
ARM异常处理过程
ARM的异常,包括复位、未定义指令、软件中断、数据访问中止、外部中断请求、快
速中断请求。
处理过程:
1) 保存现场,包括处理器当前状态、中断屏蔽位、CPSR寄存器的各条件标志位(
复制到SPSR)
2) 设置CPSR中相应的位
3) 将R14寄存器设置成返回地址,最后将PC设置成该异常的异常向量地址,执行
异常处理。
4) 由异常返回,先恢复处理器状态(SPSR->CPSR),然后返回到发生异常中断
指令的下一条指令处执行,通过将对应模式下连接寄存器R14中的值装载到PC
ARM寄存器
ARM共有37个寄存器,其中31个通用寄存器和6个状态寄存器,都是32位寄存器,但状
态寄存器只使用了其中的12位。
ARM处理器中当前可见的寄存器组和处理器当前工作模式是有关。每种模式都有一组
对应的寄存器组,各寄存器组中任意时刻可见的寄存器包括程序计数器,15个通用寄
存器(R0-R14)以及一个或两个状态寄存器
通用寄存器分三类:
未备份寄存器R0-R7,所有处理器模式下都只同一个物理寄存器。
备份寄存器R8-R14
R8-R12每个有两个不同的物理寄存器
R13,R14每个六个不同的物理寄存器,系统模式和用户模式共用一个
R13通常叫做堆栈指针
R14通常被称为连接寄存器(LR)
程序计数器PC:PC值为当前指令地址加8字节,即当前指令的下两条指令的地址。
由于ARM每条指令都是32字节长度,所以是字对齐的,即PC低两位为0。
程序状态寄存器
CPSR(当前程序状态寄存器),任何模式都可访问。
SPSR(备份程序状态寄存器),各模式专有
ARM的存储系统
ARM为单地址空间,大小为2^32个8位字节,。ARM是大小端可配置的,默认为小端。
快速上下文切换技术(FCSE)通过修改系统中不同进程的虚拟地址,避免在进程间切
换时造成的虚拟地址到物理地址的重映射,从而提高了性能。通常FCSE位于CPU和MMU
之间。
ARM最小系统
通常包括Boot选择,电源,复位,时钟,存储器,JTAG接口等电路部分,通常把最小
系统做成多层核心板(先调稳定了),把外围接口板设计成双层板,然后将这两个系
统用一个接口连接起来。