ARM学习笔记(未整理版)--day01

ARM裸机开发

主板-》芯片{主芯片(处理器ARM,V7架构的),存储芯片.....}
ARM内核(决定运算)与外设(不同公司是不同的)
分为内核编程的方法(ARM核心编程,按照ARM公司的标准来进行编程,内核编程手册)
    核心编程的体系结构,指令集,寄存器,汇编语言,异常处理
按照架构来分:按照内核来分
另一方面根据芯片手册来对外设编程
    接口技术

首先说核心编程:

用户模式与系统模式下
通用寄存器R0~R15:
R13:SP堆栈指针
栈与程序相反,程序中低地址向高地址,栈与这个相反是高地址向低地址延伸,栈的结构是先进后出,也是因为这一点需要堆栈指针R13保存栈顶的地址
压栈动作:先堆栈指针+4然后再存数据
R14:LR链接寄存器
库函数有固定地址,在函数调用的时候,会用到LR链接寄存器,比如mian函数调用printf的时候,在调用之前,把调用之前的地址存储到R14中
R15:程序计数器,PC寄存器
ARM指令32位等宽的,一条指令就占用4个字节,例如ADD存在0地址,MOV存在4地址,SUB存在8地址。。。。,R15永远指向取指的指令的地址,取指的指令?程序默认是从0地址运行,执行一条指令(取指-》译码-》执行),在执行0地址ADD指令的时候,先取指,所以此时PC指向0地址,然后ADD译码,此时PC指向4地址,此时MOV取指。。。PC是由硬件自动+4的,由PC指针决定取指的地址
写PC就会发生跳转,这就是绝对跳转
函数返回就是PC=LR,就是PC就指向LR地址处去取指
IRQ中断模式
R0~R12,R15与用户和系统模式是一样的
R13,R14与用户和系统模式是不一样的,中断有自己的R13与R14就是链接寄存器和堆栈寄存器,这是因为有独立的堆栈空间,这样做是为了隔离其他模式
其他模式区别都在此
FIRQ快速中断
R8~R14都是私有的寄存器
R0~R7,R15是共有寄存器
有私有寄存器,就是不需要对共有的寄存器再次压栈,只用自己的私有寄存器去压栈,从而提高处理速度
通用寄存器有31个,这里边包括各个模式的私有寄存器,共有31个
状态寄存器:
运算结果用通用寄存器,正负,大小,溢出等就是状态,这就需要状态寄存器
psr(program status register)
状态寄存器分6个,5个异常模式独立的各自的状态寄存器SPSR和一个非异常模式下的状态寄存器CPSR(current program status register当前的)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值