ITE SOC平台是简单的freertos开发平台,自带了查看当前运行异常的错误堆栈的方式。
1、错误码(Run Time Exception error)说明:
a、Data Abort Error:通常為讀寫到不合法位置(如 0xFFFF0000),或是有 alignment 的問題。
(如讀取/寫入一個Integer pointer 但是給的位置卻是0x10003不在4 byte alignment 上)。
b、Divide by Zero Error:發生分母為 0 之異常除 0 問題。
c、Undefined Error:CPU 從記憶體 Fetch 指令但是解譯時發現不認識該指令而拋出的異常.
d、Prefetch Abort Error: 當 Fetch 指令為無效位置時,會觸發此異常。
e、Memory Debug Error:當開啟某區段記憶位置寫入保護,該區段被任何 HW 寫入時(CPU、
Graphic Engine、H264 decoder 等),則會觸發異常。(請注意將 write back 模式關閉,因
為該功能不是透過 ARM 的 Exception 而是外部中斷導致,所以在 write back mode 下相
對的 backtrace 較為不精準)。
源码地址:itp_error.c (sdk/driver/itp)
当出现以上错误的时候,往往后面会跟一串16进制的地址信息:
如下: