Помогите настроить Eclipse

Тема в разделе "Arduino & Shields", создана пользователем Мерзкий Гуру, 6 апр 2017.

  1. Всем доброго дня.

    Пытаюсь настроить Eclipse вот по этой инструкции: https://geektimes.ru/post/255644/
    Дошел до настройки параметров проекта, п. 2.6 этой инструкции:
    2.6 Слева кликаем на Target Hardware. Справа видим кнопку «Load from MCU», нажимаем ее. MCU Type и частота должны изменится на подходящие к вашему микроконтроллеру.

    И ничего не получается - Eclipse говорит, что ответ avrdude не опознан.
    Расследование показало, что Eclipse зачем-то вызывает avrdude вот так:
    Launching /usr/bin/avrdude -carduino -P/dev/ttyACM0 -b115200 -px128a3
    и, естественно, avrdude ругается на несовпадение сигнатур:
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.00s
    avrdude: Device signature = 0x1e950f (probably m328p)
    avrdude: Expected signature for ATmega16 is 1E 94 03
    Double check chip, or use -F to override this check.
    avrdude done. Thank you.
    причем, флаг -px128a3 никак не убирается, вроде всё перерыл - не нашел как его убрать или изменить.
    Если из командной строки выдать /usr/bin/avrdude -carduino -P/dev/ttyACM0 -b115200 -pm328p,
    то всё отрабатывается нормально:
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.00s
    avrdude: Device signature = 0x1e950f (probably m328p)
    avrdude: safemode: Fuses OK (E:00, H:00, L:00)
    avrdude done. Thank you.

    Прошу подсказать, как настроить работу под Eclipse, куда копать?
     
  2. AlexU

    AlexU Гуру

    Лучше использовать сайт обновлений https://raw.githubusercontent.com/mnlipp/avr-eclipse-fork/updatesite/. Если не ошибаюсь основной разработчик забросил свой проект на Sourceforge.
    Eclipse вызывает с "левой" сигнатурой потому, что не знает с каким камнем имеет дело, поэтому берёт первую попавшуюся под руку сигнатуру. А в ответ надеется получить правильную и по ней определить, что за камень. Вот только avrdude не много изменил формат вывода, поэтому старая версия плагина AVR-Eclipse не может распарсить вывод и понять, что за камень. Вполне возможно версия с githab'а поможет решить проблему.
    Но если обновление не поможет, то установите вручную тип микроконтроллера и частоту. Я честно говоря не пользуюсь функционалом 'Load Form MCU', а устанавливаю вручную, поэтому не уверен, поможет обновление или нет.
     
    Мерзкий Гуру и arkadyf нравится это.
  3. Спасибо. Ссылочка что-то нерабочая, ну и ладно, буду копать дальше без обновлений.
     
  4. AlexU

    AlexU Гуру

    Ссылочка рабочая -- это сайт обновлений для Eclipse. В браузере открываться не будет. Я пробежался глазами по исходникам, вроде с этим обновлением проблема с функционалом 'Load from MCU' решена.
    В инструкции, которую Вы привели в стартовом топике, смотрите пункт 1.3 раздела "Установка софта". Только вместо указанного URL'а используйте тот, что сообщил в посте #2.
     
  5. Ага, разобрался, там надо было галку про категории убрать, чтобы пакеты увидеть.

    Теперь упёрся в fatal error: pins_arduino.h: No such file or directory
     
  6. AlexU

    AlexU Гуру

    Да, забыл сказать, что сайт обновлений от 'mnlipp' оформлен кривовато -- не заданы категории.
    Статья на geektimes старенькая, уже много воды утекло и Arduino IDE не стоит на месте.
    Если мне нужно в проекте использовать ардуиновские библиотеки (что большая редкость), то я просто копирую каталог 'arduino' из Arduino IDE в каталог проекта (см. <путь_к_Arduino_IDE>/hardware/arduino/avr/cores/arduino). В этот же подкаталог 'arduino' внутри проекта копирую файл 'pins_arduino.h'. Есть несколько версий этого файла под разные модели плат Arduino. Искать нужно в каталоге <путь_к_Arduino_IDE>/hardware/arduino/avr/variants/<имя_модели>. Для Arduino UNO -- <путь_к_Arduino_IDE>/hardware/arduino/avr/variants/standard. Затем в настройках проекта добавляю подкаталог 'arduino' из проекта в список инклюдов (аналогично пункту 4.5 в инструкции на geektimes в разделе "Настраиваем билд", только путь другой, и сделать это нужно как для C, так и для C++).
    Если Вы поступите так же, то раздел "Создаем библиотеку для Arduino Uno" и соответственно пункт 4.9 раздела "Настраиваем билд" выполнять не надо.

    PS: есть плагины для Eclipse специально под Arduino. В Eclipse Marketplace в строке поиска введите Arduino -- должны появиться варианты (Eclipse Oxygen выдаёт три варианта). Вот только не пробовал их, поэтому ничего сказать не могу.
     
    Мерзкий Гуру нравится это.
  7. Спасибо, какой-то из плагинов заработал. Пока даже не понял, какой, но работает. :)
     
  8. Stas0232

    Stas0232 Нерд

    Добрый день.
    Для настройки работы с мк в eclipse использовал эту статью, 4.1 - 4.8 из этой статьи (только не делал либы из core.a а подключил папку) и с адресом для скачки плагина avr из поста №2.
    AVR Eclipse Dubug Plugins не устанавливается.
    Но вопрос вообще в другом. Подключил и папку arduino, standart и также include(требовалось для компиляции). Но все равно выскакивают ошибки. А именно:
    Код (Text):
    .../arduino/avr/cores/arduino/hooks.c:31:6: error: ‘void yield()’ aliased to undefined symbol ‘__empty’
    Может кто скинуть подробную инструкцию, как настроить eclipse для работы с ардуино (и еще esp8266), только где все будет работать. Или может просто помогите исправить эту ошибку.
     
  9. AlexU

    AlexU Гуру

    Там зависимости к древним плагинам. Да и набор этих плагинов не развивается по причине их бесполезности -- в ATmega'ах отладка криво реализована.
    Вообще функция '__empty' должна быть объявлена в том же файле -- hook.c. Можете привести текст этого файла?
    Те инструкции, что привели вполне себе нормальные. Вообще сочинять такие инструкции -- дело не очень благодарное. Eclipse штука очень гибкая и каждый его может настроить под себя так, как ему это нравится. Та же поддержка AVR может быть добавлена несколькими разными способами.
     
  10. Stas0232

    Stas0232 Нерд

    Спасибо за ответ. Вроде как удалось настроить. по крайней мере бинарник компилит. Был косяк в пукте 4.4, где предложено поменять gcc на g++. Я то создавал проект не С а С++. И в томже каталоге Command для С++ и так стоит g++.
    Другой вопрос насчет настройки eclipse для работы с esp8266. Не подскажите как это сделать? Нашел статью по настройке, но там больше как я понял оформлено для Windows (прям бери скрипты и все само встанет). Но по инструкции для Linux не получилось пройти
    Код (Text):
    ./bootstrap && ./configure --prefix=`pwd` && make && make install
    на этом шаге не находит GNU libtool, хотя в системе установлен
     
  11. AlexU

    AlexU Гуру

    Сейчас нет времени дать развёрнутый ответ. Поэтому пара слов:
    1. Набор плагинов Eclipse CDT (C Development Tools) достаточен для разработки программ на языках C/C++. Что касается надстройки AVR Eclipse -- она полезна, но не обязательна. Нужен CDT и компилятор с бинарными утилитами. То же касается и платформы 'Xtensa' (ESP8266).
    2. По поводу статьи про настройку Eclipse для esp8266 -- глазами пробежался и не уверен, что она полезна, хотя может и ошибаюсь.
    3. Crostool-ng лучше брать из официального источника -- основной сайт crosstool-ng.github.io, Git репозиторий https://github.com/crosstool-ng/crosstool-ng
    4. Компилятор для Xtensia лучше брать из Git репозитория https://github.com/pfalcon/esp-open-sdk.git