如何使用Flasher在烧录过程中添加数据补丁?

浏览:583来源:本站时间:2022-01-21

Segger Flasher编程器工作在独立模式时,支持在烧录过程中向要烧录的程序固件添加额外的数据补丁。该功能可以满足一些场景下的特殊需求,例如需要针对每一个设备在程序固件外添加特殊数据的情况,此时无法针对这些设备生成一个通用的程序固件。针对每一个设备单独生成一份烧录固件也是不可行的方案,此时Segger Flasher编程器所支持的在烧录过程中添加数据补丁的功能将非常有用。

如果我们需要在在烧录过程中添加数据补丁,那么首先需要创建一个名为Patches.txt的文本文件,在该文件中添加数据补丁文件的内容。在Patches.txt文件中,每一次烧录过程所需要添加的数据补丁内容在Patches.txt文件中占据一行。在Patches.txt文件中是第几行,对应这些数据将在第几次烧录过程中被使用。由于Flasher的烧录次数计数是从0开始,因此Patches.txt文件的第一行数据应算作第0行。

在Patches.txt文件的每一行,即所对应的一次烧录过程中,最多可以添加4个数据补丁,且每个数据补丁最多可以包含32字节的内容。

补丁文件Patches.txt所支持的具体数据格式如下:

:描述当前行所包含的数据补丁数量,最多可以添加4个,范围是从1到4。

:当前数据补丁所需要烧录的地址,地址格式使用hex文件中的格式。

:当前数据补丁文件内容的大小,最大为32字节,使用hex文件(16进制)则对应20h的范围。

:数据补丁文件的具体内容,每个字节对应2个16进制格式的字符。

<分隔符>:数据补丁的描述参数与具体的补丁内容之间使用“:”作为分隔符。

<换行字符>:Flasher支持两种格式的换行字符,根据所使用的操作系统而不同:

• Windows: \r\n

• Unix/Mac: \n

示例如下:

1,18,4:01020304\r\n

所代表的含义是在该次烧录过程仅需要添加一个数据补丁,数据补丁的烧录地址是0x00000018,大小是4字节,具体的补丁内容是“01020304”。

图片

下面将使用STM32F103ZET6芯片和Flasher ARM来演示如何在在烧录过程中添加数据补丁


(1)创建Patches.txt文件,在该文件中添加在烧录过程中所需要添加的数据补丁内容。

如图2所示,Patches.txt文件中存在两行,分别对应第一次烧录过程和第二次烧录过程使用到的数据补丁。

第一行中仅包含一个数据补丁,因此第一个参数为1,补丁烧录的地址是08000400,补丁内容是0102030405060708。

第二行包含两个数据补丁,参数为2,同时需设置两个烧录地址08000410和08000420。

同理如果一次烧录过程需要添加4个数据补丁,则补丁内容形式如下:

4,,:,,:,,

:,,:\r\n

注意在同一行的多个数据补丁之间仅使用“,”作为分隔符。

图片

图片

(2)创建J-Flash工程,在J-Flash工程中通过file->open data file添加所要烧录的文件,并通过File->download config & data file to flasher选项将配置文件和数据文件下载到Flasher中,从而配置Flasher进入离线工作模式。详细操作步骤可参考:

https://mp.weixin.qq.com/s/YrXzRM2JU6nax9jZoK4T2g

图片

(3)拔下Flasher,在长按住Flasher上的PROG按键的时候重新连接电脑,令Flasher工作在MSD模式,此时Flasher相当于一个u盘,将前面创建好的Patches.txt文件拷贝到Flasher ARM内。

图片

在该步骤时,需要留意一下Serial.txt文件的初始值,如果想要Patches.txt的第一行数据补丁内容对应第一次烧录过程,那么Serial.txt文件的初始值应该为0。

图片

(4)将Patches.txt文件拷贝到Flasher内后,flasher在离线模式下进行烧录时,将会在烧录过程中将Patches.txt文件中对应的数据补丁同时进行烧录。

如下图所示,在第一次离线烧录过程中同时完成了08000400地址处的数据补丁的烧录工作。

图片

同理,在第二次离线烧录的时候,同时完成了08000410和08000420地址处的数据补丁的烧录工作。

图片

(5)注意事项

①在Patches.txt文件中,没有指定可用地址的数据补丁内容将会被忽略,因此需注意每一个数据补丁均需要提供准确的烧录地址。

②数据补丁所会使用到的数据范围需预先存在对应的占位符数据,通常可以使用“FF”来填充这些地址进行占位。在生成hex文件时,将对应的地址范围事先使用“FF”填充即可,真实的数据将在烧录过程中通过数据补丁的方式写入。

图片

借助Flasher在烧录过程中添加数据补丁的功能,可以针对每一个设备烧录完全不同的固件内容,能够很好的满足客户的生产需求。



京ICP备:京ICP备05011254号-1 版权归北京麦克泰软件技术有限公司所有
北京麦克泰软件技术有限公司