標(biāo)題: STM32F103C8T6 IAP源程序 [打印本頁]
作者: 涂覆莉娜 時間: 2019-8-18 09:50
標(biāo)題: STM32F103C8T6 IAP源程序
花了四天時間才把IAP功能做好。其中也遇到許多的坑,這次把這次IAP功能實(shí)現(xiàn)過程遇到的坑把它分享出來。
一開始做iap的時候也是先從網(wǎng)上看別人的實(shí)現(xiàn)方法,其中就下載了一套別人的程序,不過主控芯片是STM32F103zv,就是不是我想要的那個型號,還有他的邏輯跟我的有點(diǎn)不一樣。所以才走了那么多天的坑。
1、先移植別人的flash燒寫代碼跟運(yùn)行APP應(yīng)用程序的代碼,基本各個版本大同小異。
2、然后實(shí)現(xiàn)自己的UART,實(shí)現(xiàn)串口接收程序(因?yàn)橐ㄟ^串口接收APP應(yīng)用固件)
3、然后接收到的固件燒寫進(jìn)flash
4、最后就是運(yùn)行到APP應(yīng)用程序了。
基本實(shí)現(xiàn)iap也是這幾個步驟,但是就是不成功一開始。
然后就開始查找問題:
1、查看接收的固件對不對
2、通過keil編譯器里的仿真可以看到flash的具體數(shù)值,判斷memory里的數(shù)據(jù)是不是跟串口接收的數(shù)據(jù)一樣的。
查找了之后自己感覺是對的(其實(shí)沒有仔細(xì)驗(yàn)證),然后就開始跑到APP應(yīng)用程序,每一次運(yùn)行到APP程序時就進(jìn)入了硬件錯誤中斷HardFault_Handler();就是這個問題我查找了兩天得不到解決。
最后實(shí)在沒辦法了才有查找接收的問題,發(fā)現(xiàn)接收處理是有問題的,因?yàn)樾酒?/font>SRAM是有限的,接收數(shù)組不可能開的太大,我的方法是開兩個數(shù)組輪流接收固件,一個數(shù)組接收滿了之后就先寫進(jìn)flash,另一個數(shù)組繼續(xù)接收。因?yàn)楣碳沂峭ㄟ^串口助手發(fā)送給芯片的,所以串口助手一次性發(fā)完一個固件不間斷。后面改了這個接收的問題,然后再去檢查接收到的固件寫進(jìn)FLASH時是否是對的,這兩部做好之后基本不會有什么大問題。
1、另一個需要注意的就是地址的偏移,Bootloader地址跟APP應(yīng)用地址分開來。
2、進(jìn)入APP應(yīng)用程序之前需要清除中斷,把一些GPIO,ADC之類的都關(guān)閉。
3、APP應(yīng)用端要配置好中斷偏移向量。
基本以上步驟檢查好了,iap應(yīng)用是沒有問題的。
全部資料51hei下載地址:
在線應(yīng)用升級.7z
(360.75 KB, 下載次數(shù): 356)
2019-8-18 15:38 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: tech1222 時間: 2020-2-18 21:24
嗯,下載學(xué)習(xí)學(xué)習(xí),很有參考價值。
作者: hominidclint 時間: 2020-4-9 20:55
正學(xué)習(xí)中,感謝分享,

作者: jianfeii 時間: 2020-4-22 11:04
對,我現(xiàn)在就是卡在地址偏移的計(jì)算這塊上面
作者: 遇驚魂 時間: 2020-5-23 14:49
謝謝分享學(xué)習(xí)一下
作者: lz547297 時間: 2020-6-1 14:58
很好,謝謝分享
作者: lz547297 時間: 2020-6-1 14:59
學(xué)習(xí)中,謝謝分享
作者: lv378559368 時間: 2020-11-3 10:23
哥,感覺你得IAP程序進(jìn)不到中斷呢,串口發(fā)個指令就死了
作者: 對酒灬當(dāng)歌 時間: 2020-12-7 10:28
IAP用什么軟件?
作者: Yuer1103 時間: 2021-8-19 17:54
我是用F107,感覺。。。。。。
作者: zyluglugl 時間: 2021-8-22 07:32
先點(diǎn)贊留個地址先,希望以后能用得上!
作者: huanlelin 時間: 2022-6-1 11:28
過來學(xué)習(xí)一下 IAP源程序
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |