ARM裸机

举报
dz小伟 发表于 2022/11/02 19:32:02 2022/11/02
【摘要】 一、从源码到cpu执行过程高级语言-->.s汇编-->.exe二进制可执行程序-->bin格式烧录文件-->cpu读flash-->解码后cpu执行指令二、汇编和高级语言差异汇编:无可移植性,难写,执行效率高高级语言:可移植性高,好写,执行效率低,适合大型复杂项目三、CISC和RISCRAM架构是RISC地址总线:最大寻址范围(32位,4g)数据总线:单次交换信息数量(32位,4字节)CIS...

一、从源码到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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。