ARM裸机

目录

一、从源码到cpu执行过程

二、汇编和高级语言差异

三、CISC和RISC

四、程序和数据

五、冯诺依曼结构与哈佛结构

六、寄存器

七、内存外存

内存

外存

八、嵌入式系统启动方式

九、编程模式和7种模式

异常


一、从源码到cpu执行过程

高级语言-->.s汇编-->.exe二进制可执行程序-->bin格式烧录文件-->cpu读flash-->解码后cpu执行指令

二、汇编和高级语言差异

汇编:无可移植性,难写,执行效率高

高级语言:可移植性高,好写,执行效率低,适合大型复杂项目

三、CISC和RISC

RAM架构是RISC

地址总线:最大寻址范围(32位,4g)
数据总线:单次交换信息数量(32位,4字节)

CISC:复杂指令集(例如复杂计算只需要一条指令就可完成),编译器好设计,cpu难,IO与内存独立编址

RISC:精简指令集(提供基本功能指令),cpu设计和工艺简单,编译器难,IO与内存统一编址(例如单片机寄存器和内存是统一编址)

四、程序和数据

程序运行核心:程序(只读的)+数据(可读写的)

五、冯诺依曼结构与哈佛结构

冯诺依曼结构:程序和数据存放在内存,不分离(Intel),程序和数据可读可写(不安全),处理简单

哈佛:程序和数据在内存,分离(大部分嵌入式单片机),程序不可写(安全),软件处理复杂

六、寄存器

特殊功能寄存器(SFR):一般在外设里面,通过访问寄存器来控制外设

通用寄存器:r1,r2。。。。sp,lr,pc,cpsr,spsr(共37个,汇编用的多,c一般不使用)

 

每种模式下最多只能看到18个寄存器,其他寄存器名字相同但在当前模式(七个模式)不可见。

对于r14来说,RAM共有6个r14,但在特定模式下只有一个是可见的,其他必须切换到对应模式下才能看见,这种设计叫影子寄存器

七、内存外存

CPU连接内存总线访问(好处直接访问随机访问,坏处占用地址空间大小受限)

一般pc:小容量BIOS(NorFlash)+大容量硬盘+大容量DRAM

单片机:小容量NorFlash+小容量SRAM

嵌入式系统:外接大容量Nand+外接大容量DRAM+内置SRAM

内存

内部存储器,运行程序RAM断电数据数据丢失(DRAM SRAM DDR)

SRAM:静态内存,容量小价格高,优点上电直接使用

DRAM:动态内存,容量大价格低,缺点需要软件初始化才能使用

外存

外部存储器,ROM断电数据数据不会丢失(硬盘 flash u盘 sd卡)

NorFlash:容量小,价格高,优点可以与cpu直接总线连接,一般用作启动介质

NandFlash:容量大,价格低,需要软件初始化,通过时序接口读写

八、嵌入式系统启动方式

1.先从内部IROM读取代码(BL0),执行(做一些初始化cpu时钟,看门狗等,然后判断启动模式,从相应的外部存储器读取一部分启动代码BL1到SRAM)

2.执行上一步读取来的代码IRAM,BL1负责初始化NandFlash,然后将BL2读取到IRAM

3.从IRAM运行BL2,初始化DRAM,然后将OS读到DRAM,启动系统。

先读取内部ROM初始化一些东西判断启动方式,然后去对应的地方读取boot执行,最后读取os到DRAM启动系统

BL0

  • 关看门狗
  • 初始化cache指令
  • 初始化堆栈
  • 初始化块设备复制函数
  • 设置系统时钟
  • 复制BL1到IRAM
  • 校验BL1,跳转到BL1执行

九、编程模式和7种模式

大部分ARM core提供:ARM指令集(32bit),Thumb指令集(16),Thumb2指令集(16&32)

工作模式:

user:非特权模式

FIQ高优先级,IRQ低优先级,Supervisor复位或软中断,About存取异常,Under未定义指令:特权模式异常

system:特权模式

cpu为什么会有这些模式:

cpu是硬件,os是软件,软件的设计要依靠硬件的特性,硬件的设计要考虑软件需要。

操作系统有安全级别要求。

异常

  • 异常向量表,有些cpu支持多个中断会有二级中断向量表

所有cpu都有异常向量表,当异常发生,cpu会自动动作(PC跳转到异常向量处理异常)

  • 异常处理机制

1.异常产生时

拷贝CPSR到SPSR

设置适当CPSR位(改变处理器状态ARM态,改变处理器进入相应异常模式,设置中断禁止相应中断)

保存返回地址到LR_<mode>

设置PC为相应的异常向量地址。

2.返回时

从SPSR恢复CPSR

从LR_<mode>恢复PC

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dz小伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值