|
完整的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)行。
|
|