从零开始学ARM
学习自b站一口linux老师的课程。
文章目录
- 从零开始学ARM
- 介绍
- 为什么要学汇编?
- ARM是什么?
- SOC
- 计算机历史
- 冯诺依曼结构介绍
- 哈佛架构介绍
- 混合架构介绍
- CPU运行原理
- 环境搭建
介绍
学习ARM需要学计算机原理,汇编,C语言,基本电路,硬件控制器原理,以及编写相应驱动程序。
为什么要学汇编?
- 了解系统启动、上电、函数调用等底层实现。
- 真正地提高函数运行效率。
- 一些软件的破解……
ARM是什么?
设计微处理器架构的公司,包含三类:cortex-A, -R, -M, 高性能、实时、轻量级。
ARM公司只设计架构不生产产品。每个处理器都需要依靠一定的ARM架构来设计。
授权给其他做产品的公司分为架构层授权,内核层授权(ip核),使用层授权。
- 架构:可以对ARM架构扩展缩减,如苹果(可以修改我的文章)。
- 内核:在内核基础上加自己的外设,如三星(可以引用我的文章,但是不能改)。
- 使用:可以用别人的ip核,但是不能更改(只能转发我的文章)。
SOC
system on a chip, 最大的特点是便宜,开发方便。
AHB:高速总线,存基本的或者性能较高的东西。
APB:外部总线。
计算机历史
巴贝奇:机械结构的差分机。
ada:计算机程序概念的创始人,如循环、子程序等概念。
阿塔纳索夫的ABC,图灵的巨人机都是相当于证明了电路实现计算是可行的,处于证明阶段,类似ChatGPT。冯诺依曼则是设计计算机通用架构。
CPU的发展:最早的仙童半导体,衍生出的Intel公司,
冯诺依曼结构介绍
我们知道冯诺依曼结构5大组成,通过总线(db ab cb)连接。
存储器:cache,金字塔型,从上到下L0寄存器,L1 L2 L3 高速缓存,L4 主存(内存条,CPU可直接访问),本地二级存储(本地磁盘),远程二级存储(分布式文件系统,web服务器)。
哈佛架构介绍
相比冯,程序和数据分开存储。stm32 51就是哈佛架构,pc等是冯诺依曼架构。哈佛执行效率高,冯诺依曼占用资源少。
混合架构介绍
主要是冯诺依曼架构,但是一些上电启动的部分是哈佛架构。
CPU运行原理
指令计数器指着当前指令地址(PC)——去取指令,存到指令寄存器中——执行指令(指令译码,取操作数,运算),从存储单元和程序的数据段取数据并运算,PC++。
指令集:CISC RISC 复杂和精简,ARM是精简。龙芯的MIPS和X86的指令集没有与RISC的指令纠纷,不涉及卡芯片的问题。
ARM指令格式:操作码+操作数的地址。
环境搭建
使用的是绿色的Keil Mdk,和stm32用的是同一个软件开发。
需要安装三星 samsung 的 s3c2400 芯片包,下载地址:https://armkeil.blob.core.windows.net/legacy/MDK79525.EXE
.s文件本来是一些初始化内容,这里我们不需要用到那么多。
.s 文件修改代码:
AREA Example,CODE,READONLY ;声明代码段Example
ENTRY ;程序入口
Start
MOV R0, #0
MOV R1,#10
BL ADD_SUM ;调用子程序
B OVER ;跳转到结尾
ADD_SUM
ADD R0,R0,R1
MOV PC,LR
OVER
END
打开debug模式后,registers里面是32位地址,disassembly 里是翻译后的机器码。
这里注意asm用空格的缩进来指代指令!