LV16-01-ARM体系结构介绍

本文主要是ARM体系结构介绍相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows windows11
Ubuntu Ubuntu16.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
SecureCRT Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日
开发板 正点原子 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官方提供)
STM32开发板 正点原子战舰V3(STM32F103ZET6)
点击查看本文参考资料
  • 通用
分类 网址说明
官方网站https://www.arm.com/ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档
https://www.st.com/content/st_com/zh.htmlST官方网站,在这里我们可以找到STM32的相关文档
https://www.stmcu.com.cn/意法半导体ST中文官方网站,在这里我们可以找到STM32的相关中文参考文档
http://elm-chan.org/fsw/ff/00index_e.htmlFatFs文件系统官网
教程书籍《ARM Cortex-M3权威指南》ARM公司专家Joseph Yiu(姚文祥)的力作,中文翻译是NXP的宋岩
《ARM Cortex-M0权威指南》
《ARM Cortex-M3与Cortex-M4权威指南》
开发论坛http://47.111.11.73/forum.php开源电子网,正点原子的资料下载及问题讨论论坛
https://www.firebbs.cn/forum.php国内Kinetis开发板-野火/秉火(刘火良)主持的论坛,现也做STM32和i.MX RT
https://www.amobbs.com/index.php阿莫(莫进明)主持的论坛,号称国内最早最火的电子论坛,以交流Atmel AVR系列单片机起家,现已拓展到嵌入式全平台,其STM32系列帖子有70W+。
http://download.100ask.net/index.html韦东山嵌入式资料中心,有些STM32和linux的相关资料也可以来这里找。
博客参考http://www.openedv.com/开源网-原子哥个人博客
http://blog.chinaaet.com/jihceng0622博主是原Freescale现NXP的现场应用工程师
cortex-m-resources这其实并不算是一个博客,这是ARM公司专家Joseph Yiu收集整理的所有对开发者有用的官方Cortex-M资料链接(也包含极少数外部资源链接)
  • STM32
STM32STM32 HAL库开发实战指南——基于F103系列开发板野火STM32开发教程在线文档
STM32库开发实战指南——基于野火霸道开发板野火STM32开发教程在线文档
  • SD卡
SD Association提供了SD存储卡和SDIO卡系统规范
点击查看相关文件下载
STM32F103xx英文数据手册STM32F103xC/D/E系列的英文数据手册
STM32F103xx中文数据手册STM32F103xC/D/E系列的中文数据手册
STM32F10xxx英文参考手册(RM0008)STM32F10xxx系列的英文参考手册
STM32F10xxx中文参考手册(RM0008)STM32F10xxx系列的中文参考手册
Arm Cortex-M3 处理器技术参考手册-英文版Cortex-M3技术参考手册-英文版
STM32F10xxx Cortex-M3编程手册-英文版(PM0056)STM32F10xxx/20xxx/21xxx/L1xxxx系列Cortex-M3编程手册-英文版
SD卡相关资料——最新版本有关SD卡的一些资料可以从这里下载
SD卡相关资料——历史版本有关SD卡的一些历史版本资料可以从这里下载,比如后边看的SD卡2.0协议
SD 2.0 协议标准完整版这是一篇关于SD卡2.0协议的中文文档,还是比较有参考价值的,可以一看

一、 ARM简介

1. 为什么要学习ARM?

在我们的生活中,STM32的应用得很广泛,像下边这些产品,可能都会用到STM32:

image-20230408170339636

而STM32是一个微处理器,也就是MCU,它的结构一般如下:

image-20230408170245470

STM32的核心部件CPU是 Cortex-M 系列处理器,这个处理器就是ARM公司进行设计的。

2. ARM公司简介

ARM(Advanced RISC Machines)有三种含义:它是一个公司的名称、它是一类微处理器的通称、它是一种技术的名称。

ARM 公司是微处理器行业的一家知名企业:

  • 知识产权供应商

  • 设计基于ARM体系的处理器;

  • 公司并不生产芯片,也不出售芯片;

  • 转让设计方案给半导体厂商,由半导体厂商生产soc,并销售;

  • 提供一些其他设计服务,比如物理IP,图形内核和开发工具的设计。

3. ARM处理器家族

image-20230417222640893
  • 早先经典处理器

包括ARM7、ARM9、ARM11家族。例如:

image-20230408172413552
  • Cortex-M 系列

为单片机驱动的系统提供的低成本优化方案,应用于传统的微控制器市场,智能传感器,汽车周边部件等。例如:

image-20230408172437122
处理器 描述
Cortex-M0 面向低成本、超低功耗的微控制器和深度嵌入应用
Cortex-M1 针对FPGA优化设计的处理器
Cortex-M3 面向低功耗、低成本设计的处理器, 具有较高计算性能和快速响应能力
Cortex-M4 在M3基础上, 增加数据信号处理(DSP)指令集, 具有较高的信号处理能力
Cortex-M7 在M4基础上, 加强性能, 针对高端控制器和数据处理密集的应用开发
  • Cortex-A 系列

针对开放式操作系统的高性能处理器;应用于智能手机,数字电视,智能本等高端运用。 例如:

image-20230408173123943
  • Cortex-R 系列

针对实时系统、满足实时性的控制需求;应于汽车制动系统,动力系统等。例如:

image-20230408173215526

4. ARM处理器架构

体系结构定义指令集和基于这一体系结构下处理器的编程模型(基本数据类型、工作模型、寄存器组)。基于同种体系结构可以有多种处理器、每个处理器的性能不同,面向的应用领域也不同。

ARM体系结构发展:

 目前ARM体系架构共定义了8个版本V1-V8。V1-V3 最早的版本,目前已废弃; V4-V6 经典处理器中运用的比较多; V7 目前Cortex系列处理器主要是这种架构、支持Thumb-2的32位指令集;V8 兼容ARMv7架构的特性,并支持64位数据处理。

image-20230408173439990

5. 指令集

5.1指令集的概念

  • 处理器能够识别并执行的指令集合;

  • 每一条指令可处理一个简单或复杂操作(加、加乘…);

  • 每一条指令对应一条或几条汇编指令。

5.2指令集常见分类

  • 复杂指令集(CISC):包含处理复杂操作的特定指令,指令长度不固定,执行需要多个周期。

  • 精简指令集(RISC):指令简单而有效,格式和长度通常是固定的,大多数指令在一个周期内可以执行完毕,

【说明】ARM的内核是基于RISC体系结构的。

6. ARM的CPU和指令数据的关系

6.1哈佛结构和冯诺依曼结构

  • 冯·诺依曼结构

冯·诺依曼结构(von Neumann architecture)又称作普林斯顿体系结构(Princetion architecture)。冯·诺依曼结构的处理器使用同一个存储器,经由同一个总线传输。冯·诺依曼结构处理器具有以下几个特点:

(1)必须有一个存储器;

(2)必须有一个控制器;

(3)必须有一个运算器,用于完成算术运算和逻辑运算;

(4)必须有输入和输出设备,用于进行人机通信。

  • 哈佛结构

哈佛结构是一种将程序指令存储数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。哈佛结构是指程序和数据空间独立的体系结构, 目的是为了减轻程序运行时的访存瓶颈。哈佛结构能基本上解决取指和取数的冲突问题。

  • 两种总线体系的区别

二者的区别就是程序空间和数据空间是否是一体的。冯·诺依曼结构数据空间和地址空间不分开,哈佛结构数据空间和地址空间是分开的。

6.2 ARM是什么结构?

ARM是哈佛结构。

二、几个概念

1. SOC(System on Chip)

SOC(片上系统):指的是在单个芯片上集成一个完整的计算机系统,所谓完整的系统一般包括中央处理器(CPU)、存储器、以及外围电路等。整体的一个电路系统,完成一个具体功能的东西。

image-20230408174425419

2. CPU(Central Processing Unit)

CPU(Central Processing Unit),是一台计算机的运算核心和控制核心。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。众所周知的三级流水线:取址、译码、执行的对象就是CPU,差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。 CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。

3. MPU (Micro Processor Unit)

微处理器(Micro-Processor Unit, MPU)。通常代表一个功能强大的CPU(暂且理解为增强版的CPU吧),但不是为任何已有的特定计算目的而设计的芯片。类似通用计算机的CPU,主要负责处理计算,需要外加RAM、Flash、电源等电路。 这种芯片往往是个人计算机和高端工作站的核心CPU。例如Intel 的X86,ARM的一些Cortex-A芯片如飞思卡尔i.MX6、全志A20、TI AM335X等都属于MPU。

MCU和MPU的本质区别是因为应用场景的定位不同。 MPU注重通过相对强大的运算/处理能力,执行复杂多样的大型程序,因此常需要外挂运行内存(RAM)、存储器(Flash)等。 MCU注重功能较为单一、价格敏感的应用场景,不需要相对强大的运算/处理能力,更多的是对设备管理/控制,因此不需要大容量的RAM、 Flash来运行大型程序, 于是将RAM、 Flash全集成在一起,大家也就俗称“单片机” 。

image-20230417224041624

随着技术的发展,市场及需求的变化, MPU和MCU的界限日趋模糊。 高端的32位MCU主频越来越高, 已经反超低端MPU主频, MCU也有外挂RAM和Flash的场景,依靠硬件结构去区分逐渐困难。 可以简单的认为,嵌入式微处理器MPU, 通常运行Linux、 Android等非实时操作系统,应用在高端应用市场,比如智能手机、 路由器等消费电子市场领域,而嵌入式微控制器MCU, 常用运行裸机或实时性操作系统,应用在中、低端应用市场, 比如家电控制领域、工业控制领域等。

4. MCU(Micro Control Unit)

微控制器 (Micro-Controller Unit , MCU) , 俗称单片机 。 之所以称之为单片机 (Single Chip Microcomputer), 是因为不同于其它处理器,它将CPU、 RAM(随机存储器)、 ROM(只读存储器)、 I/O、中断系统、定时器等各种功能外设资源集中到一个芯片上。 这个芯片就是一个完整的微型计算机, 只需要供电或加上极少的外围电路即可工作(运行代码)。

单片机有处理器,有各种接口,所有的开发都是基于已经存在的系统架构,应用者要做的就是开发软件程序和加外部设备。而像ARM(Cortex-A系列)直接放代码是运行不了的,因为它本质上只是增强版的CPU,必须添加相应的RAM和ROM。

常见的MCU有80C51系列单片机、 Atmel公司的AVR系列单片机、 Microchip公司的PIC系列单片机、 TI公司的MSP430系列单片机、 ST公司的STM32系列单片机、 NXP公司的LPC1700系列单片机。早期的MCU主要是8位,后面发展出16位,再到现在主流的已经是32位。 此外, 主频不断提高、 ROM不断增大、外设不断增多,单片机的应用领域和场合越来越大。

5. DSP

DSP通常有两个含义。

  • 数字信号处理( Digital Signal Processing, DSP),是一门学科技术, 使用数值计算的方式对信号进行加工处理的理论和技术。
  • 数字信号处理器( Digital Signal Processor, DSP), 是一种专门用于数字信号处理领域的微处理器芯片。如下图,就是TI公司的DSP芯片TMS320VC5509A。
image-20230417224211400

DSP芯片为了达到快速处理数字信号处理的目的, 采用了许多特殊软硬件结构。 首先是采用哈佛结构,将程序和数据分开,同时为处理器提供指令和数据。 然后采用多级流水线技术,在指令周期内可以执行更多指令。 加上专用的硬件乘法器、特殊的DSP指令, 使得DSP芯片在计算处理上,远超同主频的MCU或MPU。DSP芯片拥有强大的数据处理能力, 在数字信号处理领域,如调制/解调、数据加密/解密、图形处理、数字滤波、音频处理等计算密集型的场景广泛应用。

6. FPGA

现场可编程门阵列( Field- Programmable Gate Array, FPGA), 由可编程互连连接的可配置逻辑块(CLB) 矩阵构成的半导体器件。

通俗地说, FPGA就是一个可以通过编程改变内部硬件结构,实现所需功能的芯片。 前面的MCU、 DSP等都是硬件资源固定,只能通过修改软件实现所需功能。而FPGA是通过硬件描述语言或其它方式修改硬件,将FPGA变为CPU或专用芯片,来实现控制或算法。 因此, MCU、 DSP能够实现的功能, FPGA理论上都可以实现,反之则不一定。 如图为Xilinx公司的FPGA芯片XC3S400A。

image-20230417224331454

FPGA主要有两大优势: 高速和灵活。 FPGA使用硬件处理数据,采用并发和流水技术,多个模块之间可以同时并行执行。 FPGA可以根据现场情况配置器件功能,能够在技术和需求变化时重新配置,实现系统优化升级。在某些通信领域,需要处理高速的通信协议,同时通信协议随时都可能修改,不适合做成专门的芯片,FPGA的高速、灵活就便成了首选。虽然FPGA功能强大,但实际工程项目中,还需考虑硬件成本、开发难度和市场需求等因素。 一些简单的控制场合, 尽管FPGA和MCU都能胜任,但MCU价格低廉和研发简单,更划算。

三、资料查找

1. ARM相关的官网

我们可以直接搜索arm便可以找到ARM的官网,我们主要是要到文档的搜索界面去:Documentation – Arm Developer

image-20230417222435460

我们可以直接在这里搜索我们需要的文档。