Linux/Macをすでにサポートしているac/c++コードベースをVxWorksに移植する必要があります。私はVxWorksにかなり慣れていません。発生する可能性のある問題を教えてください。
4 に答える
最近、逆の変換を行いました。VxWorks を実行する PowerPC マシンから Linux を実行する Intel システムにコードを移植しました。オペレーティング システム間の違いに関しては、多くの問題にぶつかった覚えはありません。明らかに、OS 固有の API への呼び出しはすべて変更する必要があり、これらの関数を広範囲に使用していませんでした。
私たちの最大の問題は、オペレーティング システムの違いではなく、PowerPC と Intel ハードウェアの違いでした。PowerPC は Big Endian、Intel は Little Endian です。私たちのソフトウェアは C で書かれており、バイトの順序に関して多くの仮定を行っていました。ビットフィールドを定義する構造体は文字通り何百もあり、正しく機能させるために並べ替える必要がありました。これらのビットフィールドを定義時に反転する #pragma を GCC に実装することになりました (#pragma reverse_bitfields)。
ターゲットにしている VxWorks のバージョンと、実際のターゲット プロセッサ自体に大きく依存します。対処しなければならないことの 1 つは、ページ メモリ システムや仮想メモリがないことです。環境自体は、Linux システムよりもはるかに制約されています。リソースは Linux ほど無制限ではないため、アプリケーションの移植に関わる作業は、アーキテクチャ レベルにまでさかのぼることがあります。
その他のヒント:
- ソースコードを利用できるように vxworks のライセンスを取得する
- 開発サイクルでできるだけ早く実際の物理的なターゲットを使用します。ターゲットを正確にエミュレートするシミュレーターを当てにしないでください
- 必要に応じて TSR (テクニカル サポート リクエスト) を使用します。彼らがTSRを作成する権利の購入をどのように構成しているのかはわかりませんが、誰にもこれらを安売りさせないでください
移植しようとしているアプリケーションについて詳しく知らなければ、それを判断するのは困難です。どの Linux ライブラリと API 呼び出しが使用されているのでしょうか? それは自己完結型ですか、それとも多くの Linux コマンドライン ツールとスクリプトに依存して仕事をしていますか?
Average が言うように、エンディアンは、特に準備ができていない場合、予想よりもはるかに多くの問題を引き起こす可能性があります。