日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]說到STM32 USB的UDF,其實就是我們常說的IAP(In Application Programming)在應(yīng)用編程。IAP有很多方法,我之前就用過串口IAP,網(wǎng)絡(luò)IAP。而這里我們使用的是USB IAP,就是通過USB更新代碼。所以這里有必要線了解IAP。I

說到STM32 USB的UDF,其實就是我們常說的IAP(In Application Programming)在應(yīng)用編程。IAP有很多方法,我之前就用過串口IAP,網(wǎng)絡(luò)IAP。而這里我們使用的是USB IAP,就是通過USB更新代碼。所以這里有必要線了解IAP。

IAP是In Application Programming的首字母縮寫,IAP是用戶自己的程序在運(yùn)行過程中對User Flash的部分區(qū)域進(jìn)行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預(yù)留的通信口對產(chǎn)品中的固件程序進(jìn)行更新升級。

通常在用戶需要實現(xiàn)IAP功能時,即用戶程序運(yùn)行中作自身的更新操作,需要在設(shè)計固件程序時編寫兩個項目代碼,第一個項目程序不執(zhí)行正常的功能操作,而只是通過某種通信管道(如USB、UART)接收程序或數(shù)據(jù),執(zhí)行對第二部分代碼的更新;第二個項目代碼才是真正的功能代碼。這兩部分項目代碼都同時燒錄在User Flash中,當(dāng)芯片上電后,首先是第一個項目代碼開始運(yùn)行,它作如下操作:

1)檢查是否需要對第二部分代碼進(jìn)行更新

2)如果不需要更新則轉(zhuǎn)到4)

3)執(zhí)行更新操作

4)跳轉(zhuǎn)到第二部分代碼執(zhí)行

第一部分代碼必須通過其它手段,如JTAG或ISP燒入;第二部分代碼可以使用第一部分代碼IAP功能燒入,也可以和第一部分代碼一道燒入,以后需要程序更新是再通過第一部分IAP代碼更新。

對于STM32來說,因為它的中斷向量表位于程序存儲器的最低地址區(qū),為了使第一部分代碼能夠正確地響應(yīng)中斷,通常會安排第一部分代碼處于Flash的開始區(qū)域,而第二部分代碼緊隨其后。

在第二部分代碼開始執(zhí)行時,首先需要把CPU的中斷向量表映像到自己的向量表,然后再執(zhí)行其他的操作。

如果IAP程序被破壞,產(chǎn)品必須返廠才能重新燒寫程序,這是很麻煩并且非常耗費(fèi)時間和金錢的。針對這樣的需求,STM32在對Flash區(qū)域?qū)嵭凶x保護(hù)的同時,自動地對用戶Flash區(qū)的開始4頁設(shè)置為寫保護(hù),這樣可以有效地保證IAP程序(第一部分代碼)區(qū)域不會被意外地破壞。

接下去講講STM32 USB DFU的工程。官方工程如下圖:

主要是User這個組文件,我們可以將它們分分類。顯然,usb開頭的文件為一類,即usb_desc.c、usb_prop.c、usb_pwr.c,hw_config.c也可以算跟它們一類的,跟之前文件相比少了usb_io.c和usb_endp.c,因為這里沒有用到端點(diǎn)0以外的端點(diǎn),所以這兩個文件沒有必要。接下去是dfu_mal.c、flash_if.c、fsmc_nor.c、nor_if.c、spi_if這幾個文件屬于一類,都是跟存

儲器才相關(guān)的,我們?nèi)绻挥玫侥硞€存儲器,添加相關(guān)的代碼就可以了。剩下的文件,就算一類吧。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