2009-06-09 111 views

回答

3

我們最近做了相反的轉換 - 我們將代碼從運行VxWorks的PowerPC機器移植到運行Linux的Intel系統。就操作系統之間的差異而言,我不記得遇到過很多障礙。很明顯,任何調用特定於操作系統的API都必須改變,我們並沒有廣泛使用這些函數。

我們最大的問題不是操作系統之間的差異,而是PowerPC和Intel硬件之間的差異。 PowerPC是Big Endian,Intel是Little Endian。我們的軟件是用C語言編寫的,並且對字節順序做了很多假設,這是讓它再次順利運行的絕對噩夢。實際上有數百個結構定義了位域,需要重新排序以正確工作。我們最終在GCC中實現了一個#pragma,在他們的定義中反轉了這些位域(#pragma reverse_bitfields)。

0

如果不瞭解更多關於正在移植的應用程序的信息,很難說:它使用的是什麼linux庫和api調用?它是獨立的,還是依賴於Linux命令行工具和腳本來完成它的工作?

正如平均所言,排序會給您帶來比預期更多的問題 - 尤其是如果您沒有做好準備。

+0

感謝您的回覆。該應用程序使用pthread,套接字庫,臨界區和互斥處理API。如果在移植到VxWorks時遇到任何問題,您可以告訴我嗎? – ebaccount 2009-06-09 20:47:43

1

取決於您使用VxWorks排序的處理器,結構打包和內存對齊都可能是問題。上次我使用VxWorks時,它支持一個pthreads,套接字和互斥層,它們足夠輕鬆地模仿unix環境。

2

很大程度上取決於您所針對的VxWorks版本以及實際的目標處理器本身。有一件事你不得不面對的是沒有分頁的內存系統或虛擬內存 - 你有什麼。環境本身比linux系統更受限制。有時候,移植應用程序所涉及的工作一直回到架構級別,因爲資源並不像Linux中那樣無限。

一些其他提示:

  • 許可證的VxWorks,這樣你有可用的源代碼
  • 在開發週期中儘早使用真實的物理目標;不要指望模擬器準確模擬目標
  • 必要時使用TSR(技術支持請求);我不知道他們是如何構建購買創造TSR的權利的,但不要讓任何人在這些方面便宜。