STM32ARM体系结构(嵌入式学习)

STM32&ARM体系结构

  • 1. STM32
    • 1.1 简介
    • 1.2 STM32的优势
    • 1.3 命名规范
  • 2. ARM体系结构
    • 2.1 ARM体系结构
      • 面试题:谈谈你对ARM的认识?
        • 1.ARM公司
        • 2.ARM处理器
        • 3.ARM技术
      • 目前主流处理器架构?
      • 精简指令集RISC和复杂指令集CISC的区别?
        • 精简指令集计算机(RISC)架构的特点
        • 复杂指令集计算机(CISC)架构的特点
    • 2.2 处理器架构
      • flash和SRAM的区别?
      • 什么是外设?如何理解片上外设?
      • AHB和APB的区别?
    • 2.3 Cortex-M3内核架构
      • Cortex-M 系列产品线
      • Cortex-M3结构框图
      • Cortex-M3工作模式
      • Cortex-M3工作状态
      • Cortex-M3的寄存器
      • Cortex-M3的中断和异常
      • Cortex-M3的指令集

1. STM32

1.1 简介

STM32是意法半导体(STMicroelectronics)公司推出的一系列32位ARM Cortex-M微控制器(MCU)产品系列。它们基于ARM架构,并且具有广泛的应用领域,包括工业自动化、消费电子、医疗设备、通信、汽车电子等。

STM32系列提供了多个产品系列,以满足不同应用需求和性能要求。其中常见的系列包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7、STM32L0、STM32L1、STM32L4、STM32G0、STM32G4等。

这些系列的产品具有不同的特点和功能,但它们都采用了先进的32位ARM Cortex-M内核,具备高性能、低功耗和丰富的外设集成。STM32 MCU通常提供丰富的存储器、通信接口(如UART、SPI、I2C、CAN等)、模拟和数字接口、定时器、中断控制器等功能模块,以及一些特殊用途的硬件加速器和协处理器。

STM32系列还提供了广泛的开发工具和生态系统支持,包括集成开发环境(IDE)、调试器/编程器、软件库和示例代码等。开发者可以使用这些工具和资源来快速开发和调试嵌入式应用程序。

总的来说,STM32是一系列功能强大、灵活且广泛应用的32位ARM Cortex-M微控制器,适用于各种嵌入式系统和应用领域。它们在性能、可靠性和生态系统支持方面都得到了广泛的认可和采用。

1.2 STM32的优势

STM32系列微控制器(MCU)具有许多优势,使其成为广泛采用的选择。以下是一些STM32的优势:

  1. 广泛的产品系列和选择:STM32系列提供了多个产品系列,以满足不同的应用需求和性能要求。无论是低功耗的STM32L系列,高性能的STM32F系列,还是专为工业应用设计的STM32G系列,开发者可以根据具体的应用要求选择合适的产品。

  2. 强大的性能和处理能力:STM32 MCU采用了32位ARM Cortex-M内核,具备强大的处理能力和高性能。它们能够高效地执行复杂的任务,并支持实时操作系统(RTOS)和多线程应用程序。

  3. 丰富的外设集成:STM32 MCU集成了丰富的外设,包括通信接口(如UART、SPI、I2C、CAN等)、模拟和数字接口、定时器、中断控制器等。这些外设的集成简化了系统设计和开发过程,加快了产品上市时间。

  4. 低功耗设计:STM32 MCU采用先进的低功耗设计技术,使其在电池供电或节能应用中表现出色。它们支持动态电压频率调节(DVFS)、智能睡眠模式等功耗优化功能,以延长电池寿命和降低功耗。

  5. 强大的生态系统支持:STM32拥有广泛的开发工具和生态系统支持。意法半导体提供了集成开发环境(如STM32CubeIDE)、调试器/编程器以及丰富的软件库和示例代码。此外,开发者社区和第三方合作伙伴提供了大量的支持和资源。

  6. 丰富的安全特性:STM32 MCU具备丰富的硬件和软件安全功能,以保护系统免受潜在的威胁和攻击。这些安全特性包括存储器保护单元、硬件加密模块、安全引导功能等,有助于实现安全可靠的应用。

  7. 灵活性和可扩展性:STM32 MCU具有灵活的架构和可扩展性,允许开发者根据需求进行定制。它们支持多种封装和存储器配置选项,以及可选的外设和功能模块,满足不同的应用需求。

1.3 命名规范

系列名解释
ST意法半导体
M微控制器
3232位处理器
类型(F 通用/基础型 foundation) (G 多用途型 general-purpose L ) (低功耗 low power ) (H 高性能 ) (S 简单/标准型 Standard)
系列(0:精简系列 )( 1/2/3:增强系列 )( 4/7: 高性能系列 )
子型号00/01/02/03/05/07
引脚数量(K/6 32脚) (C/8 48脚) (R-64脚) (V-100脚) (Z-144脚) (A-168脚) (I-176脚) (B-208脚) (N-216脚)
存储量(6-32KB) (8-64KB) (B-128KB ) ( C-256KB) ( D-384KB ) ( E-512KB ) (G-1MB) ( I-2MB)
封装(U - UQFN封装) (T - TQFP封装)
工作温度6 - -40 ~ 85度

2. ARM体系结构

2.1 ARM体系结构

STM32微控制器(MCU)系列采用了ARM Cortex-M体系结构。ARM Cortex-M是一种32位的精简指令集计算机(RISC)体系结构,专门设计用于低功耗、实时嵌入式系统。

