ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

070、Bootloader与固件烧录调试

070、Bootloader与固件烧录调试 070、Bootloader与固件烧录调试:从一次“变砖”经历说起几年前调试一块基于STM32F407的工业控制板,板子已经小批量试产,客户催着要样机。我像往常一样通过SWD接口烧录固件,进度条走完,提示成功。拔掉烧录器,上电——屏幕黑着,指示灯不亮,串口没有任何输出。板子“变砖”了。当时第一反应是硬件问题,拿示波器量晶振、量电源、量复位引脚,全正常。换一块板子,同样操作,同样变砖。这才意识到问题出在固件本身——我烧录的程序里,不小心把中断向量表偏移设错了,导致芯片上电后直接跑飞。更麻烦的是,这块板子没有预留串口ISP烧录接口,SWD是唯一的烧录通道,而我的烧录器恰好在那天出了点接触不良的毛病,反复重试几次才成功一次。那次之后,我花了整整一周时间,把Bootloader从“能用”改成了“可靠”。今天这篇笔记,就聊聊Bootloader设计里那些容易踩的坑,以及固件烧录调试时真正实用的方法。Bootloader到底在干什么很多人把Bootloader想得很玄乎,其实它就是一个“启动引导程序”,放在Flash的起始地址(比如0x08000000)。芯片上电后,CPU从0x00000000取复位向量,这个向量指向的地址,就是Bootloader的入口。Bootloader做的事情很简单:检查是否有新固件需要更新,如果有,就通过某种通信接口(UART、USB、CAN、以太网等)接收数据并写入Flash;如果没有,就跳转到应用程序的入口。听起来简单,但实际做起来,细节能把人逼疯。中断向量表重映射——最容易翻车
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进