Статьи

Розробка додатків для вбудованих пристроїв: Частина 1.Прімененіе Eclipse для розробки AVR-додатків

  1. Серія контенту:
  2. Цей контент є частиною серії: Розробка додатків для вбудованих пристроїв
  3. Комплект програм AVR-GCC
  4. Налаштування Eclipse для роботи з avr-gcc
  5. Ручна настройка
  6. Малюнок 1. Створення нового стандартного C / C ++ проекту
  7. Малюнок 3. Вибір типу проекту
  8. Малюнок 4. Вікно з настройками компілятора
  9. Використання модуля AVR Eclipse Plugin
  10. Установка AVR Plugin
  11. Малюнок 5. Установка модуля
  12. Малюнок 6. Довідка по AVR Plugin
  13. Малюнок 7. Вибір майстра нового проекту
  14. Малюнок 8. Вибір типу проекту
  15. Малюнок 10. Вибір процесора і його тактової частоти
  16. Малюнок 11. Налаштування автоматичного збереження
  17. Малюнок 12. Включення створення hex-файлів
  18. Малюнок 14. Включення кошти перегляду информации по процесору
  19. Малюнок 15. Вікно перегляду інформації по обраному процесору
  20. Налагодження за допомогою Eclipse
  21. Що потрібно для цього налаштувати в Eclipse
  22. Малюнок 16. Створення цілі налагодження
  23. Висновок
  24. Ресурси для скачування

Розробка додатків для вбудованих пристроїв

Серія контенту:

Цей контент є частиною # з серії # статей: Розробка додатків для вбудованих пристроїв

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Розробка додатків для вбудованих пристроїв

Слідкуйте за виходом нових статей цієї серії.

Eclipse (EN) - інтегроване середовище розробки (IDE) для створення кроссплатформенних додатків, що спочатку була призначена для розробки Java-додатків. Однак завдяки розвиненій підтримці модулів сфера її застосування стала значно ширше. Додавання модуля C / C ++ Development Tools (CDT) перетворило Eclipse в повнофункціональну середу розробки програм на С / С ++. Eclipse (EN) надає безліч можливостей, в тому числі: підтримка створення проектів та керована збірка для різних компіляторів, навігація по вихідним текстам, перегляд ієрархії типів, перегляд заголовків файлів, перегляд макроозначень, текстовий редактор з підсвічуванням синтаксису і завершенням коду, а також інші функції .

Крім того, в ній передбачена підтримка систем управління версіями (наприклад, є модулі для Subversion і Git).

Eclipse входить до складу всіх основних систем Linux, тому інсталюється за допомогою засобів управління пакетами. Крім середовища розробки, нам буде потрібно модуль CDT.

При необхідності Eclipse і CDT можна завантажити з сайту проекту (EN) і встановити їх в системі відповідно до наявних інструкціями. Для роботи Eclipse також буде потрібно інсталювати середовище виконання Java (наприклад, звідси (EN)).

Комплект програм AVR-GCC

До складу репозиторіїв багатьох дистрибутивів GNU / Linux входить комплект програм AVR-GCC. Хоча користувачі можуть зібрати його самостійно, справа ця досить трудомістка, оскільки кожен з вхідних в комплект пакетів містить виправлення, внесені різними розробниками і з різних приводів. Ці модифікації нечасто потрапляють в древо вихідних текстів проекту і підлягає блукають у вигляді сторонніх «латок», призначення яких не завжди зрозуміло.

Основу комплекту розробника додатків для сімейства мікроконтролерів AVR фірми Atmel складають програми avr-binutils, avr-gcc і avr-libc. Їх можна доповнити утилітами з супутніх проектів для внутрисхемного програмування (uisp, avrdude), моделювання процесора (simulavr) і налагодження (avr-gdb і avarice).

Короткий опис програм:

avr-gcc Компілятор і асемблер avr-binutils Компоновщик і кілька корисних інструментів avr-libc Стандартна бібліотека C, призначена для спільного використання з GCC на мікроконтролерах Atmel AVR avr-gdb Отладчик для AVR uisp Утиліта для завантаження програм в процесори AVR і зчитування з них avrdude утиліта, багато в чому аналогічна uisp. avarice Засіб сполучення avr-gdb з пристроєм AVR JTAG ICE

