基础知识的介绍:

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的值等于取指位置

最佳流水线:
没有访存,中断,跳转(可控)