在汽车行业中,整车厂大多采用自己定义的二进制软件编码规范来确保软件物料的安全性和品牌旗下的通用性,典型例子如 PSA 家的 .ulp 文件和 Volvo/Geely/Ford/Mazda 家的 .vbf 文件,这些都是基于嵌入式行业内通用的二进制目标文件 .s19/ .hex 等进行自定义规则修改,增加了不同的加密和压缩算法。
VBF(Versatile Binary Format)是一种整车厂常用的一种固件发行文件格式,由沃尔沃,福特,马自达等几个厂家所主导的一种格式。这种格式无法使用我们常规的烧录器进行芯片的烧录,通常需要进行转化。当然,厂家内部会有一套完善的工具软件来解决互相转换的问题,但是受一些条件的限制,外部却不是那么容易。VBF一般由两段内容组成,前面一段是ASCII码,构成一个头文件,后面一段是二进制码,是原始的烧录二进制文件,将两者结合一起就构成了厂家自有的格式文件。下面是一段例子。
vbf_version=2.6;
header {
//**********************************************************
//*
//* Volvo Car Corporation
//*
//* VBF Convert ver. 5.0.0 example file
//*
//* DO NOT EDIT !
//*
//**********************************************************
//**********************************************************
//* Comments
//**********************************************************
//
// Application program for the DIM.
//
//**********************************************************
// Software part number
sw_part_number = ”98765432”;
// Software part type: Executable
Sw_version = “AA”
// Software part type: Executable
sw_part_type = EXE;
// ECU address used for: DIM Driver Information Module
ecu_address = 0x0123;
// Start address for flash sector(s)
erase = { { 0x2000, 0x200 },
{ 0x4000, 0x200 },
{ 0x6000, 0x200 } };
//Root hash value
verification_block_root_hash = 0x85F4346439C464812C528F26DCBF6C467225C61AACC57544BFC9F9340F92D5B7;
//Start address of the hash table
verification_block_start = 0x5FF00;
//Length of the hash table
verification_block_length = 0xcc;
// Blocks: 24
// Bytes: 2105
file_checksum = 0x29058C73;
} <binary data>
在获取厂家协议的基础上,这种vbf文件也可以直接通过CAN总线进行升级,当然前提是bootloader已经提前烧录完毕。这种方式呢,就是速度比较慢,而且也需要厂家的支持。
第二种比较通用的方式呢,就是将这种VBF文件还原成嵌入式领域通用的HEX文件或S19文件,然后再使用通用烧录器进行烧录与校验。这种还原方式,有很多网友有写一些Python脚本去实现。最安全可靠的,还是推荐使用Volvo官方出品的VBF Tool,也就是下图所示的工具包,但是官方工具包一般需要得到官方授权。

上图就是Volvo厂家使用的工具
我们在处理VBF文件与烧录方便有些许经验(也踩过一些坑),经过一段时间艰苦卓越的摸索,我们设计出一套软件算法,能够将VBF文件自由无损地转换为HEX文件或S19文件,以方便生产线的烧录管理与设计。
在烧写方面有需要咨询的,可以邮件联系我们 support@itestgroup.com或sales@itestgroup.com。