硬汉嵌入式论坛

 找回密码
 立即注册
查看: 187|回复: 5
收起左侧

[脱机烧录] H7-TOOL自制Flash读写保护算法系列,为灵动微MM32G0005制作使能和解除算法,支持在线烧录和脱机烧录使用(2026-04-01)

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
发表于 2026-4-1 00:02:27 | 显示全部楼层 |阅读模式
说明:

很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。

实际上当前已经发布的TOOL版本,已经自制很多了,比如已经支持的兆易创新大部分型号,灵动微MM32的大部分型号,新唐的大部分型号等。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。

近期已经自制了STM32H7全系列,STM32U5全系列,国民技术N32G003,N32G031,  N32G43x,N32G030,N32G033,N32G401,复旦微FM33LE,FM33LG,FM33LC,  FM33FR系列,华大电子的CIU32F003,CIU32D655系列,凌欧的LKS32MC03X,LKS32MC45x,LKS32MC05x,LKS32MC08x,武汉芯源CW32L010,CW32L011, CW32L012,领芯微LCM32F067提供Flash保护支持

这次为灵动微MM32G0005添加支持

实现效果:

从2.32版本开始将正式带此支持,支持解除和使能。



实现代码和原理

通过H7-TOOL的LUA小程序就可以方便的实现保护解除和使能,不需要自制算法文件。

对应的代码如下,这个不需要用户去管,已经封装到TOOL里面了,这里给大家分享是方便大家了解:

[Lua] 纯文本查看 复制代码
-------------------------------------------------------
-- 文件名 : MM32G0005_64.lua
-- 版  本 : V1.0  2025-09-16
-- 说  明 :
-------------------------------------------------------

print("load \"MM32G0005_64.lua.lua\" ok")

IncludeList = {
        --"0:/H7-TOOL/Programmer/Device/MindMotion/Lib/MM32_Lib_M0_F0010.lua"
        "0:/H7-TOOL/Programmer/Device/MindMotion/Lib/MM32G0005_lib.lua"
}

function config_cpu(void)
        CHIP_TYPE = "SWD"                --指定器件接口类型: "SWD", "SWIM", "SPI", "I2C", "UART"
        AlgoFile_FLASH = "0:/H7-TOOL/Programmer/Device/MindMotion/MM32G0005/FLM/MM32G0005_64.FLM"
        AlgoFile_EEPROM = ""
        AlgoFile_OTP   = ""
        --AlgoFile_OPT   = "0:/H7-TOOL/Programmer/Device/MindMotion/OPT/MM32_M0_F010_OPT.FLM"
        --AlgoFile_OPT   = "0:/H7-TOOL/Programmer/Device/MindMotion/OPT/MM32_M0_npq_OPT.FLM"
        AlgoFile_QSPI  = ""

        FLASH_ADDRESS = 0x08000000  --CPU内部FLASH起始地址
        FLASH_SIZE = 0x10000  --覆盖FLM中的 Device

        RAM_ADDRESS = 0x20000000  --CPU内部RAM起始地址
        RAM_SIZE = 0x1000

        --Flash算法文件加载内存地址和大小
        AlgoRamAddr = RAM_ADDRESS
        AlgoRamSize = RAM_SIZE

        MCU_ID = 0x0BC11477  --IDCODE

        UID_NONE = 0        --0表示有UID 1表示无UID        
        UID_ADDR = 0x1FFFF7E8                   --UID地址,不同的CPU不同
        UID_BYTES = 12        

        ERASE_CHIP_TIME = 3000                --全片擦除时间ms(STM32F207解除读保护会执行全面擦除,等待时间大概15秒)

        VALUE_ERASED = 0xFF        --芯片擦除后缺省值,一般是FF, 00。ARM从FLM中取,不用这个值。

        OB_FILE_USED        = 0                --1表示使用文件方式烧录,0表示用字符串方式烧录,-1表示不支持OB区烧录
        OB_FILE_ADDRESS = 0x1FFFF800
        OB_FILE_SIZE = 16                --OB区大小
        OB_FILE_SECURE_OFF = ""
        OB_FILE_SECURE_ON  = ""        

        OB_ADDRESS     = "1FFFF800 FFFFFFFF 1FFFF804 FFFFFFFF 1FFFF808 FFFFFFFF 1FFFF80C FFFFFFFF 1FFFF810 FFFFFFFF 1FFFF814 FFFFFFFF"
        --OB_ADDRESS_LINEAR = 1  --OB数据线性连续,只需要提供1个首地址,长度为 OB_FILE_SIZE

        OB_SECURE_OFF = "A5 FF FF FF FF FF"
        OB_SECURE_ON =  "7F FF FF FF FF FF"        

        --判断读保护和写保护的条件(WRP = Write protection)
        OB_WRP_ADDRESS   = {0x1FFFF800}         --内存地址
        OB_WRP_MASK           = {0xFF}                --读出数据与此数相与
        OB_WRP_VALUE          = {0xA5}                --相与后与此数比较,相等表示没有保护

        --额外的控制指令
        FLM_INIT_BEFOR_PROG = 1                --编程前需要重新执行一下Init
        FLM_INIT_BEFOR_VERIFY = 1        --FlM Verify前需要重新执行一下Init

        --DEBUG_AP = 0
        --DISABLE_BLOCK_ACCESS = 0

        --IGNORE_WRITE_OB_SECURE_OFF = 1 --解除读保护时全擦芯片,无需再写入OB缺省值
