<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > RF/微波 > 正文

如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

發(fā)布時(shí)間:2022-10-10 責任編輯:lina

【導讀】在應用中編程(IAP)是一種在現場(chǎng)通過(guò) MCU 通信接口(例如 USART、USB、CAN 和以太網(wǎng))進(jìn)行固件升級的方式。無(wú)論是IAP代碼還是應用程序代碼都位于微控制器的內置FLASH中,IAP代碼通常存儲在MCU FLASH的第一頁(yè),而用戶(hù)應用程序代碼則占據剩余的FLASH區域。


工作原理


在應用中編程(IAP)是一種在現場(chǎng)通過(guò) MCU 通信接口(例如 USART、USB、CAN 和以太網(wǎng))進(jìn)行固件升級的方式。


啟動(dòng)微控制器時(shí),可以選擇讓其在以下任一模式運行:


IAP模式,用于執行IAP代碼


正常模式,用于執行應用程序代碼


無(wú)論是IAP代碼還是應用程序代碼都位于微控制器的內置FLASH中,IAP代碼通常存儲在MCU FLASH的第一頁(yè),而用戶(hù)應用程序代碼則占據剩余的FLASH區域。


圖1介紹了IAP操作流程


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

使用MCU以太網(wǎng)接口實(shí)現IAP


如果有以太網(wǎng)可用,則它通常是嵌入式系統中實(shí)現IAP功能的首選接口,其優(yōu)勢包含:


高速通信接口(10/100 Mbps)


通過(guò)網(wǎng)絡(luò )(LAN或WAN)進(jìn)行遠程編程


可以使用FTP、TFTP、HTTP等基于TCP/IP棧的標準應用協(xié)議實(shí)現IAP


通過(guò)以太網(wǎng)在A(yíng)T32F407上實(shí)現IAP


本應用筆記將介紹兩種使用以太網(wǎng)通信外設在A(yíng)T32F407上實(shí)現IAP的解決方案:


使用TFTP(簡(jiǎn)單文件傳輸協(xié)議)的IAP


使用HTTP(超文本傳輸協(xié)議)的IAP


這兩種解決方案均基于LwIP棧(2.1.2), 它是輕量級的TCP/IP協(xié)議棧


使用TFTP實(shí)現IAP方法


使用TFTP實(shí)現IAP的方法廣泛應用于需要具有固件升級功能的嵌入式系統應用中(例如,嵌入式Linux bootloader中)。


TFTP是一種在UDP傳輸層上執行的簡(jiǎn)單文件傳輸協(xié)議。此協(xié)議非常適合在局域網(wǎng)環(huán)境中使用。它基于客戶(hù)端/服務(wù)器架構,在這種架構中,客戶(hù)端會(huì )向服務(wù)器發(fā)出文件傳輸請求(讀取或寫(xiě)入操作)。為實(shí)現IAP,需要在LwIP協(xié)議棧上實(shí)現一個(gè)簡(jiǎn)單的TFTP服務(wù)器,服務(wù)器只須處理來(lái)自PC的TFTP客戶(hù)端的寫(xiě)入請求即可。


使用HTTP實(shí)現IAP方法


使用HTTP協(xié)議進(jìn)行固件升級沒(méi)有使用TFTP常見(jiàn),但是在需要通過(guò)Internet進(jìn)行遠程編程時(shí),這種解決方案就顯得極為有用。這時(shí),需要使用TCP傳輸協(xié)議來(lái)實(shí)現HTTP服務(wù)。


HTTP基于TCP協(xié)議運行,它提供了一個(gè)一種以HTML表單形式從Web客戶(hù)端(Mozilla Firefox或Microsoft Internet Explorer)發(fā)送一個(gè)二進(jìn)制文件的方式。這稱(chēng)為HTTP文件上傳(RFC1867)。


本文檔中的后續章節將詳細介紹這兩種IAP方法的實(shí)現,并會(huì )對如何使用軟件進(jìn)行說(shuō)明。


使用TFTP實(shí)現IAP


TFTP概述


TFTP是一種基于UDP的簡(jiǎn)單文件傳輸協(xié)議。文件傳輸由TFTP客戶(hù)端發(fā)起,會(huì )向TFTP服務(wù)器發(fā)送讀取或寫(xiě)入請求。服務(wù)器確認請求后,即開(kāi)始進(jìn)行文件數據傳輸。數據將以固定大小的塊盡情發(fā)送(例如每塊含512個(gè)字節)。


必須在每個(gè)發(fā)出的數據塊都得到接收方確認后,才可以發(fā)送下一個(gè)數據塊。這種確認機制通過(guò)隨各個(gè)數據塊一同發(fā)送的編塊號來(lái)實(shí)現。數據塊小于固定塊大小表示文件傳輸的結束。


圖2描述了各種TFTP數據包的格式:


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖2 TFTP數據包


表1列出了TFTP操作碼。


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

表1 TFTP操作碼


使用TFTP為AT32F407實(shí)現IAP


此IAP實(shí)現由基于LwIP TCP/IP棧的TFTP服務(wù)器組成。


此服務(wù)器會(huì )對遠程TFTP客戶(hù)端(PC)發(fā)來(lái)的寫(xiě)請求做出響應。


TFTP讀請求會(huì )被忽略。


TFTP通常會(huì )將接收到的文件寫(xiě)入到文件系統,但是該服務(wù)器卻并非如此,它會(huì )將接受到的數據塊寫(xiě)入到MCU FLASH(用戶(hù)FLASH區域中)。


注:在這個(gè)實(shí)現過(guò)程中,數據塊大小固定為512個(gè)字節。


圖3概述了使用TFTP實(shí)現IAP操作的過(guò)程。


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖3 使用TFTP實(shí)現IAP流程圖


使用軟件


要通過(guò)TFTP對IAP進(jìn)行測試,需執行以下步驟:


1. 在iap.h文件中,取消USE_IAP_TFTP選項的注釋。


2. 重新編譯軟件。使用生成的映射文件,確保IAP代碼區域之間沒(méi)有重疊(從地址0x0開(kāi)始),而且用戶(hù)FLASH區域從以下地址開(kāi)始:APP_START_SECTOR_ADDR(在iap.h中定義)。


3. 在A(yíng)T32 FLASH中編寫(xiě)并運行軟件程序。


4. 要進(jìn)入IAP模式,需要在按住開(kāi)發(fā)版上的USER Key。


5. 分配完IP后(可以是靜態(tài)或動(dòng)態(tài)地址),用戶(hù)即可啟動(dòng)IAP流程。


6. 在PC側,打開(kāi)TFTP客戶(hù)端(例如Tftpd64),然后配置TFTP服務(wù)器地址(Tftpd64中的主機地址)


7. 單擊Tftpd64實(shí)用程序中的Put(寫(xiě)入)按鈕,啟動(dòng)文件寫(xiě)請求


8. 在IAP操作結束時(shí),可以復位開(kāi)發(fā)板并在A(yíng)T32 FLASH中運行剛剛編寫(xiě)的應用程序


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖4 TFTP64對話(huà)框


使用HTTP實(shí)現IAP


HTTP文件上傳概述


RFC1867中定義了使用HTTP進(jìn)行文件上傳。此文件上傳方法是基于HTTP表單。發(fā)送原始二進(jìn)制數據時(shí),要使用HTTP POST方法而不是GET方法。


以下是一個(gè)HTML代碼示例,用于實(shí)現基于表單的文件上傳:


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖5 文件上傳HTML表單的瀏覽器畫(huà)面


注:在發(fā)送文件數據前,Web客戶(hù)端會(huì )首先發(fā)送HTTP頭文件數據,其中包含諸如文件名稱(chēng)和內容長(cháng)度等信息,Web 服務(wù)器必須對其中的一些信息進(jìn)行解析。


Web客戶(hù)端使用的HTTP頭文件格式并不總是相同。圖6顯示的是Internet Explorer在POST請求中的HTTP頭文件格式。圖7顯示的是Mozilla Firefox的HTTP頭文件格式。


HTTP Web服務(wù)器必須能夠處理這些不同的格式。


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖6 IE11 HTTP頭文件格式


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖7 Mozilla Firefox HTTP頭文件格式


使用HTTP在A(yíng)T32F407上實(shí)現IAP


此IAP實(shí)現由基于LwIP棧的HTTP Web服務(wù)器組成。


在瀏覽器中輸入的AT32的IP地址后,將顯示登錄Web頁(yè)面(圖8)。此登錄Web頁(yè)面只有已獲授權的用戶(hù)才能使用IAP文件上傳功能。


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖8 登錄web頁(yè)面


注:1. 默認的User ID(用戶(hù)ID)為user, Password(密碼)為at32

2. 如果User ID(用戶(hù)ID)或Password(密碼)不正確,登錄Web頁(yè)面會(huì )重新加載。


登錄成功后,瀏覽并選擇要上傳到AT32 FLASH的二進(jìn)制文件


注:確保二進(jìn)制文件大小不超過(guò)AT32用戶(hù)FLASH區域的總容量。

單擊Upload(上傳)按鈕后(參見(jiàn)圖x),將向服務(wù)器發(fā)出POST請求。這時(shí),服務(wù)器開(kāi)始擦除用戶(hù)FLASH區域的全部?jì)热?,等待接受二進(jìn)制文件原始數據。然后將街收到的數據寫(xiě)入用戶(hù)FLASH區域。


注意,要接收的數據總長(cháng)度信息將從傳輸開(kāi)始時(shí)發(fā)出的HTTP頭文件數據中提取。


在IAP操作結束后,Web頁(yè)面將只是IAP操作成功,同時(shí)顯示一個(gè)可用于復位MCU的按鈕。


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖9 文件上傳完成web頁(yè)面


