使用 J-Flash 修改 STM32 的 Option bytes

STM32开发过程中有时候需要修改选项字节选项字节可以通过ST-Link使用STM32CubeProgrammer程序修改也可以通过代码在线编程IAP来修改具体方法在STM32参考手册中已有所体现

因一些原因遇到了上面两种方式都不合适的情况通过J-Flash曲线救国将方法特此记录

  1. 连接J-Link

  2. 按正常流程新建项目在选择MCU部分STM32型号需要选择包含allow opt. bytes字样的型号在扇区位置仅选择Option bytes区域

Snipaste_2025-01-05_17-00-55.png

  1. Target -> Connect同正常步骤

  2. Target -> Manual Programming -> Read back -> Selected sectors此时会将MCU中默认的选项字节读出并显示

Snipaste_2025-01-05_17-04-55.png

  1. 根据找到相应寄存器地址应用修改后的数据

例如我需要修改nSWBOOT0找到其位于FLASHOption bytes区的地址0x1FFF7800将其内容从0xFFEFF8AA修改为0xFBEFF8AA

Snipaste_2025-01-05_17-08-30.png

Snipaste_2025-01-05_17-08-41.png

注意修改的地址是FLASHOption bytes区的地址(0x1FFFF800 ~ 0x1FFFF830区间)而非FLASH外设的寄存器地址0x40022000 - 0x400223FF

Snipaste_2025-01-05_17-18-08.png

J-Flash软件中在相应的位置输入相应的值输入后按回车确认此时修改过的位置颜色会变为红色

alt text

注意Option bytes在高位[63:32]可能有Complemented option byte不需要手动修改这个部分在写入时会自动完成相反值的写入

  1. Target -> Manual Programming -> Erase sectors擦除原内容

Snipaste_2025-01-05_17-25-14.png

  1. Target -> Manual Programming -> Program将新内容写入此时修改后的内容应该会变回正常的黑色代表修改已经成功应用

Snipaste_2025-01-05_17-26-13.png

  1. 重新将 MCU 上电才可以最终应用 Opt. bytesFLASH中的选项字节写入后仅在POR复位时会重新加载普通复位不会重新加载选项字节