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

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

恩智浦推出FRDM i.MX 93開發板
在i.MX RT處理器上使用PXP實現縮放和旋轉組合操作

RT10XX RC24M開啟自動校準功能

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

評論