2008-09-16 25 views

回答

10

最簡單的最具擴展性的解決方案是狀態LED。根據操作切換LED,無論是二進制形式還是某些操作發生時,如果您可以縮小焦點。

最強大的將是一個硬件JTAG設備。您甚至不需要設置斷點 - 只需停止應用程序並檢查內存狀態可能就足夠了。請注意,某些硬件平臺不支持「奇特」選項,如內存手錶或硬件斷點。前者通常伴隨着不斷停止處理器和讀取存儲器(將10MHz系統變成1kHz系統),而後者有時使用代碼替換(用不同的跳轉代替目標指令),有時會掩蓋其他問題。請注意這些問題以及它們適用的嵌入式處理器。

5

有,你可以聘請,以幫助調試幾個策略:

如果你有輸出引腳可用,你可以連接起來,以發光二極管(或示波器),並切換輸出引腳高/低指示代碼中已經達到了某些要點。
例如,1個眨眼可以被程序加載,2眨眼foozbar初始化,3眨眼是接受輸入...

如果有可用的多條輸出線,則可以使用一個7段LED傳達更多的信息(數字/字母而不是眨眼)。

如果您有能力讀取內存並獲得一些RAM,則可以使用sprint函數執行類似printf的調試,但不是轉到屏幕/串行端口,而是寫入內存。

0

雖然設置麻煩,但JTAG調試器也是一個選項。

0

如果您沒有JTAG,其他人建議的LED是一個好主意 - 儘管您最終會在測試/重建週期中嘗試追蹤問題。

如果你有更多的時間,備用硬件引腳和內存空閒,你總是可以低速串行接口。我發現過去非常有用。

+0

關於位反轉串行接口的好主意 – Benoit 2008-09-17 17:52:42

2

這取決於您正在嘗試執行的調試類型 - 特別是在您使用臨時跟蹤方法之後,或者您嘗試提供可用作狀態指示的工具時項目(或產品)的壽命。

對於其中一種情況,深入的源跟蹤和調試時,在線調試器(例如.jtag)會非常有幫助。然而,當你的調試需要設置斷點和調查內存和寄存器時,它們是最有幫助的 - 在處理時間緊迫的問題時,這幾乎沒有什麼好處。

如果您需要確定程序狀態而不會對系統的執行產生重大影響,那麼使用連接到備用I/O引腳的LED將會很有幫助。這些也可以用作數字存儲示波器(DSO)或邏輯分析儀的輸入。 通過選擇可在DSO上識別的獨特脈衝模式,可以使此技術更加強大。

對於更多功能的調試工具,串口是一個很好的解決方案。爲了節省成本和PCB空間,您可能會發現使用包含RS232轉換器的插入式模塊很有用。

如果您試圖提供更長期的狀態指示作爲產品正常操作的一部分,LED仍然是一種便宜的簡單方法。然而,在這種情況下,最好選擇足夠慢的脈衝模式,以便通過視覺檢查輕鬆識別。隨着時間的推移,你將會學到一種代表「正常」行爲的特定模式。

0

其他人已經提出了使用輸出引腳的一些不錯的主意,所以我不會建議,儘管它可能是一個非常好的解決方案,並且非常划算。如果您的預算和目標處理器支持它,那麼硬件跟蹤系統(舊式仿真器或具有總線監聽跟蹤支持的花式BDM)對於此類事物可能非常有用。儘管如此,它非常昂貴。

2

您可以使用來自系統IO引腳的位反轉來輕鬆模擬串行通信(UART)。將它連接到卡的一個引腳上,並連接到一個RS232轉換器(TTL到RS232轉換器很容易購買或構建),這轉到您的PC的串行端口。

+0

我從來沒有想過要對接口進行一下位反轉。輝煌! – Benoit 2008-09-17 17:51:57

0

使用bit-banged軟件UART的想法很好,但是在編寫一個軟件時需要一些努力,而且你還需要一些空閒的定時器和中斷。如果您的硬件有任何其他未使用的串行接口(SPI,I2C,..),使用它們會更容易。使用小型微控制器,您可以將接口轉換爲RS-232。

如果你不得不進行位反轉,那麼製作一個同步串行可能是一個更簡單的選擇,因爲它對時序並不重要。

相關問題