[英]How debugging works in MCU systems programmed in C
據我了解,在Linux系統上,調試是通過ptrace sys-call完成的。
我想知道如何為微控制器(無OS)編寫調試器。
為了簡單起見,讓我們假設使用諸如Arduino Due (基於ARM)之類的板的軟件調試器。
我計划將調試器實現為命令行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,並且它對目標托管調試的支持有限,但我從未考慮過在微控制器上實現目標托管調試器。 目標托管調試的實用程序受到缺少源代碼和符號表信息的限制,這些信息和符號表信息可用於托管調試器以支持源級調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.