在STM32系列中,常见的ARM Cortex-M内核包括:

  1. ARM Cortex-M0: Cortex-M0是ARM的基本入门级内核,具有较低的功耗和成本,适用于低功耗、资源有限的应用。它提供了较为基本的指令集和外设集成。

  2. ARM Cortex-M0+: Cortex-M0+是ARM针对低功耗应用进一步优化的内核,具有更高的性能和更低的功耗。它在Cortex-M0的基础上增加了一些新的指令和功能,提供了更高的代码密度和执行效率。

  3. ARM Cortex-M3: Cortex-M3是一种更强大的内核,具有较高的性能和更多的外设集成。它支持更复杂的应用和操作系统,具备较大的存储器地址空间和更多的调试和异常处理能力。

  4. ARM Cortex-M4: Cortex-M4在Cortex-M3的基础上增加了数字信号处理(DSP)扩展指令集和单精度浮点运算支持,使其适用于更多的信号处理和计算密集型应用。

  5. ARM Cortex-M7: Cortex-M7是ARM Cortex-M系列中性能最强大的内核。它具有更高的时钟频率、更高的指令执行效率和更丰富的外设集成。Cortex-M7可应对更复杂的实时应用和高性能计算需求。

需要注意的是,不同的STM32系列产品可能采用不同的Cortex-M内核,具体取决于产品的定位和应用需求。此外,STMicroelectronics还在一些STM32产品中提供了特殊功能和增强,例如硬件浮点单元(FPU)的支持,以进一步提高性能和功能扩展。

面试题:谈谈你对ARM的认识?

ARM有三种含义:ARM公司、ARM处理器、ARM技术
ARM(Advanced RISC Machines)是一家总部位于英国的半导体和软件设计公司。ARM公司的主要业务是设计和许可低功耗、高性能的处理器架构和相关技术。

1.ARM公司

  1. 处理器架构设计:ARM公司是处理器架构设计领域的领导者之一。他们设计了一系列精简指令集计算机(RISC)架构,如ARM Cortex-A、Cortex-R和Cortex-M系列。这些架构广泛应用于各种领域的设备,包括移动设备、嵌入式系统、消费电子、汽车电子等。

  2. 许可模型:ARM采用许可模型,将他们的处理器架构和技术授权给其他半导体公司。这意味着其他公司可以基于ARM的设计开发自己的处理器芯片,并将其集成到他们的产品中。ARM的许可模型促进了广泛的市场采用和生态系统的发展。

  3. 生态系统支持:ARM拥有庞大的生态系统,包括合作伙伴、开发者社区和第三方软件供应商。这些合作伙伴提供与ARM处理器相关的开发工具、软件库、操作系统支持等,为开发者提供丰富的资源和支持。

  4. 低功耗和高性能:ARM架构的设计注重低功耗和高性能的平衡。ARM处理器以其卓越的能效和处理能力而闻名,适用于移动设备和其他有限电源环境下的应用。ARM持续推出新的技术和架构创新,提供更高效的处理器设计。

  5. 多样化的市场应用:ARM架构的灵活性使其适用于多种市场应用。从智能手机、平板电脑和物联网设备到工业自动化、汽车电子和医疗设备,ARM处理器在各个领域都有广泛的应用。

  6. 持续创新:ARM公司在处理器架构和技术方面持续创新。他们不断推出新的内核和功能,以满足不断发展的市场需求。ARM的创新助力推动了移动计算和嵌入式系统的发展。

总体而言,ARM是一家在处理器架构设计领域具有重要地位的公司。他们的处理器架构和技术在全球范围内得到广泛采用,并为各种设备和应用提供了低功耗、高性能的解决方案。

2.ARM处理器

ARM处理器是由ARM公司设计和授权的处理器架构。ARM处理器以其低功耗、高性能和灵活性而在全球范围内广泛应用于各种设备和应用领域。

以下是对ARM处理器的介绍:

  1. 架构特点:ARM处理器采用精简指令集计算机(RISC)架构,设计目标是提供高性能和低功耗的处理解决方案。ARM处理器的指令集简洁高效,优化了指令执行和内存访问,提供高效的数据处理和控制能力。

  2. 处理器系列:ARM公司设计了多个系列的处理器架构,以满足不同应用需求。其中包括:

    • ARM Cortex-A系列:面向高性能计算和多任务处理,适用于智能手机、平板电脑、云服务器等需要较强处理能力的应用。
    • ARM Cortex-R系列:专为实时应用设计,提供可靠的实时性能和可预测性,适用于汽车电子、工业控制和嵌入式系统等领域。
    • ARM Cortex-M系列:针对低功耗和资源受限的嵌入式应用,提供紧凑的处理能力和实时性能,适用于物联网设备、传感器节点等。
  3. 可扩展性:ARM处理器具有很强的可扩展性,可以根据应用需求进行定制和配置。处理器核心的功能和性能可以根据需求进行灵活选择,同时外设和功能模块的集成也可以根据应用需求进行扩展。

  4. 软件生态系统:ARM处理器拥有庞大的软件生态系统,包括广泛的开发工具、编译器、调试器、操作系统和应用软件支持。这使得开发者能够轻松地构建和部署应用程序,并享受到丰富的软件资源和支持。

  5. 能效和功耗优化:ARM处理器在设计时注重能效和功耗优化。它们采用先进的制造工艺和功耗管理技术,以最小化功耗并延长电池寿命。这使得ARM处理器成为移动设备、物联网设备和依赖电池供电的应用的理想选择。

  6. 广泛的应用领域:ARM处理器广泛应用于各种领域,包括移动计算、消费电子、工业自动化、汽车电子、医疗设备、物联网等。

  7. 多核和对称多处理(SMP)支持:ARM处理器支持多核配置和对称多处理(SMP),可以同时运行多个处理核心,提供更高的并行处理能力。这使得ARM处理器适用于需要处理复杂任务和多线程应用的场景。

  8. 安全特性:ARM处理器提供了安全特性和硬件保护机制,以保护设备和数据的安全性。这包括执行空间隔离(ASLR)、内存保护单元(MPU)、特权级别分离等安全功能,有助于防止恶意软件和攻击。

  9. 兼容性和软件迁移性:ARM处理器具有较好的兼容性和软件迁移性。由于ARM架构在全球范围内广泛使用,软件开发人员可以轻松迁移和共享代码、应用程序和软件工具,加快产品开发和市场推出速度。

  10. 生态系统支持:ARM拥有庞大的合作伙伴网络和开发者社区。合作伙伴提供了丰富的硬件设计、系统集成和软件开发支持,帮助开发者快速构建产品。开发者社区为开发者提供了交流、分享经验和获取技术支持的平台。

  11. 持续创新和演进:ARM公司持续进行处理器架构和技术的创新和演进。他们不断推出新的内核和技术,提供更高的性能、更低的功耗和更丰富的功能,以满足不断变化的市场需求。

