打印
[其他ST产品]

STM32 串口ISP烧录问题

[复制链接]
900|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2025-1-15 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一套代码需要使用ISp烧录HEX文件运行,代码有一个老的HEX,无论是全片擦除还是擦除重要部分再下载都没有问题。 但是代码重新编译之后的产生的新hex文件,如果选择全片擦除,就没办法正常运行。只有ISP选择擦除重要部分在下载,才是正常的 正确的代码现象是灯可以闪烁,能连接上串口。新编译的HEX文件如果全片擦除,则没有任何现象。 只有选择老的(正确的)HEX文件ISP下载一次,新编译的HEX文件再ISP烧录一遍才能够运行成功。 这个问题很困扰我,希望有懂得朋友解答一下。谢谢各位

使用特权

评论回复
沙发
失物招領| | 2025-2-11 01:34 | 只看该作者
你这个简单,就是ISP和你的程序地址设置有问题,有冲突了

使用特权

评论回复
板凳
将爱藏于深海| | 2025-2-11 02:38 | 只看该作者
新的HEX文件可能在编译时生成了不同的校验和或配置位设置。这些设置可能影响了微控制器的启动行为。检查编译器设置,确保新的HEX文件在编译时使用了与旧文件相同的配置(如时钟设置、启动模式、看门狗设置等)

使用特权

评论回复
地板
她已醉| | 2025-2-11 03:23 | 只看该作者
新的HEX文件可能包含了额外的代码或数据段,这些段可能覆盖了旧文件未使用的内存区域

使用特权

评论回复
5
春日负喧| | 2025-2-11 04:35 | 只看该作者
使用链接器脚本(如果适用)来确保内存布局正确。检查是否有内存区域被错误地覆盖或未被正确初始化

使用特权

评论回复
6
温室雏菊| | 2025-2-11 05:34 | 只看该作者
确认ISP烧录工具的设置是否正确,特别是与校验和验证、配置位写入等相关的设置

使用特权

评论回复
7
故意相遇| | 2025-2-11 06:23 | 只看该作者
尝试使用不同的ISP烧录工具或更新当前工具的固件/软件版本

使用特权

评论回复
8
白马过平川| | 2025-2-11 07:23 | 只看该作者
如果新代码改变了启动代码或中断向量表的位置,可能会导致微控制器无法正确启动

使用特权

评论回复
9
公羊子丹| | 2025-2-11 08:16 | 只看该作者
你描述的现象很可能和芯片的Option Bytes配置有关,建议检查一下老版本和新编译HEX文件烧录时的Option Bytes设置是否一致。

使用特权

评论回复
10
周半梅| | 2025-2-11 08:17 | 只看该作者
全片擦除会清除Option Bytes中的一些重要配置,比如读写保护或BOOT模式设置,可能导致程序无法正常运行。

使用特权

评论回复
11
帛灿灿| | 2025-2-11 08:18 | 只看该作者
你可以用STM32CubeProgrammer读取老HEX烧录后的Option Bytes配置,和新编译HEX对比,看看是否有不同的地方。

使用特权

评论回复
12
童雨竹| | 2025-2-11 08:19 | 只看该作者
如果Option Bytes被修改导致无法运行,可以手动设置回来,比如将Boot选项设为主程序闪存启动(nBOOT0 = 0,nBOOT1 = 1)。

使用特权

评论回复
13
万图| | 2025-2-11 08:21 | 只看该作者
检查一下新编译代码的向量表地址是否正确,比如是否从 0x08000000 开始。如果向量表地址不对,全片擦除后自然无法正常启动。

使用特权

评论回复
14
Wordsworth| | 2025-2-11 08:22 | 只看该作者
有可能是ISR或者中断向量表未正确初始化,建议在启动文件中确认 SystemInit() 是否被调用并初始化时钟等配置。

使用特权

评论回复
15
Bblythe| | 2025-2-11 08:23 | 只看该作者
如果老HEX能正常运行,说明硬件基本没问题。你可以尝试用STM32CubeIDE直接Debug看一下新编译代码的启动情况,看看是卡在哪个地方了。

使用特权

评论回复
16
Pulitzer| | 2025-2-11 08:24 | 只看该作者
注意检查新代码是否启用了Watchdog或其他复位功能,全片擦除后默认配置可能触发复位异常。

使用特权

评论回复
17
Uriah| | 2025-2-11 08:25 | 只看该作者
建议使用STM32CubeMX重新生成启动配置,再移植新代码,确保时钟、复位等系统初始化步骤都正确。

使用特权

评论回复
18
Clyde011| | 2025-2-11 08:27 | 只看该作者
实在不行可以对比老版本和新编译HEX的二进制数据,通过工具查看具体差异,找出导致异常的原因。

使用特权

评论回复
19
风凉| | 2025-2-11 08:34 | 只看该作者
检查启动代码和中断向量表是否位于正确的内存地址

使用特权

评论回复
20
捧一束彼岸花| | 2025-2-11 09:45 | 只看该作者
微控制器的某些内存区域可能是保留的,用于特定的硬件功能或启动配置。确保新代码没有覆盖这些保留区域

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1014

主题

3466

帖子

7

粉丝