版本管理与同步
一般一个系统内含有很多子系统,每个子系统都有独立的版本。
原来在发布package中把这些版本信息单独放在一个xml(或Json文件中),同时各个模块也能通过消息交换上报运行版本。所以一般用户看到的形式是这样的…
on-board | on-host | |
---|---|---|
Host | 1.0.1 | 1.0.1 |
FPGA | 2021.11 | 2021.11 |
MCU1 | 1.0.1 | 1.0.5 |
MCU2 | 1.0.1 | 1.0.4 |
我们很容易根据这个判断是否需要更新程序版本。On-host (package)的版本怎么获取,一般我们在编译打包时写入一个Json配置文件。但这样有个容易造成数据版本不一致的地方。一个小的奇巧很容易避免这个问题。直接从编译后bin文件中读取。
const char VMAGIC_STR[] ="vMagic00";
memcpy(gMsg.version, & VMAGIC_STR [MAGIC_PRE_NUM],VER_LEN );
// send out the version on board on request .... ‘
On-host : xxd mcu.bin |grep “vMagic” ….
Or strings mcu.bin |grep "vMagic"