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

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

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

如何在雅特力AT32 MCU上創(chuàng)建IAP應(yīng)用程序

雅特力 AT32 MCU ? 2024-05-20 08:15 ? 次閱讀

概述

AT32 CAN IAP快速使用方法

使用CAN進(jìn)行IAP升級(jí),此示例使用PC上位軟件(IAP_Programmer.exe)通過(guò)一個(gè)USB轉(zhuǎn)CAN的橋接設(shè)備和目標(biāo)板進(jìn)行通信,IAP Demo和橋接設(shè)備默認(rèn)CAN波特率使用500K。如下是連接示意圖:

  • PC通過(guò)USB連接USB to CAN Bridge(使用AT-START實(shí)現(xiàn)一個(gè)轉(zhuǎn)接設(shè)備,代碼參考usb_vcp_bridge_can源代碼)
  • USB to CAN Bridge通過(guò)CAN Transceiver連接CAN目標(biāo)板(注意使用CAN必須要使用CAN Transceiver,CANL連接CANL, CANH連接CANH)

圖1.連接示意圖14993384-163e-11ef-bebc-92fbcf53809c.png

一、硬件資源

1. USB轉(zhuǎn)CAN橋接板(目前使用一塊AT-START-AT32F403A實(shí)現(xiàn)USB轉(zhuǎn)CAN)1) USB(PA11/PA12)2) CAN(PB8/PB9)3) 指示燈LED2/LED3/LED44) AT-START實(shí)驗(yàn)板2. AT-START-AT32F403A CAN IAP目標(biāo)板1) 指示燈LED2/LED3/LED42) CAN(PB8/PB9)3) AT-START實(shí)驗(yàn)板3. CAN Transceiver轉(zhuǎn)接板1)CAN Transceiver轉(zhuǎn)接板用于USB to CAN Bridge和CAN目標(biāo)板的連接注意:USB轉(zhuǎn)CAN橋接板的波特率和CAN IAP目標(biāo)板波特率要配置一致另外要使用CAN通信,必須外接CAN轉(zhuǎn)換芯片。

二、軟件資源

1) ToolRelease

  • IAP_Programmer.exe,PC機(jī)tool,用于演示IAP升級(jí)流程
  • IAP_Programmer_V2.x.x, PC tool源代碼

2) SourceCode\utilities

  • can_iap_demo,IAP源程序,運(yùn)行LED2閃爍
  • usb_vcp_bridge_can,USB轉(zhuǎn)CAN橋接源程序
  • can_app_led3_toggle,app1源程序,運(yùn)行時(shí)LED3閃爍
  • can_app_led4_toggle,app2源程序,運(yùn)行LED4閃爍

注:示例工程基于keilv5建立,若用戶需要在其他編譯環(huán)境上使用,請(qǐng)參考AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\templates中各種編譯環(huán)境(例如IAR6/7/8,keil 4/5, eclipse_gcc)進(jìn)行對(duì)應(yīng)修改即可。

IAP demo使用

1) 打開(kāi)can_iap_demo工程源程序,選擇對(duì)應(yīng)MCU型號(hào)的target編譯后下載到實(shí)驗(yàn)板2) 打開(kāi)usb_vcp_bridge_can工程源程序,下載到USB轉(zhuǎn)CAN轉(zhuǎn)接板3) 連接轉(zhuǎn)接板和目標(biāo)板的CANH/CANL4) 將轉(zhuǎn)接板USB接入到PC,可以看到會(huì)有對(duì)應(yīng)的虛擬串口設(shè)備COMxx5) 打開(kāi)IAP_Programmer.exe6) 選擇正確的串口、APP下載地址和bin文檔,點(diǎn)擊Download下載,如下圖7) 觀察LED2/3/4閃爍,LED2閃爍can IAP工作,LED3閃爍-app1工作,LED4閃爍-app2工作圖2. IAP demo上位機(jī)14b95ea2-163e-11ef-bebc-92fbcf53809c.png

AT32 CAN IAP程序設(shè)置

地址分布

表1. 地址分布14df7114-163e-11ef-bebc-92fbcf53809c.png注:bootloader區(qū)域最后一個(gè)扇區(qū),用于存放防止升級(jí)過(guò)程掉電的flag,用戶編譯修改bootloader時(shí),要保證不覆蓋flag的地址。

執(zhí)行流程

IAP分為Bootloader和App兩部分,應(yīng)用在App中執(zhí)行,升級(jí)過(guò)程在bootloader中執(zhí)行。程序執(zhí)行整體流程框圖如下:圖3. 程序執(zhí)行流程14fb93d0-163e-11ef-bebc-92fbcf53809c.png

bootloader project設(shè)置

