一、背景介紹在這個萬物互聯(lián)的時代,OTA升級功能更是為我們的生活增加便利。OTA = Over-the-Air Technology,空中下載技術(shù)。OTA升級則是通過OTA方式對設(shè)備實現(xiàn)固件或者軟件升級。最為常見的就是移動終端的OTA升級,近幾年很火的新能源汽車也讓大家對這一技術(shù)更加熟悉。
二、概述本文將介紹在i.MX RT10XX系列平臺上,進行基于阿里云物聯(lián)網(wǎng)平臺的OTA。在此之前,先簡單介紹一下本文用到的SBL&SFW工程。SBL(Secure Bootloader)是MCU SE團隊為i.MX RT全平臺設(shè)計的一個second bootloader工具,幫助用戶進行程序的安全啟動。SFW(Secure Firmware)是基于FreeRTOS創(chuàng)建的工程,生成固件為了配合SBL來實現(xiàn)完整的FOTA流程。本文的阿里云物聯(lián)網(wǎng)平臺OTA就是SFW中的一部分,SFW還支持U盤、SD卡以及AWS平臺的OTA升級。以下是SBL和SFW兩個工程的Github鏈接:
https://github.com/NXPmicro/sbl
https://github.com/NXPmicro/sfw
三、配置阿里云OTA升級代碼3.1 創(chuàng)建云端設(shè)備要實現(xiàn)阿里云物聯(lián)網(wǎng)平臺的OTA升級,首先要將阿里云物聯(lián)網(wǎng)平臺提供的C Link SDK(本次移植使用阿里云C-SDK 4.0.0)移植到工程中。登錄阿里云物聯(lián)網(wǎng)平臺:https://iot.console.aliyun.com/,進入公共實例板塊,創(chuàng)建自己的產(chǎn)品。
在“所屬品類”中選擇任一即可?!肮?jié)點類型”選擇“直連設(shè)備”,“連網(wǎng)方式”選擇“以太網(wǎng)”,其余選項默認即可。
完成產(chǎn)品創(chuàng)建之后,在相應(yīng)產(chǎn)品下創(chuàng)建需要的設(shè)備,如對阿里云物聯(lián)網(wǎng)平臺不了解的讀者,可以通過阿里云物聯(lián)網(wǎng)平臺的入門教程-公共實例快速入門中查找相應(yīng)操作。
至此我們已經(jīng)拿到了對于i.MX RT設(shè)備連接阿里云IOT平臺非常重要的三元組:ProductKey、DeviceName和DeviceSecret。
3.2 配置設(shè)備端C-SDK
創(chuàng)建好產(chǎn)品和設(shè)備之后,我們需要將阿里云物聯(lián)網(wǎng)平臺的Link SDK移植到我們的設(shè)備端中。
在“公共實例”中,點擊左側(cè)最下端“文檔與工具”,選擇“設(shè)備接入SDK”中的“SDK定制”來下載所需要的設(shè)備端SDK。
將下載的C-SDK包中需要用到的core、OTA文件夾以及external文件夾中的證書ali_ca_cert.c、portfiles文件夾中的freertos_port.c和demos文件夾中的fota_basic_demo.c添加到我們原本的工程文件中以便修改。
本例程中,OTA升級的流程圖如下所示:
3.3 OTA升級程序
在OTA功能函數(shù)中,有幾個需要注意的地方:
1. 當前固件的版本號
在OTA升級的過程中,云端需要校驗當前固件版本號,如果是需要升級的固件版本,才會對設(shè)備發(fā)送升級請求以及升級包URL,OTA升級才能繼續(xù)下去。
2.將固件一次性下載完成
阿里云C-SDK默認的下載方式為兩段下載,此處我們采用一次性下載完整個固件的方式。
3. flash的擦除
在設(shè)備端收到了OTA升級的MQTT消息后,會下載新的固件,并且需要設(shè)備端燒寫到指定的flash位置,在此之前,需要先將該區(qū)域擦一下。
4. 燒寫下載的固件到flash上,分段下載,每一段一保存
至于其他一些可以變動的地方,可以詳細閱讀阿里云C-SDK。
四、OTA演示下面就來演示一下在SBL工程配合下的阿里云OTA升級工程,平臺為i.MX RT1064EVK,利用以太網(wǎng)進行網(wǎng)絡(luò)連接(用戶也可自行配置無線模塊進行連網(wǎng))。 1. 修改當前版本號生成bin文件
在IAR中修改當前版本為1.0.0和1.4.0,并且生成相應(yīng)的bin文件(此處以IAR工程為例);
2. 在SBL工程中利用簽名腳本進行bin文件的加頭簽名操作
將上一步生成的兩個bin文件拷貝到SBL工程中sbl/component/secure/mcuboot/scripts文件夾下,利用PowerShell給兩個bin文件簽名。
3. 創(chuàng)建OTA任務(wù)
在云端控制臺頁面,公共實例下的監(jiān)控運維中,選擇OTA升級。點擊添加升級包按鍵以添加升級包,輸入升級包名稱,選擇相應(yīng)的升級選項,注意,升級包版本需要和上傳的bin文件中版本一致,否則后續(xù)的OTA無法成功。
4. 開始運行OTA工程
Step1. 利用MCUBootUtility工具將加簽的1064_ali_100.bin下載到板子的第一個啟動區(qū),默認的slot1為flash_offset+0x100000 ~ flash_offset+0x200000,整個區(qū)域大小為1MB。
Step2. 運行Secure Bootloader
將SBL工程通過IDE下載到板子中,下面就可以開始進行整個OTA流程了。
在開發(fā)板上插入以太網(wǎng)網(wǎng)線,按下reset鍵開始運行工程,串口顯示“The image now inPRIMARY_SLOT slot”和“Getting IP address from DHCP”表示在slot1里面的程序已經(jīng)成功運行?!癐Pv4 Address:” 和 “version:1.0.0”表示網(wǎng)絡(luò)連接成功并且阿里云云端接收到當先設(shè)備的版本為1.0.0。
上傳升級包時,如果選擇了需要進行升級包驗證,則在云端接收到當前版本信息后,需要進行操作驗證;如果沒有選擇驗證,則可直接進行升級進程。
串口會顯示升級包信息,可以看到OTA目標版本為1.4.0,大小信息也會顯示。
下面的打印信息顯示下載請求已經(jīng)成功發(fā)送并開始下載流程,
下載完成后會有打印信息如下,并且開始進行系統(tǒng)重啟,在系統(tǒng)重啟后,會啟動slot2中的升級包程序,可以看到當前的版本信息,并且可以在控制臺看到OTA升級已經(jīng)驗證完成。
五、總結(jié)本文介紹了在i.MX RT平臺上進行阿里云的OTA升級。
雖然只是簡單的版本號升級演示,但是通過本文可以知道在基于i.MX RT的IOT設(shè)備進行固件升級時,需要進行操作的地方有哪些,在針對你的設(shè)備進行功能代碼升級的同時,加上上文中的OTA升級部分,即可輕松借助阿里云物聯(lián)網(wǎng)平臺進行設(shè)備的固件升級。
責任編輯:haq
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2930文章
46095瀏覽量
390386 -
OTA
+關(guān)注
關(guān)注
7文章
608瀏覽量
36369 -
阿里云
+關(guān)注
關(guān)注
3文章
1007瀏覽量
44010
原文標題:在i.MX RT平臺上進行阿里云OTA
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
i.MX RT系列中FlexSPI DQS信號引腳配置GPIO方法

在i.MX RT 1176上正常運行代碼時與使用IAR調(diào)試代碼時存在一些奇怪的差異,為什么?
GoPoint嵌入式開發(fā)平臺 釋放i.MX潛力 簡化Linux開發(fā)

恩智浦推出FRDM i.MX 93開發(fā)板
在i.MX RT處理器上使用PXP實現(xiàn)縮放和旋轉(zhuǎn)組合操作

RT10XX RC24M開啟自動校準功能

恩智浦i.MX 94應(yīng)用處理器如何變革工業(yè)和汽車連接
恩智浦i.MX RT700系列MCU的優(yōu)勢
恩智浦發(fā)布i.MX 94系列應(yīng)用處理器
NXP專為邊緣AI打造的i.MX RT700跨界MCU到底強在哪?

恩智浦推出全新i.MX RT700跨界MCU系列
i.MX Linux開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板
恩智浦半導(dǎo)體發(fā)布i.MX RT700系列MCU,賦能智能AI邊緣設(shè)備
恩智浦i.MX RT1170 uSDHC eMMC啟動時間

評論