2、硬件平台准备:选择MCU(以STM32为例)、开发板介绍、数据手册与参考手册查阅方法
做Bootloader,说白了就是跟硬件打交道。你写的每一行代码,最终都要落到具体的寄存器、引脚和内存地址上。所以,选对硬件、看懂手册,是咱们这门课的第一道坎。
我个人习惯用STM32系列来教学。为什么?因为它的生态太成熟了,文档齐全,开发板便宜,而且市面上绝大多数ARM Cortex-M内核的MCU,启动流程都大同小异。你学会了STM32,换其他芯片也能很快上手。
2.1 为什么选STM32?
你可能要问:市面上MCU那么多,为什么偏偏选它?
我列几个实际原因给你听听:
- 文档质量高:ST(意法半导体)的数据手册和参考手册写得非常规范,尤其是参考手册,几乎把每个外设的每个寄存器都讲透了。我在项目里遇到过一些国产芯片,手册里关键时序图都画错,那才叫一个头疼。
- 工具链成熟:从编译器(ARM GCC、IAR、Keil)到调试器(ST-Link、J-Link),再到烧录工具,全都有免费或低成本的方案。
- Flash和RAM够用:Bootloader本身不大,但你需要留出空间给应用程序。STM32F103系列,Flash从64KB到512KB都有,入门完全够用。
- 网上资料多:遇到问题,随便一搜就能找到解决方案。这一点对初学者来说,真的很重要。
核心观点:我们选STM32F103C8T6作为教学芯片。它基于ARM Cortex-M3内核,72MHz主频,64KB Flash,20KB RAM。最关键的是,它的启动流程是Cortex-M系列的典型代表。
2.2 开发板怎么选?
开发板的选择,直接决定了你调试是否顺利。我建议你准备两块板子:
| 类型 | 推荐型号 | 价格区间 | 适合场景 |
|---|---|---|---|
| 核心板 | STM32F103C8T6最小系统板 | 10-20元 | 日常练习、烧录测试 |
| 开发板 | STM32F103C8T6蓝色魔法板(Blue Pill) | 15-30元 | 带LED、按键、USB接口,方便调试 |
我个人更推荐蓝色魔法板。它板载了一个LED(PC13),一个按键,还有一个USB转串口芯片。这些外设虽然简单,但在Bootloader开发中非常有用——比如用LED闪烁表示启动成功,用按键触发进入固件升级模式。
小提示:买开发板时,记得确认一下板载的调试器。蓝色魔法板通常不带ST-Link,你需要额外买一个ST-Link V2调试器,大概十几块钱。别买那种几块钱的盗版货,我曾经被坑过,下载到一半就断连,查了半天才发现是调试器的问题。
2.3 数据手册 vs 参考手册:别搞混了
很多新手一上来就懵:ST官网上一堆PDF,到底该看哪个?
我告诉你一个简单区分方法:
- 数据手册(Datasheet):讲的是芯片的电气特性。比如工作电压范围、引脚功能、功耗、封装尺寸。你选型、画PCB的时候主要看它。
- 参考手册(Reference Manual):讲的是怎么编程。比如寄存器怎么配、外设怎么用、启动流程是什么。你写代码的时候主要看它。
举个例子:你想知道STM32F103的Flash地址范围是多少?查数据手册。你想知道怎么通过寄存器擦除Flash?查参考手册。
注意:参考手册是系列通用的。比如STM32F103系列共用一个参考手册(RM0008),而数据手册是具体型号的。别拿F103的数据手册去查F407的寄存器,那肯定对不上。
2.4 怎么快速查阅手册?
说实话,几百页的手册,没人会从头读到尾。我教你几个高效查阅的方法:
- 先看目录:参考手册的目录非常详细。比如你想看启动配置,直接找"Boot configuration"或"System and memory overview"。
- 善用PDF搜索:Ctrl+F是你的好朋友。搜"Bootloader"、"Flash"、"Vector table"这些关键词。
- 关注内存映射图:这是Bootloader开发的核心。手册里通常会有一张图,标明了Flash、SRAM、外设寄存器的地址范围。我建议你把这页打印出来贴在桌上。
- 看寄存器描述:每个外设章节,都会有一个寄存器列表。你只需要关注那些与Bootloader相关的寄存器,比如RCC(时钟)、FLASH(闪存控制)、USART(串口)。
避坑指南:我曾经在做一个项目时,发现Bootloader跳转到应用程序后,程序跑飞了。查了两天,最后发现是中断向量表偏移没设置对。这个配置就在参考手册的"System control block"章节里。如果你提前看过,能省下两天时间。
2.5 本章核心知识图谱
下面这张图,帮你理清本章的知识结构。从硬件选型到手册查阅,每一步都环环相扣。
2.6 动手准备:你需要下载的文件
在开始写代码之前,先把这几份文档下载好。我建议你建一个专门的文件夹,命名清晰一点,别到时候找半天。
| 文件名 | 说明 | 下载位置 |
|---|---|---|
| STM32F103x8_BD_Datasheet.pdf | STM32F103C8T6数据手册 | ST官网 -> 产品 -> 微控制器 -> STM32F103 |
| RM0008_Reference_Manual.pdf | STM32F103系列参考手册 | ST官网 -> 工具与软件 -> 文档 |
| PM0056_Programming_Manual.pdf | Cortex-M3编程手册 | ARM官网 -> 文档 -> Cortex-M3 |
| STM32F103C8T6_Schematic.pdf | 蓝色魔法板原理图(网上搜) | 淘宝卖家页面或GitHub开源项目 |
小技巧:下载时注意版本号。ST会不定期更新手册,比如RM0008现在已经是Rev 20了。尽量下载最新版本,但如果你用的是老款开发板,旧版本的手册可能更匹配。
2.7 最后说两句
硬件平台准备,说白了就是两件事:选对板子,看懂手册。别小看这一步,我见过太多人,代码写了一大堆,结果发现芯片型号都选错了,或者手册里明明写了某个寄存器是只读的,他偏要去写,然后程序跑飞了还找不到原因。
嗯,准备工作做扎实了,后面写Bootloader的时候,你会感谢现在的自己。