前段时间有朋友在群里聊到单片机烧录程序什么情况要切换BOOT0、BOOT1?自己设计板子,不知道如何选择。
这种情况就是对单片机的启动条件分不清。
单片机程序烧录主要有三种方式:ISP(在系统编程)、ICP(在电路编程)和IAP(在应用编程)。每种方式各有优劣,适合不同场景。
ISP方式利用单片机出厂内置的Bootloader,从系统存储区域启动,通过UART/SPI等串行接口接收外部固件,再写入主存储区。主要步骤如下:
ISP方式免拆板;适合批量远程或现场在线升级;烧录速率受串口波特率限制;仅支持预置协议。
ICP方式通过JTAG或SWD调试接口,使用专用烧录器(如J-Link、ST-Link)直接访问并擦写主Flash,无需Bootloader。主要步骤如下:
ICP方式速度快;可单步调试;烧录灵活;但是需外置下载器;产品现场不便使用;成本较高。
IAP在主存储区预留两段:一段为开发者自定义Bootloader,另一段为用户APP。
MCU启动先运行Bootloader,根据条件(按键/标志/网络)判断是否需从外部获取新固件并写入APP区域。主要步骤如下:
IAP方式灵活;可实现无线远程升级;无需外部工具;但是设计和实现复杂;占用Flash空间。