初识ARM cotex—A9


1) 电阻的作用

[上拉电阻]

       接在电源和参考点之间的电阻
       (1) 作用:  使参考点的电平默认为高电平

[下拉电阻]
       接在地和参考点之间的电阻
       (1) 作用:  使参考点的电平默认为低电平


2) 局部性原理

程序执行时,访问的数据和执行的指令往往在一个局部范围内。

3)bus
       可以接多个设备的一组线叫总线
       
       (1) CPU总线
           CPU(ALU和控制器)连接内存和IO设备的一组线, 用于传输: 地址、数据和控制
           地址线
           数据线
           控制线
           
       (2) 单总线(ARM)
           内存和IO设备接在相同cpu总线上,表现为:
           1. 内存和IO设备在同一地址空间(0 - 4G)
           2. 访问内存和IO设备的方法一样(指令相同)
           
       (3) 多总线(x86)
           内存和IO设备接在不同组cpu总线上,表现为:
           1. 内存和IO设备在不在同一地址空间(0 - 4G)
           2. 访问内存和IO设备的方法一样(不同指令)

4)RISC & CISC

RISC (精简指令集): 可以不用硬件实现的功能,就用软件实现。

CISC(复杂指令集):硬件可以实现的功能,都由硬件实现。

5)ARM处理器八种工作模式

(1).正常运行

user                       运行应用程序

system                   运行内核中的进程上下文

SVC 运行操作系统的管理代码

(2)中断运行

IRQ(中断请求) 运行普通的设备中断

FIQ(快速中断请求)用于快速或安全设备的中断

(3)异常处理

Abort  读取指令或数据储存失败时,运行处理程序的模式

Undefined  Instruction      解析指令时,发现指令非法,运行处理程序的模式

(4)Monitor

Coetex-A 安全模式

6)权限

user非特权模式

其它 特权模式

7)寄存器

概念:  软硬件接口,也是存储单元。CPU内核寄存器,也是存储单元,CPU利用寄存器的名字中的编号来访问寄存器。

功能:    R0——R15通用寄存器

R0——R7 非备份寄存器

R8——R14 备份寄存器

R13 (SP) 栈指针寄存器

R14(LR)   保存返回地址寄存器

R15(PC)  Program  Count  (正在读取的指令的地址)

CPSR 状态寄存器

SPSR  备份状态寄存器

8)    CPSR         

状态标识位(ALU运算时产生)
             
(1)N  

计算的结果是否为负数(保存下来的结果的最高位)
                  1               负数
                  0               正数
                  
                  例: 2 - 3 = -1         N = 1
                      0000 0000 0000 0000 0000 0000 0000 0010
                     +1111 1111 1111 1111 1111 1111 1111 1101
                     -----------------------------------------
                      1
                      
                      2 - 1 = 1          N = 0
                      0000 0000 0000 0000 0000 0000 0000 0010
                     +1111 1111 1111 1111 1111 1111 1111 1111
                     -----------------------------------------
                     10
                  
                  int x, y
                  ....
                  if (x > y)
                     
             
(2) Z  

计算的结果是否为0(保存下来的结果)
                  1                为0
                  0                为非0
                  例: 2 - 2 = 0          Z = 1
                      0000 0000 0000 0000 0000 0000 0000 0010
                     +1111 1111 1111 1111 1111 1111 1111 1110
                     -----------------------------------------
                     10
                  
                  int x, y
                  ...
                  if (x == y)
                  
             
(3) C  

加法运算中,是否有进位

                  1           进位
                  0           不进位
                  
                  减法运算中,是否有借位
                  1           没有借位
                  0           有借位
                  
                  例: 2 - 3 = -1         C = 0
                  
                      0000 0000 0000 0000 0000 0000 0000 0010
                     +1111 1111 1111 1111 1111 1111 1111 1101
                     -----------------------------------------
                      1
                      
                      2 - 3 = -1         C = 0
                      0000 0000 0000 0000 0000 0000 0000 0010
                     -0000 0000 0000 0000 0000 0000 0000 0011
                     -----------------------------------------
                     
                 unsigned int x, y;
                 ...
                 if (x > y)       
                      
             
(4)V  

计算的结果是否超出补码的范围()
                 1           超出补码的范围
                 0           没有超出补码的范围
                 例: 0x7fffffff - (-1) = -2^31   V = 1
                     0 0111 1111 1111 1111 1111 1111 1111 1111
                    +0 0000 0000 0000 0000 0000 0000 0000 0001
                    ------------------------------------------
                     0 1                                     0
                 
                     -2^31 - 1                   V = 1
                     
                     -2^31 +(-2^31)              V = 1
                     
                     -1 + -1                     V = 0
                     1 1111 1111 1111 1111 1111 1111 1111 1111
                     1 1111 1111 1111 1111 1111 1111 1111 1111
                     -----------------------------------------
                     1 1                                    10
                     
                 总结:
                 如果运算的结果为负数(保存), 并且V = 1, 说明原本(实际)的结果为正数
                                 正数或0         V = 1,                       负数
                                 
           I位      屏蔽IRQ中断
           F位      屏蔽FIQ中断
           T位      1             表示正在运行thumb指令,处于thumb状态
                    0                         ARM            ARM
           模式位   0 - 4bit


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值