在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何實現MCU開發和OTA升級

9GxC_IoTMaker ? 來源:機智云開發者 ? 作者:機智云開發者 ? 2022-10-28 09:31 ? 次閱讀

本文以依托 GC211 和秉火開發板,講述如何實現MCU開發和OTA升級。 用戶如果將開發了的產品發布上線銷售,后期需要更新固件和程序,就需要用到遠程OTA固件升級,就能對已發布的產品進行遠程升級。 01 硬件材料 1.機智云4G模組GC211,此模組采用中移模組ML302,支持網絡,移動,聯通,電信4G網絡,可前往機智云官方和淘寶店鋪購買。https://shop159680395.taobao.com/ 30a94f9a-5656-11ed-a3b6-dac502259ad0.png 2.秉火【F103開發板-指南者】 30e75696-5656-11ed-a3b6-dac502259ad0.jpg

02 云端開發

2.1、云端部署
創建新產品,可根據自己需求選擇。 3102fbb2-5656-11ed-a3b6-dac502259ad0.png

添加如下數據點,可根據自己需求
313fd1c2-5656-11ed-a3b6-dac502259ad0.png
生成STM32F103代碼下載備用 315fa006-5656-11ed-a3b6-dac502259ad0.png03 硬件部分說明 3.1 關于STM32啟動 ARM7/ARM9 內核的控制器在復位后,CPU 會從存儲空間的絕對地址0x000000 取出第一條指令執行復位中斷服務程序的方式啟動,即固定了復位后的起始地址為0x000000(PC =0x000000)同時中斷向量表的位置并不是固定的。 然而,Cortex-M3 內核啟動有3 種情況: 1、通過boot 引腳設置可以將中斷向量表定位于SRAM 區,即起始地址為0x2000000,同時復位后PC 指針位于0x2000000 處; 2、通過boot 引腳設置可以將中斷向量表定位于FLASH 區,即起始地址為0x8000000,同時復位后PC 指針位于0x8000000 處; 3、通過boot 引腳設置可以將中斷向量表定位于內置Bootloader 區; Cortex-M3 內核規定,起始地址必須存放堆頂指針,而第二個地址則必須存放復位中斷入口向量地址,這樣在Cortex-M3 內核復位后,會自動從起始地址的下一個32 位空間取出復位中斷入口向量,跳轉執行復位中斷服務程序。對比ARM7/ARM9 內核,Cortex-M3 內核則是固定了中斷向量表的位置而起始地址是可變化的。 總結一下STM32 的啟動文件和啟動過程。 首先對棧和堆的大小進行定義,并在代碼區的起始處建立中斷向量表,其第一個表項是棧頂地址,第二個表項是復位中斷服務入口地址。 然后在復位中斷服務程序中跳轉C/C++標準實時庫的main 函數,完成用戶堆棧等的初始化后,跳轉.c 文件中的main 函數開始執行C 程序。 假設STM32被設置為從內部FLASH 啟動(這也是最常見的一種情況),中斷向量表起始地位為0x8000000,則棧頂地址存放于0x8000000處,而復位中斷服務入口地址存放于0x8000004 處。 當STM32 遇到復位信號后,則從0x80000004 處取出復位中斷服務入口地址,繼而執行復位中斷服務程序,然后跳轉main函數,最后進入mian 函數。 3.2OTA 需求分析 我們將建立兩個工程,分別是Bootloader 還有APP,我們將Bootloader下載到FLASH 空間0x8000000 地址處,那么STM32 啟動后會首先執行我們的Bootloader 程序,然后就可以按照我們意愿實現OTA 了。 ?FLASH區間劃分 根據需求,我們將STM32F103VET6 這個芯片Flash 空間劃分出4 個區域:Bootloader、FLAG、APP、APP_BAK。 四個區間作用描述如下: ? Bootloader: 存儲Bootloader 固件,MCU 上電后首先運行該固件。
? FLAG: 存儲有關升級的相關標志位,Bootloader 和APP 都需要操作該區域。
升級標志位(2B)
固件大小(4B)
MD5加密數據(16B)
? APP:存儲用戶程序固件。
? APPBAK: 臨時存儲云端下發的新固件,升級固件的一個過渡存儲區。 STM32F103VET6分區方案如下圖所示: 317e8b92-5656-11ed-a3b6-dac502259ad0.png
3.3 BOOTLOADER分區部分
3.3.1 Bootloader程序流程

Bootloader 的主要職能是在有升級任務的時候將 APPBAK 分區里面的固件拷貝到 APP 區域。當然,這期間需要做很多的工作,比如升級失敗的容錯等等。具體的流程可以參考圖示。需要注意的是,在校驗 MD5 正確后開始搬運固件數據期間,MCU 出現故障(包括突然斷電),MCU 應發生復位操作(FLAG 區域數據未破壞),復位后重新開始執行 Bootloader,從而避免 MCU 刷成板磚。 31982cdc-5656-11ed-a3b6-dac502259ad0.png
3.3.2Bootloader程序配置
為了方便構架,此處我采用cubemx構建項目,生成keil工程。
創建STM32F103VE項目 321376b2-5656-11ed-a3b6-dac502259ad0.png 配置外部時鐘 3233d024-5656-11ed-a3b6-dac502259ad0.png 配置時鐘72M 32716e7a-5656-11ed-a3b6-dac502259ad0.png
配置debug為serisl wire 329537ce-5656-11ed-a3b6-dac502259ad0.png 配置串口4為BootLoader的日志打印口。 32c42d2c-5656-11ed-a3b6-dac502259ad0.png 生成keil代碼添加驅動flash.c,gagent_md5.c和app.c以及對應的組,如何添加此處不過多介紹(基礎的軟件操作),只提供文件路徑。 32e60884-5656-11ed-a3b6-dac502259ad0.png ? 32fc8ba4-5656-11ed-a3b6-dac502259ad0.png ? 3319e5e6-5656-11ed-a3b6-dac502259ad0.png ? 33546bc6-5656-11ed-a3b6-dac502259ad0.png ? 33609540-5656-11ed-a3b6-dac502259ad0.png
驅動文件的編寫以及函數介紹我此處不過多介紹,可以在原文地址的附件進行下載源文件,也可以在文章末尾復制代碼。 重點代碼講解 Main.c添加頭文件#include "app.h" 33846c7c-5656-11ed-a3b6-dac502259ad0.png 主函數添加APP_Process(); 33a3f66e-5656-11ed-a3b6-dac502259ad0.png 根據自己分區大小設置區域,我的是18K,2k,54k,54k 33d2de2a-5656-11ed-a3b6-dac502259ad0.png
3.3.3Bootloader編譯設置
按照 Bootloader 流程編寫好代碼,需要我們對 KEIL 工程做相應配置,需要注意的是編譯的 Bootloader 固件大小不超過最大可允許的 18KB。Keil 編譯器需要設置如下: 3411a074-5656-11ed-a3b6-dac502259ad0.png Flash 燒寫地址設置有效 3439d724-5656-11ed-a3b6-dac502259ad0.png 設置ST-LINK按塊擦除 FLASH 區間和燒寫程序 3458fe1a-5656-11ed-a3b6-dac502259ad0.png347bf2bc-5656-11ed-a3b6-dac502259ad0.png34a932a4-5656-11ed-a3b6-dac502259ad0.png 編譯燒錄程序,到此BootLoader編寫燒錄完成。 34da8da4-5656-11ed-a3b6-dac502259ad0.png
3.3.4APP程序分區部分
固件接收流程
做好 BOOTLOADER 工作后,我們開始寫 APP 分區的代碼。APP 分區固件的編寫要注意硬件版本號和軟件版本號,軟件版號作為升級迭代很重要的標志。 需要注意的是,中斷向量地址偏移的定義,這個地方需要我們尤其注意,我在開發過程中在這個地方排查了好長時間。STM32 標準庫默認中斷向量地址偏移為0x0,但是我們APP 實際的偏移是0x5000。如果不修改,APP 也可以正常加載運行,但是不會相應中斷。所以,我們需要根據實際APP 下載的起始地址,對中斷向量地址偏移做定義。 34fabf8e-5656-11ed-a3b6-dac502259ad0.png
3.4 CUBEMX部署
解壓云端生成的代碼,由于生成的代碼是STM32F103c8的,我們需要通過CUBEMX轉換成STM32F103VET6的代碼來適應我們的秉火開發板,創建一個新的cubeMX項目,導入自動代碼的CUBEMX工程. 35265554-5656-11ed-a3b6-dac502259ad0.png 目錄保存在解壓代碼所在的路徑。 35416100-5656-11ed-a3b6-dac502259ad0.png 修改時鐘樹為72M,注意需要同BootLoader時鐘。 357f20ee-5656-11ed-a3b6-dac502259ad0.png 根據項目需求以及我們自己創建的數據點,我們需要控制RGB燈,蜂鳴器,DHT11,在此處我們需要對引腳進行初始化。 359be4ae-5656-11ed-a3b6-dac502259ad0.png 配置RGB燈,采用定時器輸出PWM控制。 35b9d338-5656-11ed-a3b6-dac502259ad0.png 有源蜂鳴器,和默認代碼按鍵2沖突,修改按鍵2的GPIO為PB15 35dc5156-5656-11ed-a3b6-dac502259ad0.png
3.5 配置溫濕度傳感器DHT11
為每個單獨的文件生成.C.H文件,方便調用頭文件 36116cec-5656-11ed-a3b6-dac502259ad0.png 生成KEIL的代碼 362e9e5c-5656-11ed-a3b6-dac502259ad0.png 到此我們就完成了項目的構建。 3.6 編譯器設置 因為硬件FLASH 空間限定,我們需要對APP 的固件大小做嚴格的限制。本方案,
針對秉火開發板 我們可允許的最大固件為54KB。需要升級的新固件同樣最大可支持54KB。
1、設置FLASH 固件下載地址 364f8b1c-5656-11ed-a3b6-dac502259ad0.png 2、配置中斷向量偏移地址設置 36793926-5656-11ed-a3b6-dac502259ad0.png 3.重新構建工程,添加相關頭文件。 36a245be-5656-11ed-a3b6-dac502259ad0.png 4.添加flash.h,flash.h, gagent_md5.c, gagent_md5.h, app.c文件到項目 36c3e05c-5656-11ed-a3b6-dac502259ad0.png 5. 在mian.c里面添加一下頭文件 36d9d812-5656-11ed-a3b6-dac502259ad0.png 在main.c里面添加如下代碼 371b4068-5656-11ed-a3b6-dac502259ad0.png 后續涉及部分代碼修改和相關源碼,字數比較多,所以建議參考原帖: https://club.gizwits.com/thread-166001-1-1.html?

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17321

    瀏覽量

    352651
  • 程序
    +關注

    關注

    117

    文章

    3795

    瀏覽量

    81414
  • OTA
    OTA
    +關注

    關注

    7

    文章

    587

    瀏覽量

    35392
  • 機智云
    +關注

    關注

    2

    文章

    591

    瀏覽量

    26460

原文標題:開發者案例|GC211實現MCU開發和OTA升級

文章出處:【微信號:IoTMaker,微信公眾號:機智云開發者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OTA固件升級教程

    設備端。支持一個產品同時有多個推送支持wifi/mcu升級支持定向升級。可指定設備mac地址、區域、舊固件版本進行推送。支持定時推送。可自定義推送周期及推送時段。OTA進度統計分析
    發表于 03-01 18:31

    淺析單片機MCU OTA升級技術

    云端OTA通知推送云端只會給當時在線設備推送;對于當時不在線,或者沒升級成功的設備,云端會每天推送一次。MCU OTA:包括下載、存儲、校驗、傳輸4個過程。下載、存儲、校驗同GAgen
    發表于 07-15 08:37

    STM32 OTA升級如何實現

    上次談到OTA,有小伙伴私信我表示對升級的原理感興趣。回想當初入職看到MCU在線升級的代碼流程時,同樣感到很神奇,畢竟學生時代我們在MCU
    發表于 11-10 07:30

    嵌入式OTA升級實現原理是什么

    目錄一、簡介1.1 概念1.2 優點1.3 實現原理二、MCU OTA升級2.1 制作升級包2.2 下載
    發表于 12-14 07:24

    如何實現OpenHarmony的OTA升級

    的能力。升級子系統對用戶屏蔽了底層芯片的差異,對外提供了統一的升級接口。基于接口進行二次開發后,可以讓廠商的設備(如IP攝像頭等)輕松支持遠程升級能力。
    發表于 02-07 10:29

    手把手教你OTA升級開發

    。具體升級的動作由升級腳本控制。本文將介紹如何針對OpenHarmony L2場景適配updater模式。主要內容包括: *1.OTA升級實現
    發表于 08-22 09:13

    基于MCU,如何零代碼無開發實現OTA差分升級

    / 模塊開發的方案,用戶升級的主要目標是通訊芯片 / 模塊。艾拉比在設備端有基于 UA+UC 的方式提供端云一體化的 OTA 解決方案。 2. 通過 MCU/DSP/MPU
    的頭像 發表于 10-14 17:23 ?4936次閱讀
    基于<b class='flag-5'>MCU</b>,如何零代碼無<b class='flag-5'>開發</b><b class='flag-5'>實現</b><b class='flag-5'>OTA</b>差分<b class='flag-5'>升級</b>?

    基于MCU,如何零代碼無開發實現OTA差分升級

    隨著物聯網設備智能化的發展,OTA 升級已經成為了業界公認的基礎能力,而 OTA 在設計和實現過程中需要依賴于物聯網設備的硬件方案。物聯網設備主流的硬件方案為: 1. 直接基于通訊芯片
    的頭像 發表于 10-30 10:03 ?620次閱讀

    單片機MCU OTA升級技術

    云端OTA通知推送云端只會給當時在線設備推送;對于當時不在線,或者沒升級成功的設備,云端會每天推送一次。MCU OTA:包括下載、存儲、校驗、傳輸4個過程。下載、存儲、校驗同GAgen
    發表于 10-23 13:06 ?16次下載
    單片機<b class='flag-5'>MCU</b> <b class='flag-5'>OTA</b><b class='flag-5'>升級</b>技術

    【筆記】MCU OTA升級流程

    OTA升級流程本文檔以 STM32F103C8 為例。此 MCU 的 flash 共 64k,分為 64 頁,每頁 1k ,flash 的擦除需要以頁為單位進行。OTA
    發表于 11-29 18:21 ?33次下載
    【筆記】<b class='flag-5'>MCU</b> <b class='flag-5'>OTA</b><b class='flag-5'>升級</b>流程

    如何實現OpenHarmony的OTA升級

    如何及時獲取系統的更新,體驗新版本帶來的新的體驗,以及提升系統的穩定性和安全性成為了每個廠商都面臨的嚴峻問題。OTA(Over the Air)提供對設備遠程升級的能力。升級子系統對用戶屏蔽了底層芯片的差異,對外提供了統一的
    的頭像 發表于 02-08 22:00 ?1691次閱讀

    開發者案例|GC211實現MCU開發OTA升級

    本文以依托GC211和秉火開發板,講述如何實現MCU開發OTA升級。用戶如果將
    的頭像 發表于 10-31 16:18 ?1296次閱讀
    <b class='flag-5'>開發</b>者案例|GC211<b class='flag-5'>實現</b><b class='flag-5'>MCU</b><b class='flag-5'>開發</b>和<b class='flag-5'>OTA</b><b class='flag-5'>升級</b>

    在線升級 | 物聯網中的OTA升級原理

    從最新的固件方式來看,可以分成以下幾類01OTA升級1.1概念OTA:Over-the-AirTechnology,即空中下載技術。OTA升級
    的頭像 發表于 02-02 09:59 ?1605次閱讀
    在線<b class='flag-5'>升級</b> | 物聯網中的<b class='flag-5'>OTA</b><b class='flag-5'>升級</b>原理

    RX系列幫您實現二級MCU OTA升級:FreeRTOS篇

    RX系列幫您實現二級MCU OTA升級:FreeRTOS篇
    的頭像 發表于 10-26 18:04 ?979次閱讀
    RX系列幫您<b class='flag-5'>實現</b>二級<b class='flag-5'>MCU</b> <b class='flag-5'>OTA</b><b class='flag-5'>升級</b>:FreeRTOS篇

    AT32 MCU如何使用OTA通過USART實現對固件的在線升級更新

    AT32 MCU如何使用OTA通過USART實現對固件的在線升級更新
    的頭像 發表于 10-26 17:09 ?2691次閱讀
    AT32 <b class='flag-5'>MCU</b>如何使用<b class='flag-5'>OTA</b>通過USART<b class='flag-5'>實現</b>對固件的在線<b class='flag-5'>升級</b>更新
    主站蜘蛛池模板: 亚洲 图片 小说 欧美 另类 | 午夜看片在线观看 | 国产v69| 四虎www成人影院观看 | jinv在线视频 | 在线中文天堂 | 在线免费黄 | 国产日韩三级 | 久久国模 | 日木69xxxhd | 天堂在线观看免费视频 | 久久国产精品免费网站 | 久爱综合 | 国产小视频免费观看 | 午夜影视啪啪免费体验区入口 | 特黄色一级毛片 | 69自拍视频 | 五月伊人婷婷 | 亚洲精品美女久久久久网站 | 天堂网视频| 亚洲天天操 | 免费大片av手机看片 | 男啪女色黄无遮挡免费视频 | 免费看一毛一级毛片视频 | 国产资源视频 | 国产成人精品日本亚洲直接 | 免费看美女的逼 | 播放欧亚一级特黄录像 | 久久天天躁狠狠躁夜夜2020一 | 女人大毛片一级毛片一 | 同性男男肉交短文 | 欧美ggg| 午夜宅男视频 | 日本人zzzwww| 色老板女色狠xx网 | 四虎网址在线观看 | 色女仆影院| 亚洲色图综合 | 么公的好大好硬好深好爽视频 | 日本不卡视频在线视频观看 | 人人澡人人添 |