1) Keil設(shè)置圖4. bootloader project中address 1在Keil設(shè)置1517dd88-163e-11ef-bebc-92fbcf53809c.png2) bootloader源程序修改Iap.h文件中圖5. bootloader project中address 2在程序中設(shè)置15413a16-163e-11ef-bebc-92fbcf53809c.png

app project設(shè)置

IAP demo提供了2個(gè)app程序供測(cè)試用,皆以address 2(0x800 4000)為起始地址。app1 LED3閃爍,app2 LED4閃爍。以app1為例,設(shè)計(jì)步驟如下:1) Keil工程設(shè)置圖6. app project中address 2在Keil設(shè)置155837ca-163e-11ef-bebc-92fbcf53809c.png2) app1源程序設(shè)置圖7. app project向量表偏移在程序中設(shè)置15882dea-163e-11ef-bebc-92fbcf53809c.png3) 編譯生成bin文件通過(guò)User選項(xiàng)卡,設(shè)置編譯后調(diào)用fromelf.exe,根據(jù).axf文件生成.bin文件,用于IAP更新。通過(guò)以上3個(gè)步驟,我們就可以得到一個(gè).bin的APP程序,通過(guò)bootloader程序即可實(shí)現(xiàn)更新。4) 開(kāi)啟debug app code功能如果在設(shè)計(jì)app code過(guò)程中需要對(duì)app project進(jìn)行單獨(dú)調(diào)試,請(qǐng)按照以下操作。a) 先下載bootloader工程b) 再調(diào)試app工程

Bootloader CAN通信協(xié)議

上位機(jī)升級(jí)流程

如下下圖是上位機(jī)升級(jí)流程:

  • 獲取設(shè)備信息:包括app起始地址,app flash size大小,sector size大小
  • 發(fā)送開(kāi)始升級(jí)命令
  • 寫(xiě)存儲(chǔ)器
  • 獲取CRC進(jìn)行校驗(yàn)
  • 發(fā)送升級(jí)完成命令
  • 跳轉(zhuǎn)到APP執(zhí)行

具體命令操作參考命令詳解圖8. 上位機(jī)升級(jí)流程15a4e23c-163e-11ef-bebc-92fbcf53809c.png

IAP端下位機(jī)通信處理流程

IAP下位機(jī)端會(huì)通過(guò)接收主機(jī)端發(fā)送的命令做數(shù)據(jù)處理,包括讀寫(xiě)數(shù)據(jù),crc校驗(yàn)等。圖9. IAP端下位機(jī)命令15c6d5a4-163e-11ef-bebc-92fbcf53809c.png注: ACK: 0x79NACK: 0x1F

升級(jí)命令詳解

本節(jié)主要說(shuō)明CAN IAP每條協(xié)議命令的作用和使用方法,包括主機(jī)端和設(shè)備端對(duì)命令解析的流程。所有命令通過(guò)CAN標(biāo)準(zhǔn)幀的ID來(lái)確定,CAN每一包數(shù)據(jù)最大8字節(jié),例如Get Info命令,此時(shí)CAN標(biāo)準(zhǔn)幀的ID為0。注意:所有命令都使用標(biāo)準(zhǔn)幀數(shù)據(jù)幀來(lái)傳遞如下是命令列表15edcbfa-163e-11ef-bebc-92fbcf53809c.png

一、Get Info命令

此命令用于獲取APP信息,包括APP起始地址,app flash size大小,sector size大小主機(jī)端協(xié)議發(fā)送流程:1610f4a4-163e-11ef-bebc-92fbcf53809c.png

二、Upgrade Start命令

獲取設(shè)備信息之后,可以發(fā)送此命令開(kāi)始升級(jí),設(shè)備端收到此命令之后會(huì)去刪除一個(gè)app的標(biāo)志,標(biāo)志在開(kāi)始升級(jí)。主機(jī)端協(xié)議發(fā)送流程:16388726-163e-11ef-bebc-92fbcf53809c.png

三、Read Mmeory命令

此命令用于讀取app flash數(shù)據(jù)主機(jī)端協(xié)議發(fā)送流程:1652203c-163e-11ef-bebc-92fbcf53809c.png

四、Write Memory命令

此命令用于寫(xiě)APP數(shù)據(jù)到存儲(chǔ)器,注意每次寫(xiě)入的地址必須sector對(duì)齊(sector大小可通過(guò)GetInfo獲取),數(shù)據(jù)的長(zhǎng)度為1個(gè)sector大小或者小于1個(gè)sector。每個(gè)sector的數(shù)據(jù)最好是一次發(fā)完。主機(jī)端協(xié)議發(fā)送流程:1675570a-163e-11ef-bebc-92fbcf53809c.png

五、Get CRC命令

