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

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

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

3天內不再提示

AT32 USART OTA快速使用方法

硬件攻城獅 ? 來源:硬件攻城獅 ? 2023-09-09 14:22 ? 次閱讀

OTA升級已經不是什么新鮮事,現在大多數物聯網終端設備,基本具備這個功能。

今天以 AT32 為例給大家分享一下 OTA 升級的詳細流程。

概述

空中下載技術 OTA(Over-the-Air Technology)是用戶自己的程序在運行過程中對 User Flash 的部分區域進行燒寫,目的是為了在產品發布后可以方便地通過預留的通信口,對產品中的固件程序進行更新升級。

通常實現 OTA 功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一個項目程序為 Bootloader 區域,第二個項目程序 App 代碼為真正的功能代碼,執行應用和升級。這兩部分項目代碼同時燒錄在 User Flash 中。

wKgZomT8D1CAGOo9AAFE8h3N23A535.jpg

圖1. OTA代碼執行流程

在上圖所示流程中,MCU復位后,從 0x08000004 地址取出復位中斷向量的地址,并跳轉到復位中斷服務程序,在運行完復位中斷服務程序之后跳轉到 Bootloader 的 main函數,如圖標號①所示;

在執行完 Bootloader 以后(App 代碼為圖中 FLASH 灰底部分 App 程序的復位中斷向量起始地址為 0x08000004+N+M),跳轉至 App 程序的復位向量表,取出 App 程序的復位中斷向量的地址,并跳轉執行 App 程序的復位中斷服務程序,隨后跳轉至 App 程序的main函數,如圖標號②和③所示,同樣 main 函數為一個死循環,并且注意到此時 AT32 的 FLASH,在不同位置上,共有兩個中斷向量表。

在 main 函數執行過程中,如果 CPU 得到一個中斷請求,PC 指針仍強制跳轉到地址0x08000004 中斷向量表處,而不是 App 程序的中斷向量表,如圖標號④所示;

程序再根據我們設置的中斷向量表偏移量,跳轉到對應中斷源的中斷服務程序中,如圖標號⑤所示;

在執行完中斷服務程序后,程序返回 main 函數繼續運行,如圖標號⑥所示。

通過以上兩個過程的分析,我們知道OTA程序必須滿足兩個要求:

App 程序必須在 Bootloader 程序之后的某個偏移量為 x 的地址開始。

必須將 App 程序的中斷向量表進行相應的移動,移動的偏移量為 x。

AT32 USART OTA 快速使用方法

硬件資源

文檔中是用 AT-START-AT32F403A 實驗板的硬件條件為例,OTA demo 源代碼還包括AT32 其他型號,用戶只需編譯對應型號工程燒錄于 AT-START 實驗板運行即可。

指示燈 LED2/LED3/LED4

USART1(PA9/PA10)

AT-START 實驗板

軟件資源

tool_release

IAP_Programmer.exe,PC 機 tool,用于演示 OTA 升級流程

source_code

Bootloader,Bootloader 源程序,運行 LED2 閃爍

App_led3_toggle,App1 源程序,運行 LED3 閃爍

App_led4_toggle,App2 源程序,運行 LED4 閃爍

注:工程基于keil v5建立,若用戶需要在其他編譯環境上使用,請參考對應 BSP 目錄AT32F403A_407_Firmware_Library_V2.x.xprojectat_start_f403a emplates中各種編譯環境(例如IAR6/7/8,keil 4/5,eclipse_gcc)進行對應修改即可。

OTA Demo 使用

本文檔描述了兩種常用的 OTA 應用 demo,template app 和 dual app,后面章節會分別介紹。

打開 Bootloader 工程源程序,選擇對應 MCU 型號的 target 編譯后下載到實驗板

打開 IAP_Programmer.exe

選擇正確的串口、APP下載地址和 bin 文檔,點擊 Download 下載,如下圖

觀察 LED2/3/4 閃爍,LED2 閃爍-Bootloader 工作,LED3 閃爍-App1 工作,LED4 閃爍-App2 工作

wKgaomT8D1CAaNcxAAB0RG5uc4c205.jpg

圖2. IAP demo上位機

Template app OTA 程序設置

地址分布

wKgaomT8D1CATbH5AABh04G_QCQ819.jpg

圖3. Flash地址分配

注:Bootloader區域最后一個扇區,用于存放防止升級過程出錯(掉電等異常情況)的flag,用戶編譯修改Bootloader時,要保證不覆蓋flag的地址。

執行流程

OTA 分為 Bootloader、App 和 Template 三部分,應用在 App 中執行,Template 僅作為新 App 固件數據的臨時存放空間。程序執行整體流程框圖如下:

wKgZomT8D1CAJ8GEAACuhjEphew530.jpg

圖4. 程序執行流程

Bootloader project 設置

1)Keil 設置

wKgZomT8D1CAaKqdAACZsB9j4Wg236.jpg

圖5. Bootloader project中address 1在Keil設置

2) Bootloader 源程序修改 ota.h 文件中

wKgaomT8D1CARVrAAABa7MSssD8188.jpg

圖6. Bootloader project中address 2在程序中設置

App project 設置

OTA demo 提供了 2 個 App 程序供測試用,皆以 address 2(0x800 4000)為起始地址。App1 LED3 閃爍,App2 LED4 閃爍。以 App1 為例,設計步驟如下:

1) Keil工程設置

wKgaomT8D1CAWrvyAACWz6bnNZs231.jpg

圖7. App project中address 2在Keil設置

2) App1 源程序設置

wKgaomT8D1CAZvW1AABEaz9IiEE408.jpg

圖8. App project向量表偏移在程序中設置

3) 編譯生成bin文件

通過 User 選項卡,設置編譯后調用 fromelf.exe,根據 .axf 文件生成 .bin 文件,用于 OTA 更新。通過以上3個步驟,我們就可以得到一個 .bin 的 APP 程序,通過 Bootloader 程序即可實現更新。

4) 開啟debug app code功能

如果在設計 App code 過程中需要對 App project 進行單獨調試,請按照以下操作。

先下載 Bootloader 工程

再調試 App 工程

Dual app OTA 與程序設置

地址分布

wKgaomT8D1GAJE0PAABlGjwuyUw648.jpg

圖9. Flash地址分配

注:Bootloader 區域最后2個扇區,用于存放 App 是否正常的 flag,用戶編譯修改Bootloader 時,要保證不覆蓋 flag 的地址。

執行流程

OTA 分為 Bootloader、App1 和 App2 三部分,應用在 App1 或 App2 中執行。程序執行整體流程框圖如下:

wKgZomT8D1GAS_jvAADdCa-imgg440.jpg

圖10. 程序執行流程

Bootloader project 設置

1)Keil 設置

wKgZomT8D1GAV8ZxAACX4J24wwY014.jpg

圖11. Bootloader project中address 1在Keil設置

2)Bootloader 源程序修改 ota.h 文件中

wKgZomT8D1GAGbNdAACBuDwvJn8474.jpg

圖12. Bootloader project中address 2在程序中設置

App project 設置

OTA demo 提供了 2 個 App 程序供測試用,app_led3_toggle 以 0x800 4000 為起始地址,app_led4_toggle 以 0x8080000 為起始地址。App1 LED3 閃爍,App2 LED4閃爍。以 App1 為例,設計步驟如下:

1) Keil工程設置

wKgaomT8D1GAHhI3AACWsFTBqQc571.jpg

圖13. App project中address 2在Keil設置

2) App1源程序設置

wKgaomT8D1GAReahAABEwtvFCOg360.jpg

圖14. App project向量表偏移在程序中設置

3) 編譯生成bin文件

通過User選項卡,設置編譯后調用fromelf.exe,根據.axf文件生成.bin文件,用于OTA更新。通過以上3個步驟,我們就可以得到一個.bin的APP程序,通過Bootloader程序即可實現更新。

4) 開啟debug App code功能

如果在設計App code過程中需要對App project進行單獨調試,請按照以下操作。

先下載Bootloader工程

再調試App工程

Bootloader/App與上位機串口通信協議

程序與上位機通信,接收固件升級數據,上位機端和嵌入式端通信協議如下:

1) 上位機通信協議

wKgZomT8D1GABDsIAACLUB4y5S4311.png

圖15. 上位機通信協議

2) 嵌入式端下位機通信協議

wKgZomT8D1GALbdlAACpnf1MNjs985.png

圖16. 下位機通信協議

注:

ACK:0xCCDD

NACK:0xEEFF

Data:0x31+Addr+數據+chenksum(1byte)

Addr:4bytes,高位在前

2Kbytes,下載數據,不足2K內容填充0xFF

Checksum:1byte,4bytes的Addr+2KBytes數據的校驗和的低八位

審核編輯:湯梓紅

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

    關注

    117

    文章

    3796

    瀏覽量

    81418
  • uart
    +關注

    關注

    22

    文章

    1243

    瀏覽量

    101772
  • OTA
    OTA
    +關注

    關注

    7

    文章

    587

    瀏覽量

    35392
  • bootloader
    +關注

    關注

    2

    文章

    235

    瀏覽量

    45737
  • AT32
    +關注

    關注

    1

    文章

    118

    瀏覽量

    2167

原文標題:單片機通過 UART 實現 OTA 升級的詳細流程

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AN0005—AT32 OTA 空中下載升級

    空中下載升級原理 .....................................5AT32 串口OTA 快速使用方法 .............................6硬件資源
    發表于 08-22 17:38

    AT32系列MCU上Flash模擬EEPRO的應用原理和使用方法

    型號的 MCU 并未搭載片上 EEPROM,但是在此我們將介紹一種使用片上 Flash來模擬 EEPROM 使用的方法,以作為對此應用需求的補充。本文檔將詳細闡述在 AT32 系列 MCU 上使用片上
    發表于 11-26 07:15

    Micropython Based On AT32 RTT

    AT32 RTThread Micropython 快速使用 快速使用方法硬件資源指示燈 LED2/LED3/LED4USART1(PA9
    發表于 12-10 09:46

    AT32微控制器上創建OTA應用程序的一般準則

    AT32 OTA using the USART提供在AT32微控制器上創建OTA應用程序的一般準則。
    發表于 10-19 07:43

    AT32 MCU USB主機庫應用說明

    AT32 MCU USB Host Library Application Note主要描述AT32F4xx 系列USB 主機庫的架構和使用方法,方便開發者使用庫快速開發USB相關的應用,同時也會介紹
    發表于 10-25 07:02

    AT32 MCU USB設備庫應用說明

    AT32 MCU USB Device Library Application Note主要描述AT32F4xx 系列USB 設備庫的架構和使用方法,方便開發者使用庫快速開發USB相關的應用,同時也會介紹
    發表于 10-25 07:07

    AT32 MCU USART應用說明

    AT32 MCU USART Application Note介紹了AT32USART 功能,并對BSP 例程的軟件設計加以說明,同時演示使用方
    發表于 10-25 08:11

    AT32 IDE快速入門指南

    AT32 IDE 快速入門指南幫助用戶快速熟悉Artery AT32 IDE的簡明指南。
    發表于 10-26 06:13

    AT32F系列PWC USART接收喚醒SLEEP的使用方法

    演示AT32F系列 PWC USART接收喚醒SLEEP的使用方法。通常任意一個被嵌套向量中斷控制器響應的外設中斷都能將系統從SLEEP模式喚醒。
    發表于 10-27 06:13

    AN0001 AT32 IAP 使用 USART

    前言對于AT32 MCU,除了出廠固化的bootloader,用戶也可以在應用程序中編寫自己的bootloader程序,用于最終產品的固件更新。此功能稱為應用程序內編程(IAP)。本應用筆記的目的
    發表于 01-14 12:52 ?4次下載
    AN0001 <b class='flag-5'>AT32</b> IAP 使用 <b class='flag-5'>USART</b>

    如何使用AT32 MCU主機庫快速開發USB相關應用

    這部分主要介紹AT32 USB主機庫的結構和庫的使用方法AT32 USB支持全速和低速,不支持USB2.0高速設備。 這里庫的作用是用來管理USB外設和實現USB的基本協議,使開發者能夠更快的上手開發。
    的頭像 發表于 01-14 10:56 ?2065次閱讀
    如何使用<b class='flag-5'>AT32</b> MCU主機庫<b class='flag-5'>快速</b>開發USB相關應用

    雅特力AT32 MCU USB設備庫的架構和使用方法

    這部分主要介紹AT32 USB設備庫的結構和庫的使用方法AT32 USB是基于USB2.0全速設備,不支持USB2.0高速設備。這里庫的作用是用來管理USB外設和實現USB的基本協議,使開發者能夠更快的上手開發。
    的頭像 發表于 02-22 10:09 ?2344次閱讀

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的頭像 發表于 10-27 09:27 ?1250次閱讀
    <b class='flag-5'>AT32</b> MCU Printf的功能<b class='flag-5'>使用方法</b>

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

    AT32 MCU如何使用OTA通過USART實現對固件的在線升級更新
    的頭像 發表于 10-26 17:09 ?2691次閱讀
    <b class='flag-5'>AT32</b> MCU如何使用<b class='flag-5'>OTA</b>通過<b class='flag-5'>USART</b>實現對固件的在線升級更新

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

    AT32 MCU如何使用IAP通過USART實現對固件的在線升級更新
    的頭像 發表于 09-19 16:51 ?2430次閱讀
    <b class='flag-5'>AT32</b> MCU如何使用IAP通過<b class='flag-5'>USART</b>實現對固件的在線升級更新
    主站蜘蛛池模板: 亚洲成人激情电影 | 色伊人网| 亚洲热热久久九九精品 | 4hu44四虎在线观看 | 福利视频亚洲 | 欧美亚洲综合另类型色妞 | 俺来也俺来也天天夜夜视频 | 男人j进女人j的视频一进一出 | 高清一区二区三区四区五区 | 日韩综合nv一区二区在线观看 | 伊人精品成人久久综合欧美 | 日本不卡在线观看免费v | 日本免费不卡在线一区二区三区 | 久久黄色精品视频 | 天天添天天干 | 51vv福利视频在线精品 | 午夜视频在线观看免费观看在线观看 | 国产亚洲欧美一区二区 | 91中文字幕在线视频 | 毛片综合 | 精品国产中文一级毛片在线看 | 午夜污片 | 欧美成人精品久久精品 | 国内精品久久久久久久久野战 | 美女黄页网 | 三级黄色免费网站 | 婷婷丁香四月 | 亚洲入口| 老司机深夜影院入口aaaa | 天堂网在线看 | 色女孩网站 | 亚洲精品蜜桃久久久久久 | 永久精品免费影院在线观看网站 | 卡2卡三卡四卡精品公司 | 国产午夜精品一区二区理论影院 | 欧美 日韩 中文字幕 | 日韩理论电影2021第1页 | аⅴ资源中文在线天堂 | 亚洲午夜大片 | 色在线播放 | 91日本在线观看亚洲精品 |