大家好,我在同一個地方多次在皮層m1上發生HardFault異常。我有HardFault實施和我可以讀堆疊寄存器:ldrsh皮質m1硬性缺陷
stacked_r0 unsigned int類型爲0x4(十六進制)
stacked_r1 unsigned int類型0x60905f98(十六進制)
stacked_r2 unsigned int類型爲0x0(十六進制)
stacked_r3 unsigned int類型0x6092304b(十六進制)
stacked_r12無符號整型0x60922ff8(十六進制)
stacked_lr無符號整型0x60810be3(十六進制)
stacked_pc無符號整型0x60810ce2(十六進制)
stacked_psr無符號整型0x41000000(十六進制)
在堆疊PC上的操作是: 60810ce2:ldrsh r2,[r3,r2]
爲什麼會導致故障?
UPD 我已經重新排列變量,現在它已經墜毀在距離的memcpy FreeRTOS中碼
stacked_r0 unsigned int類型0x6090c858(十六進制)
stacked_r1 unsigned int類型0x6091f8b4(十六進制)
stacked_r2 unsigned int類型爲0x3C(稱爲十六進制)
stacked_r3無符號整型0x6091f8a4(十六進制)
stacked_r12無符號整型量0x280(十六進制) stacked_lr無符號整型0x60827f89(十六進制)
stacked_pc無符號整型0x6082b0dc(十六進制)
stacked_psr unsigned int 0x1000000(Hex)
6082b0ba:bne。Ñ0x6082b120
6082b0bc:添加R5,R2,#0
6082b0be:添加R4,R0,#0
6082b0c0:潛艇R5,#16
6082b0c2:LSR之間R5,R5, #4
6082b0c4:添加R5,#1
6082b0c6:LSLS R5,R5,#4
6082b0c8:添加R1,R1,R5
6082b0ca:LDR R6,[R 3,#0]
6082b0cc:STR R6,[R4,#0]
6082b0ce:LDR R6,[R3 ,#4]
6082b0d0:STR R6,[R4,#4]
6082b0d2:LDR R6,[R 3,#8]
6082b0d4:STR R6,[R4,#8]
6082b0d6:LDR R6,[R 3,#12]
6082b0d8:添加R3,#16
6082b0da:STR R6,[R4,#12]
6082b0dc:添加R4,# 16
是一個對齊訪問。 –
沒關係,但是爲什麼?在堆棧 – qmor
棧R3點是RAM,什麼棧都與它的低位爲0XB或1011 LDRSH或LDRH低位已成爲LDR零,較低的兩個必須是LDRD較低的零三個必須是零。你正試圖做一個未對齊的半字訪問,並且處理器正確地阻止了你這樣做。 –