Лабораторна робота№1
ЗАСОБИ КОМПІЛЯЦІЇ ТА РОЗРОБКИ ПРОГРАМ ДЛЯ МІКРОКОНТРОЛЕРІВ AVR
Мета роботи: ознайомитись із основними складовими частинами програм WinAVR та AVR Studio для створення, побудови та тестування проекту на мікроконтролерах фірми Atmel, вивчити їх можливості та взаємодію.
Теоретичні відомості
Розробка і компіляція програм в Programmer's Notepad
Перш за все розглянемо основний інструмент створення програм на мові С для мікроконтролерів AVR, який буде використовуватись в даній лабораторній роботі – програму Programmer's Notepad, що входить до складу пакета WinAVR.
Programmer's Notepad можна запустити за допомогою ярлика на Робочому столі Windows, що з’являється, як правило, після встановлення компілятора WinAVR, або запустити її через панель "Запустити" (Запустити > Усі програми > WinAVR > Programmer's Notepad) чи знайти у відповідній директорії диску C:\ (як правило c:\ WinAVR \ pn \ pn.exe).
Інтерфейс програми досить простий і зрозумілий. Programmer's Notepad містить майже всі пункти меню, стандартні для більшості програм Windows (File, Edit, View, Window, Help), тому на них зупинятись не будемо, а розглянемо тільки специфічне для даної програми меню Tools. Вікно програми при першому запуску зображене на рисунку 1.1.
/
Рисунок 1.1 – Інтерфейс програми Programmer's Notepad
Саме через меню Tools активуються зовнішні засоби компіляції і синтаксичного аналізу (за умови, що в середовищі розробки відкритий файл з вихідним кодом).
Для додавання в зазначене меню команди для створення файлів, що використовуються при симуляції в середовищі AVR Studio, необхідно вибрати Tools > Options і в діалоговому вікні Options, яке з’явиться на екрані, вибрати категорію параметрів Tools (рисунок 1.2)
Для додавання нового елемента в список необхідно натиснути Add і встановити у вікні, що з’явиться на екрані, зазначені нижче параметри (рисунок 1.3).
/
Рисунок 1.2 – Зовнішній вигляд діалогового вікна Options
/ /
Рисунок 1.3 – Додавання засобу створення файлів COFF для симуляції програм в AVR Studio
Розглянемо основні параметри діалогового вікна Edit Tool, зображеного на рисунку 1.3:
Name: [WinAVR] Make Extcoff – назва засобу;
Command: make.exe – компіляція і зборка програми здійснюється за допомогою засобу make.exe, розташованого в директорії \ WinAVR \ Utils \ bin, з використанням параметрів компіляції, вказаних в файлі makefile;
Folder: %d – означає, що отримані файли розміщуються в тій же директорії, що і вихідні;
Parameters: extcoff – параметр, що передається в файл make.exe; можливі такі варіанти параметрів:
all – на виході отримуємо файли для завантаження в мікроконтролер;
clean – видалення усіх отриманих файлів;
coff – перетворення файлів з формату ELF (Executable and Linkable Format) в AVR COFF (Common Object File Format) для використання в середовищі AVR Studio 3.x або VMLAB;
extcoff – перетворення файлів з формату ELF в розширений формат AVR Extended COFF для використання в середовищі AVR Studio 4.x та наступних версій;
program – завантаження HEX-файлу в мікроконтролер за допомогою спеціальної програми avrdude.exe, що входить в пакет WinAVR;
debug – використовується для ладнання програм;
filename.s – тільки компіляція файлу filename.c в код асемблера;
filename.i – створення заздалегідь обробленого початкового файлу, що використовується для набору компіляторів GCC (GNU Compiler Collection)
Save: Current File – автоматичне збереження при компіляції тільки поточного файлу з вихідним кодом;
Output: Use the main output window – використання для виведення повідомлень про хід і результати компіляції спільного а не індивідуального вікна;
Clear output before running? – цю мітку краще прибрати, щоб вміст вікна Output не видалявся перед черговим викликом засобу.
Після завершення налаштування параметрів необхідно натиснути Ok в вікні Edit Tool, а потім – в вікні Options, щоб зберегти зміни в списку підключених засобів.
Процес компіляції в Programmer's Notepad розглянемо на прикладі програми, яка створює ефект сигналу SOS за допомогою світло індикаторного табло, що підключається до мікроконтролера AVR.
Для створення нового об’єкту (програми) необхідно вибрати File > New та вибрити з випадаючого списку потрібну мову програмування (наприклад С або Assembler). Після чого можна вводити текст програми.
Потім необхідно зберегти створений файл, для чого вибираємо File > Save та зберігаємо файл в окремій директорії з іменем LR1.c.
Для того щоб відкрити вже існуючий файл використовують комбінацію File > Open та вибирають в провіднику необхідний файл.
Безпосередньо перед компіляцією програми необхідно скопіювати makefile в директорію з файлом LR1.c та переглянути його вміст. В цьому файлі зміні підлягають такі параметри:
MCU – тип мікроконтролера, для якого будуть створюватись файли після компіляції;
FORMAT – формат вихідного файлу (може приймати значення srec, ihex, binary);
TARGET – назва вихідного файлу (розширення не зазначається).
Якщо необхідно скомпілювати файл для мікроконтролера ATMEGA 169 в форматі ihex, то відповідний фрагмент файлу makefile має бути записаний так:
# MCU name
MCU = atmega169
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
# Target file name (without extension).
TARGET = LR1
Після зробленого можна здійснювати компіляцію файлу LR1.c за допомогою меню Tools. Для цього вибираємо Tools > [WinAVR] Make All
У вікні Output можна побачити інформацію про помилки в програмі. Компіляція здійснюється командами: Tools > [WinAVR] Make All. Якщо у вікні Output в нижній частині Programmer's Notepad не з’явилось повідомлення про помилки, це свідчить про те, що компіляція пройшла успішно і можна переходити до створення файлів для симулятора AVR Studio. Для цього вибираємо Tools > [WinAVR] Make Extcoff. В результаті в директорії з файлом LR1.c має з’явитись файл LR1.cof.
Симуляція і ладнання програм в середовищі AVR Studio
Для запуску AVR Studio необхідно зробити подвійне натискання (подвійний "клик") на піктограму програми на робочому столі або вибрати Запустити > Усі програми > Atmel AVR Tools > AvrStudio4 чи запустити відповідний файл на диску C:\ (c:\ Program Files \ Atmel \ AVR Tools \ AvrStudio4 \ AVRStudio.exe) Після чого на екрані з'явиться вікно, зображене на рисунку 1.4.
/
Рисунок 1.4 – Вікно привітання AVR Studio
Можна створити новий проект вибравши в меню Project пункт New Project або натиснувши відповідну кнопку діалогового вікна, зображеного на рисунку 1.4. Оскільки ми вже маємо файл LR1.cof, створений в Programmer's Notepad, скористаємось ним. Натискаємо Open та вибираємо відповідний файл. В результаті буде запропоновано вибрати тип симулятора та мікроконтролер (рисунок 1.5). В нашому випадку вибираємо AVR Simulator та мікроконтролер ATMEGA 169.
/
Рисунок 1.5 – Вибір симулятора і типу мікрокрнтролера
Далі розглянемо основні елементи середовища AVR Studio. Основне його вікно виглядає так:
/
Рисунок 1.6 – Вікно AVR Studio з завантаженим об’єктним файлом
У вікні початкового коду рядок, який буде виконано першим виділяється жовтою стрілкою. Варто врахувати, що початковий код взятий із файлу .cof або .hex, а відтак редакції у AVR Studio не підлягає. Зміни в текст програми треба вносити в середовищі Programmer's notepad, потім заново виконати компіляцію, і створення об’єктного файлу, потім переключитися у AVR Studio. Якщо у AVR Studio відкритий той же файл, то зміни в ньому будуть автоматично розпізнані і з’явиться пропозиція обновити вміст вікна початкового коду. Цю операцію можна виконати вручну за допомогою кнопки Reload Object File на панелі інструментів /.
Вікно Register дає доступ до 32-ох робочих регістрів. Для прикладу можна відредагувати вміст будь-якого регістра, як до так і в процесі виконання програми. Для цього необхідно вибрати потрібний елемент у вікні Register (двічі натиснути на потрібному значенні регістра) і ввести потрібне значення у вікно Edit (рисунок 1.7.).
/ /
Рисунок 1.7 – Редагування значень в робочому регістрі R03
При цьому значення можна вводити в шістнадцятковому, десятковому, вісімковому та двійковому форматі, які вибираються за допомогою відповідних перемикачів. Аналогічно можна змінювати і назви регістрів.
Особливий практичний інтерес являє собою вікно Processor, зображене на рисунку 1.8.
/
Рисунок 1.8 – Зовнішній вигляд вікна Processor
Представлені тут елементи дозволяють змінювати вміст програмного лічильника Program Counter (PC), вказівника стеку Stack Pointer (SP), регістрів подвійної довжини X Pointer, Y Register, Z Register, лічильника циклів Cycle Counter (тільки за допомогою кнопки Reset), показники таймера відліку часу Stop Watch, регістрів стану SREG (Status Register) та робочих регістрів R00–R31. Для виставлення таймера підрахунку часу на 0 необхідно натиснути правою клавішею миші на вікні Processor і вибрати пункт Reset Cycle counter (цей таймер застосовують для визначення часу виконання частин програми мікроконтролером).
За допомогою вікна I/O View (рисунок 1.9) користувач може контролювати роботу пристроїв введення-виведення. Під час редагування видимі елементи виділяються червоним кольором. Усі налаштування зберігаються між проектними сесіями.
/
Рисунок 1.9 – Елементи контролю за роботою пристроїв введення-виведення
Наприклад, за допомогою елемента PORTD можна переглянути створену раніше програму в дії (рисунки 1.9, 1.10). для цього достатньо запустити її на виконання командою Auto Step меню Debug. Команда Auto Step відрізняється від команди Run тим, що в ході виконання програми після кожного кроку оновлюються вікна AVR Studio. Для того щоб перервати виконання програми необхідно виконати команду Break меню Debug.
/
Рисунок 1.10 – Програма LR.1 відключає всі світлодіоди, підключені до виводів порту D
Оскільки симулятор виконує програму в віртуальному середовищі, вона працює значно повільніше ніж в реальному мікроконтролері. Наприклад, для реальної програми, що завантажується в мікроконтролер, затримки для функції _delay_loop_2 мають бути в 1000 раз більше.
Розглянемо вікна Memory (рисунок 1.11). Вікно Memory дозволяє користувачу при необхідності контролювати або змінювати область пам’яті мікроконтролера, наприклад, пам'ять даних, пам'ять програм, пам'ять EEPROM, пам'ять введення-виведення. Можна одночасно відкривати декілька вікон Memory, використовуючи відповідні команди меню View.
/
/
Рисунок 1.11 – Вікна Memory середовища AVR Studio
Тип області пам’яті вибирається у лівому верхньому кутку вікна Memory. На рисунку 1.11 в вікні Memory вибрана пам'ять програм, а в вікні Memory2 –пам'ять даних. За допомогою кнопки 8\16, а також команд текстового меню 1 Byte, 2 Byte можна розбивати дамп пам’яті на одно або двобайтові фрагменти. За допомогою кнопки abc. Користувач може відобразити або прибрати додаткову колонку з ASCII-значеннями області пам'яті, що відображається. Поле Address служить для відображення і вводу адреси комірки пам’яті, яка відображається в даний момент в верхній частині вікна. Кількість колонок зі значеннями комірок пам'яті вибирається за допомогою випадаючого списку Cols: (якщо вибраний елемент Auto, то кількість колонок вибирається автоматично в залежності від ширини вікна Memory).
Вміст комірок пам'яті в вікні Memory можна легко змінювати шляхом прямого введення даних. Також нові значення комірок можна вводити в спеціальному діалоговому вікні, яке з'являється після подвійного натискання лівої кнопки миші на відповідній комірці. В такому випадку зміни відбуваються не миттєво, а тільки після натискання кнопки OK в вікні Edit. Значення адреси відображаються в шістнадцятковій системі числення, причому адреси восьмирозрядних комірок пам’яті виділені сірим кольором, а шістнадцятирозрядних – блакитним.
Вікно Watch (рисунок 1.12) служить для відображення типів, значень і адрес змінних в програмі на С. Вікно Watch можна відкрити за допомогою відповідної команди меню View. Воно складається з чотирьох колонок, в першій вказане ім’я об’єкта за яким ведеться спостереження, в другій тип об’єкта, в третій поточне значення об’єкта, а в четвертій адреса об’єктів. Користувач може додавати нові об’єкти в вікно Watch за допомогою команди Add Item контекстного меню в вікні Watch (відкривається правою кнопкою миші), за допомогою подвійного клацання на вільному полі першої колонки або за допомогою команди Add to Watch контекстного меню вікна вихідного коду. Видалити об’єкти можна командою Remove selectеd Item (видалити виділений об'єкт) або Remove all Items (видалити всі об’єкти спостереження), що вибираються із меню після натискання правої клавіші миші в вікні Watch.
/
Рисунок 1.12 – Вікно Watch середовища AVR Studio
Розглянемо детальніше процес ладнання програми. Під ладнанням розуміють покрокове виконання програми з контролем вмісту регістрів мікроконтролера (перевірка на низькому рівні) та змінних (перевірка на програмному рівні). Ладнання програм в AVR Studio відбувається з допомогою команд меню Debug і кнопок відповідної панелі інструментів.
Перед розглядом зазначених команд необхідно з'ясувати поняття "Точки переривання". Точка переривання (breakpoint)– це рядок початкового коду, на якому робота програми призупиняється (позначається коричневим кружком зліва від рядка). Таких точок може бути встановлено стільки, скільки є ефективних рядків у програмі. Для їх встановлення служить команда Toggle Breakpoint (кнопка /), а для видалення Remove Breakpoints (кнопка /) в меню Debug, для послідовного переходу від однієї точки до іншої використовується команда Next Breakpoint.
В режимі ладнання використовуються наступні команди:
Run, Auto Step / / – перехід в режим ладнання відбувається, якщо зустрічається точка переривання;
Step Into / – виконує поточну команду із заходом у підпрограму (всі вікна оновлюються);
Step Over / – виконує поточну команду без заходу у підпрограму (всі вікна оновлюються);
Step Out / – запускає програму і виконує доти поки не зустрінеться кінець поточної підпрограми; якщо курсор знаходиться в рядках основної програми, то ладнання відбувається доти, поки користувач не обірве її командою break або не зустрінеться точка переривання;
Run To Cursor / – запускає програму і виконує доти поки не буде досягнута позиція курсору у вікні початкового коду; якщо зустрічається точка останова програма не зупиняється; якщо позиція курсору недосяжна, то програма виконується доти, поки користувач не обірве її командою break. Після виконання команди всі вікна оновлюються.
Для вибору імітації роботи конкретного мікроконтролера, а також його робочої частоти використовується вікно Simulator Options (рисунок 1.13), яке відкривається командою AVR Simulator Options меню Debug.
/
Рисунок 1.13 – Діалогове вікно Simulator Options
Допустимі параметри мікроконтролера відображаються в текстовому полі, розташованому в правій частині вікна Simulator Options.
Хід роботи
1.
/
Зображення вікна Programmer's Notepad з записаною програмою, приведеною в описі роботи
/ /
Тестування програми за допомогою засобів середовища AVR Studio.
2.
/
Вікно Programmer's Notepad зі зміною затримок до (30) та (120)
3.
/
Вікно Programmer's Notepad зі зміною режимів відображення інформації на світло діодах
/ /
Тестування програми за допомогою засобів середовища AVR Studio.
Висновок: В даній лабораторній роботі ми ознайомились та навчились працювати з програмами WinAVR та AVR Studio. Ми створии та протестували проект для мікроконтролера ATMEGA 169 фірми Atmel.
Ми використовували програму Programmer's Notepad для створиння програм на мові С для мікроконтролерів AVR, що входить до складу пакета WinAVR. Після того як програма написана на мові С, відбувається її компіляція та створення файлів з розширенням «cof» для симулятора AVR Studio. Після відкриття програми AVR Studio ми обираємо тип симулятора AVR Simulator та мікроконтролер ATMEGA 169