2008-11-06 140 views
-2

我的新項目針對嵌入式ARM處理器。我有一個構建系統,它使用在Ubuntu Linux機器上運行的交叉編譯器。我喜歡儘可能地使用單元測試,但是我對如何繼續這個設置感到困惑。你如何構建交叉編譯代碼的單元測試?

我看不到如何在ARM設備上運行單元測試(有人糾正我,如果我錯了)。我認爲我最好的選擇是使用它自己的本地編譯器編譯構建機器上的代碼以進行單元測試。這種方法從根本上有缺陷嗎?在不同平臺上進行單元測試會浪費時間嗎?

我打算在生成機器上使用CppUnit,使用本機編譯器進行單元測試。然後,我將交叉編譯ARM處理器的代碼,並對目標設備本身進行集成和系統測試。你將如何構造源代碼和測試代碼以防止它變成混亂的混亂?

回答

4

嵌入式設備取決於您擁有的接口(硬件)。

例如,我處理的運動控制卡使用命令行界面。他們發佈的IDE使用它作爲與卡交互的主要方法。無論我使用PCI,IDE,串行還是以太網,它的工作方式都是相同的。

他們用於編程的DLL可以訪問命令行界面。所以我可以發送一個字符串,並回讀迴應。所以我爲我的單元測試做的事情是在我的開發機器上掛上一個物理卡。我上傳軟件後發送命令,讀取響應,如果它們正確,它會通過測試。

我也有額外的硬件,如果你願意的話,它可以模擬運動控制卡通常連接的機器。它有助於自動化設置,但有一個手動階段,因爲我必須設置開關來模擬機器上的不同設置。

我已經通過採用數字I/O卡並使用它的輸出饋送到運動控制卡的輸入端並且相反地實現了更高程度的自動化。

我發現,對於大多數硬件,你必須有一些類型的模擬器硬件。

例外是軟件模擬器附帶的罕見軟件包。

我知道這不太理想,因爲不是每個開發人員都可以在他們的辦公桌上安裝其中的一種。我的硬件模擬器讓我可以在任何時候將它交給運動控制軟件。如果它不能攜帶,那麼有專門的測試或硬件開發計算機就可以了。

最後歸結爲硬件的具體細節以及製造商在軟件和模擬器方面的支持。爲了幫助您更多,您需要發佈更多細節。

+0

所有硬件通信,我要做的是通過串行端口,所以我就可以做到這一點直接在構建機器上。不幸的是,我沒有ARM設備的仿真器。 – 2008-11-06 15:57:29

2

在嵌入式行業的十多年中,我已經看到它在不同的方面完成了。在我目前的公司:

  • 我們的產品之一有足夠的馬力(和空間)在目標板上運行測試。它有點慢,我們不能把所有的python放在我們想要的盒子上,但它運行良好。
  • 我們的一個產品沒有空間,所以我們編譯所有可以在x86中使用的庫(任何與硬件無關的庫)並在臺式機上運行單元測試。這並不完美,但總比沒有好。
  • 我們的組件之一,是在異國情調的硬件超輕量級功率守財奴,所以幾乎沒有單元測試是可能的。核心算法(DES等)在x86如上測試,但許多代碼簡單地具有待測試作爲一個整體,在原位。這需要大量的代碼評論。