nuvoton - M451 如何除錯

NuM451 除錯篇

程式設計者的三部曲,首先,尋找資源,建構程式的流程圖;再者,完成程式碼;最後,驗證程式碼有沒有符合構想,依照驗證結果,再回到資源蒐集和程式修改。而程式設計流程的循環次數,會依程式設計者的經驗和構想的了解程度有關。如何加快程式開發者的速度,相關的除錯工具,成了程式開發者最大的需求。新唐有些除錯的輔助工具,怎麼使用,將依序說明。

  1. 除錯方式

以 Keil MDK 除錯的方式有二種,一種是軟體模擬(simulator),也就是使用 PC 的資源建構一個虛擬環境來模擬晶片的動作。在 Keil MDK 中,先按下 按鍵,選擇"Debug"選單,選擇"Use Simulator”選項。

再按除錯按鍵,就可以單步模擬晶片的動作,查看晶片的記憶體,暫存器的資料。  

除錯的畫面,綠色框是C語言反組譯後的組合語言,紅色框是晶片的暫存器,藍色框是使用 printf 函式的輸出模式。


另一種是使用晶片本身所支援的除錯模組及介面,有 JTAG / SWD 等除錯介面來進行程式碼的除錯。在 Keil MDK 中,先按下按鍵,選擇"Debug"選單,選擇"Use Nuvoton Nu-Link Debugger”選項。


和軟體模擬一樣,按下除錯按鍵,可以看到相同的畫面。

  1. 除錯視窗介紹

  • 晶片暫存器的資料,按下 ,由三角形往下拉,選擇你想查看的暫存器。  


  • 查看輸出的除錯訊息,在程式中,使用 printf 的訊息,都會傳送到 UART #1 的除錯視窗。

  • 查看晶片記憶體的資料,輸入16進制的位址 (EX : 0x40000000),按下”Enter”,就可以得到記憶體的資料。


  • NuTool - PinView , 可以查看到,現在此時,晶片每一根腳的狀態及設定。在 Keil MDK,Debug 的選單,選擇最下方的 NuTool-PinView。




不知,有沒有發現,明明說除錯訊息會送到 UART #1 視窗,但是一直都是空空的,但是看看程式,在 main() 函式,明明有使用 printf。

  • 請依下列步驟
  • 先離開除錯畫面
  • 按下按鍵
  • 在"C/C++"選單下,在 Define 的欄位上,加入”DEBUG_ENABLE_SEMIHOST”,再重新組譯。


  • 再依前面介紹,進入除錯視窗,就可以看到 printf 的除錯訊息了。

留言

這個網誌中的熱門文章

EC 所需知識 - SMBUS

EC 所需知識 - LPC

EC 所需知識 - KBC