目前只要一開啟tmos就重啟。 我打印了hardfault。發(fā)現(xiàn)是tmos_memory_allocate() 內(nèi)存分配錯誤。 這個錯誤如何調(diào)試呢?
hardfault
mepc:20003270
mcause:00000004
mtval:bfa19522
目前只要一開啟tmos就重啟。 我打印了hardfault。發(fā)現(xiàn)是tmos_memory_allocate() 內(nèi)存分配錯誤。 這個錯誤如何調(diào)試呢?
hardfault
mepc:20003270
mcause:00000004
mtval:bfa19522
可以多測試幾次,看看是否每次pc指針都指向該地方。
在lst文件中檢查mepc是否有指向函數(shù),可以查看該函數(shù)的傳參。這里的報錯應該是沒有字節(jié)對齊。因此可以重點查看在分配內(nèi)存的時候是否有進行4字節(jié)對齊。
測試了一下,每次都是指向這個相同的位置。 load 指令訪存地址不對齊是什么原因造成? 由于錯誤指向的不是自己的寫的應用程序,不知道在哪里改。
每次都指向同一個地方,且是開啟tmos任務才會出現(xiàn)該報錯,則檢查你的那個tmos調(diào)用的函數(shù),建議的是先停止tmos任務,判斷一下具體是哪個調(diào)用的函數(shù)造成的。
tmos_memory_allocate這個函數(shù)看下是不是你自己封裝的,如果是申請內(nèi)存,則建議使用tmos_msg_allocate/tmos_msg_deallocate或者GATT_bm_alloc/GATT_bm_free。
在進行申請內(nèi)存的時候,務必注意四字節(jié)對齊,指向報錯也是該原因。