【ARMv7】开篇:掌握ARMv7架构Soc开发技能

本专栏,开始与大家共同总结使用ARMv7系列CPU的Soc开发技能。大概汇总了一下,后面再逐步完善下面的思维导图。

简单说说:与通用的ARMv7-A/R相比,以STM32F为代表的ARMv7-M架构有以下关键区别和重点

  1. 无MMU,有MPU :STM32F系列没有内存管理单元(MMU) ,因此无法运行像Linux这样需要虚拟内存管理的复杂操作系统。但它可以有内存保护单元(MPU),用于在RTOS(如FreeRTOS)中保护任务之间的内存空间,防止错误访问。

  2. 高度集成的NVIC嵌套向量中断控制器(NVIC) 是Cortex-M内核的一大亮点,它被集成在CPU内部。你对中断的所有配置(优先级、使能、查询状态)都是通过访问NVIC的存储器映射寄存器来完成,非常高效和统一。这是STM32中断编程的核心。

  3. 系统控制块(SCB) :这是操控CPU核心功能的模块。对于STM32开发者来说,最常用的就是SCB->VTOR寄存器来重定义向量表地址(例如在IAP升级或运行OS时非常有用)。

  4. 开发模式 :你几乎永远不会用纯汇编 来开发整个STM32项目。通常是C语言编写,仅在启动文件(.s)中用汇编完成最基础的栈初始化、向量表定义和时钟初始化跳转。理解汇编是为了更好地调试和优化。

  5. 实践核心:学习STM32F,在掌握了上述架构知识后,真正的实践在于:

    • 理解启动过程 :从汇编启动文件到main()函数之间发生了什么。

    • 精通中断机制:如何编写中断服务函数、如何配置NVIC。

    • 熟练操作外设:本质上就是读写那些定义好的内存地址(寄存器)。

    • 使用CMSIS:这是一个由ARM制定的硬件抽象层标准,ST(意法半导体)提供的库都基于此。它定义了访问NVIC、SCB等内核寄存器的标准方式,让你的代码可以在不同Cortex-M厂商的芯片间移植。

总结:学习STM32F的ARMv7-M架构,重点是理解中断机制(NVIC)、掌握存储映射(知道外设寄存器在哪)、会配置核心功能(SCB)、掌握启动流程、掌握程序运行原理、掌握片设片成技巧,并最终通过C语言和标准库来高效地控制整个芯片。

相关推荐
alive9034 个月前
STM32移植LVGL8.3 (保姆级图文教程)
stm32·单片机·嵌入式硬件·stm32f407·lvgl8.3·lvgl移植
【 STM32开发 】1 年前
STM32 -- USB CDC 虚拟串口通信
stm32·usb·cdc·虚拟串口·stm32f407
时光飞逝的日子1 年前
ThreadX源码:Cortex-A7的tx_thread_irq_nesting_start(嵌套中断开始动作).s汇编代码分析
threadx·armv7·cortex-a7·arm内核·嵌套中断
时光飞逝的日子1 年前
Cortex-A7支持的内存类型详解及配置举例
cache·mmu·armv7·内存类型·cortex-a7·normal memory·device memory
时光飞逝的日子1 年前
STM32MP135裸机编程:支持内存非对齐访问
gcc·stm32mp135·裸机编程·非对齐访问·armv7
星沉地动2 年前
STM32F407移植OpenHarmony笔记7
openharmony·stm32f407
星沉地动2 年前
STM32F407移植OpenHarmony笔记4
openharmony·stm32f407