簡體   English   中英

將c / c ++代碼移植到VxWorks的問題

[英]Issues in porting c/c++ code to VxWorks

我需要將已支持Linux / Mac的ac / c ++代碼庫移植到VxWorks。 我是VxWorks的新手。 你能告訴我可能出現的問題嗎?

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

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

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

其他一些提示:

  • 許可證vxworks,以便您可以使用源代碼
  • 在開發周期中盡快使用真實的物理目標; 不要指望模擬器准確地模擬目標
  • 必要時使用TSR(技術支持請求); 我不知道他們如何構建購買創建TSR的權利,但不要讓任何人在這些方面做出便宜

根據您使用VxWorks字節序運行的處理器,結構打包和內存對齊都可能是問題。 我最后一次使用VxWorks時,它支持pthreads,socket和mutex層,足以輕松模仿unix環境。

在不了解您正在移植的應用程序的情況下很難說:它使用了什么linux庫和api調用? 它是自包含的,還是依賴於大量的linux命令行工具和腳本來完成它的工作?

正如平均所說,字節序可能會導致比預期更多的問題 - 特別是如果你沒有做好准備。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM