簡體   English   中英

調試如何在用C編程的MCU系統中進行

[英]How debugging works in MCU systems programmed in C

據我了解,在Linux系統上,調試是通過ptrace sys-call完成的。
我想知道如何為微控制器(無OS)編寫調試器。
為了簡單起見,讓我們假設使用諸如Arduino Due (基於ARM)之類的板的軟件調試器。

  • 假設我對調試器在Linux和Windows上的工作方式有一個很好的了解,那么我將學到什么來完成這樣的項目
  • 為MCU系統編程調試器有何不同? (我不能使用系統調用)
  • 是否可以通過USB或串行接口進行調試?
  • 我應該使用哪種語言? (C,C ++,Arm匯編)
  • armgcc編譯器如何為我的項目提供幫助(是否有-g等標志選項?)

我計划將調試器實現為命令行Linux實用程序。

包括Arduino Due上的ARM在內的大多數現代處理器均具有通過JTAG接口進行的片上調試支持。 Cortex-M3片上調試支持8個硬件斷點和一些其他功能-由於代碼在閃存中運行,因此您無法設置軟件斷點。

JTAG接口本身非常簡單,但是您將需要特殊的硬件才能從PC支持它。 根據性能和功能的不同,JTAG調試器的成本可能從非常低到昂貴的價格差異很大。 需要將JTAG連接到調試器軟件的軟件。 OpenOCD是一個開放源代碼工具,用於將JTAG /片上調試與GDB接口,允許將GDB-ARM托管在PC上以調試遠程ARM目標。

從理論上講,您可以編寫自己的軟件來通過JTAG訪問OCD。 盡管我已經在ARM9,SrongARM和x86上使用了VxWorks,並且它對目標托管調試的支持有限,但我從未考慮過在微控制器上實現目標托管調試器。 目標托管調試的實用程序受到缺少源代碼和符號表信息的限制,這些信息和符號表信息可用於托管調試器以支持源級調試。

即使這樣,我相信也可以從目標本身訪問片上調試, 有關詳細信息,請參閱ARM文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM