首页 » 互联网 » Boot 引脚激发的血案_单片机_鱼鹰

Boot 引脚激发的血案_单片机_鱼鹰

落叶飘零 2025-01-15 17:45:55 0

扫一扫用手机浏览

文章目录 [+]

程序下载到程序之后,没有正常运行。

疑惑下载过程或者程序涌现问题,但是同样的工具,同样的程序,下载到另一块单片机没有任何问题。

Boot 引脚激发的血案_单片机_鱼鹰 Boot 引脚激发的血案_单片机_鱼鹰 互联网

那么问题出在哪?

Boot 引脚激发的血案_单片机_鱼鹰 Boot 引脚激发的血案_单片机_鱼鹰 互联网
(图片来自网络侵删)

考试测验方法:

碰着诡异的问题时,鱼鹰都是建议直接在线调试。

由于下载过程是正常的,解释调试器可以正常连接单片机,同时单片机也可以正常事情,否则调试器无法连接单片机并下载。

(通过以下界面,可以查看调试器是否已连接,包含调试器的产品序列号,固件版本等,右边窗口表示连接的单片机芯片 ID 信息,目前这个界面由于没有调试器,没有干系信息)

由于调试器可以正常连接芯片,那么进入在线调试模式便是顺理成章的事情了。

当你在线调试时,你会创造如下窗口:

(该图是一个群友的截图,放在这里方便描述)

通过上一篇条记《编译优化:这些锅我不背!
》我们可以知道,这个工程下载的工程该当是精确的,MDK 也可以正常设置断点位置。

但奇怪的是,程序竟然没有停在断点处。
这是个很诡异的问题。

同时这个征象也阐明了为什么程序事情不正常,既然程序没有运行到 main 函数,那么肯定无法正常事情。

有履历的工程师该当都知道,main 函数并不是单片机运行的第一条指令,以是我们就会疑惑是否是中断向量表有问题(第一条指令地址存放在中断向量处)。

但是根据前面所说,这个程序下载到别的单片机是正常运行的,以是可以打消这个缘故原由。

那么这个问题到底是怎么回事?

我们实在可以从调试截图中得到另一个信息,单片机在 0x1FFFxxxx 地址处运行(正常该当在 0x0800xxxx)!


并且当你单步运行时,你会创造汇编指令是可以实行的。
同时我们可以看到汇编指令是正常的,并不都是 0 或者 0xff,这些数据能够被解析器精确解析成汇编指令。

这就解释一个问题,单片机确实在运行指令,只不过,我们无法通过 MDK 看到源码,也无法进行源码级别的调试。

剖析到这里,有履历的道友该当有点方向了。

在单片机中,还有什么代码是可以被实行,我们用户又没有源码的?

没错,便是芯片生产时固化在单片机内部的 ISP 程序。

很多时候,当我们没有得当的调试器更新程序时,我们会选择利用串口下载程序。

并且我们也很清楚如何通过设置 boot0 引脚来完成升级,我们也很清楚单片机中有一段代码专门干这事,而每一本芯片参考手册里也都写了如何利用串口升级。

但是我们却不知道这段程序到底位于哪里?我们无法亲眼看到这段程序实行并把我们的程序下载到单片机中。

以是当我们看到问题截图时,我们无法第一韶光明白:单片机正在实行串口升级程序。

(事实上,我们可以从参考手册看到系统存储地址的空间)

到此,我们该当知道单片机为什么不能正常事情了,由于它跑错地方了!

那为啥会运行到系统存储器去了呢?

肯定和开机时 boot 引脚电平有关。

问题办理:

既然定位到 boot 引脚电平可能有问题,那么就可以通过检讨 boot 情形来确定问题。

终极那位群友说是由于贴片时贴错了位置,导致该当设置为低电平却设置成高电平导致。

确实,这个群友经由我的提醒定位到问题了,但是现场情形可能比那位群友的要糟糕。

比如,鱼鹰在第一次碰着这个问题时,也是涌现了同样的征象,但是那时的单片机 boot0 利用万用表检测的电压确实是低电平,但它还是到系统存储区实行了(那时并不知道这是 ISP 程序,只知道实行位置错了,当问题办理了,鱼鹰才晓得这段代码是干啥的)。

一样平常人碰着这种问题,可能就不知所措,开始连续疑惑是不是自己软件的问题了。
但鱼鹰不同,摸爬滚打多年,履历丰富(自夸,哈哈),坚信自己的判断:一定是 boot 0 引脚问题。

以是,鱼鹰拿来示波器(为什么要利用示波器?我们要知道,万用表只能检测出均匀的电压,瞬间的电平变革,万用表是无法创造的),从上电开始不雅观察。

由于问题复现率很高,鱼鹰很快通过示波器的单次触发功能创造了在上电那一刻,boot0 引脚会溘然涌现一个高电平,如果此时刚好是单片机采样 boot0 的时候,那么单片机进入串口下载程序也就不奇怪了。

到此,身为软件工程师的任务结束了,我们已经定位到有非常电平导致单片机事情不正常,此时就要由硬件工程师上场剖析为什么会涌现这个非常电平了。

至于非常电平是如何产生的,又是如何办理的,就不是我们软件工程师要理解的了,毕竟我们不是专业的。

以上问题,在第一次碰着时,鱼鹰确实一脸懵逼,但利用在线调试这个大杀器,再结合踏实的根本,办理起来也不是那么困难。
但是对付其他人而言,可能便是一件毫无头绪的事情,可能考试测验各种方法还是一无所获。
正由于如此,每次碰着这种截图,鱼鹰都是让他们检讨boot引脚再说。

而本日鱼鹰记录这个问题,便是希望让更多人可以知道这个事(求转发),从而更快的定位问题。

希望本日这篇条记对你有所启示,咱们下期再见!

相关文章

Boot 引脚激发的血案_单片机_鱼鹰

程序下载到程序之后,没有正常运行。疑惑下载过程或者程序涌现问题,但是同样的工具,同样的程序,下载到另一块单片机没有任何问题。那么问...

互联网 2025-01-15 阅读 评论0