一、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)给芯片执行。
1683

被折叠的 条评论
为什么被折叠?