圖10對使用HTTP實(shí)現IAP方法進(jìn)行了總結


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

圖10 使用HTTP實(shí)現IAP的流程圖


使用軟體


要使用HTTP對IAP進(jìn)行測試,需執行以下步驟:


1. 在iap.h文件中,取消選項USE_IAP_HTTP的注釋。


2. 重新編譯軟件,使用生成的映射文件,確保IAP區域代碼之間沒(méi)有重疊(從地址0x0開(kāi)始),而且用戶(hù)FLASH區域從以下地址開(kāi)始:APP_START_SECTOR_ADDR(在iap.h中定義)。


3. 在A(yíng)T32 FLASH中編寫(xiě)并運行軟件程序。


4. 要進(jìn)入IAP模式,需要再按住開(kāi)發(fā)版上的USER Key。


5. 分配完IP地址后(可以是靜態(tài)或動(dòng)態(tài)地址),用戶(hù)即可啟動(dòng)IAP流程


6. 打開(kāi)Web客戶(hù)端(Mozilla Firefox或Internet Explorer),輸入AT32 IP地址


7. 會(huì )顯示登錄Web頁(yè)面。在User ID(用戶(hù)ID)字段中輸入”user”,在Password(密碼)字段中輸入”at32”,然后按下Login(登錄)按鈕。


8. IP操作結束后,將加載新的Web頁(yè)面,只是文件上傳操作已經(jīng)成功完成。


9. 可以按下Reset MCU(復位MCU)按鈕復位MCU,然后在A(yíng)T32 FLASH中運行剛剛編寫(xiě)的應用程序。


注:使用以下Web客戶(hù)端對軟件進(jìn)行測試:Microsoft Internet Explorer 11和Mozilla Firefox 80.0


已知限制


二進(jìn)制文件中添加的額外字節


Internet瀏覽器(Microsoft Internet Explorere或Mozilla Firefox)會(huì )在上傳的二進(jìn)制文件的末尾添加一個(gè)隨機邊界標記(根據RFC1521規定,此標記不得超過(guò)72個(gè)字節)。在最新的IAP軟件版本中,并沒(méi)有刪除此邊界標記,而是在空間足夠的情況下將其存儲在FLASH中。如果沒(méi)有足夠空間,則不會(huì )在FLASH中寫(xiě)入額外字節,也不會(huì )返回錯誤。


環(huán)境


硬件配置


1. DM9162以太網(wǎng)模塊


2. AT-START-F407開(kāi)發(fā)板


3. 以太網(wǎng)線(xiàn)


軟件源碼


utilities\at32f407_emac_iap_demo\source_code\bootloader, emac iap源程序,運行iap升級程序


MAC地址和IP地址設置


在netconf.h文件中對MAC地址進(jìn)行了定義。


默認的MAC地址固定為:00:00:44:45:56:01。


在netconf.h文件中對IP地址進(jìn)行了定義。


IP地址可以設置為靜態(tài)地址,也可以設置為由DHCP服務(wù)器分配的動(dòng)態(tài)地址。默認的靜態(tài)地址為:192.168.81.37。


可以通過(guò)在lwipopts.h文件中使能LWIP_DHCP來(lái)選擇DHCP模式。


軟件文件組成


如何使用AT32F407以太網(wǎng)通信接口實(shí)現在應用中編程(IAP)

表2 介紹了項目源文件


注:表格中沒(méi)有列出標準固件庫和LwIP棧中所使用的文件。


構建IAP映像


為了構建IAP映像(將會(huì )使用IAP軟件加載),應確保以下幾點(diǎn):


1. 編譯/鏈接的軟件必須從用戶(hù)FLASH區域的起始地址開(kāi)始運行(此地址應與iap.h的

APP_START_SECTOR_ADDR 中所定義的地址相同)。


2. 將向量表的起始地址配置為用戶(hù)FLASH區域的起始地址:

A. 在應用程序代碼中,使用misc.h/.c驅動(dòng)程序的NVIC_SetVectorTable函數來(lái)重新定位應用程序加載地址的向量表。


例如,將向量表基本位置設置為0x08010000:


NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);


B. 通過(guò)修改system_at32f4xx.c文件中定義的VECT_TAB_OFFSET常量的值。


例如,將向量表基本位置設置為0x08010000:


#define VECT_TAB_OFFSET 0x10000


3. 編譯后的軟件大小不超過(guò)用戶(hù)FLASH區域的總容量。


(來(lái)源:AT32 MCU 雅特力科技)



免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。



推薦閱讀:

電源線(xiàn)噪聲:共模干擾、差模干擾

由運放和電壓調節器構成的恒流源電路

運放的信號疊加電路與求差電路

鎖相環(huán)環(huán)路計算中用到的波特圖

SPARC:用于先進(jìn)邏輯和 DRAM 的全新沉積技術(shù)


特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>