chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開發(fā)者案例|GC211實(shí)現(xiàn)MCU開發(fā)和OTA升級(jí)

機(jī)智云 ? 2022-10-31 16:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文以依托 GC211 和秉火開發(fā)板,講述如何實(shí)現(xiàn)MCU開發(fā)和OTA升級(jí)。用戶如果將開發(fā)了的產(chǎn)品發(fā)布上線銷售,后期需要更新固件和程序,就需要用到遠(yuǎn)程OTA固件升級(jí),就能對(duì)已發(fā)布的產(chǎn)品進(jìn)行遠(yuǎn)程升級(jí)。01硬件材料1.機(jī)智云4G模組GC211,此模組采用中移模組ML302,支持網(wǎng)絡(luò),移動(dòng),聯(lián)通,電信4G網(wǎng)絡(luò),可前往機(jī)智云官方和淘寶店鋪購(gòu)買。
e7fcc0dc-5732-11ed-b116-dac502259ad0.png2.秉火【F103開發(fā)板-指南者】

02云端開發(fā)

2.1、云端部署
創(chuàng)建新產(chǎn)品,可根據(jù)自己需求選擇。
e94b2c26-5732-11ed-b116-dac502259ad0.png

添加如下數(shù)據(jù)點(diǎn),可根據(jù)自己需求

e98ccb22-5732-11ed-b116-dac502259ad0.png
生成STM32F103代碼下載備用
e9e6fba6-5732-11ed-b116-dac502259ad0.png03硬件部分說明3.1 關(guān)于STM32啟動(dòng)ARM7/ARM9 內(nèi)核的控制器在復(fù)位后,CPU 會(huì)從存儲(chǔ)空間的絕對(duì)地址0x000000 取出第一條指令執(zhí)行復(fù)位中斷服務(wù)程序的方式啟動(dòng),即固定了復(fù)位后的起始地址為0x000000(PC =0x000000)同時(shí)中斷向量表的位置并不是固定的。然而,Cortex-M3 內(nèi)核啟動(dòng)有3 種情況:1、通過boot 引腳設(shè)置可以將中斷向量表定位于SRAM 區(qū),即起始地址為0x2000000,同時(shí)復(fù)位后PC 指針位于0x2000000 處;2、通過boot 引腳設(shè)置可以將中斷向量表定位于FLASH 區(qū),即起始地址為0x8000000,同時(shí)復(fù)位后PC 指針位于0x8000000 處;3、通過boot 引腳設(shè)置可以將中斷向量表定位于內(nèi)置Bootloader 區(qū);Cortex-M3 內(nèi)核規(guī)定,起始地址必須存放堆頂指針,而第二個(gè)地址則必須存放復(fù)位中斷入口向量地址,這樣在Cortex-M3 內(nèi)核復(fù)位后,會(huì)自動(dòng)從起始地址的下一個(gè)32 位空間取出復(fù)位中斷入口向量,跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序。對(duì)比ARM7/ARM9 內(nèi)核,Cortex-M3 內(nèi)核則是固定了中斷向量表的位置而起始地址是可變化的。總結(jié)一下STM32 的啟動(dòng)文件和啟動(dòng)過程。
首先對(duì)棧和堆的大小進(jìn)行定義,并在代碼區(qū)的起始處建立中斷向量表,其第一個(gè)表項(xiàng)是棧頂?shù)刂?,第二個(gè)表項(xiàng)是復(fù)位中斷服務(wù)入口地址。然后在復(fù)位中斷服務(wù)程序中跳轉(zhuǎn)C/C++標(biāo)準(zhǔn)實(shí)時(shí)庫(kù)的main 函數(shù),完成用戶堆棧等的初始化后,跳轉(zhuǎn).c 文件中的main 函數(shù)開始執(zhí)行C 程序。假設(shè)STM32被設(shè)置為從內(nèi)部FLASH 啟動(dòng)(這也是最常見的一種情況),中斷向量表起始地位為0x8000000,則棧頂?shù)刂反娣庞?x8000000處,而復(fù)位中斷服務(wù)入口地址存放于0x8000004 處。當(dāng)STM32 遇到復(fù)位信號(hào)后,則從0x80000004 處取出復(fù)位中斷服務(wù)入口地址,繼而執(zhí)行復(fù)位中斷服務(wù)程序,然后跳轉(zhuǎn)main函數(shù),最后進(jìn)入mian 函數(shù)。3.2OTA 需求分析我們將建立兩個(gè)工程,分別是Bootloader 還有APP,我們將Bootloader下載到FLASH 空間0x8000000 地址處,那么STM32 啟動(dòng)后會(huì)首先執(zhí)行我們的Bootloader 程序,然后就可以按照我們意愿實(shí)現(xiàn)OTA 了。?FLASH區(qū)間劃分
根據(jù)需求,我們將STM32F103VET6 這個(gè)芯片F(xiàn)lash 空間劃分出4 個(gè)區(qū)域:Bootloader、FLAG、APP、APP_BAK。四個(gè)區(qū)間作用描述如下:? Bootloader: 存儲(chǔ)Bootloader 固件,MCU 上電后首先運(yùn)行該固件。
? FLAG: 存儲(chǔ)有關(guān)升級(jí)的相關(guān)標(biāo)志位,Bootloader 和APP 都需要操作該區(qū)域。
升級(jí)標(biāo)志位(2B)
固件大小(4B)
MD5加密數(shù)據(jù)(16B)
? APP:存儲(chǔ)用戶程序固件。
? APPBAK: 臨時(shí)存儲(chǔ)云端下發(fā)的新固件,升級(jí)固件的一個(gè)過渡存儲(chǔ)區(qū)。
STM32F103VET6分區(qū)方案如下圖所示:
ea1b045a-5732-11ed-b116-dac502259ad0.png
3.3 BOOTLOADER分區(qū)部分
3.3.1 Bootloader程序流程
Bootloader 的主要職能是在有升級(jí)任務(wù)的時(shí)候?qū)?APPBAK 分區(qū)里面的固件拷貝到 APP 區(qū)域。當(dāng)然,這期間需要做很多的工作,比如升級(jí)失敗的容錯(cuò)等等。具體的流程可以參考圖示。需要注意的是,在校驗(yàn) MD5 正確后開始搬運(yùn)固件數(shù)據(jù)期間,MCU 出現(xiàn)故障(包括突然斷電),MCU 應(yīng)發(fā)生復(fù)位操作(FLAG 區(qū)域數(shù)據(jù)未破壞),復(fù)位后重新開始執(zhí)行 Bootloader,從而避免 MCU 刷成板磚。
ea313270-5732-11ed-b116-dac502259ad0.png
3.3.2 Bootloader程序配置
為了方便構(gòu)架,此處我采用cubemx構(gòu)建項(xiàng)目,生成keil工程。
創(chuàng)建STM32F103VE項(xiàng)目
ea58134a-5732-11ed-b116-dac502259ad0.png配置外部時(shí)鐘
eace39d0-5732-11ed-b116-dac502259ad0.png配置時(shí)鐘72M
eb087ed8-5732-11ed-b116-dac502259ad0.png
配置debug為serisl wire
eb22e4d0-5732-11ed-b116-dac502259ad0.png配置串口4為BootLoader的日志打印口。
eb797142-5732-11ed-b116-dac502259ad0.png生成keil代碼添加驅(qū)動(dòng)flash.c,gagent_md5.c和app.c以及對(duì)應(yīng)的組,如何添加此處不過多介紹(基礎(chǔ)的軟件操作),只提供文件路徑。
eb9a69c4-5732-11ed-b116-dac502259ad0.pngebc2f0e2-5732-11ed-b116-dac502259ad0.pngebecb7b0-5732-11ed-b116-dac502259ad0.pngec06db40-5732-11ed-b116-dac502259ad0.pngec8790dc-5732-11ed-b116-dac502259ad0.png
驅(qū)動(dòng)文件的編寫以及函數(shù)介紹我此處不過多介紹,可以在原文地址的附件進(jìn)行下載源文件,也可以在文章末尾復(fù)制代碼。重點(diǎn)代碼講解Main.c添加頭文件#include "app.h"eca95c80-5732-11ed-b116-dac502259ad0.png主函數(shù)添加APP_Process();ecf273ac-5732-11ed-b116-dac502259ad0.png根據(jù)自己分區(qū)大小設(shè)置區(qū)域,我的是18K,2k,54k,54k
ed1bbce4-5732-11ed-b116-dac502259ad0.png
3.3.3Bootloader編譯設(shè)置
按照 Bootloader 流程編寫好代碼,需要我們對(duì) KEIL 工程做相應(yīng)配置,需要注意的是編譯的 Bootloader 固件大小不超過最大可允許的 18KB。Keil 編譯器需要設(shè)置如下:
ed4322f2-5732-11ed-b116-dac502259ad0.pngFlash 燒寫地址設(shè)置有效
ed905ad6-5732-11ed-b116-dac502259ad0.png設(shè)置ST-LINK按塊擦除 FLASH 區(qū)間和燒寫程序
eda9dcc2-5732-11ed-b116-dac502259ad0.pngede23e1e-5732-11ed-b116-dac502259ad0.pngee7027a6-5732-11ed-b116-dac502259ad0.png編譯燒錄程序,到此BootLoader編寫燒錄完成。eea77f58-5732-11ed-b116-dac502259ad0.png
3.3.4APP程序分區(qū)部分
固件接收流程
做好 BOOTLOADER 工作后,我們開始寫 APP 分區(qū)的代碼。APP 分區(qū)固件的編寫要注意硬件版本號(hào)和軟件版本號(hào),軟件版號(hào)作為升級(jí)迭代很重要的標(biāo)志。需要注意的是,中斷向量地址偏移的定義,這個(gè)地方需要我們尤其注意,我在開發(fā)過程中在這個(gè)地方排查了好長(zhǎng)時(shí)間。STM32 標(biāo)準(zhǔn)庫(kù)默認(rèn)中斷向量地址偏移為0x0,但是我們APP 實(shí)際的偏移是0x5000。如果不修改,APP 也可以正常加載運(yùn)行,但是不會(huì)相應(yīng)中斷。所以,我們需要根據(jù)實(shí)際APP 下載的起始地址,對(duì)中斷向量地址偏移做定義。ef0153c0-5732-11ed-b116-dac502259ad0.png
3.4 CUBEMX部署
解壓云端生成的代碼,由于生成的代碼是STM32F103c8的,我們需要通過CUBEMX轉(zhuǎn)換成STM32F103VET6的代碼來適應(yīng)我們的秉火開發(fā)板,創(chuàng)建一個(gè)新的cubeMX項(xiàng)目,導(dǎo)入自動(dòng)代碼的CUBEMX工程.
ef1480d0-5732-11ed-b116-dac502259ad0.png目錄保存在解壓代碼所在的路徑。
ef481080-5732-11ed-b116-dac502259ad0.png修改時(shí)鐘樹為72M,注意需要同BootLoader時(shí)鐘。
ef8bddba-5732-11ed-b116-dac502259ad0.png根據(jù)項(xiàng)目需求以及我們自己創(chuàng)建的數(shù)據(jù)點(diǎn),我們需要控制RGB燈,蜂鳴器,DHT11,在此處我們需要對(duì)引腳進(jìn)行初始化。
efbaf8a2-5732-11ed-b116-dac502259ad0.png配置RGB燈,采用定時(shí)器輸出PWM控制。
f034e2d4-5732-11ed-b116-dac502259ad0.png有源蜂鳴器,和默認(rèn)代碼按鍵2沖突,修改按鍵2的GPIO為PB15
f04a7bf8-5732-11ed-b116-dac502259ad0.png
3.5 配置溫濕度傳感器DHT11
為每個(gè)單獨(dú)的文件生成.C.H文件,方便調(diào)用頭文件
f0bd669a-5732-11ed-b116-dac502259ad0.png生成KEIL的代碼
f0eb4a6a-5732-11ed-b116-dac502259ad0.png到此我們就完成了項(xiàng)目的構(gòu)建。3.6 編譯器設(shè)置
因?yàn)橛布﨔LASH 空間限定,我們需要對(duì)APP 的固件大小做嚴(yán)格的限制。本方案,
針對(duì)秉火開發(fā)板 我們可允許的最大固件為54KB。需要升級(jí)的新固件同樣最大可支持54KB。
1、設(shè)置FLASH 固件下載地址
f108b320-5732-11ed-b116-dac502259ad0.png2、配置中斷向量偏移地址設(shè)置
f15e659a-5732-11ed-b116-dac502259ad0.png3.重新構(gòu)建工程,添加相關(guān)頭文件。
f172623e-5732-11ed-b116-dac502259ad0.png4.添加flash.h,flash.h, gagent_md5.c, gagent_md5.h, app.c文件到項(xiàng)目
f1d0ae84-5732-11ed-b116-dac502259ad0.png5. 在mian.c里面添加一下頭文件
f20dc5a8-5732-11ed-b116-dac502259ad0.png在main.c里面添加如下代碼
f22a2d38-5732-11ed-b116-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    18411

    瀏覽量

    380284
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    華為云與開發(fā)者共贏AI未來

    ,與開發(fā)者共贏”主題演講,詳細(xì)闡述了華為云生態(tài)的最新進(jìn)展,并宣布華為開發(fā)者空間全面升級(jí),全新集成多種AI原生應(yīng)用開發(fā)能力。
    的頭像 發(fā)表于 09-20 15:58 ?1174次閱讀

    NVIDIA DRIVE AGX Thor開發(fā)者套件重磅發(fā)布

    這款由 NVIDIA DriveOS 7 驅(qū)動(dòng)的開發(fā)者套件能夠幫助開發(fā)者們打造出更安全的智能汽車和交通解決方案。
    的頭像 發(fā)表于 09-04 11:20 ?801次閱讀

    曙光網(wǎng)絡(luò)SugonRI開發(fā)者社區(qū)正式上線

    在人工智能與工業(yè)深度融合的大潮中,工業(yè)軟件正在成為推動(dòng)產(chǎn)業(yè)升級(jí)的關(guān)鍵引擎。為了讓更多開發(fā)者快速掌握工業(yè)級(jí)編程技術(shù)、共享行業(yè)實(shí)踐成果,曙光網(wǎng)絡(luò)正式推出開發(fā)者社區(qū)——曙睿(SugonRI)開發(fā)者
    的頭像 發(fā)表于 09-04 09:58 ?563次閱讀

    技術(shù)筆記 | Ubuntu 系統(tǒng) OTA 升級(jí)全流程詳解

    開啟、命令使用到實(shí)戰(zhàn)案例與問題排查,為開發(fā)者提供一套可直接落地的操作指南一、recovery配置updateEngine支持因OTA升級(jí)過程中需要進(jìn)入到recov
    的頭像 發(fā)表于 07-31 08:32 ?593次閱讀
    技術(shù)筆記 | Ubuntu 系統(tǒng) <b class='flag-5'>OTA</b> <b class='flag-5'>升級(jí)</b>全流程詳解

    矽速科技正式入駐 RuyiSDK 開發(fā)者社區(qū),共建 RISC-V 開發(fā)者生態(tài)!

    近日,深圳矽速科技正式入駐RuyiSDK開發(fā)者社區(qū),攜手社區(qū)共同推動(dòng)RISC-V技術(shù)的發(fā)展與廣泛應(yīng)用,為開發(fā)者提供一個(gè)更加便捷高效的開發(fā)環(huán)境。關(guān)于RuyiSDKRuyiSDK是中國(guó)科學(xué)院軟件研究所
    的頭像 發(fā)表于 07-10 11:00 ?713次閱讀
    矽速科技正式入駐 RuyiSDK <b class='flag-5'>開發(fā)者</b>社區(qū),共建 RISC-V <b class='flag-5'>開發(fā)者</b>生態(tài)!

    HDC 2025開發(fā)者主題演講精彩回顧

    開發(fā)者解決方案升級(jí)等內(nèi)容,同時(shí)多位生態(tài)伙伴分享基于HarmonyOS的最新開發(fā)實(shí)踐,為開發(fā)者提供切實(shí)可行的創(chuàng)新思路,進(jìn)一步推動(dòng)鴻蒙生態(tài)的繁榮發(fā)展。會(huì)上還舉行了HarmonyOS極客馬拉
    的頭像 發(fā)表于 07-09 11:20 ?833次閱讀

    開發(fā)者分享】開源硬核玩家集結(jié):這些MCU板子泰酷了!

    前言本篇文章內(nèi)容主要收錄了由開發(fā)者基于先楫半導(dǎo)體高性能MCU開發(fā)的各類DIY開源硬件項(xiàng)目,涵蓋不同應(yīng)用方向與創(chuàng)意實(shí)踐。部分項(xiàng)目代碼可直接在本倉(cāng)庫(kù)下載,部分則由開發(fā)者托管于其個(gè)人代碼倉(cāng)庫(kù)
    的頭像 發(fā)表于 05-26 17:31 ?1124次閱讀
    【<b class='flag-5'>開發(fā)者</b>分享】開源硬核玩家集結(jié):這些<b class='flag-5'>MCU</b>板子泰酷了!

    瑞薩電子MCU無感OTA升級(jí)功能介紹

    “零感知”的升級(jí)體驗(yàn)。本文以RX26T為例,拆解無感OTA實(shí)現(xiàn)思路、代碼框架與實(shí)測(cè)情況,幫助開發(fā)者在自家項(xiàng)目中快速落地。
    的頭像 發(fā)表于 05-15 14:36 ?1214次閱讀
    瑞薩電子<b class='flag-5'>MCU</b>無感<b class='flag-5'>OTA</b><b class='flag-5'>升級(jí)</b>功能介紹

    有沒有大神使用cubeMX生成初始代碼開發(fā)實(shí)現(xiàn)通過USB(HID)進(jìn)行OTA升級(jí)功能的?

    求助,有沒有大神使用cubeMX生成初始代碼開發(fā)實(shí)現(xiàn)通過USB(HID)進(jìn)行OTA升級(jí)功能的
    發(fā)表于 04-22 13:35

    淺談車規(guī)MCU (MGEQ1C064) OTA升級(jí)

    OTA升級(jí)。 OTA升級(jí)方式 為了實(shí)現(xiàn)OTA升級(jí)
    發(fā)表于 03-04 12:52

    云端AI開發(fā)者工具的核心功能

    當(dāng)今,云端AI開發(fā)者工具已成為推動(dòng)科技創(chuàng)新與行業(yè)升級(jí)的重要力量。那么,云端AI開發(fā)者工具有哪些核心功能呢?下面,AI部落小編帶您深入探討。
    的頭像 發(fā)表于 02-28 11:46 ?736次閱讀

    開發(fā)者的開源鴻蒙故事

    近日,在以“一切為了開發(fā)者”為主題的“2024開放原子開發(fā)者大會(huì)暨首屆開源技術(shù)學(xué)術(shù)大會(huì)”上,開源鴻蒙5.0 Release版本正式發(fā)布,備受各方關(guān)注。該版本在系統(tǒng)完備度、分布式創(chuàng)新、開發(fā)者體驗(yàn)以及系統(tǒng)穩(wěn)定性等方面均
    的頭像 發(fā)表于 01-06 10:28 ?1111次閱讀

    《HarmonyOS第一課》煥新升級(jí),賦能開發(fā)者快速掌握鴻蒙應(yīng)用開發(fā)

    《HarmonyOS第一課》煥新升級(jí),賦能開發(fā)者快速掌握鴻蒙應(yīng)用開發(fā) 隨著HarmonyOS NEXT發(fā)布,鴻蒙生態(tài)日益壯大,廣大開發(fā)者對(duì)于系統(tǒng)化學(xué)習(xí)平臺(tái)和課程的需求愈發(fā)強(qiáng)烈。近日,華
    發(fā)表于 01-02 14:24

    艾拉比亮相BlackBerry QNX 2024年度開發(fā)者大會(huì)

    近日,BlackBerry QNX在上海舉辦了2024年度開發(fā)者大會(huì)。作為BlackBerry QNX在汽車OTA領(lǐng)域的重要合作伙伴,艾拉比受邀參會(huì),并向與會(huì)現(xiàn)場(chǎng)嘉賓展示“基于QNX操作系統(tǒng)的整車級(jí)
    的頭像 發(fā)表于 12-17 11:39 ?936次閱讀

    云端AI開發(fā)者工具怎么用

    云端AI開發(fā)者工具通常包括代碼編輯器、模型訓(xùn)練平臺(tái)、自動(dòng)化測(cè)試工具、代碼管理工具等。這些工具不僅降低了AI開發(fā)的門檻,還極大地提高了開發(fā)效率和模型性能。下面,AI部落小編為您介紹云端AI開發(fā)者
    的頭像 發(fā)表于 12-05 13:31 ?814次閱讀