2009-06-09 43 views

答えて

3

最近、VxWorksを実行しているPowerPCマシンからLinuxを実行するIntelシステムにコードを移植しました。私は、オペレーティングシステムの違いまで、多くの問題を抱えていることは覚えていません。明らかに、OS固有のAPIへの呼び出しは変更する必要があり、我々はこれらの機能を広範に使用していませんでした。

私たちの最大の問題は、オペレーティングシステムの違いではなく、PowerPCとIntelのハードウェアの違いです。 PowerPCはビッグエンディアンで、インテルはリトルエンディアンです。私たちのソフトウェアはC言語で書かれており、バイトの順番については多くの前提がありました。これは、スムーズに動作させるための絶対的な悪夢でした。文字通り何百もの構造がビットフィールドを定義し、正しく動作するように並べ替えが必要でした。私たちは#pragmaをGCCに実装して、これらのビットフィールドをその定義(#pragma reverse_bitfields)で反転させました。

0

あなたが移植しているアプリケーションの詳細がわからないと、それを伝えるのは難しいです:linuxライブラリとapi呼び出しは何を使用していますか?それは自己完結型なのか、それともLinuxのコマンドラインツールやスクリプトに頼って仕事をしているのだろうか?

平均で言うように、エンディアンはあなたが予想以上に多くの問題を引き起こす可能性があります。特に準備ができていない場合は特にそうです。

+0

お返事ありがとうございます。このアプリケーションは、pthread、ソケットライブラリ、クリティカルセクション、およびmutex処理APIを使用します。 VxWorksに移植する際に問題が発生するかどうか教えてください。 – ebaccount

1

VxWorksエンディアンで実行されているプロセッサ、構造体のパッキング、およびメモリの配置はすべて問題である可能性があります。 VxWorksを使用した最後の時間に、UNIX環境を簡単に模倣したpthreads、ソケット、およびmutexレイヤーをサポートしました。

2

対象とするVxWorksのバージョンと実際のターゲットプロセッサ自体によって多くのものが異なります。あなたが対処しなければならないことの1つは、ページメモリシステムや仮想メモリがないことです。そこには何があるのですか。環境自体は、Linuxシステムよりはるかに制限されています。時には、アプリケーションの移植にかかわる作業は、リソースがLinuxのように無制限ではないため、アーキテクチャーレベルに戻ることもあります。

他のいくつかのヒント:あなたは

  • 利用可能なソースコードは、開発サイクルにできるだけ早く本物の、物理的なターゲットを使用しているよう

    • ライセンスのVxWorks。ターゲットを正確にエミュレートするシミュレータを使用しないでください。
    • 必要に応じてTSR(技術サポートリクエスト)を使用してください。私は彼らがTSRを作成する権利の購入をどのように構築するのか分かりませんが、誰にも安価にTSRを貸し出さないようにしてください。
  • 関連する問題