2011-09-14 5 views
2

私はArduino開発のためにEclipseを使いたいと思っています。Eclipseの下でarduino Ethernet.hを使用する

Eclipse + Eclipse AVRプラグイン+ WinAVRを使用します。私はArduinoコアライブラリを静的ライブラリにコンパイルすることができました。

私はイーサネットシールドを使いたいですが、Eclipseでイーサネットライブラリを使用する方法が見つかりません。

  1. は私のプロジェクトフォルダにarduino-022/libraries/Ethernetarduino-022/libraries/SPIからフォルダをコピーした後、私は仕事のために含まれるにいくつかの変更を行いました。その結果、DDRBおよびPORTBのエラーが発生します。

  2. イーサネットとSPIのフォルダをプロジェクトのインクルードパスに追加しました。結果は次のとおりです。

  
    main.cpp:(.text+0x8): undefined reference to `Server::Server(unsigned int)' 
    ./main.o: In function `loop': 
    main.cpp:(.text+0x36): undefined reference to `Server::available()' 
    main.cpp:(.text+0x3c): undefined reference to `Client::operator bool()' 
    main.cpp:(.text+0x56): undefined reference to `Client::available()' 
    main.cpp:(.text+0x64): undefined reference to `Client::read()' 
    main.cpp:(.text+0xf6): undefined reference to `Client::connected()' 
    main.cpp:(.text+0x110): undefined reference to `Client::stop()' 
    ./main.o: In function `setup': 
    main.cpp:(.text+0x138): undefined reference to `Ethernet' 
    main.cpp:(.text+0x13a): undefined reference to `Ethernet' 
    main.cpp:(.text+0x144): undefined reference to `EthernetClass::begin(unsigned char*, unsigned char*)' 
    main.cpp:(.text+0x14c): undefined reference to `Server::begin()' 

私は何をする他に何かわかりません。誰かがこれのような何かを試しましたか?

答えて

1

私はこれを理解しようとしていますが、実際にはそれほど難しくはありません。失われた時間は、いくつかの設定がmakeファイルに対して「不可視」であるという事実からちょっとしたものです。また、生成されたEclipseのメークファイルは、マニュアルを掘り下げずに誰かにとっては非常に暗黙のものです。 manualをご覧になりたい場合:

短いバージョン: Arduino Coreライブラリの静的ライブラリプロジェクトを作成してビルドします。

SPI、w5100、およびイーサネット用の独立したスタティックライブラリプロジェクトを作成 ビルドするプロジェクトにはいくつかの接続が必要です。まず、インクルードディレクトリを正しく設定するように設定しました。次にこれについて説明します。次に、私は正しいすべての依存関係のビルドでアプリケーションを構築できるように、プロジェクト参照を正しく設定しました。

  • SPI - >アプリケーション自体アルドゥイーノコアSPIおよびW5100
  • を含む - - > ArduinoのコアとSPI
  • イーサネット(登録商標)を含む - >はアルドゥイーノコア
  • W5100を含む>(単にW5100およびイーサネットを含みます
  • アプリケーションのすべてのパスをライブラリパスとライブラリに追加します(lib接頭辞なし)

プロジェクトの名前変更は、ライブラリの設定とパスに反映されないので注意してください。欠けている部分や細かい部分を簡単にキャッチできるように、セットアップでいくつかの正気も注意してください。

私は、より詳細な説明と、後で編集しようとしますが、これは、あなたの質問

EDIT

に答える必要があります私はちょうどイーサネットフォルダをインポートしている場合のうち、静的なプロジェクトを作成しようとしています。いくつかの奇妙な理由(私はEclipseの詳細を知らない)Eclipseは、それをコンパイルしないでユーティリティフォルダに深く入り込むことはありません。コンパイルされず、そのインクルードファイル用の静的ライブラリがない場合は、Ethernetをコンパイルしようとしている未定義の参照があります。また、静的ライブラリはavr eclipseプラグインでリンクすることはできません。実際には十分です。そのようなダイアログはありません。

私が説明することができず、ほとんど狂った奇妙なエラーでは、makeファイル内のいくつかの魔法は、Eclipseが定義していないcc変数を通してコンパイラを呼び出しました。この問題は、変数をmake.exeのようにする引数として渡して解決されました。CC = avr-g ++。 私は1つのプロジェクトでしか動作させようとはしませんでしたが、静的ライブラリビルドのarduinoコアへの未定義の参照を私に与えてしまいました。 これはあなたの質問の答えの一部ではないことは分かっていますが、Eclipseを実際にArduino IDEにする過程で指導者が指導するのは、あなたが尋ねるものです。

私はあなたがPORTBとDDRBに関するエラーをどのように得たのか分かりませんが、おそらくビルドには何かがないと思われます。私の場合のように、それはちょうど非センスのエラー報告を吐き出す。

レッスンは次のとおりです。スタティックライブラリプロジェクトに別々のライブラリを作成し、それらを参照して、ソースおよび最終アプリケーションのスタティックライブラリに含めます。

(注記:ArduinoのIDEは完全に禁止し、Eclipseやいくつかの本当のIDEに移行する必要があります)このため

+0

感謝。私はそれをチェックし、何が起こるか見る。 – kechapito

+0

私は同じ問題を抱えていました。それは私のプロジェクトにとって非常に重要でした。期待しています –

関連する問題