总的来说,ARM处理器以其低功耗、高性能、灵活性和广泛的应用领域而备受青睐。它们在移动设备、嵌入式系统、物联网和各种领域的应用中发挥着重要作用,并通过其强大的生态系统支持和持续创新不断推动技术进步。

3.ARM技术

ARM技术是由ARM公司开发和推广的一系列技术和解决方案,涵盖了处理器架构、系统设计、软件开发和生态系统支持等方面。

以下是对ARM技术的介绍:

  1. ARM处理器架构:ARM技术的核心是ARM处理器架构。ARM架构采用精简指令集计算机(RISC)设计,注重低功耗和高性能的平衡。ARM处理器架构包括了不同系列的内核,如Cortex-A、Cortex-R和Cortex-M系列,以满足不同应用需求。

  2. 系统设计技术:ARM技术提供了丰富的系统设计技术,包括片上系统(SoC)设计、总线协议、互联技术和功耗管理等。ARM的系统设计技术帮助开发者将处理器和外设集成到单个芯片上,实现高度集成和优化的系统解决方案。

  3. 软件开发支持:ARM技术提供了广泛的软件开发支持,包括开发工具链、调试器、仿真器和模拟器等。ARM的软件开发工具和环境使开发者能够高效地编写、调试和优化应用程序,加速产品开发和上市时间。

  4. 嵌入式操作系统:ARM技术广泛支持各种嵌入式操作系统,如Linux、Android、FreeRTOS和RTOS等。这些操作系统提供了丰富的功能和抽象层,简化了应用开发和系统集成过程。

  5. 安全技术:ARM技术注重设备和数据的安全性。他们提供了硬件安全扩展和安全指令集,帮助开发者构建安全的系统和应用。ARM的安全技术包括硬件隔离、安全启动、加密引擎和安全存储等功能,提供了强大的安全保护能力。

  6. 生态系统支持:ARM技术的成功得益于其强大的生态系统。ARM与合作伙伴、开发者社区和第三方软件供应商密切合作,为开发者提供丰富的资源和支持。合作伙伴提供了硬件设计、软件工具和支持,开发者社区为开发者提供了交流、分享经验和获取技术支持的平台。

  7. 持续创新:ARM公司持续进行技术创新和演进。他们不断推出新的处理器内核、安全技术、系统设计和软件开发支持,以满足不断变化的市场。

目前主流处理器架构?

目前主流的处理器架构主要包括以下几种:

  1. x86架构:x86架构最早由英特尔公司推出,后来成为PC和服务器领域的主流架构。x86处理器广泛应用于个人电脑、工作站、服务器和数据中心等领域。常见的x86处理器包括英特尔的Core系列和AMD的Ryzen系列。

  2. ARM架构:ARM架构最初设计用于低功耗嵌入式系统,如智能手机、平板电脑和物联网设备。然而,由于其能效优势和灵活性,ARM处理器逐渐扩展到其他领域,如移动计算、服务器和工业自动化。ARM处理器的代表性产品包括ARM Cortex-A系列(应用处理器)和Cortex-M系列(嵌入式处理器)。

  3. RISC-V架构:RISC-V是一种开源指令集架构(ISA),它基于精简指令集计算机(RISC)设计。RISC-V的开放性和灵活性使其受到广泛关注,并在学术界和一些特定领域的商业应用中得到采用。RISC-V架构的特点包括可定制性、扩展性和简化的许可模型。

  4. Power架构:Power架构最初由IBM开发,并在服务器和大型计算机领域得到广泛应用。Power架构的特点是高性能、可扩展性和可靠性,适用于处理复杂计算任务和企业级应用。Power处理器主要用于高端服务器和超级计算机。

除了上述架构,还有其他一些较小众或专用的处理器架构,如MIPS架构、SPARC架构等。这些架构在特定领域或特定应用中有一定的市场份额,但相对于x86、ARM和RISC-V等主流架构来说,影响力相对较小。

精简指令集RISC和复杂指令集CISC的区别?

在这里插入图片描述

精简指令集计算机(RISC)和复杂指令集计算机(CISC)是两种不同的处理器设计哲学,它们在指令集和指令执行方式上存在一些区别。

精简指令集计算机(RISC)架构的特点

  1. 简化指令集:RISC架构采用精简的指令集,指令数量相对较少,指令长度一般相同。这使得指令的执行时间更加均匀和可预测,简化了硬件设计和指令解码过程。

  2. 硬件简单:RISC架构的处理器通常具有简化的硬件结构。它们倾向于采用更多的通用寄存器,减少复杂的控制逻辑和特殊指令,使硬件设计更加简单和高效。

  3. 内存访问模式:RISC架构更加依赖于内存访问,鼓励使用加载/存储指令将数据从内存加载到寄存器进行操作,而不是直接在内存中进行操作。这有助于减少指令的数量和复杂性。

  4. 流水线执行:RISC架构倾向于采用流水线执行的方式,将指令执行过程分为多个阶段,使得多个指令可以同时在不同阶段执行,提高指令级并行性和处理器吞吐量。

