datasheet

STM32单片机

文章数:323 被阅读:997761

账号入驻

STM32F7云端固件升级例程使用攻略之三:代码修改

2018-12-13
    阅读数:

在前两期的“STM32F7云端固件升级例程使用攻略”教程中,我们分别向大家展示了整体方案(查看详情),以及云端操作步骤(查看详情),本期我们将对代码修改做详细介绍。


6

修改代码


通过修改代码,我们将生成默认版本(v1.1)和更新版本(v2.1.1)的用户程序。下面是详细的操作说明。


在建立好云端MQTT服务后,我们得到了云端MQTT服务器的地址、MQTT连接的用户名和密码,以及主题的名称。这些内容,需要写到代码里面。


在baidu_iotclient_conf.h文件中修改以下内容:



MQTT_CLIENT_ID用户自己定义就可以,保证在同一个实例下没有重复就行。


我们还需要另一个可以与MCU中烧录的用于应用程序区别开的程序作为新版本固件,来演示远程固件更新的功能。


示例应用代码里已经做了一个简单的开关:只要定义宏OTATEST_VERSION,重新再编译一遍。新的程序就会增加一个点灯的操作,并且将软件版本从1.1改为2.2.1。修改后的程序运行时,还可以看到LED2一直在闪烁。



接下来,配置Toolchain,生成bin格式的新版本固件程序,通过下一节的工具FOTABinConverter进行格式转换。


7

转换Bin文件格式


下面我们需要做的一个步骤是:使用FOTABinConverter转换Bin文件格式。


FOTABinConverter需要在Dos命令行下执行。将需要转换的bin文件也拷贝到该路径下。


打开Dos命令框,切到FOTABinConverter.exe所在的路径,输入如下命令:

FOTABinConverter.exe -filename_orig STM32F769DK_OTA_APP.bin -file_version 2.1.1.0 -split_size 4096



FOTABinConverter.exe命令后面跟了三个参数:


  • filename_orig:固件的bin文件名(STM32F769DK_OTA_APP.bin)。

  • file_version:固件版本,要与代码中的版本信息一致,工具会把此参数信息写到转换后cvt文件的头部。工具接收的版本信息格式为major.minor.candidate.patch,如果代码实际版本没有这么细分,末尾填零即可(例如本例中的2.1.1.0)。

  • split_size:bin文件分块的大小,工具会由此将bin文件分成多个数据块。这个大小的值,最好根据所使用的QSPI FLASH的最小可擦写大小来定义(本示例所采用QSPI Flash MX25L512G,page size=4K)。


转换成功后会在相同的路径下生成cvt后缀的文件:STM32F769DK_OTA_APP.cvt,文件名相同,仅后缀不同。该cvt文件就是要上传到云端的文件。


按照云端操作中“5.2上传固件”部分的介绍,将这个程序上传到百度的BOS上,获得它的下载地址。我们会在后面运行示例时,通过MQTT来推送这个下载地址给板子。


8

运行DEMO


让我们回顾一下已经完成的操作:

  • 我们建立好了云端的MQTT服务;

  • 云端访问参数已经适配到固件代码中;

  • 新版本固件(v 2.1.1)生成并经过格式转换后上传到百度云端的BOS服务器。


接下来我们还要对板子做一个初始化的准备工作:使用PC端工具ST-LINK Utility烧写MCU片上flash和片外的板载QSPI Flash。


关于ST-LINK Utility的用法,可以参考:

《UM0892: 介绍ST-LINK各个模块的软件功能及使用方法》

点击“阅读全文”搜索“UM0892”即可

初始化STM32F769DK板子


 Step 1


全片擦除MCU 片上Flash和QSPI Flash。



从memory窗口可以看到全0xff:



 Step 2


将出厂默认用户程序(v1.1)烧写到 QSPI Flash的默认固件区域(QSPI Flash 0x00010000起始的位置,remap到STM32的地址空间是0x90010000)。用户从操作界面的bin文件tab和烧录log窗口可以获得该bin文件的大小和校验和。



 Step 3


将默认用户程序(v1.1)的大小和校验和的值,写到QSPI FLASH INFO区(QSPI Flash 0x0起始的位置,remap到STM32的地址空间是0x90000000)。这两个值在用户恢复出厂设置,即把默认用户程序烧写回片上MCU flash时,用来检查存储在QSPI Flash上程序的完整性。

  • 程序大小(4字节)----> 0x90000028(QSPI Flash remap后的地址)开始的位置

  • 校验和(4字节)---->0x9000002C(QSPI Flash remap后的地址)开始的位置



 Step 4


将用户程序烧(v1.1)烧写到MCU flash的APP区域(0x08010000起始位置)。


 Step 5


烧写bootloader程序到MCU Flash 地址0x08000000位置。


现在STM32F769DK板子部分的初始化工作已经完成,上电复位运行程序。下期我们将接着介绍系列攻略的最后一个部分——功能演示,敬请继续关注。

 

STM32F7云端固件升级例程

使用攻略系列文章


  • 攻略一:方案介绍(详情

  • 攻略二:云端操作(详情

  • 攻略三:代码修改(本文)

  • 攻略四:功能演示(待续)



↓↓↓也可点击“阅读全文”查看更多详情。

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved