色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    3792

    瀏覽量

    81171
  • uart
    +關注

    關注

    22

    文章

    1240

    瀏覽量

    101496
  • OTA
    OTA
    +關注

    關注

    7

    文章

    582

    瀏覽量

    35284
  • bootloader
    +關注

    關注

    2

    文章

    235

    瀏覽量

    45656
  • AT32
    +關注

    關注

    1

    文章

    115

    瀏覽量

    2112

原文標題:單片機通過 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 ?2017次閱讀
    如何使用<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 ?2250次閱讀

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的頭像 發表于 10-27 09:27 ?1197次閱讀
    <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 ?2605次閱讀
    <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 ?2371次閱讀
    <b class='flag-5'>AT32</b> MCU如何使用IAP通過<b class='flag-5'>USART</b>實現對固件的在線升級更新
    主站蜘蛛池模板: 精品久久99麻豆蜜桃666| 无人区乱码1区2区3区网站| 亚洲三级成人| 久久青草免费线观最新 | 午夜影院一区二区三区| 国产亚洲人成在线视频| 在线日本高清日本免费| 欧美一级做a爰片免费| 国产精品久久久久久久久无码 | 久久久久久久久人体| a级精品九九九大片免费看| 玩高中女同桌肉色短丝袜脚文| 久久国产av偷拍在线| 成人在线观看国产| 樱桃BT在线观看| 少妇人妻偷人精品视蜜桃| 久久黄色大片| 国产成人综合网在线观看| 最近高清中文字幕无吗免费看| 色婷婷综合久久久中文字幕 | 国产激情视频在线观看| 在线黑人抽搐潮喷| 熟女人妻久久精品AV天堂| 浪潮AV色综合久久天堂| 国产91综合| 91精品婷婷国产综合久久8| 无限资源日本2019版| 欧美123区| 久久国产主播福利在线| 国产精品成人免费视频99| 91久久偷偷看嫩草影院无费| 亚洲国产av| 日韩在线av免费视久久| 旧里番ovaの催○セイ活指导| 国产精品久久久久久久久久影院 | 无限资源在线观看播放| 男人大臿蕉香蕉大视频| 精彩国产萝视频在线| 国产91青青成人a在线| 97国产成人精品视频| 夜色88V精品国产亚洲AV|