1. 课程导论与开发环境搭建

大家好,欢迎来到这门实战课。我是你们的讲师,一个在嵌入式领域摸爬滚打了十几年的老工程师。

咱们这门课,讲的是 Bootloader IAP 编程与固件升级。说白了,就是怎么让你的单片机自己给自己“换脑子”——通过串口把新程序烧进去,不用拆机箱,不用接烧录器。

我刚开始做产品的时候,每次升级固件都得拿着 J-Link 去现场,那叫一个折腾。后来学会了 IAP,才算是解放了双手。嗯,这节课咱们先把基础打牢。

1.1 什么是 Bootloader?

Bootloader,就是一段在用户程序之前运行的特殊代码。它负责初始化硬件、检查要不要更新程序,然后跳转到主程序。

你可以把它想象成电脑的 BIOS。电脑开机先跑 BIOS,再启动 Windows。单片机也一样,上电先跑 Bootloader,再跳转到你的应用程序。

核心要点: Bootloader 是固件升级的“守门员”,它决定了是正常启动还是进入升级模式。

1.2 IAP 原理:自己烧自己

IAP(In-Application Programming),就是在应用中进行编程。它允许程序在运行时,擦写自己的 Flash 存储器。

为什么能做到?因为 STM32 的 Flash 是分块的。Bootloader 放在一个块里,应用程序放在另一个块里。Bootloader 通过串口收到新固件,直接写到应用程序的块里,然后跳转过去。

我在项目中遇到过一个问题:如果升级过程中突然断电,那应用程序块就废了。所以后来我加了一个“备份区”,先写备份,校验通过再复制到主区。这个咱们后面会细讲。

1.3 为什么需要 CRC 校验?

串口传输数据,难免会有干扰。你想想看,一个 bit 翻转了,程序就跑飞了。

CRC(循环冗余校验)就是用来检测数据有没有被篡改的。发送方计算一个 CRC 值附在数据后面,接收方重新计算,对比一下就知道数据对不对。

我的经验: 别用简单的累加和做校验,那玩意儿撞车概率太高。CRC32 才是正经选择,误判率极低。

我曾经在一个工业项目里,就因为偷懒用了 XOR 校验,结果现场升级后设备直接死机。从那以后,CRC 校验成了我的标配。

1.4 开发板选型:为什么是 STM32?

市面上单片机那么多,为什么选 STM32?

  • 生态好: 资料多,库函数全,遇到问题一搜就有答案。
  • Flash 分区灵活: 支持按页擦除,非常适合 IAP 场景。
  • 性价比高: 几十块钱的板子就能跑全套 IAP 流程。

我个人习惯用 STM32F103C8T6(蓝色 pill 板)做教学,便宜又皮实。当然,F4 系列也完全没问题,代码基本通用。

型号 Flash 大小 RAM 大小 适合场景
STM32F103C8T6 64KB 20KB 入门、小项目
STM32F407VET6 512KB 192KB 复杂 IAP + RTOS
STM32H743 2MB 1MB 高端工业、双 Bank 升级

1.5 开发环境搭建:Keil 与 IAR

工欲善其事,必先利其器。咱们得先把环境搭好。

Keil MDK

  • 下载安装 MDK-ARM 最新版(我用的是 5.38)。
  • 安装对应芯片的 Pack(STM32F1 系列就装 Keil.STM32F1xx_DFP)。
  • 破解(你懂的,正版太贵)。

IAR Embedded Workbench

  • 下载安装 IAR for ARM(我习惯用 8.50 以上版本)。
  • 同样需要安装器件支持包。

注意: Keil 和 IAR 的工程文件不通用。我建议你选一个主攻,另一个了解即可。我个人更倾向 Keil,因为社区资源多。

1.6 串口工具准备

串口是咱们和 Bootloader 沟通的桥梁。你需要准备:

  • USB 转 TTL 模块: CH340 或 CP2102 都行,几块钱一个。
  • 串口调试助手: 我用的是 SSCOM(丁丁串口),轻量好用。你也可以用 SecureCRT 或 Putty。
  • 接线: TX 接 RX,RX 接 TX,GND 接 GND,别接反了。

我曾经有一次忘记共地,结果数据全是乱码。排查了半天才发现是地线没接。嗯,这种低级错误,犯一次就记住了。

1.7 本章知识体系

下面这张图,帮你理清这节课的核心脉络:

第1章知识体系图 第1章:课程导论与开发环境搭建 Bootloader IAP 实战 Bootloader 概念 IAP 原理 CRC 校验 开发板选型 Keil / IAR 环境 串口工具准备 💡 学习路径建议 先理解概念 → 搭建环境 → 动手烧录 每一步都亲自操作,别只看不练

总结一下: 这节课我们搞清楚了 Bootloader 是干啥的,IAP 怎么实现自我升级,CRC 为什么必不可少,以及怎么选板子、搭环境、准备串口工具。这些都是后续实战的基石。