新唐開發平台:進階使用者的七大訣竅 (2) 進入除錯模式找出 Hard Fault 原因

適用情境

  • 在除錯模式下發現微控制器進入Hard Fault,或是在運作時發現微控制器的UART輸出Hard Fault資訊。

除錯技巧

  • 在除錯模式下找到進入Hard Fault前運行的最後一個指令。
  1. 取得 SP (Stack Pointer) 值。

  2. 使用SP 在Memory視窗中找到Stack。

  3. Stack的第七個值就是最後一筆運行的指令的位址。

  4. 在Disassembly 視窗查詢該位址對應的指令。

stack pointer

解說

  • 當Cortex-M核要執行一個無效的指令,例如讀取一個不存在的記憶體位置,核心會進入hard fault來保護自己。硬體先將一些CPU暫存器放到Stack中在進入Hard Fault handler。使用者可透過Stack Pointer找到存放最後一筆被執行的指令的記憶體位址,進而找到觸發Hard Fault的程式流程。

hard fault explain

 

本網站使用cookie作為與網站互動時識別瀏覽器之用,瀏覽本網站即表示您同意本網站對cookie的使用及相關隱私權政策
OK