You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32烧录新代码时如何保留EEPROM仿真区?VScode+JLink环境

解决STM32G030C8烧录时保留指定Flash页的方法

针对你的需求——在VScode搭配JLink烧录新代码时,不擦除0x0800F800-0x0800FFFF的Flash页(第31页,用于存储校准数据),以下是几种可行的实操方案:

方案1:通过VScode Cortex-Debug插件配置排除擦除区域

如果你使用的是Cortex-Debug插件(多数STM32 VScode开发场景的标配),可直接在工程的.vscode/launch.json中添加烧录规则:

  • 打开launch.json,找到对应调试配置条目
  • 添加以下参数二选一即可:
    • 按扇区排除:
      "flashErase": "sector",
      "sectorBlacklist": [31]
      
      说明:flashErase设为sector表示按扇区擦除,sectorBlacklist指定跳过第31扇区(对应目标Flash页)。
    • 按地址范围指定擦除区域:
      "eraseAddressRange": "0x08000000-0x0800F7FF"
      
      说明:仅擦除0x08000000到0x0800F7FF的区域,精准避开你的EEPROM仿真区。

方案2:修改JLink全局设备配置(全工程生效)

若需要所有针对该芯片的烧录操作都跳过目标页,可修改JLink的设备配置文件:

  • 找到JLink安装目录下的JLinkDevices.xml(Windows通常在C:\Program Files\SEGGER\JLink,Linux/macOS对应安装路径)
  • 定位到STM32G030C8的配置段,在<FlashBank>节点中添加排除范围:
    <FlashBank Name="Flash" BaseAddr="0x08000000" Size="0x10000" SectorSize="0x800" NumSectors="32">
      <EraseExcludeRange StartAddr="0x0800F800" EndAddr="0x0800FFFF"/>
    </FlashBank>
    
    修改后保存,重启VScode即可生效(Windows下修改需管理员权限)。

方案3:调整工程链接脚本(辅助防护)

为避免编译后的代码意外覆盖目标区域,可修改工程的链接脚本(通常命名为STM32G030C8Tx_FLASH.ld):

  • 找到FLASH内存区域定义,将长度从64KB(0x10000)改为62KB(0xF800):
    FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 62K /* 原64K改为62K,即0xF800 */
    
    此配置会让链接器确保代码和数据不超出0x0800F7FF,配合烧录工具的擦除排除规则,形成双重防护。

如果只是临时需要跳过擦除,可通过JLink Commander执行手动烧录步骤:

  1. 打开JLink Commander,连接芯片:
    JLink.exe -device STM32G030C8 -speed 4000 -if SWD
    
  2. 擦除指定范围(跳过目标页):
    erase 0x08000000-0x0800F7FF
    
  3. 下载新代码:
    loadfile your_project.hex
    
  4. 启动芯片:
    r
    g
    

推荐优先使用方案1,针对当前工程配置,灵活且无需全局修改。

内容的提问来源于stack exchange,提问作者BEsmart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:23:14