0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习一种简单的方法来启用OTA固件更新

Silicon Labs 来源:lp 2019-04-10 16:37 次阅读

在管理物联网设备方面,无线(OTA)固件更新发挥着关键作用。产品制造商借助OTA,通过漏洞修复,功能增强和安全补丁功能远程更新连接设备。

如果您正在对Silicon Labs(亦称“芯科科技”)的某一EFM32 32位MCU型号进行评估,例如嵌入式Giant GeckoGG11入门套件(SLSTK3701A),并希望学习一种简单的方法来启用OTA固件更新。那么本文将通过以下展示示例进行演示:

图1. 以太网上的固件更新

图1-(1): 嵌入式应用程序充当HTTP客户端,将被连接到您的Web服务器以发送GET请求下载固件更新文件(myupgrade.gbl)

图1-(2): 服务器开始使用固件更新文件(myupgrade.gbl)并对其进行响应

图1-(3): 下载文件myupgrade.gbl后,嵌入式应用程序将使用引导加载程序接口API对其进行存储,紧接着重新编程引导加载程序的存储区域。

图1-(4): 嵌入式应用程序将使用引导加载程序接口API验证固件更新映像并升级当前应用程序。

固件更新映像显现有以下几个标准:

myupgrade.gbl为有效文件,这需要嵌入式应用程序使用引导加载程序接口API进行确认。

嵌入式应用程序检查myupgrade.gbl中存储的固件更新映像的版本。如果嵌入式应用程序的版本与正在运行的应用程序的版本相同或为旧版本,图像文件则不会显现。

如果出现以下情况,引导加载程序存储区域将被删除。嵌入式应用程序将尝试建立新的HTTP / HTTPS连接:

加载的.gbl图像文件无效。

存储的图像版本与运行版本相同或为旧版本。

HTTP / HTTPS协议出现任何问题。

硬件要求

EFM32 Giant Gecko GG11入门套件SLSTK3701A

Web服务器托管固件更新文件

软件要求

Simplicity Studio

32位MCU SDK

Micrium OS内核

Micrium OS网络

入门介绍

1.从官网或经销商处订购EFM32 Giant Gecko GG11入门套件SLSTK3701A

2.安装Simplicity Studio

下载并安装最新版本的Simplicity Studio:http://www.silabs.com/simplicity-studio

下载软件并按照安装说明进行操作。

登录时,请输入您在Silicon Labs官网的用户名和密码。如果您还没有帐户,请注册。这是访问所有软件组件所必需的条件。

登录后,使用Simplicity Studio注册您的套件。如果套件未注册,Simplicity Studio仅允许访问Micrium内核;如果套件已注册,Simplicity Studio还可允许访问所有其他适用的Micrium组件。许可证编号可参考套件包装盒上编码。

3.连接电路板,如下图所示:

图2. 硬件连接

4.从Launcher面板打开Simplicity Studio,选择SLSTK3701A_micriumos_httpcloader的示例,如下所示:

图3.选择示例

5.打开位于Project Explorer中/ src文件夹中的文件httpclient.c,然后输入计划进行的托管固件更新映像的完整URL:

#define FULL_URLhttp://mywebserver.com/myupgrade.gbl

如果使用中的网络服务器是安全的(即https),那么此演示也包括mbedTLS一部分。只需确保网站所需的证书在位于Project Explorer的/ src文件夹中的文件ssl_certificates.c中的SSL_ROOT_CA []。

您可能还必须通过在配置文件config-ssl中设置MBEDTLS_ECP_MAX_BITS和MBEDTLS_MPI_MAX_SIZE中的正确大小来调整与您的网站证书匹配的位数和字节数 -

httpcloader.h位于C: SiliconLabs SimplicityStudio v4 developer sdks gecko_sdk_suite v2.5 app mcu_example SLSTK3701A_EFM32GG11 micriumos_httpcloader config-ssl-httpcloader.h

#defineMBEDTLS_MPI_MAX_SIZE 256

#defineMBEDTLS_ECP_MAX_BITS 384

6.打开Project Explorer的/ src文件夹中的application_properties.c文件,并将嵌入式应用程序的版本号设置为2以模拟固件升级:

#define APP_PROPERTIES_VERSION2

7.构建项目

8.通过打开位于C: SiliconLabs SimplicityStudio v4 developer adapter_packs commander的实用程序Simplicity Commander并将二进制文件.s37的路径提供给与此类似的命令行,生成固件更新文件myupgrade.gbl

commander.exe gbl createmyupgrade.gbl --app"C:Users[YourUsername]SimplicityStudiov4_workspaceSLSTK3701A_micriumos_httpcloaderGNUARM v7.2.1 - DebugSLSTK3701A_micriumos_httpcloader.s37"

图4. 创建固件更新文件(.gbl)

9.将文件myupgrade.gbl上传到您的Web服务器

10.打开Project Explorer的/ src文件夹中的application_properties.c,并将嵌入式应用程序的版本号设置回1:

#define APP_PROPERTIES_VERSION1

11.再次构建项目

12.如之前图2所示连接入门工具包

13.在Windows中打开“设备管理器”,查找列为J-Link CDC UART端口USB设备的COM端口号

14.打开串行控制台应用程序(如PuTTY)便于在运行时查看调试消息

15.从调试适配器列表中选择项目J-Link Silicon Labs,单击右键打开上下文菜单,然后选择upload application,如下所示:

图5. 上传嵌入式应用程序和Bootloader映像

16.在“Application Image Path”字段中,通过浏览项目所在的工作文件夹,选择构建的文件SLSTK3701A_micriumos_httpcloader.s37,路径类似于以下内容:

C:Users[YourUsername]SimplicityStudiov4_workspaceSLSTK3701A_micriumos_httpcloaderGNUARM v7.2.1 - DebugSLSTK3701A_micriumos_httpcloader.s37

勾选“Upload a Bootloader image”复选框,然后通过在相似路径中浏览到文件bootloader-storage-internal-single-combined.s37选择示例附带的引导加载程序:

C:SiliconLabsSimplicityStudiov4developersdksgecko_sdk_suitev2.5appmcu_exampleSLSTK3701A_EFM32GG11micriumos_httpcloaderootloader-storage-internal-single-combined.s37

图6. 上传嵌入式应用程序和Bootloader映像

17.点击“OK”按钮后,两个图像将会显现。引导加载程序映像将在Flash的保留区域中,从此处可以简单地从Simplicity Studio启动调试会话,从而使用不同的应用程序映像对设备进行编程。因为引导加载程序映像被存储在Flash的保留区域中,除非您使用此工具或使用Simplicity Commander的命令行覆盖它,否则映像不会被删除。

18.当嵌入式应用程序启动以太网接口时,观察串行终端,连接到网站下载文件myupgrade.gbl并在新升级的嵌入式应用程序上重新启动该文件。

图7. 成功升级时的调试消息

延伸阅读

此示例中描述的固件更新情况基于无身份验证情况下,同时也没有加密固件更新文件。但是,我们的系统支持这些功能以及安全启动,但这超出了本文范围。如需签署和加密固件更新文件,您可以按一下方式使用Simplicity Commander:

commander.exe gbl create --app--bootloader --metadata --compress --encrypt --sign --force

有关如何使用Simplicity Commander,请参阅以下文档的第34页上的GBL命令部分:

UG162:Simplicity Commander参考指南https://www.silabs.com/documents/public/user-guides/ug162-simplicity-commander-reference-guide.pdf

有关Gecko Bootloader的更多内容,请参阅以下文档:

UG266:Gecko Bootloader用户指南https://www.silabs.com/documents/public/user-guides/ug266-gecko-bootloader-user-guide.pdf

UG103.6:Bootloader基础知识https://www.silabs.com/documents/public/user-guides/ug103-06-fundamentals-bootloading.pdf

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2867

    文章

    41593

    浏览量

    358290
  • 应用程序
    +关注

    关注

    37

    文章

    3133

    浏览量

    56368
  • 嵌入式应用
    +关注

    关注

    0

    文章

    57

    浏览量

    18382

原文标题:【设计应用】以太网助力Giant Gecko 11固件更新

