Java 固件文件的容器:二进制数据部分的集合

Java 固件文件的容器:二进制数据部分的集合,java,c++,data-structures,firmware,Java,C++,Data Structures,Firmware,我需要为嵌入式设备生成固件文件,我想知道这样的数据结构格式的最佳实践是什么 该文件中应该有几个项目:MCU固件,一些要写入设备闪存的数据部分 显而易见的方法是“手动”实现该格式:文件开头的一些头(头应该包含数据结构的版本),然后是地址表,然后是数据。这是我在以前的项目中使用的方式,当我需要更改某些内容时,我真的厌倦了维护这种结构 在二进制文件中是否存在存储数据集合的现有容器?有很多图书馆(至少C++和java)可以处理这个数据收集,这是很好的。我想到的是一个包含一个或多个表的SQLite数据库文

我需要为嵌入式设备生成固件文件,我想知道这样的数据结构格式的最佳实践是什么

该文件中应该有几个项目:MCU固件,一些要写入设备闪存的数据部分

显而易见的方法是“手动”实现该格式:文件开头的一些头(头应该包含数据结构的版本),然后是地址表,然后是数据。这是我在以前的项目中使用的方式,当我需要更改某些内容时,我真的厌倦了维护这种结构

在二进制文件中是否存在存储数据集合的现有容器?有很多图书馆(至少C++和java)可以处理这个数据收集,这是很好的。我想到的是一个包含一个或多个表的SQLite数据库文件,但对于我的需求来说,这似乎是一种开销


是否有一些最佳实践可以满足我的需要?

IMHO,最常见的格式是ZIP或Java术语JAR。这可以在Windows资源管理器中浏览并在各种平台上读取。

我会在压缩数据前添加一些元信息头,当它应该存储在某个闪存地址时。ZIP文件从文件末尾读取。这允许解包程序包含ZIP。i、 e.解压程序在开始处,压缩程序在结束处。您可以将任意数量的数据预先挂起到ZIP,它将正常工作。但是,我建议将元信息添加为给定名称的文件,以使其易于访问。(JAR文件就是这样做的)如果你有一个允许自解压可执行文件的操作系统,是的,在任何情况下,所有这些都可以使用标准的ZIP格式。在您的例子中,在ZIP文件的开头可以有任意数量的元数据,并且它仍然可以作为ZIP文件工作。诀窍是您需要一个实用程序来构建这样的文件。如果ZIP中有元数据,任何现有的ZIP实用程序都可以构建该文件。