end

--用于PC软件, 设置缺省配置参数
function pc_default(void)
        TVCC_VOLT = 3.3                        --定义CPU供电电压TVCC

        VERIFY_MODE = 0                        --校验模式: 0:自动(FLM提供校验函数或读回) 1:读回  2:软件CRC32  3:STM32硬件CRC32

        REMOVE_RDP_POWEROFF = 1 --写完OB后需要断电
        POWEROFF_TIME1 = 0           --写完OB延迟时间ms
        POWEROFF_TIME2 = 100           --断电时间ms
        POWEROFF_TIME3 = 20           --上电后等待时间ms

        SWD_CLOCK_DELAY_0 = 0         --单路和多路烧录时的时钟延迟
        SWD_CLOCK_DELAY_INIT = SWD_CLOCK_DELAY_0 --初始化阶段的时钟延迟

        AUTO_REMOVE_PROTECT = 1 --自动解除读保护,-1表示不支持

        ISP_UNLOCK = 0                        --支持ISP串口解锁
        ISP_LOCK = 0                        --支持ISP串口加锁

        RESET_MODE = 0                        --复位模式 0:自动模式,  1:软件模式  2:硬件模式 3: UnderReset

        RESET_AFTER_PROG = 1    --编程结束后 0不复位  1复位 2断电重启 3断电

        ERASE_CHIP_MODE = 1                --0按扇区擦除 1擦除全片

        OB_CONFIG_ENABLE = 0        --启用OB配置旋钮

        --OB参数解析文件(和本文件同目录,无需全路径)
        --OB_PARAM_FILE = 

        CHECK_MCU_ID = 0                --缺省不启用IDCODE检查

        --供PC软件选择算法的列表 (算法文件名, 地址,大小,32bit控制字bit1表示禁止查空, 同时预留4个字段 )
        AlgoFile_ListA = {
                "AlgoFile_FLASH" , FLASH_ADDRESS, FLASH_SIZE,  0x00000000, 0, 0, 0, 0,
                --"AlgoFile_EE256B", 0x10000000,    0x0100,           0x00000002, 0, 0, 0, 0,                --EEPROM不支持加载算法查空
        }

        --将指定此地址范围内的文件单独分割出来
        --HEX_FILE_DIV = {
        --        0x90300000, 0x100000,                --起始地址, 大小
        --}

        NOTE_PC = ""  --在器件选择框下面显示重要提示内容

        --有如下行,将自动展示文件内容到LOG窗口
        --VIEW_HELP_FILE = "readme.txt"
end

--判断数据文件合法性
--flm 算法名,数据文件内容,写入地址
function pc_check_file(flm, data, addr)
        --return flm.." 加载的数据文件属于非法数据,可能导致芯片锁死"        --文件有效
        return "OK"
end


通过TOOL的寄存器检测功能可以了解各种寄存器地址和状态信息,大大方便算法文件自制:

34.png



相关帖子

回复

使用道具 举报

6

主题

20

回帖

38

积分

新手上路

积分
38
发表于 2026-4-1 12:23:09 | 显示全部楼层
硬汉哥,H7TOOL的下一个软件版本什么时候更新
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2026-4-1 14:42:39 | 显示全部楼层
MDLZCOOL 发表于 2026-4-1 12:23
硬汉哥,H7TOOL的下一个软件版本什么时候更新

需要临时版,加我QQ512464265先用着。
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2026-4-1 21:10:29 | 显示全部楼层
楼主,有没有程序加密方面的案例呢?目前都只是设置芯片都保护,我想要实现基于芯片ID的算法实现程序加密
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
 楼主| 发表于 2026-4-2 07:14:52 | 显示全部楼层
echowjk 发表于 2026-4-1 21:10
楼主,有没有程序加密方面的案例呢?目前都只是设置芯片都保护,我想要实现基于芯片ID的算法实现程序加密

标配

1、H7-TOOL脱机烧录的UID加密操作方法,支持一键生成目标板C代码,方便大家轻松操作(2024-12-20,已发布)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=125161

2、实现H7-TOOL脱机烧录ECDSA数字签名算法对目标芯片做UID签名(2026-02-28)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=131058
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 7 天前 | 显示全部楼层
eric2013 发表于 2026-4-2 07:14
标配

1、H7-TOOL脱机烧录的UID加密操作方法,支持一键生成目标板C代码,方便大家轻松操作(2024-12-20 ...

好的,研究一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-4-10 13:04 , Processed in 3.360392 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表