ARM架构,Cortex-M3和Cortex-M4学习心得,小白起步(2)


一、Cortex处理器系列包括三类

  • ARM 的 Cortex 家族是为了覆盖不同层次的市场而设计的:
    Cortex-A:像“大脑”,处理复杂任务;
    Cortex-R:像“反应神经”,保证实时和安全;
    Cortex-M:像“手脚”,执行具体动作、快速响应控制。

二、简述ARM架构

  • ARM 架构就像一棵树:
    主干是 架构版本(ARMv4 → ARMv7);
    分支是 不同系列(A/R/M);
    枝叶是 不同型号(M0、M3、A9、R5等);
    而 Thumb 与 Thumb-2 是让这棵树既“轻便”又“高效”的枝条。

三、什么是 ARM 生态系统

  • ARM 自己不生产芯片,它的核心竞争力在于提供 处理器架构设计和技术授权。
    为了让更多厂商、开发者、研究机构都能使用 ARM 技术并从中受益,ARM 建立了一个庞大的“生态系统”。
  • 简单理解:
    ARM生态系统就像一个“大家庭”,ARM 是核心,周围围绕着各种合作伙伴、开发工具厂商、培训机构、开源社区和高校。
    他们各自分工合作,让整个 ARM 世界不断壮大。
成员类型作用
芯片合作伙伴各种芯片制造商(如 ST、NXP、Microchip 等),负责把 ARM 核心做成具体芯片
EDA 工具供应商提供电路设计与仿真工具(如 Synopsys、Cadence 等)
设计服务与培训机构帮助企业或个人学习、设计、优化 ARM 相关产品
软件和中间件供应商提供嵌入式操作系统(如 RTOS、Linux)和驱动支持
分销商负责 ARM 芯片及相关产品的销售与供应链
开发工具供应商提供开发环境、编译器、调试器(如 Keil、IAR)
开源社区推动 GCC、Linux、FreeRTOS 等开源软件在 ARM 平台运行
研究者与高校通过教育和科研推广 ARM 架构,培养新一代工程师

👉 这些成员共同构成一个“协作网络”,确保开发者可以在 ARM 平台上方便地开发、测试、量产。

四、ARM 微控制器由哪些部分组成?

  • ARM 微控制器不仅仅是一个“处理器”,它其实是一个完整的系统(SoC, System on Chip),由多个功能模块集成在同一块芯片上。
模块作用
程序存储器(Flash)存放你的程序代码,比如你写的C程序最终编译后的机器指令
SRAM存放运行时的数据,例如全局变量、堆栈数据等
外设各种控制接口,如定时器、串口、SPI、I²C、CAN、PWM等
内部总线连接处理器和各个模块的“数据通道”,相当于芯片内部的交通系统
时钟和复位逻辑(PLL等)产生CPU运行的主时钟信号,让整个芯片同步工作
电源调节和监控模块保证芯片在安全的电压下运行,还能检测掉电、欠压等情况
模拟模块(ADC/DAC/比较器等)实现模拟信号与数字信号之间的转换
I/O接口接外部设备的引脚,比如LED、按键、传感器
测试电路芯片制造时用来测试内部功能是否正常,一般用户看不到

所以,当我们使用 STM32 或 GD32 这种基于 Cortex-M 的 MCU 时,通常只需阅读芯片厂商提供的 用户手册(Reference Manual) 和 数据手册(Datasheet) 来了解这些部分。

在使用 ARM 微控制器时,需要参考两类主要技术文档:

  • 数据手册(Datasheet)
    介绍芯片的基本参数和电气特性。
    内容包括:封装尺寸、引脚定义、工作电压、电流消耗、温度范围、最高时钟频率等。
    主要面向硬件工程师,用于电路设计和器件选型。
  • 用户手册(Reference Manual)
    详细说明芯片内部各个外设模块的功能与寄存器。
    内容包括:GPIO、定时器、ADC、UART、I²C、CAN等外设的寄存器结构、配置方法与使用流程。
    主要面向软件工程师,用于编程与驱动开发。

五、编译与链接

“编译与链接”其实就是把你写的C语言程序(人能看懂的)变成机器能执行的二进制代码。

  • 编译(compile)
    你写的 .c 文件(比如 main.c)里是人能读的C语言。
    编译器会一个一个地把这些文件“翻译”成机器能看懂的目标文件(.obj 或 .o)。
    每个 .c 文件会变成一个 .obj 文件。
    比如:
main.c   →   main.obj
delay.c  →   delay.obj
led.c    →   led.obj
  • 链接(link)
    现在虽然每个文件都翻译成了英文(.obj),
    但它们之间可能互相有调用,比如:
main.c 里用到了 delay_ms()
delay_ms() 在 delay.c 里定义

所以需要有人帮它们“对上号”。

  • 链接器的任务就是:
    把所有 .obj 文件合并成一个完整的程序;
    把“函数在哪里定义”的信息补齐;
    把数据和代码放到合适的内存地址;
    生成一个最终可执行文件(比如 .elf)。
  • 生成最终文件(.hex / .bin)
    .elf 文件还带有调试信息(方便调试用),
    但芯片只需要纯净的“机器码”。
    所以编译器会再把 .elf 转换成:
    .hex 文件(Intel HEX格式)或
    .bin 文件(纯二进制格式)
    这两个文件就是你要烧进芯片Flash里的程序。
  • 就像你做一本书的全过程:
    写稿子(.c) →
    每章翻译(编译)成英文(.obj) →
    把所有章节合成一本书(链接生成 .elf) →
    打印成最终版(转成 .hex / .bin)给芯片执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值