- Серія контенту:
- Цей контент є частиною серії: Розробка додатків для вбудованих пристроїв
- Комплект програм AVR-GCC
- Налаштування Eclipse для роботи з avr-gcc
- Ручна настройка
- Малюнок 1. Створення нового стандартного C / C ++ проекту
- Малюнок 3. Вибір типу проекту
- Малюнок 4. Вікно з настройками компілятора
- Використання модуля AVR Eclipse Plugin
- Установка AVR Plugin
- Малюнок 5. Установка модуля
- Малюнок 6. Довідка по AVR Plugin
- Малюнок 7. Вибір майстра нового проекту
- Малюнок 8. Вибір типу проекту
- Малюнок 10. Вибір процесора і його тактової частоти
- Малюнок 11. Налаштування автоматичного збереження
- Малюнок 12. Включення створення hex-файлів
- Малюнок 14. Включення кошти перегляду информации по процесору
- Малюнок 15. Вікно перегляду інформації по обраному процесору
- Налагодження за допомогою Eclipse
- Що потрібно для цього налаштувати в Eclipse
- Малюнок 16. Створення цілі налагодження
- Висновок
- Ресурси для скачування
Розробка додатків для вбудованих пристроїв
Серія контенту:
Цей контент є частиною # з серії # статей: Розробка додатків для вбудованих пристроїв
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. Створення нового стандартного C / C ++ проекту
- У вікні з майстрами настройки виберіть 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»).
- Перейдемо до налаштувань проекту: потрібно вибрати в списку папку проекту і відкрити вікно параметрів. Це можна зробити за допомогою меню «Проект-> Властивості», або натиснувши праву кнопку миші на папці і вибравши у спадному меню пункт «Властивості». Далі по шляху «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-файлу в процесор і перевірки записаних даних, в поле
- «Проект-> Властивості-> 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 і шляхом безпосереднього завантаження пакета і установки його вручну. Розглянемо по кроках перший варіант:
- Відкрийте діалог оновлень програмного забезпечення ( «Довідка> Software Updates ...»).
- Виберіть вкладку «Available Software», натисніть кнопку «Add Site ...», розташовану праворуч, і введіть адресу сайту оновлень: http://avr-eclipse.sourceforge.net/updatesite/ (EN)
- Потім натисніть OK. Тепер адреса цього сайту буде видно в списку сайтів оновлень. Виберіть "AVR Eclipse Plugin" і натисніть кнопку «Install ...» у верхньому правому куті (малюнок 5).
Малюнок 5. Установка модуля
- Через деякий час модуль встановиться і вам буде запропоновано перезапустити 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-проект, необхідно зробити наступні кроки:
- Виберіть в меню «Файл-> Створити-> Проект».
- У вікні виберіть, який проект ви збираєтеся створити. Наприклад, розгорніть папку «C ++», виберіть «З ++ Project» і натисніть кнопку «Далі>» (малюнок 7).
Малюнок 7. Вибір майстра нового проекту
Відкриється вікно вибору типу проекту. AVR Plugin пропонує два варіанти:
- «AVR Cross Target Application» - для створення додатка, яке може бути завантажене в AVR-процесор;
- «AVR Cross Target Static Library» - для створення бібліотек часто використовуваних функцій, які потім можна скомпонувати з програмами.
- Виберіть «AVR Cross Target Application> Empty Project» і введіть ім'я проекту. Натисніть кнопку «Далі>» (рисунок 8).
Малюнок 8. Вибір типу проекту
- Тепер можна вибрати автоматично створювані конфігурації збірки, які дозволяють збирати проект з одних і тих самих вихідних файлів, але з різними параметрами і настройками. За замовчуванням пропонуються два набору налаштувань:
- «Debug» - настройки ґрунтуються на припущенні, що належить налагодження додатка;
- «Release» - з цими настройками відразу створюються hex-файли, які можна завантажити в реальний процесор (малюнок 9).
Малюнок 9. Вибір конфігурацій збірки
Якщо скористатися кнопкою «Advanced settings ...», то можна перейти до створення додаткових конфігурацій збірки (наприклад, з використанням іншого процесора), але все це можна зробити і пізніше, коли проект вже створений.
- Натисніть «Далі>», і з'явиться вікно вибору типу процесора і його тактової частоти. Тип процесора потім буде підставлятися в параметри компілятора і компонувальника, а така частота використовується тільки для визначення змінної F_CPU, яка може бути використана в додатку (рисунок 10).
Малюнок 10. Вибір процесора і його тактової частоти
- Натисніть «Готово».
Ваш новий проект з'явиться в списку проектів на вкладці C / C ++ Projects, а також в навігаторі. Переглянути та змінити його настройки можна, натиснувши праву кнопку миші в списку проектів і вибравши «Властивості» з меню, що випадає.
Проект вийшов порожній, тому що жодного файлу в нього ще не додано. Щоб створити новий файл, виконайте наступні операції:
- У вікні перегляду проектів натисніть праву кнопку миші на папці test і виберіть у спадному меню «New-> Source File». Можна піти по шляху «New-> File from Template»; тоді, в відповідно до стандартних шаблонів, в початок файлу додасться назва файлу, дата його створення, а також ім'я користувача.
- В поле «Source File» напишіть ім'я файлу: main.cpp.
- Натисніть кнопку «Готово».
- Тепер можна написати текст програми, наприклад, такий:
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/?