08_prog_mcu.ppt
- Количество слайдов: 28
Програмування мікроконтролерів Лекція 8 Судаков О. О, Радченко С. П. «Сучасна мікропроцесорна техніка»
Етапи програмування n Створення алгоритму роботи n Створення електричної схеми n Створення коду програми q q Мови програмування Середовище розробки Бібліотеки Операційні системи для мікроконтролерів n Компіляція n Симуляція q q n «Прошивка» мікроконтролера q n Інтерфейси програмування Налагодження q q n Симуляція в схемі Симуляція Налагодження в схемі Налагодження в симуляторі Оптимізація q q q Вимірювання продуктивності Профілювання Рефакторинг коду
Створення алгоритму n n В значній мірі ручний процес Є різні засоби автоматизованої розробки q q q n Створення блок-схеми (діаграми) q n Дуже допомагає на перших етапах Розрахунок параметрів компонентів блок-схеми q q n UML (Unified Modeling Language ) Ефективні лише для дуже складних проектів Для простих проектів не ефективні Тривалості, затримки, частоти … Створення алгоритмів роботи компонентів блоксхеми
Створення блок-схеми n Декомпозиція q q q n Зв’язок q q n Розбити задачу на простіші під-задачі Розбити систему на простіші під-системи Уникати дублювання функцій Як взаємодіють між собою частини підсистеми Уникати дублювання функцій Синхронізація q Гарантування того, що певні підсистеми знаходяться в певному визначеному стані
Приклад блоксхеми n n Ніжку із світлодіодом до GPIO, режим виведення, низький рівень Система керування світлодіодом q Натиснення кнопки – перемкнути світлодіод Ніжку із кнопкою до GPIO, режим Декомпозиція введення, високий рівень q Блок налаштування периферії для кнопки q Блок налаштування периферії для світлодіода Ніжка з кнопкою у стані ТАК q Система реагування на події високого рівня натиснення кнопки НІ q Система ввімкнення світлодіода Перемкнути ніжку із q Система прийняття рішення світлодіодом про ввімкнення чи вимкнення у інший стан ТАК Зв’язок – послідовність дій Синхронізація НІ Ніжка з кнопкою у стані q Не чіпати світлодіод поки Низького рівня кнопка не змінюється
Створення електричної схеми n Декомпозиція, зв’язок синхронізація q q n Підбір режимів роботи пристроїв q q q n Підбір елементів З’єднання Електричний (напруги та струми) Часовий (тривалості імпульсів, частоти) Обов’язково передбачити обмеження струму резисторами Підбір параметрів елементів q Щоб задовольнити всім технічним вимогам
Створення коду програми n Мови програмування q q n Середовища розробки q n Для різних мікроконтролерів свої Бібліотеки q n Багато варіантів … Асемблер С/С++ Готовий код для різних задач Операційні системи q Програмні засоби віртуалізації ресурсів мікроконтролера
Мова асемблер(а) n Одна команда мови відповідає одній команді процесора q Пересилання даних n n q Логічні операції n n q n n BIT Встановлення прапорця переносу С у випадку успіху Операції переходу по мітці JMP мітка n q ADD, SUB Перевірка бітів (Test) n q Set bit, clear bit BIS, BIC AND, OR, XOR, NAND, NOR, XNOR Арифметичні операції n q Регістр-регістр, пам’ять-регістр, регістр-пам’ять MOV Запис читання стеку PUSH, POP Коли прапорці встановлено, чи не встановлено JC, JNC, JZ, JNZ Виклик функцій CALL, RET … У кожного типу процесора свій асамблер Різним регістрам периферії відповідає мнемонічне позначення q P 1 IN, P 1 OUT, P 1 REN. .
Приклад програми на мові асамблер Ніжку із світлодіодом до GPIO, режим виведення, низький рівень Ніжку із кнопкою до GPIO, режим введення, високий рівень Ніжка з кнопкою у стані високого рівня ТАК BIS. B BIC. B #1111 b, &P 1 DIR #1111 b, &P 1 OUT ; button BIC. B #00001000 b, &P 1 DIR BIS. B #00001000 b, &P 1 REN BIS. B #00001000 b, &P 1 OUT cont 1: ; адреса ділянки програми bit. b #00001000 b, &P 1 IN jc cont 1 XOR. b #00000001 b, &P 1 OUT cont 2: ; адреса ділянки програми bit. b #00001000 b, &P 1 IN jnc cont 2 НІ ТАК ; led Перемкнути ніжку із світлодіодом у інший стан JMP cont 1 Ніжка з кнопкою у стані Низького рівня НІ
Мова С/С++ n Підтримуються високорівневі конструкції q q n Регістри керування периферією відображаються на пам’ять q q n Цикли while, for Умовні переходи if, then, else Вирази Виклики функцій Мають визначені адреси P 1 OUT, P 1 IN, P 1 REN Виступають в ролі змінних Неохідно підключити заголовочний файл q q #include “msp 430. h” #include “ioavr. h”
Приклад програми на С Ніжку із світлодіодом до GPIO, режим виведення, низький рівень Ніжку із кнопкою до GPIO, режим введення, високий рівень Ніжка з кнопкою у стані високого рівня #include "io 430. h" int main( void ) { … //button P 1 DIR &= ~BIT 3&0 xff; P 1 REN |= BIT 3; P 1 OUT |= BIT 3; //led P 1 DIR |= BIT 0; P 1 OUT &= ~BIT 0&0 xff; } while(1){ if(P 1 IN&BIT 3) continue; P 1 OUT^=BIT 0; while(!(P 1 IN&BIT 3)); } return 0; ТАК НІ ТАК Перемкнути ніжку із світлодіодом у інший стан Ніжка з кнопкою у стані Низького рівня НІ }
Асемблер vs С n Асемблер q q q n Максимально наближено до апаратного забезпечення Малий код Швидка програма Складно розробляти Погано переноситься Застосовується рідко С q q q Ближче до людини Дещо більший код і повільніша програма Просто розробляти код Просто переносити програму для різних процесорів Надзвичайно широко застосовується
Компіляція і компоновка n n Перетворення коду програми у машинний код процесора Етапи q Генерація об’єктного коду q Компоновка об’єкного коду в виконуваний файл Об’єктний код q Машинний код без адрес q Замість адрес інформація про положення (relocation) q Символи – імена змінних та функцій q Інформація для налагодження програм Компоновка – зв’язування об’єктних файлів у виконуваний q Присвоєння символам істинні значення адрес q Іноді адреси вказує користувач (для створення завантажувача)
Бібліотеки n n Готові текстові чи об’єктні файли описів Приклади бібліотек q q n Математичні бібліотеки Робота з алфавітно-цифровим індикатором Вимірювання ємності. . Підключення бібілотеки n n n Пдключення файла заголовку #include "HD 44780 LIB. h“ Компіляція додаткових тектових файлів (не завжди) Компоновка проекта з додатковими об’єктними файлами
Операційні системи для мікроконтролерів n Програмне забезпечення для віртуалізації ресурсів мікроеконтролера q q n Керування апаратним забезпеченням Планування завдань Однаковий інтерфейс для всіх завдань “Така собі біліотека” Для мікроконтролерів q q q RTOS – робота в ральному часі Мікро або екзоядро – надання функцій виділення ресурсів та/або перемикання між задачами ОС компілюється разом з завдяннями і завантажується в мікроконтролер
Приклад операційої системи void main ( void ) { init. System(); while (1) { work(); sleep(); } } void work (void) { do. Task(Recieve. Msg); do. Task(Process); do. Task(Transmitt. Response); } __interrupt void Timer_A (void) { wake. Up(); }
Прошивка мікроконтролера n Виконуваний файл треба завантажити в пам’ять мікроконтролера q q q n Спеціальний апаратний інтерфейс JTAG (Join Test and Access Group) Спеціальна програма в постійній пам’яті мікроконтролера (Bootstrap loader) Програма користувача у флеш пам’яті (loader) Часто завантажувати можна прямо в схемі q q ISP (In System Programming) Через SPI, I 2 C, UART переписувати ділянки пам’яті
Прошивка AVR через SPI n n 6 або 10 піновий роз’єм RESET керує вибором режиму прошивки, чи нормалної роботи Програматор є ведучим і генерує сигнал SCK Перехід в режим прошивки відбувається при певних співвідношеннях рівнів RESET та SCK
Прошивка MSP 430 по 2 -х провідному SBW інтерфейсу n Spi Bi Wire q q Всього два піна RESET та TEST Послідовна передача всіх даних
Налагодження програм (debug) n Налагодження в симуляторі q q q q n Програма компілюється із спеціальною інформацією наладки Завантажується в програму наладки Є можливість зупиняти програму в різних місцях Дивитись вміст пам’яті та регістрів Змінювати вмість пам’яті та регістрів Дивитись стек викликів функцій … Налагодження в схемі q q Те ж саме тільки прямо в схемі – значно ефективніше FET (flash emulation tool) JTAG наладчики Потрібні спеціальні пристрої (Launchpad підтримує)
Програматори n Ардуіно q q n AVR Не підтримує наладку в схемі Launchpad q q MSP 430 Підтримує наладку в схемі
Симуляція n n Моделювання роботи схеми в комп’ютерный програмі Симуляція коду q q q n Симуляція електричної схеми q q n IAR Workbench Proteus VMLAB Proteus PSpice Повна симуляція q q Proteus VMLAB
Середовища розробки програм n n n Спрощення редагування коду Спрощення компіляції Спрощення прошивки Спрощення симуляції Спрощення наладки Графічний інтерфейс користувача q q IAR Workbench (багато різних) AVR studio (AVR Arduino. cc (AVR) Energia (MSP 430)
Proteus (ISIS) n Створення схеми q q n n Додавання компонентів Додавання з’єднань Створити новий елемент Розміщення елементів Симуляція Наладка q Двічі клацнути мишкою на елементі схеми
IAR Workbench n Створити WORKSPACE q q n Створити проект q q n Вміст для проектів MENU->New->Workspace Project->Create New Project Одна програма Редагуємо файли
Опції для компіляції в IAR під FET і Proteus n В опціях проекта
Вказування програми для мыкроконтролера в Proteus n В параметрах мікросхеми
Arduino. cc n n Не повна програма, а частини коду (скетчі) Приклади q n Компіляція q n Sketch->Verify/Compile Завантаження q n File->Examples File->Upload Плату «видно на послідовному порті»