复杂指令集计算机(CISC)架构的特点

  1. 丰富的指令集:CISC架构的指令集较为复杂,包含大量的指令,并提供了更多的操作和寻址模式。这使得编程时可以使用更高级别的指令完成复杂的操作,减少了编程的工作量。

  2. 硬件复杂:CISC架构的处理器通常具有复杂的硬件结构,包括多个特殊目的寄存器、多种寻址模式和复杂的微码控制逻辑。这增加了硬件设计的复杂性和成本。

  3. 多个内存访问方式:CISC架构支持多种内存访问方式,包括直接操作内存、寄存器到内存的传送等。这使得CISC处理器可以在指令中直接访问内存,减少了对寄存器的依赖。

  4. 微码执行:CISC架构的指令通常被解码成微操作序列,这些微操作通过微码来执行。这种微码执行方式可以支持复杂的指令和操作。

  5. 变长指令:CISC架构的指令长度可以是不固定的,指令的长度根据指令所需的操作数和操作类型而变化。这样可以使得某些指令更紧凑,减少存储空间的占用。

  6. 指令级别并行性:CISC架构的指令通常具有更高的复杂度和功能,其中某些指令可以执行多个操作。这使得CISC处理器在单个指令内部可以同时执行多个操作,提高了指令级别的并行性。

总体而言,RISC架构倾向于简化指令集、提高硬件效率和执行效率,强调流水线和寄存器的使用。而CISC架构则倾向于提供更多复杂的指令和寻址模式,支持更高级别的编程,但其硬件设计和指令解码相对较复杂。随着技术的发展,RISC和CISC之间的区别已经模糊化,很多现代处理器采用了混合的设计思想,融合了两者的优点。

2.2 处理器架构

STM32F103和STM32F407是STMicroelectronics公司推出的两个不同系列的STM32微控制器。它们基于不同的ARM处理器架构,具体如下:

  1. STM32F103:STM32F103系列使用了ARM Cortex-M3处理器架构。Cortex-M3是ARM的第三代32位RISC处理器核,它具有高性能、低功耗和较强的实时性能。STM32F103微控制器系列采用了Cortex-M3核心,并且拥有多个外设和存储器选项,如UART、SPI、I2C、定时器、ADC、GPIO、Flash存储器和SRAM等。这个系列的微控制器适用于广泛的应用领域,包括工业自动化、消费电子、通信设备等。

  2. STM32F407:STM32F407系列使用了ARM Cortex-M4处理器架构。Cortex-M4是ARM的第四代32位RISC处理器核,它在Cortex-M3的基础上增加了浮点运算单元(FPU),提供了更强大的计算能力。STM32F407微控制器系列采用了Cortex-M4核心,并且具有更高的性能和更丰富的外设集成,包括UART、SPI、I2C、定时器、ADC、DAC、DMA、USB等。这个系列的微控制器适用于要求较高性能和复杂功能的应用,如音频处理、图像处理、工业控制等。

总结起来,STM32F103系列使用了ARM Cortex-M3处理器架构,而STM32F407系列使用了ARM Cortex-M4处理器架构。这两个系列的微控制器在性能、外设和应用领域上存在一定的差异,开发者可以根据具体的应用需求选择适合的系列和型号。

flash和SRAM的区别?

Flash和SRAM是两种常见的存储器类型,它们在结构、特性和用途上有一些区别。下面是Flash和SRAM之间的主要区别:

  1. 结构:Flash存储器是非易失性存储器(Non-Volatile Memory,NVM),它使用了特殊的电荷存储技术来保持数据,即使在断电情况下也能保持数据的完整性。SRAM存储器是易失性存储器(Volatile Memory),它使用了存储器单元中的电路和触发器来存储数据,当断电时会立即丢失数据。

  2. 存储容量:Flash存储器的存储容量通常较大,可以存储大量的数据,从几千字节到几个TB不等。SRAM存储器的存储容量相对较小,一般以几十KB到几MB为范围。

  3. 访问速度:SRAM存储器的访问速度较快,可以在一个时钟周期内访问和读取数据。Flash存储器的访问速度较慢,通常需要较长的访问时间,需要几个时钟周期或更多。

  4. 功耗:SRAM存储器的功耗较高,因为它需要持续地刷新存储器单元中的数据以保持数据的完整性。Flash存储器的功耗相对较低,因为它不需要刷新操作,并且在数据写入后可以断电而不会丢失数据。

  5. 价格:SRAM存储器的价格较高,由于其较快的访问速度和易用性,适用于对性能要求较高的应用。Flash存储器的价格相对较低,适用于对存储容量要求较高、对访问速度要求相对较低的应用。

  6. 应用领域:由于其特性,Flash存储器常用于嵌入式系统中的固件存储、操作系统、应用程序和数据存储等。SRAM存储器则常用于高速缓存、寄存器文件、数据缓冲区和高性能计算等需要快速访问的应用。

总的来说,Flash存储器适用于需要大容量、非易失性存储和较低功耗的应用,而SRAM存储器适用于需要快速访问和易用性的高性能应用。根据具体的应用需求和设计约束,选择合适的存储器类型是很重要的。

什么是外设?如何理解片上外设?

外设(Peripheral)是指与计算机主处理器(CPU)相连,用于扩展计算机功能的设备。外设可以包括各种输入和输出设备,例如键盘、鼠标、显示器、打印机、网络接口卡等。外设通过与主处理器的通信接口进行数据交换和控制,使计算机能够与外部环境进行交互。

片上外设(On-chip Peripheral)是指集成在芯片(集成电路)上的外设。在集成电路设计中,为了提高系统的集成度和性能,一些常用的外设功能被集成到芯片中,与主处理器共享同一个芯片。这些片上外设通常与主处理器通过内部总线进行连接,实现数据传输和控制。

片上外设的集成带来了一些优势:

  1. 简化设计和布局:将外设集成到芯片中可以减少外部组件的数量和复杂性,简化整体系统设计和布局。

  2. 提高系统性能:片上外设与主处理器之间的通信速度更快,可以减少数据传输的延迟,提高系统性能和响应速度。

  3. 降低功耗:片上外设可以与主处理器共享同一电源和时钟,减少功耗和系统复杂性。

  4. 节省空间:将外设集成到芯片中可以节省电路板上的空间,使系统更加紧凑。

常见的片上外设包括但不限于串口(UART)、并口(GPIO)、定时器(Timer)、模数转换器(ADC/DAC)、SPI接口、I2C接口等。这些外设在芯片上提供了各种功能,可以满足不同应用的需求。

