小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

STM32固件IAP程序?qū)崿F(xiàn)

 新用戶0118F7lQ 2021-03-26

1.寫在前面

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

2.系統(tǒng)BootLoader

對于STM32來說,芯片出廠時(shí)已經(jīng)預(yù)置了一段Bootloader,但是啟動(dòng)Bootloader需要設(shè)置單片機(jī)的BOOT引腳:BOOT1=0,BOOT0=1,并復(fù)位才能進(jìn)入系統(tǒng)BootloaderBOOT引腳設(shè)置可通過硬件來實(shí)現(xiàn)自動(dòng)設(shè)置和復(fù)位,從而利用系統(tǒng)Bootloader實(shí)現(xiàn)IAP。電路圖如下:

圖片

電路比較簡單就不詳細(xì)分析了。程序升級需要配合專用的軟件MCUISP。升級時(shí)MCUISP軟件會控制DTR引腳和RTS引腳BOOT0引腳拉高,并實(shí)現(xiàn)單片機(jī)復(fù)位,從而進(jìn)入系統(tǒng)Bootloader。之后可以通過USB轉(zhuǎn)串口程序進(jìn)行升級。

圖片

3.自己編寫BootLoader

系統(tǒng)Bootloader只能通過特定的接口對程序進(jìn)行升級,增加額外的硬件設(shè)計(jì),有時(shí)候并不適用。這時(shí)候就需要自己編寫B(tài)ootloader程序實(shí)現(xiàn)IAP。

實(shí)現(xiàn)IAP需要兩個(gè)程序:Bootloader程序和應(yīng)用程序。系統(tǒng)啟動(dòng)后首先進(jìn)入Bootloader程序,判斷是否需要升級,如果不需要直接跳轉(zhuǎn)到應(yīng)用程序運(yùn)行;如果需要?jiǎng)t通過指定的接口和協(xié)議接收數(shù)據(jù)并寫入到Flash中,實(shí)現(xiàn)應(yīng)用升級。這種方式靈活很多,接口和協(xié)議都可以自定義實(shí)現(xiàn)的關(guān)鍵是協(xié)議的設(shè)計(jì)和對Flash進(jìn)行讀寫。這里以STM32F1系列單片機(jī)為例,采用串口1和通用的Ymodem協(xié)議進(jìn)行介紹。

YModem協(xié)議

YModem協(xié)議是一個(gè)非常高效的文件傳輸協(xié)議,每包數(shù)據(jù)可以達(dá)到1024字節(jié)。YModem協(xié)議傳輸?shù)耐暾奈帐诌^程如下。這里就不進(jìn)行詳細(xì)介紹了,用戶也可以采用自定義的協(xié)議,協(xié)議設(shè)計(jì)要主要發(fā)送、反饋和校驗(yàn),保證傳輸數(shù)據(jù)的正確性。

圖片

Bootloader程序

STM32Cube文件中提供了相關(guān)的例程,可以進(jìn)行參考:

STM32Cube_FW_F1_V1.8.0\Projects\STM3210C_EVAL\Applications\IAP\IAP_Main

可以看到,程序初始化后通過檢測按鍵來判斷是否需要升級應(yīng)用程序。

圖片

很多時(shí)候,用戶的硬件上可能沒有按鍵,則需要通過其它辦法來實(shí)現(xiàn)判斷。比如,需要升級時(shí),應(yīng)用程序在Flash某個(gè)位置寫入一個(gè)標(biāo)志,然后復(fù)位進(jìn)入BootLoader程序,BootLoader程序讀取該標(biāo)志自動(dòng)判斷是否需要升級應(yīng)用程序。

應(yīng)用程序

由于BootLoader程序存在,應(yīng)用程序在Flash中的存儲位置也發(fā)生了改變,需要對程序中的中斷向量表偏移地址進(jìn)行修改。首先在Bootloader程序中確定應(yīng)用程序的起始地址:

圖片

應(yīng)用程序工程修改程序編譯的地址

圖片

應(yīng)用程序中system_stm32f10x.c文件,找到

圖片

修改

圖片

地址為偏移地址,不是絕對地址,與上面的地址有區(qū)別

最后,MDK默認(rèn)只生成HEX文件,要生成bin文件需要添加一條指令在User選項(xiàng)卡中,勾選 'Run # 1',在后面輸入框?qū)懭隻in文件生成方式

$K\ARM\ARMCC\bin\fromelf.exe --bin --output=Bin\@L.bin !L 

圖片

       上位機(jī)

上位機(jī)采用SecureCRT,該軟件支持YModem協(xié)議。打開軟件,連接串口,使電路板進(jìn)入Bootloader程序,根據(jù)菜單進(jìn)行操作即可。

圖片

   采用其它方式和協(xié)議進(jìn)行IAP升級的方法將在以后的文章中繼續(xù)介紹。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多