Я потерял весь день, пытаясь понять это, и оказалось, что это на самом деле не так уж и сложно.Потеря времени связана с тем, что некоторые настройки «невидимы» для файла 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)