需要注意的是,片上外设的集成程度可以因芯片的类型和用途而有所不同。一些高度集成的芯片,如微控制器(MCU)或系统芯片,可能集成了多个外设功能,而一些较简单的芯片可能只集成了少量的外设功能。因此,在选择芯片时,需要根据具体的应用需求和外设功能的要求进行评估和选择。

AHB和APB的区别?

AHB(Advanced High-performance Bus)和APB(Advanced Peripheral Bus)是两种常见的总线协议,用于连接片上外设和主处理器。它们之间的主要区别如下:

  1. 性能级别:AHB是高性能总线,用于连接高带宽、低延迟的设备,例如高速存储器、图形处理器等。它具有较高的数据传输速度和更低的延迟,能够满足对性能要求较高的设备连接需求。APB是低功耗总线,用于连接低带宽、高功耗的设备,例如外设控制器、GPIO等。它的数据传输速度较慢,但可以满足对功耗要求较高的设备连接需求。

  2. 总线结构:AHB总线采用主从结构,包括一个主控制器(如CPU)和多个从设备(如外设)。主控制器通过仲裁器控制总线的访问权,并与从设备进行数据交换。APB总线采用简化的点对点连接结构,每个外设通过一个独立的接口与主控制器直接连接。

  3. 时钟域:AHB总线通常工作在高频率时钟域,可以与主处理器保持同步。APB总线通常工作在较低频率时钟域,可以独立于主处理器进行时钟域划分,以满足不同外设的时钟需求。

  4. 传输宽度:AHB总线支持较宽的数据传输,通常是32位或64位。这使得在一次传输中可以传输更多的数据,提高数据传输效率。APB总线通常支持较窄的数据传输,通常是8位或16位。

  5. 优先级和仲裁:AHB总线使用优先级和仲裁机制来管理多个主设备的访问,以确保高优先级设备获得更快的响应时间。APB总线没有内置的优先级和仲裁机制,因为它是点对点连接,每个外设独立控制访问。

总的来说,AHB总线适用于高性能、高带宽的设备连接,而APB总线适用于低功耗、低带宽的设备连接。在设计系统时,根据外设的性能和功耗要求,选择合适的总线协议以满足系统的需求。

2.3 Cortex-M3内核架构

在这里插入图片描述

ARM Cortex-M3是ARM公司推出的一种32位RISC处理器核,主要用于嵌入式系统和微控制器应用。它具有以下主要特点和内核架构:

  1. Harvard架构:Cortex-M3采用了经典的Harvard架构,将指令存储器和数据存储器分开,并使用独立的总线进行访问。这种架构可以提高指令和数据的并行处理能力,提高系统性能。

  2. 三级流水线:Cortex-M3采用了三级流水线结构,将指令执行过程划分为取指(Fetch)、译码(Decode)、执行(Execute)三个阶段。这种流水线架构可以提高指令的吞吐量和系统性能。

  3. 定点算术单元:Cortex-M3内核具有内置的定点算术单元(ALU),支持多种算术和逻辑操作,包括加法、减法、乘法、移位和逻辑运算等。这使得Cortex-M3适用于广泛的计算任务。

  4. 优化的指令集:Cortex-M3采用了ARM Thumb-2指令集,它是一种混合16位和32位指令集。Thumb-2指令集通过提供紧凑的16位指令和扩展的32位指令,既能够节省存储器空间,又能够提供高性能的运算能力。

  5. 低功耗设计:Cortex-M3采用了多种低功耗技术,包括时钟门控单元(Clock Gating)、内存睡眠模式和快速唤醒机制等。这些技术可以降低系统功耗,延长电池寿命。

  6. 可选的内存保护单元:Cortex-M3提供了可选的内存保护单元(MPU),可以对存储器进行细粒度的访问控制和保护。这有助于提高系统的安全性和稳定性。

Cortex-M3内核的设计目标是提供高性能、低功耗和实时性能,使其非常适用于嵌入式系统和微控制器应用。它广泛应用于各种领域,包括工业控制、汽车电子、医疗设备、消费电子和物联网等。

Cortex-M 系列产品线

在这里插入图片描述
Cortex-M系列是ARM公司推出的一系列嵌入式处理器核,针对不同的应用需求和性能级别提供了多个产品线。以下是Cortex-M系列的主要产品线:

  1. Cortex-M0系列:Cortex-M0是Cortex-M系列中的最基础、最简化的产品线,适用于对成本、功耗和面积有严格要求的应用。Cortex-M0处理器核具有较低的功耗和较小的面积,适用于诸如传感器、智能控制器、物联网设备等资源受限的应用。

  2. Cortex-M0+系列:Cortex-M0+是对Cortex-M0的改进和增强,具有更高的性能和更低的功耗。它引入了一些新的指令和硬件特性,提供了更好的能效和性能比。Cortex-M0+广泛应用于便携式设备、传感器控制、无线通信等领域。

  3. Cortex-M3系列:Cortex-M3是Cortex-M系列中的中间级别产品线,具有较高的性能和丰富的功能集。它是第一个支持ARM Thumb-2指令集的Cortex-M处理器核,适用于需要较高计算能力和实时性能的应用,如工业自动化、嵌入式控制等。

  4. Cortex-M4系列:Cortex-M4是在Cortex-M3的基础上增加了浮点运算单元(FPU)的产品线。FPU提供了硬件加速的浮点运算能力,使Cortex-M4处理器更适用于需要高精度浮点计算的应用,如信号处理、音频处理、图像处理等。

  5. Cortex-M7系列:Cortex-M7是Cortex-M系列中的高级产品线,具有更高的性能和更强大的计算能力。它采用了更复杂的流水线结构和更多的处理单元,支持乱序执行和超标量操作,适用于需要高性能和复杂任务处理的应用。

每个Cortex-M系列产品线都有多个型号和配置,以满足不同的应用需求。这些处理器核广泛应用于嵌入式系统、物联网、工业控制、消费电子和汽车电子等领域,并且受到广泛的开发者和厂商支持。

Cortex-M3结构框图

在这里插入图片描述

Cortex-M3的结构框图主要包含以下几个核心组件:

  1. Bus Matrix:负责处理处理器核与内部外设之间的访问请求,并提供总线调度和优先级管理。

  2. NVIC(Nested Vectored Interrupt Controller):是中断控制器,负责管理和分发中断请求,支持多级中断嵌套和优先级控制。

  3. SCB(System Control Block):包含了系统级控制和配置寄存器,负责处理系统的重置、异常处理、时钟控制和系统级调试等功能。

  4. MPU(Memory Protection Unit):可选的内存保护单元,提供对存储器区域的访问权限控制和保护,增强系统的安全性和稳定性。

  5. Debug Unit:用于处理调试和追踪功能,支持单步执行、断点调试和数据观测等调试操作。

  6. Core:Cortex-M3的核心部分,包含指令和数据处理单元、寄存器组、控制逻辑和流水线结构,负责执行程序指令和处理数据。

  7. System Timer:系统定时器,用于提供精确的时间基准,例如操作系统的时钟节拍。

  8. SysTick:可选的系统定时器,用于实现定时中断和系统滴答计时器。

  9. Bus Interfaces:与外部总线接口,包括存储器接口、外设接口和DMA控制器等,用于处理处理器核与外部设备之间的数据交换和通信。

这些组件共同构成了Cortex-M3处理器核的功能和架构,为嵌入式系统提供了高性能、低功耗和实时性能的解决方案。开发者可以根据具体的应用需求配置和使用这些组件。

Cortex-M3工作模式

在这里插入图片描述

Cortex-M3处理器支持多种工作模式,以满足不同的功耗和性能需求。以下是Cortex-M3的主要工作模式:

  1. Thread Mode(线程模式):这是Cortex-M3的正常工作模式。在线程模式下,处理器执行应用程序的指令,并处理中断请求。在这个模式下,处理器可以进入睡眠状态以降低功耗,并且可以通过中断唤醒。

  2. Handler Mode(处理器模式):当处理器进入中断或异常处理程序时,会切换到处理器模式。在处理器模式下,处理器优先处理中断或异常,然后返回线程模式继续执行应用程序。

  3. Sleep Mode(睡眠模式):在睡眠模式下,处理器将大部分功能关闭以降低功耗。在这个模式下,处理器停止执行指令,但仍然能够响应中断请求并通过中断唤醒。

  4. Deep Sleep Mode(深度睡眠模式):这是一种更低功耗的睡眠模式,用于进一步降低系统功耗。在深度睡眠模式下,处理器停止时钟和大部分功能,只有一些关键的外设保持运行,例如时钟源和唤醒引脚。

  5. Shutdown Mode(关闭模式):这是最低功耗的模式,在这个模式下,处理器关闭所有功能和时钟,只保留少量的维持电路活动。在这个模式下,处理器需要外部事件来唤醒。

通过这些工作模式的切换,Cortex-M3处理器可以根据实际需求灵活地控制功耗和性能,使得它适用于不同类型的应用,包括移动设备、物联网、传感器节点等需要长时间运行并具有低功耗要求的应用。

Cortex-M3工作状态

Cortex-M3处理器具有不同的工作状态,用于管理处理器的运行和功耗。以下是Cortex-M3的主要工作状态:

  1. 运行状态(Run):在运行状态下,处理器正常执行指令并处理中断请求。处理器从存储器中获取指令,并根据指令执行相应的操作。在运行状态下,处理器可以通过设置控制寄存器来控制处理器的功能和行为。

  2. 睡眠状态(Sleep):在睡眠状态下,处理器停止执行指令以节省功耗,但仍然能够响应中断请求并通过中断唤醒。睡眠状态可以通过设置处理器的控制寄存器来进入。处理器进入睡眠状态后,它将停止时钟,并且不执行指令,直到有中断请求到达并唤醒处理器。

  3. 深度睡眠状态(Deep Sleep):深度睡眠状态是一种更低功耗的睡眠模式,用于进一步降低系统功耗。在深度睡眠状态下,处理器停止时钟和大部分功能,只有一些关键的外设保持运行,例如时钟源和唤醒引脚。处理器可以通过设置相应的控制寄存器来进入深度睡眠状态,并且只能通过外部事件来唤醒。

  4. 关闭状态(Shutdown):关闭状态是处理器的最低功耗状态。在关闭状态下,处理器关闭所有功能和时钟,只保留少量的维持电路活动。处理器进入关闭状态后,只能通过外部事件来唤醒。

通过切换不同的工作状态,Cortex-M3处理器可以灵活地管理功耗,并根据实际需求来控制处理器的运行模式和行为。这使得Cortex-M3成为低功耗应用和嵌入式系统的理想选择。

Cortex-M3的寄存器

在这里插入图片描述
Cortex-M3处理器具有多个寄存器,用于存储和处理数据、控制处理器的行为和配置外设。以下是Cortex-M3的一些主要寄存器:

  1. 通用寄存器

    • R0-R12:共有13个通用寄存器,用于存储数据和临时计算。
    • R13(堆栈指针 SP):用于存储当前的堆栈指针,指向当前堆栈帧的顶部。
    • R14(链接寄存器 LR):用于存储子程序(函数)返回时的返回地址。
    • R15(程序计数器 PC):存储当前指令的地址,用于顺序执行指令。
  2. 特殊寄存器

    • xPSR(扩展程序状态寄存器):包含程序状态标志、条件码、异常优先级和执行状态等信息。
    • MSP(主堆栈指针):用于存储主堆栈的起始地址。
    • PSP(过程堆栈指针):用于存储过程堆栈的起始地址。
    • PRIMASK(优先级屏蔽寄存器):用于控制和屏蔽中断的优先级。
    • CONTROL(控制寄存器):包含当前的处理器模式和特权级。
  3. 系统控制寄存器

    • NVIC(Nested Vectored Interrupt Controller)相关寄存器:用于配置和控制中断控制器。
    • SCB(System Control Block)相关寄存器:用于配置和控制系统级功能,如复位控制、异常处理、系统控制等。
  4. 外设寄存器

    • 外设寄存器组:每个外设都有一组特定的寄存器,用于配置和控制外设的行为和功能,例如GPIO控制寄存器、定时器控制寄存器等。

