這幾天遇到了一個(gè)問題:
同樣的一份hex文件,在keil(j-link)里燒錄,程序能正常運(yùn)行,但是通過J-flash反讀出來(lái)的hex文件,會(huì)比原來(lái)的hex文件多出一段數(shù)據(jù) 比如:原來(lái)的hex在0x08049444的地址已經(jīng)結(jié)束,反讀出來(lái)的hex在此地址之后會(huì)多出一段數(shù)據(jù)。
通過keil調(diào)試,memory窗口定位,在disassembly里對(duì)應(yīng)地址顯示的全是匯編,都是寄存器操作,沒有對(duì)應(yīng)代碼。截取部分如下:
0x08049477 0000 MOVS r0,r0
0x08049479 0000 MOVS r0,r0
0x0804947B 0100 LSLS r0,r0,#4
0x0804947D 3240 ADDS r2,r2,#0x40
0x0804947F 4210 TST r0,r2
0x08049481 0301 LSLS r1,r0,#12
0x08049483 245D MOVS r4,#0x5D
0x08049485 1AF4 SUBS r4,r6,r3
0x08049487 01AA LSLS r2,r5,#6
用j-flash燒錄或者上位機(jī)(can通訊),程序運(yùn)行不起來(lái),但是反讀出來(lái)的hex與原本的hex一致。!
想問問大佬是什么原因?keil的編譯器問題還是其他的原因?
附加:?jiǎn)纹瑱C(jī)是stm32f407VGT6,程序時(shí)boot+app,這里運(yùn)行不起來(lái)指的是app
0x08049479 0000 MOVS r0,r00x0804947B 0100 LSLS r0,r0,#40x0804947D 3240 ADDS r2,r2,#0x400x0804947F 4210 TST r0,r20x08049481 0301 LSLS r1,r0,#120x08049483 245D MOVS r4,#0x5D0x08049485 1AF4 SUBS r4,r6,r30x08049487 01AA LSLS r2,r5,#60x08049489 1401 ASRS r1,r0,#160x0804948B 7C39 LDRB r1,[r7,#0x10]0x0804948D 5291 STRH r1,[r2,r2]0x0804948F 32C8 ADDS r2,r2,#0xC80x08049491 0206 LSLS r6,r0,#80x08049493 071B LSLS r3,r3,#280x08049495 0332 LSLS r2,r6,#12
|