硬汉嵌入式论坛

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

[脱机烧录] H7-TOOL脱机烧录大范围不连续hex文件的自动分割范围设置方法(2025-06-05)

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120452
QQ
发表于 2025-6-5 07:24:01 | 显示全部楼层 |阅读模式
【应用场景】

1、比如芯片容量1MB,实际程序大小只有几KB,但程序里面却在1MB末尾扇区attribute存放一些数据,导致hex2bin.exe后文件非常大,将近1MB,这种情况就可以考虑分割下,这样可以大大加快下载速度,无需下载中间那么多用不到的空间
2、还有内部Flash和外部Flash混合程序,这种的由于范围跨度比较大,TOOL可以方便的自动分割,不需要用户自己设置范围。当然,如果跨度比较小时,也可以考虑手动设置分割范围。

【手动设置分割范围方法】

1、比如我这里一个基于STM32H743板子的IAR工程,内部Flash模拟EEPROM

一共有16个RAM扇区,每个扇区128KB,总计2MB容量。我这里实际程序大小不到128KB,比如我把末尾扇区模拟为EEPROM。

使用IAR的bin转换功能,生成的bin文件高达2MB。实际程序大小是远小于这个的。

1234.png

2、那么我们就可以这样分割,分割成两部分即可

注意大小不要重叠到下一个地址区

设置起始地址0x08000000,大小15*128KB(0x1E0000)    --- TOOL转换的时候,会截取这个区域出来,并将区域内有效的数据截取出来

设置起始地址0x081E0000,大小1*128KB(0x20000)

3、设置分割

(1)选择型号后,双击这里:

1.png

(2)打开后,在这个位置添加如下代码,这个代码是上位机可以识别的分割代码:

[Lua] 纯文本查看 复制代码
        HEX_FILE_DIV = 
        {
                0x08000000, 0x1E0000,   --起始地址, 大小
                0x081E0000, 0x20000 ,   --起始地址, 大小
        }        


2.png

(3)设置完毕后保存这个LUA文件并关闭,同时关闭上位机,然后重新打开上位机才可以生效

此时选择芯片型号,并加载IAR生成的hex文件(注意要加载hex才会分割,加载bin不会分割),可以看到这里自动分割成了两个:

3.png

可以看到这两个文件大小远小于2MB

1234.png

这样可以大大加快脱机烧录生产使用。










回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120452
QQ
 楼主| 发表于 2025-6-6 07:12:48 | 显示全部楼层
已经更新完成。
回复

使用道具 举报

0

主题

133

回帖

133

积分

初级会员

积分
133
发表于 2025-6-12 09:00:57 | 显示全部楼层
谢谢分享,有用,标记下
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2025-12-11 17:57:48 | 显示全部楼层
这里的逻辑是,一个芯片型号的单独去修改一个lua文件,但如果同样这个芯片,不同的程序,两个程序的分割起始地址不一样,那岂不是要制作多个lua文件,烧录不同的程序去调用不同lua吗?这个还是不方便,建议参考其他脱机烧录器的文件分割方法(每次拖固件进去给提示是否需要分割,分割地址直接识别出来),或者把分割的选项交给用户自己选择,或者内置转换工具等。我之前就遇到这个问题,后来使用其他HEX转BIN工具转换后才烧录成功,我看群里网友也有过类似的问题,tool 工具的基础功能就是多路脱机烧录,希望在这一块上能完善的更好更完美更稳定。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120452
QQ
 楼主| 发表于 2025-12-11 19:53:35 | 显示全部楼层
修行 发表于 2025-12-11 17:57
这里的逻辑是,一个芯片型号的单独去修改一个lua文件,但如果同样这个芯片,不同的程序,两个程序的分割起 ...


谢谢大家的反馈和建议。

1、楼主位的作用是小地址范围的,有时候想加速烧录速度而设计的。不是为了给大家使用增加复杂度而设计的。

大地址范围的都是自动分割的,不要用户去管。比如此贴这种的,自动分割是给这种玩法使用的:

成功解决内部Flash和QSPI Flash混合运行程序的批量烧录生产问题,测试ThreadX GUIX工程成功
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=110247

2、从之前群友反馈的问题,后面升级要改进的一个重要功能就是禁止自动分割(这个自动分割默认是开启的),有些程序不适合分割,甚至分割后会出错。后面的改进方向是做个选项可以选择是否自动分割。自动分割不满足时可以禁止自动分割,也可以手动设置地址分割。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 00:59 , Processed in 0.054494 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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