此命令用于獲取指定地址指定大小數(shù)據(jù)的CRC,地址和大小必須4字節(jié)對(duì)齊主機(jī)端協(xié)議發(fā)送流程:16a22be0-163e-11ef-bebc-92fbcf53809c.png

六、JUMP命令

此命令用于跳轉(zhuǎn)到APP代碼執(zhí)行主機(jī)端協(xié)議發(fā)送流程:1724b6dc-163e-11ef-bebc-92fbcf53809c.png

七、Upgrade Finish命令

此命令用于設(shè)置升級(jí)完成標(biāo)志。主機(jī)端協(xié)議發(fā)送流程:174000fe-163e-11ef-bebc-92fbcf53809c.png

USB轉(zhuǎn)CAN橋接

USB轉(zhuǎn)CAN橋接使用一塊AT32F403A的AT-START開(kāi)發(fā)板實(shí)現(xiàn),USB端實(shí)現(xiàn)一個(gè)虛擬串口設(shè)備,轉(zhuǎn)接板通過(guò)USB與PC上位機(jī)通信,然后通過(guò)CAN與下位機(jī)進(jìn)行通信,實(shí)現(xiàn)USB與CAN數(shù)據(jù)的透?jìng)鞴δ?。注意轉(zhuǎn)接板的CAN波特率與下位機(jī)的CAN波特率要配置相同。

數(shù)據(jù)轉(zhuǎn)發(fā)流程

如下是數(shù)據(jù)轉(zhuǎn)發(fā)流程圖10.數(shù)據(jù)轉(zhuǎn)發(fā)流程175ba3ae-163e-11ef-bebc-92fbcf53809c.png

USB CAN數(shù)據(jù)轉(zhuǎn)發(fā)

USB轉(zhuǎn)CAN橋接按照CAN協(xié)議進(jìn)行封裝,封裝格式:標(biāo)準(zhǔn)幀ID(1字節(jié))+幀長(zhǎng)(1字節(jié))+數(shù)據(jù)(數(shù)據(jù)最大8字節(jié))

USB數(shù)據(jù)轉(zhuǎn)到CAN總線:

USB到CAN按照一包USB數(shù)據(jù)轉(zhuǎn)成一幀CAN數(shù)據(jù)。收到一包USB數(shù)據(jù)如:0x01 0x02 0x11 0x220x01:表示標(biāo)準(zhǔn)幀ID0x02:表示數(shù)據(jù)長(zhǎng)度0x11,0x22:表示具體數(shù)據(jù)

轉(zhuǎn)換成CAN幀后:

ID=0x01DLC=0x02DATA0=0x11DATA1=0x22

CAN總線數(shù)據(jù)轉(zhuǎn)到USB:

CAN同樣按照一幀數(shù)據(jù)轉(zhuǎn)換成一包USB數(shù)據(jù):收到一幀CAN數(shù)據(jù):ID=0x02,DLC=0x03,DATA0=0x11,DATA0=0x22,DATA0=0x33

轉(zhuǎn)換成USB包之后:0x02 0x03 0x11,0x22,0x33

0x02:表示標(biāo)準(zhǔn)幀ID0x03:表示數(shù)據(jù)長(zhǎng)度0x11,0x22,0x33:表示具體數(shù)據(jù)

以Write Memory為例寫(xiě)32字節(jié)數(shù)據(jù)到0x08004000