Для створення AVR-додатків необхідно встановити хоча б перші три пакети з цієї таблиці.

Налаштування Eclipse для роботи з avr-gcc

Якщо ви хочете використовувати Eclipse для розробки avr-додатків, то можна піти двома різними шляхами. Перший спосіб - ручне налаштування проекту. При такому підході в стандартному проекті C / C ++ параметри для виклику GCC замінюються настройками для AVR-GCC. Другий шлях - використання готового модуля розширення, спеціально призначеного для розробки AVR-проектів в середовищі Eclipse. У статті ми розглянемо обидва варіанти.

Ручна настройка

Переваги ручного налаштування проекту C / C ++ для роботи з AVR в Eclipse очевидні - незалежність від сторонніх модулів дозволяє настроїти встановлені на будь-якій платформі Eclipse і CDT для роботи з AVR-додатком (аби для цього середовища був набір програм AVR-GCC). Більш того, знання необхідних команд і параметрів дає можливість зібрати додаток навіть при відсутності IDE в системі.

Недолік також очевидний - потрібно пам'ятати всі параметри налаштування і затратити деякий час на підготовку при створенні нового проекту.

Розглянемо ручну настройку по кроках (тут і далі використовуються знімки екрана, зроблені на русифікованої версії Eclipse, пакет для локалізації входить до складу Eclipse починаючи з версії 3.1.1).

  1. Створіть стандартний З або С ++ проект. Для цього виберіть в меню Файл> Створити> Проект (рисунок 1).
    Малюнок 1. Створення нового стандартного C / C ++ проекту
    Розробка додатків для вбудованих пристроїв   Серія контенту:   Цей контент є частиною # з серії # статей: Розробка додатків для вбудованих пристроїв   https://www
  2. У вікні з майстрами настройки виберіть C або C ++ в залежності від використовуваного в проекті мови і розкрийте обрану папку. Потім потрібно вибрати «C ++ Project» (або «З Project») і натиснути кнопку «Далі>» (малюнок 2).
    Малюнок 2. Вибір майстра проекту

    У колишніх версіях CDT було два окремих типу проекту: «Managed make» (makefile створюється автоматично) і «Standard make» (для збірки було потрібно надати власний makefile). Починаючи з версії CDT 4.0 вибір типу проекту визначає, яка система збирання буде використовуватися.

    В поле «Project name» введіть ім'я проекту (наприклад, «test»), в поле «Project type» виберіть тип «Executable», «Empty Project» і натисніть кнопку «Готово» (малюнок 3).

    Малюнок 3. Вибір типу проекту

    Це призведе до створення порожнього (без вихідних файлів) проекту з двома стандартними конфігураціями збірки «Debug» і «Release», причому активної конфігурацією за умовчанням є «Debug». Якщо замість кнопки «Готово» натиснути кнопку «Далі>», то у вікні, можна відключити непотрібну конфігурацію збірки (наприклад, «Debug»).

  3. Перейдемо до налаштувань проекту: потрібно вибрати в списку папку проекту і відкрити вікно параметрів. Це можна зробити за допомогою меню «Проект-> Властивості», або натиснувши праву кнопку миші на папці і вибравши у спадному меню пункт «Властивості». Далі по шляху «C / C ++ Build-> Settings», вкладка «Tool Settings», переходимо до налаштувань компілятора і компонувальника (рисунок 4).
    Малюнок 4. Вікно з настройками компілятора

    Розділ «GCC C ++ Compiler».

    В поле «Command» замість gcc необхідно вписати avr-g ++ -mmcu = atmega128 (тут потрібно вказати процесор з наведеного в документації на avr-libcі (EN) списку).

    «Directories»: в полі «Include Paths» потрібно ввести шлях до заголовним файлів, / usr / avr / include (якщо використовується відмінна від загальноприйнятої збірка avr-libc, то шлях може бути іншим).

    Розділи «Debugging» і «Optimization» вже містять прийнятні параметри в залежності від обраної конфігурації збірки ( «Debug» або «Release»). Якщо потрібен, наприклад, прапор оптимізації «-Os», то його можна вписати в поле «Other optimization flags».

    Якщо в проекті використовується не С ++, а просто С, то потрібно аналогічним чином заповнити гілку «GCC C Compilator» за винятком поля «Command», куди потрібно вписати avr-gcc -mmcu = atmega128 (тип процесора вказано для прикладу).

    Розділ «GCC-C-Linker».

    В поле «Command»: gcc міняємо на avr-gcc -mmcu = atmega128.

    «Libraries»: тут в поле «Library Search Path» необхідно вписати / usr / avr (цей шлях теж може відрізнятися в деяких збірках).

    «Miscellaneous»: в полі «Linker Flags» пишемо -Wl, -Map, test.map (test - ім'я проекту). Це дає нам можливість отримати карту пам'яті.

    Розділ «GCC Assembler».

    В поле «Command»: as міняємо на avr-as -mmcu = atmega128.

    Налаштування індексування можна залишити стандартні.

    Для отримання додатки в форматі Intel-hex, придатному для завантаження в avr-пристрій, потрібно перейти на вкладку «Build steps» і вписати в поле «Post-build steps», «Command» таку команду:

    avr-objcopy -j .text -j .data -O ihex test.elf test.hex

    Для отримання дізассемблерного лістингу можна додати в це поле через крапку з комою ще одну корисну команду:

    avr-objdump -h -S test.elf> test.lss

    Якщо в проекті використовується ініціалізація змінних, що зберігаються в eeprom, то потрібно додати ще одну команду:

    avr-objcopy -j .eeprom --change-section-lma .eeprom = 0 -O ihex test.elf test.eep

    Всі команди для зручності (якщо це комусь дійсно здається зручним) можна записати в окремий скрипт, наприклад, так:

    #! / Bin / sh avr-objcopy -j .text -j .data -O ihex test.elf test.hex avr-objdump -h -S test.elf> test.lss # avr-objcopy -j .eeprom - change-section-lma .eeprom = 0 -O ihex test.elf test.eep

    і замість довгого переліку вписати в поле «Post-build steps», «Command» тільки ім'я цього скрипта.

    При наявності вибору програм можна налаштувати завантаження отриманого hex-файлу в AVR-пристрій. Це робиться в такий спосіб:

    «Проект-> Властивості-> C / C ++ Build-> Build Steps-> Pre-Build-Step-> Command» - тут потрібно вписати команду:

    uisp -dprog = stk200 -dserial = / dev / ttyS0 -dpart = atmega128 -erase,

    де stk200 - тип використовуваного программматора, / dev / ttyS0 - послідовний порт, до якого він підключений, atmega128 - тип процесора. Наведена команда стирає пам'ять процесора.

    Для завантаження hex-файлу в процесор і перевірки записаних даних, в поле

  4. «Проект-> Властивості-> C / C ++ Build-> Build Steps-> Post-build steps-> Command» вносимо команду: uisp -dprog = stk200 -dserial = / dev / ttyS0 -dpart = atmega128 --upload if = test .hex -verify

Використання модуля AVR Eclipse Plugin

Як вже говорилося, основний недолік ручної настройки Eclipse CDT для AVR-проектів полягає в тому, що потрібно пам'ятати безліч параметрів і при створенні нового проекту витрачати деякий час на підготовку.

Ці проблеми легко вирішуються за допомогою модуля AVR Eclipse Plugin. Він спрощує і прискорює підготовку проекту до розробки, оскільки містить добре продумані параметри налаштування. Нижче наведено перелік основних переваг AVR Eclipse Plugin:

  • вибір цільового процесора зі списку;
  • створення hex-файлів для завантаження в AVR-процесор;
  • спеціальний засіб перегляду інформації по обраному AVR-процесору;
  • зручний редактор спеціальних бітів процесора;
  • підтримка avrdude для завантаження програми в цільової процесор.

Крім того, немає необхідності вручну редагувати параметри команд для збірки проекту.

Модуль пройшов досить довгий шлях розвитку. Томас Холланд (Thomas Holland) написав першу версію AVR Eclipse Plugin в середині 2007 року, намагаючись удосконалити модуль Пітера Вінтера (Peter Winter), який був вперше опублікований влітку 2005 року.

За такий великий час AVR Eclipse Plugin увібрав в себе безліч пропозицій і зауважень від використовували його розробників, тому тепер він може вважатися зрілим продуктом.

Основний його недолік - можливе невідповідність версії AVR Eclipse Plugin версіями встановлених Eclipse і CDT. При оновленні Eclipse або CDT може виникнути ситуація, коли AVR Plugin перестане працювати. Крім того, іноді потрібно продовжити роботу над існуючим проектом в іншій системі, де в Eclipse не встановлено використовуваний AVR Plugin. Тоді при відкритті проекту виникнуть дивні повідомлення про помилки, джерело яких не цілком очевидна.

Ще один недолік є наслідком достоїнств AVR Plugin - користуючись ним, розробник втрачає навички роботи з комплектом AVR-GCC, і в результаті повністю залежить від модуля.

Установка AVR Plugin

Інсталяцію модуля можна зробити двома способами: через систему оновлень програмного забезпечення Eclipse і шляхом безпосереднього завантаження пакета і установки його вручну. Розглянемо по кроках перший варіант:

  1. Відкрийте діалог оновлень програмного забезпечення ( «Довідка> Software Updates ...»).
  2. Виберіть вкладку «Available Software», натисніть кнопку «Add Site ...», розташовану праворуч, і введіть адресу сайту оновлень: http://avr-eclipse.sourceforge.net/updatesite/ (EN)
  3. Потім натисніть OK. Тепер адреса цього сайту буде видно в списку сайтів оновлень. Виберіть "AVR Eclipse Plugin" і натисніть кнопку «Install ...» у верхньому правому куті (малюнок 5).
    Малюнок 5. Установка модуля
  4. Через деякий час модуль встановиться і вам буде запропоновано перезапустити Eclipse.

Якщо ви не хочете використовувати кошти поновлення Eclipse, то можна безпосередньо завантажити модуль з sourceforge і встановити його самостійно.

Для цього треба зайти на сторінку завантажень і скачайте останню версію пакета.

Потім розпакуйте отриманий файл в свій домашній каталог ~ / .eclipse (зверніть увагу, що для кожної версії Eclipse там створюється свій підкаталог) або в загальносистемний (наприклад, / usr / share / eclipse, будуть потрібні права root) і перезапустіть Eclipse.

Якщо установка пройшла успішно, то в «Довідка> Зміст довідки» можна побачити документ «Avr Plugin», а в майстра проектів "New C Project" і "New C ++ Project" з'являться записи «AVR Cross Target Application» і «AVR Cross Target Static Library »(малюнок 6).

Малюнок 6. Довідка по AVR Plugin

Для того щоб створити новий AVR-проект, необхідно зробити наступні кроки:

  1. Виберіть в меню «Файл-> Створити-> Проект».
  2. У вікні виберіть, який проект ви збираєтеся створити. Наприклад, розгорніть папку «C ++», виберіть «З ++ Project» і натисніть кнопку «Далі>» (малюнок 7).
    Малюнок 7. Вибір майстра нового проекту

    Відкриється вікно вибору типу проекту. AVR Plugin пропонує два варіанти:

    • «AVR Cross Target Application» - для створення додатка, яке може бути завантажене в AVR-процесор;
    • «AVR Cross Target Static Library» - для створення бібліотек часто використовуваних функцій, які потім можна скомпонувати з програмами.
  3. Виберіть «AVR Cross Target Application> Empty Project» і введіть ім'я проекту. Натисніть кнопку «Далі>» (рисунок 8).
    Малюнок 8. Вибір типу проекту
  4. Тепер можна вибрати автоматично створювані конфігурації збірки, які дозволяють збирати проект з одних і тих самих вихідних файлів, але з різними параметрами і настройками. За замовчуванням пропонуються два набору налаштувань:
    • «Debug» - настройки ґрунтуються на припущенні, що належить налагодження додатка;
    • «Release» - з цими настройками відразу створюються hex-файли, які можна завантажити в реальний процесор (малюнок 9).
    Малюнок 9. Вибір конфігурацій збірки

    Якщо скористатися кнопкою «Advanced settings ...», то можна перейти до створення додаткових конфігурацій збірки (наприклад, з використанням іншого процесора), але все це можна зробити і пізніше, коли проект вже створений.

  5. Натисніть «Далі>», і з'явиться вікно вибору типу процесора і його тактової частоти. Тип процесора потім буде підставлятися в параметри компілятора і компонувальника, а така частота використовується тільки для визначення змінної F_CPU, яка може бути використана в додатку (рисунок 10).
    Малюнок 10. Вибір процесора і його тактової частоти
  6. Натисніть «Готово».

    Ваш новий проект з'явиться в списку проектів на вкладці C / C ++ Projects, а також в навігаторі. Переглянути та змінити його настройки можна, натиснувши праву кнопку миші в списку проектів і вибравши «Властивості» з меню, що випадає.

Проект вийшов порожній, тому що жодного файлу в нього ще не додано. Щоб створити новий файл, виконайте наступні операції:

  1. У вікні перегляду проектів натисніть праву кнопку миші на папці test і виберіть у спадному меню «New-> Source File». Можна піти по шляху «New-> File from Template»; тоді, в відповідно до стандартних шаблонів, в початок файлу додасться назва файлу, дата його створення, а також ім'я користувача.
  2. В поле «Source File» напишіть ім'я файлу: main.cpp.
  3. Натисніть кнопку «Готово».
  4. Тепер можна написати текст програми, наприклад, такий:

int main (void) {const int some_size = 1000; while (true) {for (int i = 0; i <some_size; i ++) int a = 3; // будь-яка дія} return 0; // ніколи не дійде сюди}

Тепер, коли створено проект і в ньому є С ++ програма, можна цей проект зібрати. Зверніть увагу на параметр «Проект-> Автоматична компоновка». Якщо він включений, то при збереженні будь-якого файлу буде проведена збірка проекту. Для великих проектів цей параметр краще відключити, щоб не чекати занадто довго завершення збирання після кожного збереження. В такому випадку розумно буде зробити, щоб Eclipse автоматично зберігала всі відкриті файли. Для цього потрібно відкрити настройки ( «вікно-> Параметри ...») і перейти до вкладки «Загальні-> Робоча область», потім можна включити параметр «Автоматично зберігати перед компонуванням» (рисунок 11).

Малюнок 11. Налаштування автоматичного збереження

Проект буде зібраний з використанням конфігурації збірки Debug, тому що вона є активною за замовчуванням. Журнал процесу складання виводиться у вікно Console (в нижній частині вікна Eclipse):

**** Build of configuration Debug for project test **** make all Building file: ../main.cpp Invoking: AVR C ++ Compiler avr-g ++ -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu = atmega128 -DF_CPU = 11059200UL -MMD -MP -MF "main.d" -MT "main.d" -c -o "main.o" ".. /main.cpp "../main.cpp: In function 'int main ()': ../main.cpp:8: warning: unused variable 'a' Finished building: ../main.cpp Building target: test .elf Invoking: AVR C ++ Linker avr-g ++ -Wl, -Map, test.map, - cref -mmcu = atmega128 -o "test.elf" ./main.o Finished building target: test.elf Invoking: AVR Create Extended Listing avr-objdump -h -S test.elf> "test.lss" Finished building: test.lss Invoking: Print Size avr-size --format = berkeley -t test.elf text data bss dec hex filename 272 0 0 272 110 test.elf 272 0 0 272 110 (TOTALS) Finished building: sizedummy **** Build of configuration Release for project test ****

Ще трохи про функціональність AVR Plugin.

У властивостях проекту ( «Проект-> Властивості-> C / C ++ Build-> Settings») є розділ «Additional Tools in Toolchain», в якому можна ввімкнути установку «Generate HEX file for Flash memory» (створення прошивки для пам'яті програм процесора) і «Generate HEX file for EEPROM» (створення прошивки для незалежної пам'яті даних). У конфігурації збірки Release ці параметри включені (рисунок 12).

Малюнок 12. Включення створення hex-файлів
Малюнок 13. Параметри avrdude

AVR Plugin може працювати з безліччю программаторов, для цього використовується утиліта avrdude. У розділі налаштувань «Проект-> Властивості-> AVR-> AVRDude» є можливість вибору типу програматора і режиму його роботи. Крім того, тут налаштовується прошивка бітів безпеки і конфігураційних бітів. Якщо програматор налаштований, то зібрану програму з Eclipse можна завантажити в процесор, для чого в головному меню є пункт: «AVR-> Upload Project to Target Device».

Малюнок 14. Включення кошти перегляду информации по процесору

AVR Plugin надає Спеціальний засіб перегляду информации по обраних AVR-процесору. Вона будується на основе відповідного заголовки, тому в Деяк випадка может віявітіся неповна. І все-таки, коли нужно оперативно дізнатіся правильна назва которого-небудь регістра або вектора переривані, ця інформація буде корисна. Щоб Відкрити вікно перегляду, віберіть «вікно-> Показати панель-> Інші ...», Знайдіть «AVR», віберіть «AVR Device Explorer» и натісніть OK. Вікно з'явиться в нижній частині екрана (рисунок 15).

Малюнок 15. Вікно перегляду інформації по обраному процесору

Докладну інструкцію по роботі з AVR Plugin можна знайти в документації, яка знаходиться в довідковій системі Eclipse: «Довідка-> Зміст справки-> AVR Plugin».

Налагодження за допомогою Eclipse

Налагодження AVR-програм в Eclipse можна виробляти з використанням як avarice, так і simulavr, при цьому перша утиліта призначена для внутрішньосхемною налагодження, а друга служить для моделювання процесора. Власне отладчиком є ​​avr-gdb, він зв'язується з avarice або simulavr через TCP-сокети за допомогою спеціального послідовного протоколу gdb. Цей протокол дає можливість avr-gdb посилати команди типу «встановити / видалити точку зупинки» і «читати / записати пам'ять».

Avarice перетворює команди в протокол Atmel, який використовується для управління пристроєм AVR JTAG ICE, підключеним до послідовного порту, яке і забезпечує внутрісхемний налагодження мікроконтролера AVR Atmel.

Оскільки avr-gdb і avarice спілкуються між собою через TCP-сокети, вони можуть бути запущені на різних комп'ютерах, що підвищує зручність процесу налагодження.

Запуск simulavr:

simulavr -g -p 1212 -d atmega128 -P simulavr-disp

Запуск avarice:

avarice -j / dev / ttyS0 -P atmega128: 1212

Обидві утиліти працюють як сервери, котрі слухають порт 1212 і виконують команди налагодження.

Що потрібно для цього налаштувати в Eclipse

Необхідно створити нову мету налагодження, для чого потрібно перейти в властивості проекту «Проект-> Властивості-> Run / Debug Settings» і натиснути кнопку «New» (рисунок 16).

Малюнок 16. Створення цілі налагодження

Далі слід вибрати «C / C ++ Local application» і внести наступні зміни в налаштування:

  • на вкладці «Debugger»;
  • в поле «Debugger» вибрати «gdbserver Debugger»;
  • в поле «Main-> GDB debugger» вказати шлях до avr-gdb (/ usr / bin / avr-gdb);
  • включити «Verbose console mode»;
  • вкладка «Connection»: TCP, localhost, port 1212 (див. виклик simulavr / avarice).

У разі роботи з simulavr необхідно передбачити можливість завантаження скомпільованої elf-файлу в avr-gdb, а вже з avr-gdb він буде завантажений в simulavr. Це робиться за допомогою файлу .gdbinit, розташованого в каталозі проекту. Файл повинен містити наступні команди:

file link.elf targ rem: 1212 load

Висновок

Ми дізналися, як можна швидко почати розробляти AVR-додатки в зручною і багатофункціональною кроссплатформенной середовищі Eclipse. Однак програмування мікроконтролерів Atmel AVR занадто широка тема, щоб її можна було вмістити в вузькі рамки однієї статті. Надалі ми ще будемо повертатися до цієї теми, а також розповідати про середовище розробки Eclipse.

Ресурси для скачування

Схожі тими

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Com/developerworks/ru/library/?

Новости