SDK Eclipse AVR plug-in. С/С++

Итак, для тех, кто не считает, что  AVR - это штука подсчета тактов и умеет писать как на С, так и на С++, грамотно составляя проект: используя готовые библиотеки на С и С++, комбинируя эти два языка у себя в проекте несомненно крупно поможет эта "замечательная" SDK. Почему в кавычках? Потому, что как и ко всякому продукту здесь нужен подход. Поэтому, если вы горите желанием писать совместно АВР С, С++ проекты, то вам необходимо скачать эту прогу, дополнить ее плаг-ином, и соблюдать определенные правила составления проектов. Преимущества:
- кроссплатформенность
- огромное число поддерживаемых программаторов
- внешний компилятор, особенно удобно для WINAVR

Что делаем?
Пошагово:

1. Качаем и устанавливаем WinAVR
2. Качаем Eclipse IDE for C/C++ Developers под свою операционку. Инсталляции не требует. Просто распаковываем и выкладываем папку, ну скажем в корень диска С:. Получаем C:\eclipse. Запускаем eclipse.exe
3. Нам надо установить в eclipse плагин "AVR Eclipse Plugin".
Для этого в eclipse идем в меню "Help->Install New Software"

и добавляем новый сайт http://avr-eclipse.sourceforge.net/updatesite/ для закачки эклипсом плагинов.

После добавления ставим галки и жмем Next

Соглашаемся с лицензией :)))))))))))))))))))))))))))))))))))))))))))

Чихаем на варнинги

Делаем перезапуск

После этого, мы можем создать новый проект выбрав "AVR-GCC Toolchain"

И на следующем шаге выбрать нужный нам кристалл

Прошивка и отладка
Для того, чтобы иметь возможность прошивать АВРку прямо из эклипса, необходимо настроить утилиту AVRDude

Выбираем в меню "Project->Properties", открывается диалог, и далее в дереве AVR->AVRDude
Выбираем нужный вам девайс-программатор, коих уйма.

Имеем счастье.

Но, это все были пустяки, веселое начинается, когда вы строите С и С++ совместный проект и он даже компилится, но что-то тут не так, размер кода подсказывает где-то засела фигня, и в правду, при объявлении в функции main любой хэдерной функции, созданной вами, ее нет!

А проблема в следующем:
- Во-первых, будьте внимательны, при создании Хэдера, присваивайте ему С++ тип, чтобы линковка шла верно
- Далее, во всех хедерах объедините его содержимое директивой Extern "C" вот так например:
- Ваш main файл должен иметь расширение срр, если вы используете блоки кода С++ и хедеры к ним инклудите в main файле.

  /*
* configuration.h
*
* Created on: 26.12.2010
* Author: delphi
*/
 
#ifndef CONFIGURATION_H_
#define CONFIGURATION_H_
#ifdef __cplusplus
extern "C" {
#endif
#include
#include
#include
#include
#include "gpio.h"
int Initiate();
#ifdef __cplusplus
}
#endif
#endif /* CONFIGURATION_H_ */

Вот и все.

One Comment

  1. fonin:

    Кроме WinAVR, есть еще такой тулчейн AVR Libc. Ссылку давать не буду, чтоб не сочли спамом )

Leave a Reply

You must be logged in to post a comment.