|
编写好代码进入调试模式时,IDE 都会自动执行整片擦除,然后下载新编译的程序。 但我有一些需要保存在 Flash 中的自定义变量,会被一并擦除。 我在调试配置里取消勾选 [Download] 选项,这样变量不会被清除,但这种方式开发时不适用。 我查阅了一些方案,想保留指定的 Flash 区间不被擦除:确认可用 Flash 范围:0x08000000 ~ 0x08080000 查看了用户代码区和 flash.ld 链接脚本 最终决定把数据存放在地址 0x08002000 我修改了链接脚本,添加了如下段: .eeprom : { . += 0x200; . = ALIGN(0x800); / 2KB 保留区域 / } >FLASH 这段配置可以让程序跳过 0x08000200 开始的 2KB 空间,但下载程序时 IDE 依然会整片擦除。 我也添加 [NOLOAD] 属性: .eeprom (NOLOAD) : 但没有效果,我猜测这个属性只在上电时生效,不影响程序下载过程。 请问有没有办法配置 CubeIDE 的调试下载脚本,不擦除我保留的 Flash 区域? |
STM32 上同时跑 LWIP 的 TCP 与 UDP 连接
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
使用 HAL 库通过串口以 ASCII 形式发送整型数据
USB Host 外部中断按键失效
调用HAL_FLASH_OB_Unlock()直接进入 HardFaultHandler
STM32 增加 WiFi + 以太网的低成本方案
NUCLEO G474RE无法运行程序
STM32F407VGT6 开发板Beak at address "0x0" with no debug information our outside
BootLoader 与 DFU 模式的区别
调度器原子变量相关问题
微信公众号
手机版
下载擦除选择Sector,不要选全部Flash
需要指定secter起始地址和终止地址么