这些寄存器用于控制和管理Cortex-M3处理器的行为,包括数据存储、堆栈操作、中断控制、系统配置等。开发者可以通过读取和写入这些寄存器来实现对处理器和外设的控制和配置。具体的寄存器布局和功能可以在ARM Cortex-M3的技术参考手册中找到。
在这里插入图片描述

Cortex-M3的中断和异常

Cortex-M3处理器支持中断和异常机制,以响应外部事件和处理异常情况。以下是Cortex-M3的中断和异常的一些关键概念:

  1. 中断(Interrupt):中断是处理器对外部事件的响应机制。当发生一个中断事件时,处理器会立即中断当前的执行流程,并跳转到中断服务程序(Interrupt Service Routine,ISR)来处理中断。Cortex-M3处理器支持多级中断嵌套和优先级控制,可以配置每个中断的优先级和响应方式。

  2. 异常(Exception):异常是处理器对内部事件和错误的响应机制。异常可以由指令执行错误、硬件故障、系统状态变化等触发。Cortex-M3处理器支持多种异常类型,例如未定义指令异常、访问违规异常、数据存储异常等。异常会导致处理器跳转到异常处理程序(Exception Handling Routine)来处理异常情况。

  3. 中断控制器(Interrupt Controller):Cortex-M3处理器内部集成了一个中断控制器,称为NVIC(Nested Vectored Interrupt Controller)。中断控制器负责管理中断的优先级和分发,以确保正确的中断处理顺序。NVIC可以配置中断优先级、使能和禁用中断,并提供多级中断嵌套的支持。

  4. 异常处理(Exception Handling):Cortex-M3处理器具有专门的异常处理机制。当发生异常时,处理器会自动保存当前的上下文信息(例如寄存器值),然后跳转到异常处理程序来处理异常。处理程序可以根据异常类型采取适当的操作,例如恢复错误状态、处理故障、记录日志等。

  5. 中断和异常优先级:Cortex-M3处理器支持基于优先级的中断和异常处理。每个中断和异常都有一个可配置的优先级,可以根据需求设置不同的优先级。处理器将根据优先级来确定中断和异常的处理顺序,高优先级的中断和异常将被优先处理。

通过中断和异常机制,Cortex-M3处理器可以及时响应外部事件和处理内部异常,提高系统的实时性和可靠性。开发者可以编写中断服务程序和异常处理程序来处理特定的事件和错误,并充分利用这些机制来提高系统的性能和稳定性。

Cortex-M3的指令集

Cortex-M3处理器采用了Thumb-2指令集体系结构,它是ARM架构中一种高效的指令集。Thumb-2指令集是基于RISC(Reduced Instruction Set Computing)设计原则,旨在提供更高的代码密度和性能效率。

Thumb-2指令集包括以下类型的指令:

  1. 16位Thumb指令:这些指令占用16位,相较于32位的ARM指令,具有更高的代码密度。16位Thumb指令可以执行大多数常见的算术、逻辑和数据处理操作。它们通常用于处理小型代码段或需要高代码密度的应用。

  2. 32位Thumb指令:这些指令占用32位,提供了更丰富的指令功能和操作。32位Thumb指令可以执行更复杂的操作,如乘法、除法、访问内存等。它们通常用于需要更高性能和更复杂功能的应用。

  3. Thumb-2混合指令:Thumb-2指令集还引入了一种混合指令模式,它可以同时使用16位Thumb指令和32位Thumb指令。这种混合模式结合了16位指令的高代码密度和32位指令的高性能,可以更灵活地适应不同的应用场景。

Cortex-M3处理器支持基本的数据处理指令、逻辑指令、分支和跳转指令、访存指令、位操作指令等。此外,它还提供了专门用于中断处理、异常处理、系统控制和外设访问的特殊指令。

通过Thumb-2指令集,Cortex-M3处理器能够实现高效的代码执行和较高的性能效率。它适用于嵌入式系统、物联网设备和其他对功耗和代码密度有严格要求的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/30797.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电商数据分析方案:丰富经验护航,分析一步到位

如果做电商数据分析的每一步都从零开始,摸着石头过河,反复测试修改。一通忙活下来,成果没见多少,人力物力成本倒是节节攀升,试问又有多少企业承受得住?如果有一套一步到位的数据分析方案,是不是…

Linux学习[15]bash学习深入1---bash的功能---变量详解

文章目录 前言:1. bash功能2. 变量2.1 变量赋值2.2 unset取消变量2.3 环境变量 总结 前言: 之前在学树莓派相关内容的时候,对bash脚本的简单上手做了一个总结,并且归纳到下面三个博客。 当时参考的书为《从树莓派开始玩转linux》…

LwIP RAW API 实现UDP多播收发

