LV01-03-Cortex-A7架构-01-ARM处理器程序运行
本文主要是ARM基础——ARM处理器中程序运行过程的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows版本 | windows11 |
Ubuntu版本 | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) |
Linux开发板 | 正点原子 i.MX6ULL Linux 阿尔法开发板 |
uboot | NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03) |
linux内核 | linux-4.15(NXP官方提供) |
Win32DiskImager | Win32DiskImager v1.0 |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | https://www.arm.com/ | ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档 |
https://www.nxp.com.cn/ | NXP官方网站 | |
https://www.nxpic.org.cn/ | NXP 官方社区 | |
https://u-boot.readthedocs.io/en/latest/ | u-boot官网 | |
https://www.kernel.org/ | linux内核官网 |
点击查看相关文件下载
分类 | 网址 | 说明 |
NXP | https://github.com/nxp-imx | NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库 |
https://elixir.bootlin.com/linux/latest/source | 在线阅读linux kernel源码 | |
nxp-imx/linux-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga | NXP linux内核仓库tags中的rel_imx_4.1.15_2.1.0_ga | |
nxp-imx/uboot-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga | NXP u-boot仓库tags中的rel_imx_4.1.15_2.1.0_ga | |
I.MX6ULL | i.MX 6ULL Applications Processors for Industrial Products | I.MX6ULL 芯片手册(datasheet,可以在线查看) |
i.MX 6ULL Applications ProcessorReference Manual | I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网) |
一、大概流程
ARM 芯片属于精简指令集计算机(RISC: Reduced Instruction SetComputing),它所用的指令比较简单,有如下特点:
(1)对内存只有读、写指令。
(2)对于数据的运算是在 CPU 内部实现。
(3)使用 RISC 指令的 CPU 复杂度小一点,易于设计。
比如对于 a = a + b 这样的算式,需要经过下面 4 个步骤才可以实现:
二、几个问题?
有下边几个问题:
(1)读 a,那么 a 的值读出来后保存在 CPU 里面哪里?
(2)读 b,那么 b 的值读出来后保存在 CPU 里面哪里?
(3)a+b 的结果又保存在哪里?
我们需要深入 ARM 处理器的内部。简单概括如下,我们先忽略各种 CPU 模式(系统模式、用户模式等等)。
CPU 运行时,先去取得指令,再执行指令:
(1)把内存 a 的值读入 CPU 寄存器 R0
(2)把内存 b 的值读入 CPU 寄存器 R1
(3)把 R0、 R1 累加,存入 R0
(4)把 R0 的值写入内存 a
现在我们大概知道了: CPU 内部有很多寄存器, CPU 要从外部设备上读入指令,执行指令。