2008-10-09 81 views
3

我正在用C++寫一個沒有OS支持的嵌入式系統的項目;幾乎沒有圖書館支持。非常裸機。因此,相當數量的我的代碼是緊密耦合的(例如,軟件觸發的中斷以及它們正上方的層)。裸機系統的軟件測試

我正在做的一部分包括更改串口配置,從而驅動PC端(UI端)和微處理器(活動端)的併發更改。 到目前爲止,我在做一個超級小心的增量式開發(逐塊裝配)方面表現不錯。不過,我想對我的代碼在工程意義上工作更有信心。

你會爲這種情況推薦什麼樣的方法/框架?

編輯:

我使用上的ACore86板通過燕鷗,Inc.的編譯器進行的AMD186 ES:範式,免費版(附帶的板)。不幸的是,我沒有辦法改變自己的工作。

回答

2

在裸機環境中缺乏基礎設施非常具有挑戰性。我建議你專注於調試工具。即使非常謹慎和優秀的方法,你也需要調試的能力。

這將是理所當然的你得到gdbagent工作。你需要自己實現這個,但它是一個簡單的基於文本的協議。您在外部機器上運行gdb並與目標上的gdbagent進行通信。 你當然可以通過串口運行gdbagent協議,但是當需要檢查大量數據時,這很快就變得單調乏味。如果您有更快的界面可用,請利用它。

我不知道你的預算是多少,但你也應該計劃一個JTAG調試器。只要目標上的gdbagent能夠運行,gdbagent就很棒。如果一切都崩潰了,你就要烤麪包了。 JTAG調試器非常昂貴,但可以租用。我過去使用過Corelis產品,並且我聽說過有關Abatron的好消息。

1

我認爲你最好打賭是與你的編譯器的供應商合作得到一個設備模擬器。

Tessy可能與該芯片一起工作。退房:http://www.hitex.us/products.html?con_186.html~content

+0

不幸的是,Keil和Paradigm(編譯器公司)都沒有從我所知道的設備模擬器中提取 – 2008-10-09 19:51:23

+0

Tessy可能與該芯片一起工作。簽出:http://www.hitex.us/products.html?con_186.html~內容 – NotMe 2008-10-09 20:05:54

1

當時間很重要時,我喜歡使用一個空閒的I/O引腳或兩個以及一個示波器來組合代碼。我也是JTAG端口的源代碼級調試迷。您還可以讓微處理器存儲一個數據矢量,然後通過第二個uart(如果有)發送回PC進行分析。

0

我在這方面看到的一些東西是單元測試。

不,我不是在開玩笑。

在主機PC的控制下在設備上運行的單元測試。

在單元測試控制下,您編寫了一個封裝程序,將ley加載程序寫入SRAM。

然後你的電腦可以發送一個程序,運行它並檢查輸出。

如果您需要鍛鍊您的電路板,請獲得labjack或類似的USB接口卡。

現在,這是測試夾具中的硬件,所有運行於您的主機PC上。

0

我做了一件成功的事情之一是設計一個PC環境,其中代碼可以用C++編譯並測試,然後用「直線」C編譯在嵌入式系統上運行。 I/O端口引用被#defined作爲I/O對象的屬性訪問,然後通過套接字發送到「硬件仿真」程序。系統的一部分最終比我想象的要笨重,但我希望成功的版本不會太笨重。