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

描述

在管理物联网设备方面,无线(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_URL  http://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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分