LwIP RAW API 实现UDP多播收发实现 1、初始化 static struct udp_pcb *multicast_pcb NULL; static ip_addr_t mutlcast_send_ip; static ip_addr_t mutlcast_recv_ip;static void udp_recv_multicast(void *arg, struct udp_pcb *pcb, struct pbuf *p,const ip_addr_t *add…

结构化GPT用例,在CSDN私密社区中死磕@ada 探索SpringBoot

在CSDN私密社区中死磕ada 探索SpringBoot Q: Spring的核心概念是哪些?Q: Spring MVC的核心概念是哪些?Q: SpringBoot的核心概念有哪些?Q: 介绍下SpringBoot AutoConfiguration的机制。Q: SpringBootConfiguration 和 Configuration 的区别是&…

C# 学习(一)概述

今天开始学习 C#,所有学习资料来源于: 菜鸟教程 一、C# 简介 C# 是 .NET 框架的一部分,随之创造出来的语言,所以了解 C# 前,需要知道 .NET 是个什么东西。 1.1 .NET 框架介绍 .NET 是微软提出的 Web 的一种软件开发…

【每日一题】LCP 41. 黑白翻转棋

【每日一题】LCP 41. 黑白翻转棋 LCP 41. 黑白翻转棋题目描述解题思路 LCP 41. 黑白翻转棋 题目描述 在 n*m 大小的棋盘中,有黑白两种棋子,黑棋记作字母 “X”, 白棋记作字母 “O”,空余位置记作 “.”。当落下的棋子与其他相同颜色的棋子在…

JavaScript ES10新特性

文章目录 导文Array.prototype.flat()和Array.prototype.flatMap()Object.fromEntries()String.prototype.trimStart()和String.prototype.trimEnd()格式化数字动态导入可选的catch绑定BigIntglobalThis 导文 JavaScript ES10,也被称为ES2019,引入了一些…

【07】STM32·HAL库开发-新建寄存器版本MDK工程 |下载STM32Cube固件包 | 新建MDK工程步骤

目录 1.新建工程前的准备工作(了解)1.1下载相关STM32Cube 官方固件包(F1/F4/F7/H7) 2.新建寄存器版本MDK工程步骤(熟悉)2.1新建工程文件夹2.1.1Drivers文件夹2.1.2Middlewares文件夹2.1.3Output文件夹2.1.4Projects文件…

SpringMvc学习——在idea中新建springWeb项目 浏览器请求 和 服务器响应 SpringMvc文件相关

目录 引出基础知识:三层架构和MVC1. 三层架构2.MVC模型 springWeb项目IDEA搭建1.新建一个普通的maven项目2.导入包,pom.xml文件3.写主启动类Main.java文件SpringBootApplication4.写application.yml文件spring的配置文件5.启动,运行main.java…

Spark大数据处理学习笔记(3.8.3) Spark RDD典型案例-利用RDD实现分组排行榜

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/Twpwe】 文章目录 一、任务目标二、准备工作2.1 在本地创建成绩文件2.2 将成绩文件上传到HDFS上指定目录 三、完成任务3.1 在Spark Shell里完成任务3.1.1 读取成绩文件得到RDD3.1.2 利用映射算子生…

Spring Cloud Alibaba Seata(一)

目录 一、Seata 1、分布式事务简介 1.1、分布式事务理论 1.2、分布式事务解决方案 2、Seata简介 3、Seata安装 一、Seata 1、分布式事务简介 基础概念:事务ACID A(Atomic):原子性,构成事务的所有操作&#xf…

27-2BP_Adaboost强分类器公司财务预管建模——强分类器和弱分类器(附matlab程序)

1.简述 Adaboost算法的思想是合并多个“弱”分类器的输出以产生有效分类。其主要步骤为:首先给出弱学习算法和样本空间(x,y),从样本空间中找出m组训练数据,每组训练数据的权重都是1/m。然后用弱学习算法迭代运算T次&am…

爬虫小白应该如何学习爬虫

什么是Python3网络爬虫? 定义: 网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。爬虫其实是通过编写程序,模拟浏览器上网&#x…

Flutter 库:强大的工具及扩展——nb_utils

Flutter 库:强大的工具及扩展——nb_utils 文章目录 Flutter 库:强大的工具及扩展——nb_utils一、概述1、简介2、功能3、官方资料 二、基本使用1、安装2、基本使用第一步:在 main.dart 中初始化第二步:在您的 MaterialApp 或 Cup…

SpringBoot中@ControllerAdvice的三种使用场景

一、全局异常处理 代码示例如下: /*** author qinxun* date 2023-06-14* Descripion: 业务层异常枚举*/ public enum ServiceExceptionEnum {SUCCESS(0, "成功"),ERROR(1, "失败"),SYS_ERROR(1000, "服务端发生异常"),MISSING_REQUEST_PARAM_E…

微信小程序自定义模块

自定义wxs并引入 新建一个tools.wxs 创建一些function,并使用moule.exports {}导出 使用 <wxs>标签 并填写正确src 书写module名称 之后在其他标签内&#xff0c;使用 {{自定的module名称.自定义的一个function并传入对应参数}}就可以实现参数在自定义function中的导入…

用docker搭建selenium grid分布式环境实践

目录 前言&#xff1a; selenium jar包直接启动节点 用docker命令直接启动 docker-compose 启动 Hub和node在一台机器上 Hub和node不在一台机器上 遗留问题 总结 前言&#xff1a; Selenium是一个流行的自动化测试工具&#xff0c;支持多种编程语言和多种浏览器。Sele…

SpringCloudAlibaba之Sentinel源码分析--protoc-3.17.3-win64

Sentinel源码分析 文章目录 Sentinel源码分析1.Sentinel的基本概念1.1.ProcessorSlotChain1.2.Node1.3.Entry1.3.1.自定义资源1.3.2.基于注解标记资源 1.4.Context1.4.1.什么是Context1.4.2.Context的初始化1.4.2.1.自动装配1.4.2.2.AbstractSentinelInterceptor1.4.2.3.Contex…

【linux kernel】linux media子系统分析之media控制器设备

文章目录 一、抽象媒体设备模型二、抽象媒体设备三、Entity四、Interfaces五、Pad六、Link七、Media图遍历八、使用计数和电源处理九、link设置十、Pipeline和Media流十一、链接验证十二、媒体控制器设备的分配器API 本文基于linux内核 4.19.4&#xff0c;抽象媒体设备模型框架…

chatgpt赋能python:Python如何查找特定名称文件

Python如何查找特定名称文件 在计算机文件管理和互联网网络应用程序中&#xff0c;查找特定文件往往是一项必要的任务。在使用Python编程时&#xff0c;我们可以使用Python内置的os模块来查找特定名称的文件。本文将介绍如何使用Python查找特定名称的文件&#xff0c;并提供实…