[生态工具] H7-TOOL自制Flash读写保护算法

[复制链接]
135|0
zerorobert 发表于 2025-9-23 23:32 | 显示全部楼层 |阅读模式
很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。
    实际上当前已经发布的TOOL版本,已经自制很多了。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。
    近期已经自制了STM32H7全系列,N32G003,N32G031,  STM32U5全系列,这次为凌鸥LKS32MC03x提供Flash保护支持。实现效果:    从2.27版本开始将正式带此支持,支持解除和使能。这款芯片没有选项字节的概念,是通过Flash末尾的4字节来解除和使能。
    解除保护已经在TOOL上位机集成:

ad6ad1dce6734a0fbff6847463229db9678329477.png@1192w.webp

实现代码和原理     通过H7-TOOL的LUA小程序就可以方便的实现保护解除,不需要自制算法文件。对应的代码如下,这个不需要用户去管,已经封装到TOOL里面了,这里给大家分享是方便大家了解:
--芯片专有的解除保护函数function MCU_RemoveProtect(void)        --MCU_ProgOptionBytes(OB_SECURE_OFF)         -- SYS_WR_PROTECT = 0x7a83 开启写使能        if (pg_write32(0x400000A8, 0x7a83) == 0) then                --print("pg_write32(0x400000A8, 0x7a83)")        end         -- SYS_FLSE = 0x8FCA        if (pg_write32(0x400000D0, 0x8FCA) == 0) then                --print("pg_write32(0x400000D0, 0x8FCA)")        end         -- SYS_AFE_REG0 |= BIT15  BIT15:PLLPDN         pg_write32(0x40000010, 0x8000)         -- 等待PLL稳定        delayms(1)          -- SYS_CLK_CFG = 0x000001FF 48MHz        if (pg_write32(0x40000080, 0x000001FF) == 0) then                --print("pg_write32(0x40000080, 0x000001FF)")        end         -- FLASH_CFG = 0x80008030 开启擦除,Full,48MHz        pg_write32(0x00010000, 0x80008030)         -- FLASH_ERASE = 0x7654DCBA,trig full erase        pg_write32(0x00010010, 0x7654DCBA)         -- SYS_FLSE = 0        pg_write32(0x400000D0, 0)         -- FLASH_CFG = 0x00008030 关闭擦除        pg_write32(0x00010000, 0x00008030)         -- SYS_WR_PROTECT = 0x0;  关闭写使能        if (pg_write32(0x400000A8, 0) == 0) then                --print("pg_write32(0x400000A8, 0)")    end         delayms(100) --pg_enter_debug()end
03206a353abe9ef4943c71f120ae4269678329477.png@1192w.webp
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

1927

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部