2

Arduino の開発に eclipse を使用したいのですが、いくつか問題があります。

Eclipse + Eclipse AVR プラグイン + WinAVR を使用しています。Arduino コア ライブラリをスタティック ライブラリにコンパイルすることができました。

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

  1. arduino-022/libraries/Ethernetプロジェクトフォルダーとの間でフォルダーをコピーし、arduino-022/libraries/SPI機能するためにインクルードにいくつかの変更を加えました。DDRB結果は、とに関するいくつかのエラーPORTBです。

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

    
    main.cpp:(.text+0x8): `Server::Server(unsigned int)' への未定義の参照
    ./main.o: 関数 `loop' 内:
    main.cpp:(.text+0x36): `Server::available()' への未定義の参照
    main.cpp:(.text+0x3c): `Client::operator bool()' への未定義の参照
    main.cpp:(.text+0x56): `Client::available()' への未定義の参照
    main.cpp:(.text+0x64): `Client::read()' への未定義の参照
    main.cpp:(.text+0xf6): `Client::connected()' への未定義の参照
    main.cpp:(.text+0x110): `Client::stop()' への未定義の参照
    ./main.o: 関数 `setup' 内:
    main.cpp:(.text+0x138): 「イーサネット」への未定義の参照
    main.cpp:(.text+0x13a): 「イーサネット」への未定義の参照
    main.cpp:(.text+0x144): 「EthernetClass::begin(unsigned char*, unsigned char*)」への未定義の参照
    main.cpp:(.text+0x14c): `Server::begin()' への未定義の参照

他に何をすべきかわかりません。誰かがこのようなことを試しましたか?

4

1 に答える 1

1

私はこれを理解しようとして一日中負けましたが、実際にはそれほど難しくないことがわかりました. 失われた時間は、一部の設定が make ファイルに「見えない」という事実によるものです。また、生成された Eclipse メイクファイルは、マニュアルを詳しく調べない限り、誰にとっても非常にわかりにくいものです。マニュアルを見たい場合は、ソリューション自体に:

短いバージョン: Arduino Core ライブラリのスタティック ライブラリ プロジェクトを作成し、ビルドします。

SPI、w5100、イーサネット用に個別のスタティック ライブラリ プロジェクトを作成する プロジェクトをビルドするには、いくつかの接続を確立する必要があります。最初に、次に説明するように、インクルード ディレクトリを正しく指すように設定します。次に、プロジェクト参照を正しく設定して、すべての適切な依存ビルドでアプリケーションをビルドできるようにします。

  • SPI -> arduino コアを含む
  • w5100 -> arduino コアと SPI を含む
  • イーサネット -> arduino コア SPI と w5100 を含む
  • アプリケーション自体 -> w5100 と Ethernet のみを含める (Ethernet - ライブラリのみを想定)
  • アプリケーション自体->プロジェクトのすべてのパスをライブラリパスとそれぞれのライブラリに追加します(libプレフィックスなし)

プロジェクトの名前変更は、ライブラリの設定とパスを通じて反映されないため、注意してください。欠落している詳細や破損している詳細を簡単に把握できるように、セットアップの健全性にも注意してください。

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

編集

Ethernetフォルダーをインポートして、ifから静的プロジェクトを作成しようとしました。奇妙な理由で(Eclipseの詳細がわからない)、Eclipseはユーティリティフォルダーに効果的に深く入り込まず、コンパイルしません。コンパイルされない場合、そのインクルード ファイルの静的ライブラリがないため、Ethernet をコンパイルしようとすると未定義の参照が発生します。また、静的ライブラリは avr eclipse プラグインを介してリンクすることはできず、実際にはそれで十分です。そのようなダイアログはありません。

また、私が説明できず、ほとんど頭がおかしくなった奇妙なエラーでは、メイクファイルのいくつかの魔法が、Eclipseが定義していないcc変数を介してコンパイラーを呼び出しました。make.exe CC=avr-g++ のように make に引数として変数を渡して問題を解決しました。私はそれを1つのプロジェクトだけで機能させるために一生懸命努力しましたが、静的ライブラリビルドでarduinoコアへの未定義の参照を与えてしまい、完全に石化しました. これはあなたの質問への回答の一部ではないことはわかっていますが、Eclipse を事実上の Arduino IDE にするプロセスのガイダンスを見つけるために、ここにとどまります。

PORTB と DDRB に関するエラーがどのように発生したかはわかりませんが、おそらくビルドに欠けていたものだと思います。私の場合のように、意味のないエラーレポートを吐き出すだけです。

レッスンは次のとおりです。個別のライブラリを静的ライブラリ プロジェクトと参照に分けて、最終的なアプリケーションのソースと静的ライブラリに含めます。

(補足: Arduino IDE は完全に禁止され、Eclipse または実際の IDE に移行する必要があります)

于 2011-09-24T18:35:41.903 に答える