如何使用Segger J-Flash同时烧录BootLoader和APP?

浏览:2453来源:本站时间:2021-11-19

在嵌入式行业,不少产品的应用程序会分为BootLoader和App两个部分,BootLoader用于程序校验、App升级和App版本回滚等功能。通常BootLoader在cpu上电后的第一阶段中运行,之后跳转至App程序地址执行应用程序。因此,在发布应用程序的时候,需同时发布BootLoader固件和App固件。


在使用到BootLoader的应用程序中,BootLoader和App程序会分布在不同的内存地址区域。典型内存分配示意图如下:

图片


传统烧录方式

在研发过程中,BootLoader和App可能会分为两个项目工程来进行开发,并最终编译生成两个程序固件,例如两个hex或者bin文件。在产品量产过程中,传统的烧录方案如下:

(1)烧录两次,分别烧录BootLoader和App固件

(2)BootLoader本身支持App固件传输功能,只烧录BootLoader,后期再升级App

但上述传统烧录方式较为繁琐,在项目产品种类增加,或者版本更迭频繁的时候更容易出现问题,BootLoader和APP固件分为两次烧录,增加了烧录过程中出现问题的风险。稍微操作失误可能导致固件烧录失败,严重的可能因为烧录了不完整的固件而令产品变为“砖头”等。


使用J-Flash软件合并烧录固件

Segger公司的J-Flash软件是一款独立的编程软件,Segger J-Link Plus以上版本仿真器或Flasher系列编程器产品的用户均可免费使用该软件。J-Flash能够将BootLoader和App两个程序固件合并保存为一个程序固件,从而可以在一次烧录过程同时烧录两个程序固件的内容。J-Flash软件支持合并*.hex, *.mot, *.srec, *.bin和*.elf 4种格式的文件,在不包含地址的文件例如bin文件的合并过程中需要用户手动指定bin文件对应的地址。

本文将以一个简单的示例来介绍如何合并两个应用程序固件,BootLoader.hex和APP.hex文件的内存地址范围示意如下:

图片

(1)打开J-Flash软件创建新工程,并选择所对应的芯片型号和调试接口。

图片

(2)通过File->open data file选项加载要烧录的第一个程序固件,此处选择BootLoader或者APP均可。以选择BootLoader作为示例,可以看到BootLoader固件的内容结尾地址为080022B0。

图片图片

(3)通过File->Merge data file选项加载第二个烧录固件,此选项会将第二个固件的内容与第一个固件的内容合并为同一个固件。两个固件之间的内存地址将会以0xFF进行填充。截图中的横线代表0xFF。

图片图片

(4)在步骤3将BootLoader和APP两个hex文件的内容合并到同一个文件后,通过File->Save data file as选项将合并后的文件内容保存为一个新的文件。

图片图片

(5)文件合并后再执行烧录动作,此时将会同时烧录BootLoader和APP程序固件对应的内容。


使用J-Flash合并烧录能够简化产品量产过程中需要的操作,提高烧录效率并减少烧录过程风险,感兴趣的用户可以积极尝试。

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