vbf是什么类型的游戏(vbf是什么意思)

vbf是什么类型的游戏(vbf是什么意思)VBF Versatile Binary Format 是主机厂常用的一种固件发行文件格式 包括沃尔沃 福特 吉利等均采用此格式 VBF 文件包含三部分 VBF 版本段 文件头段 数据段 VBF 版本段 表明当前 VBF 文件使用的版本号 版本号使用 ASCII 码存储 文件头段 文件头段包含通用信息 例如使用说明 安装信息等 文件头使用 ASCII 存储 数据段 数据段为实际写入 ECU 的数据信息

大家好,我是讯享网,很高兴认识大家。



VBF(Versatile Binary Format)是主机厂常用的一种固件发行文件格式,包括沃尔沃、福特、吉利等均采用此格式。

VBF文件包含三部分:VBF版本段、文件头段、数据段。

  1. VBF版本段:表明当前VBF文件使用的版本号。版本号使用ASCII码存储;
  2. 文件头段:文件头段包含通用信息,例如使用说明、安装信息等。文件头使用ASCII存储;
  3. 数据段:数据段为实际写入ECU的数据信息。使用二进制格式存储;

VBF文件格式概览如下:

Name Description Type Data VBF版本段 VBF版本号 Text vbf_version=2.7; 文件头段 头信息 Text n bytes,ASCII 数据段 Block 1 Start address 4 bytes,binary Length 4 bytes,binary Data n bytes,binary Checksum 2 bytes,binary Block 2 Start address 4 bytes,binary Length 4 bytes,binary Data n bytes,binary Checksum 2 bytes,binary .. .. .. Block n Start address 4 bytes,binary Length 4 bytes,binary Data n bytes,binary Checksum 2 bytes,binary

VBF文件的前两个部分VBF版本部分和文件头部分均为ASCII码格式存储,应遵循如下填写要求:
1.[]中括号表明内容是可选的;
2.{}大括号表明是一个组;
3.()圆括号中使用|进行分割,表明至少存在其中一项;
4.内容均以标识符开头,以分号;结尾;
5.标识符值中的每个元素要么是整数,要么是实数,要么是带引号的字符串,要么是保留值。每个标识符都有其标识符值允许的特定格式;
6.整数:整数以16进制格式表示,必须以0x开头,例如0xFF
7.仅文件头部分允许出现注释。注释使用"//"或"https://";
8.合法的空白字符包括:空格、水平Tab、换行、回车、换页、垂直Tab

描述 字符 16进制 水平Tab HT 09 换行 LF 0A 垂直Tab VT 0B 换页 FF 0C 回车 CR 0D 空格 SPACE 20 9.不允许出现非打印字符;
  • vbf_version=2.7;
  • vbf_version = 2.7 ;
    VBF版本部分后必须紧跟文件头部分。BVF版本部分和文件头部分可以包含空白字符(见2.2章节8)

文件头以"header"作为标识符,整个文件头需使用大括号进行包裹。
正确写法示例:
1.vbf_verison=2.7;header{
2.vbf_version=2.7;
header{
3.vbf_version=2.7;
header
{

文件头部分可用的标识符信息如下:
header{
[description={"text 1","text 2",
"text 3",
};]
sw_part_number="";
sw_version="";
sw_part_type=;
[sw_current_part_number = "";]
[sw_current_version = "";]
[data_format_identifier =;]
ecu_address = ECU target address;
[erase={{start address 1,length 1},
{start address 2,length 2},
};]
[call = ;]
[verification_block_root_hash = ;]
[verification_block_start = ;]
[verification_block_length = ;]
[sw_signature_dev = ;]
[sw_signature = ;]
[parameter_settings = { {"parameter 1", "value"}, {"parameter n",
"value"} }; ]
file_checksum = checksum;
}
各标识符详细解释见下方章节

description标识符是可选的,用来简短的介绍文件。
description值需满足如下要求:

  1. 最多16行
  2. 每行最多80字节
  3. 每行都包含在引号(")中,并以逗号(,)结束,如果该行是最后一行,则以右括号(})后跟分号(;)结束
  4. 引号内的空白不会被忽略
  5. 无论是单行还是多行,所有描述行都应包含在大括号内
  6. 行内不允许使用引号(")

正确示例:

  1. description = {"Created:2022-03-14"};
  2. description = {"created by xxx",
    "sop xxxx"
    };

sw_part_number标识符为必选,用来识别汽车制造商的软件组件(VBF文件)的零部件号。
sw_part_number值需满足如下条件:
1.必须用引号包含
2.最多20个字节
3.不允许空白符和注释

正确示例:

  1. sw_part_number = "";

sw_version标识符为必选,用来识别汽车制造商的软件组件(VBF文件)的版本号。
sw_version值需满足如下条件:
1.必须用引号包含
2.最多4个字节
3.不允许空白符和注释
4.应只包含大写字符A-Z(不能出现数字)

正确示例:

  1. sw_part_number = "";

sw_part_type标识符为必选,用来指明ECU软件类型。
sw_part_type无需使用双引号包围,且仅允许使用下表中的值。

合法值 描述 CARCFG Car configuration CUSTOM Customer parameters DATA Data or parameters(i.e.,calibrations) EXE Executable SBL Secondary Bootloader SIGCFG Signal configuration PBL Primary Bootloader SSBL Special SBL which has the possibility to replace the PBL TEST Test program,(i.e.production test,diagnostics) FBL Flashable Bootloader CERT Certificate PWD Password for certificate APP Application file MAP Map file used for navigation ESS ECU Software Structure SIGNED Digital Signature file VARIANT_INFO Settings file(for offboard tool settings)

当sw_part_type值为SBL或SSBL时,不允许使用标识符erase
正确示例:

  1. sw_part_type = EXE;
  2. sw_part_type = APP;

sw_current_part_number标识符为可选,用来识别汽车制造商的软件组件(VBF文件)的零部件号。该标识符值仅用于进行差分软件升级(delta software update)时,已安装的软件零部件号应匹配此值。此字段仅适用于软件升级且压缩类型为"delta"的软件升级时使用。
sw_current_part_number值需满足如下条件:
1.必须用引号包含
2.最多20个字节
3.不允许空白符和注释

正确示例:


讯享网

  1. sw_current_part_number = "";

sw_current_version标识符为可选。当使用差分软件升级(delta software update)时,用来标识期望在当前ECU中已安装的汽车制造商的软件组件(VBF文件)的版本号。该字段仅在软件升级且压缩类型为delta时使用。
sw_current_version值需满足如下条件:
1.必须用引号包含
2.最多4个字节
3.不允许空白符和注释
4.应只包含大写字符A-Z(不能出现数字)

正确示例:

  1. sw_current_version = "ABC";

data_format_identifier标识符为可选,以非零值出现在头信息中。该字段表明数据的压缩和加密方式,字段的合法值范围为0x00到0xFF,其中高半个字节代表数据压缩方式,低半个自交代表数据加密方式。当该标识符未出现在头信息中,表明即不做压缩,也不做加密。

正确示例:

  1. data_format_identifier = 0x10; //压缩方式为#1,不加密
  2. data_format_identifier = 0x21; //压缩方式为#2,加密方式为#1

ecu_address标识符为必选,用来指明ECU的物理目标地址。该字段值被划分为3个不分:Domain ID,Network ID、ECU ID。ecu_address取决于ECU在网络拓扑中的位置。
ecu_address共2个字节,16个bit。bit 0-3为ECU ID,bit 4-7为Network ID,bit 8-11为Domain ID。

正确示例:

  1. ecu_address = 0x 1234; //Domain ID:0x2,Network ID:0x3,ECU ID:0x4

erase标识符为可选,指示在软件下载操作发生之前需要擦除的内存范围。擦除起始地址和长度不需要与flash扇区起始地址和长度匹配。擦除长度可以跨越多个Flash扇区,也可以在单个Flash扇区内。erase标识符值需使用大括号包含2个值,第一个值为起始地址,第二个值为长度。起始地址和长度的范围均为0x00000000到0xFFFFFFFF。

正确示例:

  1. erase = {{0x00001000,0x00003FFF}};
  2. erase = {{0x00001000,0x00003FFF},
    {0x000060FF,0x00000500}
    };

call标识符在sw_part_type为SBL或SSBL时是必选,在sw_part_type为TEST时是可选的。在sw_part_type为其他值是,不允许使用call标识符。
call标识符指示ECU内存里预定义的可执行函数的起始地址,其实地址为4个字节,范围在0x00000000到0xFFFFFFFF。

正确示例:

  1. sw_part_type = SBL;
    call=0x00001000;
  2. sw_part_type = SSBL;
    call=0x00001000;

verification_block_start标识符为可选的,指示需要进行签名的原始数据(未压缩前)的起始地址。该标识符值为4个字节。
正确示例:
1.verification_block_start = 0x00001000;

verification_block_length标识符为可选的,指示需要进行签名的的原始数据(未压缩和加密前)的长度。该标识符值为4个字节。
正确示例:
1.verification_block_length = 0x00001000;

verification_block_length标识符为可选的,指示需要进行签名的的原始数据(未压缩和加密前)的哈希值。该标识符值长度依据HASH算法确定。
正确示例:
1.verification_block_length = 0xABCDEFABCDEF;

sw_signature标识符为可选的,代表签名值。该标识符值的长度需根据签名算法确定。

sw_signature_dev标识符为可选的,代表测试和开发阶段的签名值。该标识符值的长度需根据签名算法确定。使用开发阶段密钥对后续会发布的软件进行签名,形成签名值并存储在该标识符中。

file_checksum标识符为必选,长度为4个字节。checksum目的是在尝试下载前,进行文件完整性的校验。checksum使用CRC32算法,计算数据部分的所有数据,包括所有data block的start address、length、 checksum。
checksum满足如下规范:

  • 32 bit CRC,多项式为0x04C11DB7(x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + 1)
  • 初始值为0xFFFFFFFF
  • 位反转

若没有data blocks,则file_checksum为0xFFFFFFFF。

正确示例:
1.file_checksum = 0x;

parameter_settings标识符为可选的,用于定义和携带off-board工具所需的配置。

<td rowspan="13">数据段</td> <td rowspan="4">Block 1</td> <td>Start address</td> <td>4 bytes,binary</td> 

讯享网

讯享网<td>Length</td> <td>4 bytes,binary</td> 

<td>Data</td> <td>n bytes,binary</td> 

讯享网<td>Checksum</td> <td>2 bytes,binary</td> 

<td rowspan="4">Block 2</td> <td>Start address</td> <td>4 bytes,binary</td> 

讯享网<td>Length</td> <td>4 bytes,binary</td> 

<td>Data</td> <td>n bytes,binary</td> 

讯享网<td>Checksum</td> <td>2 bytes,binary</td> 

<td>..</td> <td>..</td> <td>..</td> 

讯享网<td rowspan="4">Block n</td> <td>Start address</td> <td>4 bytes,binary</td> 

<td>Length</td> <td>4 bytes,binary</td> 

讯享网<td>Data</td> <td>n bytes,binary</td> 

<td>Checksum</td> <td>2 bytes,binary</td> 

数据段由多个block组成,每个block具有4个部分:
1.start address:4字节,ECU内存中的物理地址,取值范围为0x00000000到0xFFFFFFFF。
2.length:4字节,当前block中Data部分的字节长度,取值范围为0x00000001到0xFFFFFFFF。若data被压缩,则该长度为压缩后的长度。
3.data:数据内容。
4.checksum:2个字节,针对data的校验值(不包含start address和length),取值范围从0x0000到0xFFFF。checksum算法使用CRC16-CITT,多项式为0x1021(x16+x12+x^5+1),初始值为x0FFFF

小讯
上一篇 2025-04-15 12:19
下一篇 2025-05-12 22:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/155483.html