找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1513|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

完整的STM32單片機(jī)bin文件后面加入多余的數(shù)據(jù)會(huì)導(dǎo)致程序出錯(cuò)?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:585428 發(fā)表于 2022-9-23 22:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
完整的bin文件后面加入多余的數(shù)據(jù)會(huì)導(dǎo)致程序出錯(cuò)是什么原因。


疑惑來(lái)源:

最近在做stm32 iap升級(jí)。用的sd卡升級(jí)。
因?yàn)樵谧詈笠粋(gè)包處理的時(shí)候偷懶了,所以有了疑惑。
sd卡讀取升級(jí)包時(shí),讀取固定長(zhǎng)度2048個(gè)字節(jié)的數(shù)據(jù)+2字節(jié)校驗(yàn),然后寫(xiě)入2048個(gè)字節(jié)數(shù)據(jù)。最后一個(gè)包讀取時(shí),通過(guò)取余獲取最后一個(gè)包的長(zhǎng)度x,然后x個(gè)字節(jié)寫(xiě)入到數(shù)組,最后仍舊寫(xiě)入2048個(gè)字節(jié)的數(shù)據(jù)。
這樣最后寫(xiě)入到flash中的最后一個(gè)包,x字節(jié)后的數(shù)據(jù)時(shí)上一個(gè)包的,沒(méi)有覆蓋。
升級(jí)后的現(xiàn)象是開(kāi)機(jī)了,然后菜單也能操作,但是到·某些動(dòng)作就白屏卡死了。

后來(lái)我做了處理,最后一個(gè)包時(shí),整個(gè)數(shù)組先memset一下置0xff,但是多寫(xiě)了2個(gè)字節(jié)的校驗(yàn),有的程序出錯(cuò),有的程序可以運(yùn)行。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:879348 發(fā)表于 2022-9-24 08:25 | 只看該作者
不懂你在說(shuō)什么,只要把bin文件完整下載到flash就行,如果沒(méi)有完整就是boot程序本身有問(wèn)題,至于你說(shuō)的X后面是任何數(shù)據(jù),對(duì)整個(gè)程序沒(méi)有任何影響
回復(fù)

使用道具 舉報(bào)

板凳
ID:94031 發(fā)表于 2022-9-24 09:39 | 只看該作者
升級(jí)包數(shù)據(jù)的形成與讀取都是事前約定好的,在沒(méi)有弄清原理前是不能隨便改數(shù)據(jù)的。
回復(fù)

使用道具 舉報(bào)

地板
ID:514901 發(fā)表于 2022-9-24 14:05 | 只看該作者
程序?qū)懙貌灰?guī)范唄,按理說(shuō)程序范圍外的地址是不會(huì)運(yùn)行到的。按照你說(shuō)的出現(xiàn)這種情況更可能是中斷向量表沒(méi)設(shè)置好的原因
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表