基础知识的介绍:
1, 学习层面: 硬件+driver
2, 冯.诺依曼体系: 基本上大部分pc(科研或许不同)都是使用这种
特点:
a,采用二进制(机器码),数据和程序采用二进制表示
b,必须事先存储程序
c,PC指针驱动代码执行,指向一个地址,指令流驱动程序执行
d,五大部件: 运算器+控制器+存储器+输入设备+输出设备
3,CPU = CU + ALU
CPU: 解释并执行指令的功能部件
CU : 从内存中取指令和数据,译码并发出各种控制信号
ALU: 逻辑运算器
4,嵌入式系统的硬件系统
电源:基本都是用电设备,12v 1.25A-->3.3v / 5v,电源的稳定性对系统的影响是很大的
时钟系统:时序电路,什么时候做什么事情--》12M--》667MH
复位电路:系统处于一个确定状态
调试接口:基于JTAG接口,产品是没有调试接口,主要是用于开发
存储器:一般分为片内和片外存储器
5,cpu中的接口:(画出cpu中arm core与控制器,外围电路的框图)
a, 抗干扰,增加驱动能力
b,实现控制电路
c,s5pv210的接口
6,三总线:armcore如何与外围设备进行通信和连接
CB :控制总线
DB :数据总线
AB :发地址去读数据
以上总线由时序来控制,不是同一时间,三根总线同时发数据
-------------------------------------
| | |
cpu I/O memory
总线很多:高速总线,低速总线,外部,内部
7,存储器分类:
ram: sram : 快一点,成本高点,作为片内
sdram : 动态,电荷需要刷新,类似于电视,作为外部内存条使用,比如ddr2, EDO
rom:非易失性
EPROM, EEPROM(可以擦除,但是需要特殊工具才能擦除)
bios芯片
flash:norflash: 或非电路,intel公司先发明
nandflash 与非电路, 89年,东芝发明
存储器的层次结构:core<-寄存器<-cache<--片内内存<--flash
arm的数据和指令的类型:
1, 数据和指令的形式: 二进制
2,数据和指令的长度: 64, 32, 16, 8bit(数据)32bit(arm态的指令) + 16bit(thumb态的指令)
3, 数据的存储方式: 字节序列
4, 数据读写和存储对齐(地址):字节对齐(地址为1的倍数), 半字对齐(地址为2的倍数),字对齐(地址为4的倍数)
arm的7种工作模式:
1, usr: 在访问资源的时候会有权限的限制: 如果是运行linux 应用程序,cpu就处于这个模式
2, system: 和usr模式类似,但是有特权
3, Supervisor: 管理者模式, 在上电复位阶段/ 软中断(swi)
4, Abort: 数据存储异常, 访问了非法地址
5, Undef : 未定义指令异常, 执行arm不能识别的指令, x86可执行程序运行在arm的cpu
6, FIQ/IRQ: 中断异常, 外部/内部的电平发生变化后打断了cpu的正常工作
寄存器:
r0-r12 : 所有模式都共用, 只有FIQ模式下有私有的寄存器: r8-r12
r13(sp)-r14(lr) : 每个模式下都是私有
r15(pc) : 只有一个
cpsr(当前状态寄存器): 只有一个
spsr(模式切换的时候用于保存cpsr): 各个模式下有一个
cpsr: fsxc: flag, system, extend, control
关注: flag: N: 负数位
Z: 零标志位: 1, 运算指令的结果为0 , 0: 运算指令的结果为非0
control: I : IRQ禁止位: 1: 禁止 0: 打开
F : FIQ禁止位: 1: 禁止 0: 打开
T : thumb态指令(16bit) 1: thum态 0: arm态
mode[4:0]: 模式位
User 0b10000
FIQ 快速中断请求模式 0b10001
IRQ 中断请求模式 0b10010
Supervisor 0b10011
Abort 0b10111
Undefined 0b11011
System 0b11111
Monitor Security Extensions 0b10110
流水线:
cpu执行代码的时候:
fetch取指令-->译码decode->执行
打饭->点菜->买单
pc的值等于取指位置
最佳流水线:
没有访存,中断,跳转(可控)