關(guān)于ch582m程序跑飛問題

最近在開發(fā)ch582m通過ble與上位機(jī)通信, 調(diào)試發(fā)現(xiàn)程序老是跑死導(dǎo)致單片機(jī)重啟,最后定位到問題是我在定義通信消息的時候使用了 #pragma pack(push, 1)語句修改了數(shù)據(jù)對齊大小,然后使用u32方式訪問未按四字節(jié)對齊地址的數(shù)據(jù)時就會出現(xiàn)重啟;

? ?1. 想問一下這種操作是必定會導(dǎo)致錯誤,還是有什么方式可以優(yōu)化呢;因為之前使用其他平臺的單片機(jī)都是可以的;

? ?2. 我把#pragma pack(push, 1)屏蔽掉后,在simpleProfile_WriteAttrCB()回調(diào)里面調(diào)用一個自己編寫的消息編碼發(fā)送函數(shù),上位機(jī)可以正常收到數(shù)據(jù);但是我把這個函數(shù)放到Peripheral_ProcessEvent()函數(shù)里面新建了一個任務(wù)來編碼發(fā)送,每次跑到編碼的時候就會崩潰,hardfault中斷打印內(nèi)容如下圖:原因是訪問地址未對齊,產(chǎn)生異常操作的地址是6f80208f, 但是我看映射表里這個地址是保留區(qū)域;而且為什么不同地方調(diào)用會產(chǎn)生不同的效果;

image.pngimage.png


你好,對齊方式需要使用__attribute__來處理,不可以使用#pragma pack處理,如圖參考:

image.png

Mtval指代的不一定是地址,可能是非法指令引起的異常,也可能是地址被篡改,然后往被篡改地址跳轉(zhuǎn)導(dǎo)致的異常。這個需要查看具體的指令對照手冊。

image.png

這里提供一份參考文檔:

http://www.findthetime.net/downloads/QingKeV4_Processor_Manual_PDF.html

?


我使用__attribute__(((aligned(1))))來修飾過后? 發(fā)送出去的數(shù)據(jù)還是沒變化? 還是按照四字節(jié)對齊的呢,使用__attribute__((packed))就直接崩潰了


你好,我想問一下程序崩潰必定會進(jìn)入hardfault中斷嗎


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频