主機(jī)端流程:發(fā)送1:0x31 0x6 0x08 0x00 0x40 0x00 0x00 0x20(ID+長(zhǎng)度+6字節(jié)數(shù)據(jù))接收1:0x31 0x01 0x79(ID+長(zhǎng)度+ACK)發(fā)送2:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))發(fā)送3:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))發(fā)送4:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))發(fā)送5:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))

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

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349914
  • IAP
    IAP
    +關(guān)注

    關(guān)注

    2

    文章

    163

    瀏覽量

    24203
  • 雅特力
    +關(guān)注

    關(guān)注

    0

    文章

    153

    瀏覽量

    7959
  • AT32
    +關(guān)注

    關(guān)注

    1

    文章

    110

    瀏覽量

    2058
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    通過(guò)Ymodem創(chuàng)建IAP應(yīng)用程序

    AT32 IAP by Ymodem前言對(duì)于大多數(shù)基于閃存的系統(tǒng),一項(xiàng)重要要求是能夠在最終產(chǎn)品中安裝固件時(shí)進(jìn)行更新。此功能稱為應(yīng)用程序內(nèi)編程(IAP)。本應(yīng)用筆記的目的是提供在
    發(fā)表于 11-03 20:11

    AT32微控制器創(chuàng)建IAP by USB HID應(yīng)用程序的方法

    對(duì)于大多數(shù)基于閃存的系統(tǒng),一項(xiàng)重要要求是能夠在最終產(chǎn)品中安裝固件時(shí)進(jìn)行更新。此功能稱為應(yīng)用程序內(nèi)編程(IAP)。本應(yīng)用筆記的目的是提供在AT32微控制器
    發(fā)表于 10-19 06:48

    AT32微控制器創(chuàng)建Multi MCU IAP應(yīng)用程序的方法

    對(duì)于大多數(shù)基于閃存的系統(tǒng),一項(xiàng)重要要求是能夠在最終產(chǎn)品中安裝固件時(shí)進(jìn)行更新。此功能稱為應(yīng)用程序內(nèi)編程(IAP)。本應(yīng)用筆記的目的是提供在AT32微控制器
    發(fā)表于 10-24 06:48

    AT32微控制器創(chuàng)建IAP by Ymodem應(yīng)用程序的方法

    對(duì)于大多數(shù)基于閃存的系統(tǒng),一項(xiàng)重要要求是能夠在最終產(chǎn)品中安裝固件時(shí)進(jìn)行更新。此功能稱為應(yīng)用程序內(nèi)編程(IAP)。本應(yīng)用筆記的目的是提供在AT32微控制器
    發(fā)表于 10-24 07:38

    AT32微控制器創(chuàng)建IAP by Kermit應(yīng)用程序的方法

    AT32 IAP by Kermit提供在AT32微控制器創(chuàng)建IAP by Kermit
    發(fā)表于 10-24 07:56

    使用CAN的AT32 IAP

    AT32微控制器創(chuàng)建IAP應(yīng)用程序的一般準(zhǔn)則。AT32微控制器可以運(yùn)行用戶特定的固件來(lái)對(duì)微控
    發(fā)表于 10-26 06:39

    攜高效能AT32 MCU“芯”動(dòng)亮相ICCAD 2020

    高峰論壇,獲得了業(yè)界人士、廣大客戶及眾多媒體的廣泛關(guān)注。 (供圖,下同) 在同期舉辦的IP 與 IC 設(shè)計(jì)專題論壇,
    的頭像 發(fā)表于 12-16 17:12 ?2029次閱讀

    攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會(huì)

    技術(shù)、邊緣AI、新興應(yīng)用和生態(tài)發(fā)展等熱門議題。 業(yè)務(wù)處長(zhǎng)陳佳延在大會(huì)發(fā)表了題為“
    的頭像 發(fā)表于 08-30 10:04 ?4478次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>攜高性能<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>精彩亮相全球<b class='flag-5'>MCU</b>生態(tài)發(fā)展大會(huì)

    AN0001 AT32 IAP 使用 USART

    是提供在AT32微控制器創(chuàng)建IAP應(yīng)用程序的一般準(zhǔn)則。AT32微控制器可以運(yùn)行用戶特定的固件來(lái)
    發(fā)表于 01-14 12:52 ?4次下載
    AN0001 <b class='flag-5'>AT32</b> <b class='flag-5'>IAP</b> 使用 USART

    AT32 SPI

    AT32 SPI 科技AT32F415系
    發(fā)表于 03-30 10:44 ?460次閱讀

    何在AT32 MCU使用FPU功能

    何在AT32 MCU使用FPU功能
    的頭像 發(fā)表于 11-01 17:18 ?3983次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b><b class='flag-5'>上</b>使用FPU功能

    如何使用AT32 MCU定時(shí)器進(jìn)行PWM輸入測(cè)試

    如何使用AT32 MCU定時(shí)器進(jìn)行PWM輸入測(cè)試
    的頭像 發(fā)表于 10-27 14:20 ?2387次閱讀
    如何使用<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>定時(shí)器進(jìn)行PWM輸入測(cè)試

    AT32 MCU如何使用USB MSD 進(jìn)行IAP升級(jí)?

    AT32 MCU如何使用USB MSD 進(jìn)行IAP升級(jí)?
    的頭像 發(fā)表于 10-27 09:23 ?1071次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用USB MSD 進(jìn)行<b class='flag-5'>IAP</b>升級(jí)?

    AT32 MCU實(shí)現(xiàn)高效電機(jī)驅(qū)動(dòng)控制與應(yīng)用

    發(fā)展。受邀出席此次會(huì)議,產(chǎn)品市場(chǎng)總監(jiān)林金海發(fā)表了題為“AT32
    的頭像 發(fā)表于 11-17 08:15 ?780次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>實(shí)現(xiàn)高效電機(jī)驅(qū)動(dòng)控制與應(yīng)用

    AT32 MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍

    近日,與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32 MCU產(chǎn)品,SEGGER工具鏈的加持使
    的頭像 發(fā)表于 02-23 10:27 ?340次閱讀