用 JLINK和自带STLINK给STM32F429 Discovery 烧录程序

本文介绍了如何使用JLINK通过SWD接口给STM32F429 Discovery板烧录程序,重点解决了JLINK 5V供电问题,并提供了详细的解决步骤。此外,还提到了使用自带STLINK的简单烧录方法。

1.先说JLINK,
惭愧的说 之前竟然不知道这板子的烧录用的是二号线…没带回来 我就不知道该怎么烧录了…学了两天终于搞明白一些。先上个图
这里写图片描述
再放一个 stm32f4 discovery 的一部分原理图
这里写图片描述
我手头有一个j-link 所以打算用SWD那排引脚进行烧录 找到了各引脚的定义 与st-link进行对比 然后得知对应关系为
T_JTCK–TCK
T_JTMS–TMS
T_NRST–RESET
T_SWO–TDO
5v供电 -->5V-Supply
GND -->GND

这里写图片描述
然而我连接后一点反应没有… 又检查了好几遍根本没反应 我就感觉可能是电源有问题 用万用表一测果然5v-supply 根本没电…百思不得其解 第一天时间就

<think> 嗯,用户想知道在给STM32F429烧录程序后,原来的程序还会不会存在。这其实是个关于Flash存储特性以及烧录机制的问题。让我结合芯片手册之前的引用内容来分析一下。 用户提供的引用里提到两种烧录方式(JLINKST-LINK),但核心原理是一样的:STM32的Flash存储区域在烧录时会被重新编程。引用中提到的ST-LINK Utility操作步骤里有个关键动作"Program & Verify",这其实就是覆盖入的过程。 查阅STM32F4的技术手册可以确认,其Flash存储结构是NOR Flash,特点是可以按扇区擦除、按页编程。烧录程序时通常包含两个必要步骤: 1. 擦除目标扇区(通常整个程序区都会被擦除) 2. 将新程序的机入空白Flash 用户可能担心像电脑硬盘那样"删除"文件还能恢复,但嵌入式系统的程序烧录是完全不同的机制。当选择烧录整个芯片时,整个程序存储区都会被置为全1状态(也就是0xFFFF),然后新程序会按地址覆盖这些区域。即使新程序比旧程序小,未被覆盖的区域也会保持空白状态(全1),不会保留旧程序片段。 不过有个例外情况:如果用户特别配置了烧录工具仅更新部分程序(比如只更新Bootloader区域),这时其他区域可能保留。但根据引用中描述的常规操作流程(Program & Verify),默认都是全片擦除的。另外从安全角度考虑,保留旧程序片段可能导致不可预测的行为,所以标准做法都是完全擦除。 用户可能实际关心的是烧录会不会导致配置丢失?这要看程序存储结构:用户数据如果存储在独立的Flash扇区(比如最后几页),且烧录时没有擦除该扇区,这些数据就能保留。但这需要特殊配置,普通烧录操作不会保留。 </think> 在 **STM32F429** 芯片上烧录程序后,**原程序会被完全覆盖,不复存在**。原因如下: ### 核心机制 1. **Flash 存储特性** STM32F429程序存储在内部 **NOR Flash** 中,其入特性决定了: - 入前必须 **擦除对应扇区**(擦除后所有位变为 `1`)。 - 新程序按地址逐字节/字覆盖入(将部分 `1` 改为 `0`)。 - **擦除操作会清除整个扇区**,原数据无法保留。 2. **烧录工具的工作逻辑** 无论是 JLINK 还是 ST-LINK(如引用 [1][2] 所述),标准烧录流程为: ```mermaid graph LR A[连接芯片] --> B[擦除目标Flash扇区] B --> C[入新程序数据] C --> D[校验完整性] ``` - **擦除阶段**:原程序所在扇区被清空(全 `0xFF`)。 - **入阶段**:新程序二进制码覆盖空白区域。 --- ### 特殊情况说明 | 场景 | 原程序是否保留 | 条件说明 | |---------------------|----------------|--------------------------------------------------------------------------| | **常规烧录** | ❌ 完全消失 | 默认擦除全部程序扇区 | | **部分更新** | ⚠️ 部分保留 | 需明确配置工具仅擦除特定扇区(如仅更新APP区,保留Bootloader) | | **数据存储区未擦除**| ✅ 保留 | 若原程序将数据存储在独立Flash扇区(如Page 7),且烧录时不擦除该扇区 | > 📌 **关键结论**:除非**刻意配置烧录工具避开某些扇区**,否则新程序会彻底替换旧程序。若需保留用户数据,必须将数据存储在独立扇区,并在烧录时排除该区域。 --- ### 操作建议(以 ST-LINK Utility 为例) 1. 烧录时勾选 **`Skip Erase`** 选项 → **保留未被新程序覆盖的区域** (但若新程序地址范围与原程序重合,仍会覆盖) 2. **划分独立数据扇区**: - 在工程中配置Flash分区(如 `.ld` 链接脚本) - 烧录时选择 **`Program verified only`** 避免全片擦除 --- ### 相关问题 1. STM32F429 的Flash扇区划分规则是怎样的?不同容量型号的扇区结构有何差异? 2. 如何通过STM32CubeProgrammer实现保留特定扇区数据的烧录? 3. 多次部分更新Flash会导致碎片化吗?如何优化STM32的Flash寿命管理? [^1]: 基于JLINK/ST-LINK硬件接口原理 [^2]: STM32 ST-LINK Utility烧录流程说明
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值