STM32 BIN 合并
STM32 BIN 合并
在STM32开发中,合并多个BIN文件通常用于将Bootloader、应用程序、配置文件等组合成单一镜像以便烧录。以下是详细步骤和示例:
核心原理
- 确定地址偏移:每个BIN文件需烧录到Flash的指定地址(如Bootloader在0x08000000,APP在0x08008000)
- 填充空白区域:地址间隙需用
0xFF填充(Flash擦除后的状态) - 有序拼接:按地址由低到高合并文件
方法1:使用Python脚本(推荐)
import sys
def merge_bin(output_file, input_files):
# 解析输入: [(地址, 文件名), ...]
entries = []
for i in range(0, len(input_files), 2):
addr = int(input_files[i][2:], 16) # 去除"0x"后转换16进制
entries.append((addr, input_files[i+1]))
# 按地址排序
entries.sort(key=lambda x: x[0])
# 计算总大小(从最小地址到最后文件结束)
last_entry = entries[-1]
total_size = last_entry[0] + os.path.getsize(last_entry[1]) - entries[0][0]
# 创建全FF缓冲区
merged_data = bytearray(b'\xFF' * total_size)
# 填充各BIN文件内容
for addr, fname in entries:
offset = addr - entries[0][0] # 计算在缓冲区中的偏移
with open(fname, 'rb') as f:
data = f.read()
merged_data[offset:offset+len(data)] = data
# 写入输出文件
with open(output_file, 'wb') as f:
f.write(merged_data)
if __name__ == "__main__":
if len(sys.argv) < 4:
print("用法: python merge_bin.py 输出文件.bin 地址1 文件1.bin 地址2 文件2.bin ...")
sys.exit(1)
merge_bin(sys.argv[1], sys.argv[2:])
使用示例
# 合并Bootloader(0x08000000)和APP(0x08008000)
python merge_bin.py firmware.bin 0x08000000 boot.bin 0x08008000 app.bin
方法2:使用ST官方工具
-
STM32CubeProgrammer
- 通过图形界面分别烧录多个BIN到指定地址
- 使用
File > Save导出完整Flash内容为BIN文件
-
ST-LINK Utility
- 依次烧录各文件到指定地址
Target > Save file...保存整个Flash
方法3:命令行工具 (dd/srec_cat)
Linux/macOS 示例
# 生成8KB的0xFF填充文件(Bootloader到APP间隙)
dd if=/dev/zero bs=8k count=1 | tr '\000' '\377' > gap.bin
# 合并文件(地址范围:0x08000000-0x08020000)
srec_cat boot.bin -binary -offset 0x08000000 \
gap.bin -binary -offset 0x08008000 \
app.bin -binary -offset 0x0800C000 \
-o full_flash.bin -binary
Windows (Git Bash)
# 安装srecord
choco install srecord
# 合并命令(同上)
srec_cat.exe ...
关键注意事项
- 地址对齐:确保起始地址是Flash扇区大小的整数倍
- 中断向量表:APP的向量表首地址需偏移(如设置
VTOR寄存器) - 空填充:间隙必须用
0xFF填充,避免意外编程Flash - 空间检查:合并后尺寸勿超芯片Flash容量
建议优先使用Python脚本方案,灵活性强且易于自动化集成。测试时务必通过烧录器验证实际写入结果!
bin文件怎么烧录到stm32
烧录bin文件到STM32微控制器是一个相对复杂的过程,涉及到硬件连接、软件配置和固件烧录等多个方面。 一、硬件准备 STM32开发板
2024-08-22 09:38:24
keil如何生成bin文件
创建工程、编写代码、配置编译选项、编译生成可执行文件、转换为bin文件等。 创建工程 首先,打开Keil软件,点击“File”->“New”->“Project”,选择适合的目标设备,如STM32系列或其他ARM芯片
2023-12-15 13:43:16
初学Fatfs系统,利用单片机合并bin文件
的过程其实就是在给OLED不断的刷图。。 给OLED刷图的方法其实就是刷bin文件。我用Img2LCD这个软件,把BMP图像转化为二进制文件。这个软件是很好用,每一帧的画面是128*64,一共是128*64=8192个位(像素点)=1024字节,每一帧就是一个画面,一个画面就是一个
资料下载
王芳
2021-12-31 19:45:12
STM32烧录HEX、BIN文件,使用ST-LINK
实在不能正常烧录,再尝试着将RESET连接)(注意:不建议在烧录固件时,使用设备的总电源,防止可能导致设备受损的意外发生)打开 STM32 ST-LINK Utility。File - Open file,打开要烧录的 HEX 或者
资料下载
佚名
2021-12-22 19:49:07
分享一个通过STM32的bin文件逆向分析代码的工具
关注、星标公众号,不错过精彩内容转载:芯片之家来源 |阿莫论坛,作者 | ilovepp首先你要有一个bin文件(bin文件的获取方法不在此展开介绍,今后有机会可以专门开一个贴聊一聊)...
资料下载
526774
2021-12-09 14:36:07
如何使用CPUID和AES算法实现STM32单片机的固件升级
针对STM32系统固件升级时使用同一个文件易被非法复制使用的缺陷,提出并实现了一种一个STM32芯片使用一个唯一升级文件的固件升级方案。升级固件时,由服务器为不同的
资料下载
佚名
2019-11-19 15:14:32
STM32单片机中Hex、Bin文件的区别及应用详解
STM32、51等单片机程序经过编译后,生成的hex文件、bin文件,它们都是单片机烧写文件,本文介绍它们的区别与应用。 H ex文件 Keil5中生成hex文件的配置 如上图,分别
2022-07-05 17:23:09
stm32读取bin文件
stm32读取bin文件,关注、星标公众号,不错过精彩内容转载:芯片之家来源 |阿莫论坛,作者 | ilovepp首先你要有一个bin文件(
如何实现程序拼接和hex/bin格式互转?
结合STM32,以及对应的ST-LINK Utility、STM32CubeProg工具给大家简单描述下: IAP、APP程序拼接 hex、bin
2021-03-20 11:39:32
Linux下开发STM32 使用gcc-arm-none-eabi工具链编译生成bin、hex文件
Linux下开发STM32:使用gcc-arm-none-eabi工具链编译生成bin、hex文件
2020-02-28 15:08:23
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机