文章出处:【微信号:SiliconLabs,微信公众号:Silicon Labs】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【TI SimpleLink SensorTag试用体验】----上电试机篇(七):-)固件升级OTA

    ` 小T提供了一种比较高大尚的固件升级方式,OTA,也叫OAD,oad的话就是Over the Air Download,OTA的话就是Over The Air download,看你
    发表于 04-05 18:08

    分享一种国标中计算阻抗曲线Qts的方法,有labview程序

    1. 测量方面厂商大多使用soundcheck 限制因子的方法来经过些计算得到Qts;2. 现更新一种国标中规定的计算方法,不用考虑到Q大
    发表于 01-09 06:17

    是否有一种方法来确定GPIF接口在等待GPIF主机的数据时干还是空

    我用GPIF作为个32位奴隶FIFO与2位寻址。我想知道是否有一种方法来确定GPIF接口在等待GPIF主机的数据时“干”还是空。 以上来自于百度翻译 以下为原文I am using
    发表于 05-27 14:25

    有没有一种方法来配置MPLAX X从RAM运行应用程序?

    有没有一种方法来配置MPLAX X从RAM运行应用程序,而不是从Flash运行?
    发表于 09-12 06:33

    请问有另一种方法来测量RTD传感器而不使用IDAC吗?

    嗨,有没有另一种方法来测量RTD传感器而不使用IDAC?TKS。
    发表于 10-11 09:33

    请问如何实现ESP32固件OTA在线升级更新

    什么是OTA?ESP32的OTA升级有哪几种方式?如何实现ESP32固件OTA在线升级更新
    发表于 01-14 06:05

    介绍一种使用WSL编译nodemcu固件方法

    本文将介绍一种使用WSL编译nodemcu固件方法
    发表于 02-15 07:34

    一种更通用的方法来监测处理器中的电压噪声

    的是,这种专门的电路还不是大多数高端Arm系统的标准功能。在我们最近与塞浦路斯大学的合作研究中,我们成功地开发了一种更通用的方法来监测处理器中的电压噪声。这种技术依赖于使用外部天线和频谱分析仪的处理器发出
    发表于 11-01 14:48

    是否有一种简单方法将P-NUCLE-WB55重置回交付时的固件呢?

    TLDR:是否有一种简单方法(或者至少是清晰的分步说明)将 P-NUCLE-WB55 重置回交付时的固件?全:我有个 P-Nucleo-
    发表于 12-27 06:28

    esp8266如何获取上传固件的日期和时间?

    用每个esp8266固件都是*.bin文件,如果我没理解错的话。每个文件都有创建时间。问题是 - esp8266 是否存储固件的日期和时间,通过 OTA(或更新)上传,是否有任何 Ar
    发表于 02-22 06:05

    软件驱动程序是否有一种相当简单方法来检测安装了哪个rtc设备?

    软件驱动程序是否有一种相当简单方法来检测安装了哪个 rtc 设备?我们从 PCF2127 开始,但由于其他原因正在重新设计,并且由于 NRND 的 PCF2127 状态,考虑转向 PCF2131。但软件必须支持这两
    发表于 04-06 07:31

    是否有一种简单”的方法来增加允许的“打开”文件的最大数量?

    问题:是否有一种简单”的方法来增加允许的“打开”文件的最大数量(=====>SPIFFS) 我在 esp8266 HTML 页面上使用#include
    发表于 05-15 07:21

    OTA固件更新报错的原因?

    我想尝试 OTA 固件更新,但我在构建映像时遇到问题。当我键入此命令时: 代码:全选make OUTPUT_TYPE=ota 我收到此错误: 代码:全选APPGEN build
    发表于 05-19 15:11

    如何更简单的给单片机更新固件

    当单片机已经焊接到电路板上时,如何更简单更便捷的为单片机升级固件便成了一件值得深思的问题。本文介绍了一种简单更便捷的固件升级方式,不需要任
    的头像 发表于 10-23 18:19 1.7w次阅读
    如何更<b class='flag-5'>简单</b>的给单片机<b class='flag-5'>更新</b><b class='flag-5'>固件</b>?

    AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新

    AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新
    的头像 发表于 10-26 17:09 903次阅读
    AT32 MCU如何使用<b class='flag-5'>OTA</b>通过USART实现对<b class='flag-5'>固件</b>的在线升级<b class='flag-5'>更新</b>