Использование arduino Ethernet.h под Eclipse - PullRequest
2 голосов
/ 15 сентября 2011

Я хочу использовать eclipse для разработки Arduino, и у меня есть некоторые проблемы.

Я использую Eclipse + Eclipse AVR plugin + WinAVR.Мне удалось скомпилировать базовую библиотеку Arduino в статическую библиотеку.

Теперь я хочу использовать свой сетевой экран, но не могу найти способ использовать библиотеку Ethernet с Eclipse.

  1. Скопировал папку из arduino-022/libraries/Ethernet и arduino-022/libraries/SPI в папку моего проекта, а затем я внес некоторые изменения в включения для работы.В результате появляются некоторые ошибки о DDRB и PORTB.

  2. Добавлены папки Ethernet и 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 Ответ

1 голос
/ 24 сентября 2011

Я потерял весь день, пытаясь понять это, и оказалось, что это на самом деле не так уж и сложно.Потеря времени связана с тем, что некоторые настройки «невидимы» для файла make.Также сгенерированные make-файлы eclipse довольно загадочны для всех, не вдаваясь в руководство.Если вы хотите взглянуть на руководство . К самому решению:

Краткая версия: Создайте статический библиотечный проект библиотеки Arduino Core и соберите его.

Создайте отдельный проект статической библиотеки для SPI, w5100 и Ethernet. Для создания проектов необходимо выполнить некоторые подключения.Сначала я установил правильные каталоги включения, которые я опишу далее.Во-вторых, я установил правильные ссылки на проект, чтобы можно было построить приложение со всеми правильными зависимыми сборками.

  • SPI -> включает ядро ​​arduino
  • w5100 -> включает ядро ​​arduino иSPI
  • Ethernet -> включает в себя ядро ​​Arduino SPI и w5100
  • Само приложение -> включает в себя только w5100 и Ethernet (при условии, что это просто Ethernet-библиотека)
  • Само приложение-> добавить все пути ваших проектов в пути к библиотекам и соответствующим библиотекам (без префикса lib)

Будьте осторожны с переименованиями проектов, поскольку они не распространяются через настройки и пути библиотек.Помните также о некоторой здравомыслии в вашей настройке, чтобы было легче отследить любую деталь, которая отсутствует и ломается.

Я постараюсь редактировать позже с более подробным объяснением, но это должно ответить на ваш вопрос

EDIT

Я попытался просто импортировать папку Ethernet и сделать статический проект из if.По какой-то странной причине (я не знаю подробностей об Eclipse) Eclipse не углубляется в папку утилит, фактически не компилируя ее.Если он не скомпилируется и, поскольку у вас нет статической библиотеки для включаемых файлов, вы получите неопределенные ссылки, пытаясь скомпилировать Ethernet.Также статические библиотеки не могут быть связаны через плагин avr eclipse, и этого на самом деле должно быть достаточно.Нет такого диалога.

Также в странной ошибке, которую я не могу объяснить и которая привела меня в бешенство, некоторое волшебство в файле make вызвало компилятор через переменную cc, которую Eclipse не определил.Проблема была решена путем передачи переменной в качестве аргумента для создания вроде make.exe CC = avr-g ++.Я изо всех сил старался заставить его работать только через один проект, и он просто дал мне неопределенные ссылки на ядро ​​arduino в сборке статической библиотеки, которая полностью окаменела.Я знаю, что это не является частью ответа на ваш вопрос, но любой должен найти руководство для процесса превращения Eclipse в де-факто Arduino IDE, о чем вы и просите.

Не знаюпонимаю, как вы получили ошибки, касающиеся PORTB и DDRB, но я думаю, что это, вероятно, чего-то не хватает в сборкеКак и в моем случае, он просто выдавал сообщения об ошибках, не относящихся к смыслу.

Урок: превращать отдельные библиотеки в проекты статических библиотек и ссылаться на них и включать их в исходные и статические библиотеки в окончательном приложении.

(Примечание: Arduino IDE должен быть полностью забанен и перенесен в Eclipse или какую-либо реальную IDE)

...