Скачать презентацию Програмування мікроконтролерів Лекція 8 Судаков О О Радченко Скачать презентацию Програмування мікроконтролерів Лекція 8 Судаков О О Радченко

08_prog_mcu.ppt

  • Количество слайдов: 28

Програмування мікроконтролерів Лекція 8 Судаков О. О, Радченко С. П. «Сучасна мікропроцесорна техніка» Програмування мікроконтролерів Лекція 8 Судаков О. О, Радченко С. П. «Сучасна мікропроцесорна техніка»

Етапи програмування n Створення алгоритму роботи n Створення електричної схеми n Створення коду програми Етапи програмування n Створення алгоритму роботи n Створення електричної схеми n Створення коду програми q q Мови програмування Середовище розробки Бібліотеки Операційні системи для мікроконтролерів n Компіляція n Симуляція q q n «Прошивка» мікроконтролера q n Інтерфейси програмування Налагодження q q n Симуляція в схемі Симуляція Налагодження в схемі Налагодження в симуляторі Оптимізація q q q Вимірювання продуктивності Профілювання Рефакторинг коду

Створення алгоритму n n В значній мірі ручний процес Є різні засоби автоматизованої розробки Створення алгоритму n n В значній мірі ручний процес Є різні засоби автоматизованої розробки q q q n Створення блок-схеми (діаграми) q n Дуже допомагає на перших етапах Розрахунок параметрів компонентів блок-схеми q q n UML (Unified Modeling Language ) Ефективні лише для дуже складних проектів Для простих проектів не ефективні Тривалості, затримки, частоти … Створення алгоритмів роботи компонентів блоксхеми

Створення блок-схеми n Декомпозиція q q q n Зв’язок q q n Розбити задачу Створення блок-схеми n Декомпозиція q q q n Зв’язок q q n Розбити задачу на простіші під-задачі Розбити систему на простіші під-системи Уникати дублювання функцій Як взаємодіють між собою частини підсистеми Уникати дублювання функцій Синхронізація q Гарантування того, що певні підсистеми знаходяться в певному визначеному стані

Приклад блоксхеми n n Ніжку із світлодіодом до GPIO, режим виведення, низький рівень Система Приклад блоксхеми n n Ніжку із світлодіодом до GPIO, режим виведення, низький рівень Система керування світлодіодом q Натиснення кнопки – перемкнути світлодіод Ніжку із кнопкою до GPIO, режим Декомпозиція введення, високий рівень q Блок налаштування периферії для кнопки q Блок налаштування периферії для світлодіода Ніжка з кнопкою у стані ТАК q Система реагування на події високого рівня натиснення кнопки НІ q Система ввімкнення світлодіода Перемкнути ніжку із q Система прийняття рішення світлодіодом про ввімкнення чи вимкнення у інший стан ТАК Зв’язок – послідовність дій Синхронізація НІ Ніжка з кнопкою у стані q Не чіпати світлодіод поки Низького рівня кнопка не змінюється

Створення електричної схеми n Декомпозиція, зв’язок синхронізація q q n Підбір режимів роботи пристроїв Створення електричної схеми n Декомпозиція, зв’язок синхронізація q q n Підбір режимів роботи пристроїв q q q n Підбір елементів З’єднання Електричний (напруги та струми) Часовий (тривалості імпульсів, частоти) Обов’язково передбачити обмеження струму резисторами Підбір параметрів елементів q Щоб задовольнити всім технічним вимогам

Створення коду програми n Мови програмування q q n Середовища розробки q n Для Створення коду програми n Мови програмування q q n Середовища розробки q n Для різних мікроконтролерів свої Бібліотеки q n Багато варіантів … Асемблер С/С++ Готовий код для різних задач Операційні системи q Програмні засоби віртуалізації ресурсів мікроконтролера

Мова асемблер(а) n Одна команда мови відповідає одній команді процесора q Пересилання даних n Мова асемблер(а) 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, режим виведення, низький рівень Ніжку із кнопкою до 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 Регістри керування периферією відображаються на Мова С/С++ 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, режим виведення, низький рівень Ніжку із кнопкою до 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 Максимально наближено до апаратного забезпечення Асемблер vs С n Асемблер q q q n Максимально наближено до апаратного забезпечення Малий код Швидка програма Складно розробляти Погано переноситься Застосовується рідко С q q q Ближче до людини Дещо більший код і повільніша програма Просто розробляти код Просто переносити програму для різних процесорів Надзвичайно широко застосовується

Компіляція і компоновка n n Перетворення коду програми у машинний код процесора Етапи q Компіляція і компоновка n n Перетворення коду програми у машинний код процесора Етапи q Генерація об’єктного коду q Компоновка об’єкного коду в виконуваний файл Об’єктний код q Машинний код без адрес q Замість адрес інформація про положення (relocation) q Символи – імена змінних та функцій q Інформація для налагодження програм Компоновка – зв’язування об’єктних файлів у виконуваний q Присвоєння символам істинні значення адрес q Іноді адреси вказує користувач (для створення завантажувача)

Бібліотеки n n Готові текстові чи об’єктні файли описів Приклади бібліотек q q n Бібліотеки n n Готові текстові чи об’єктні файли описів Приклади бібліотек q q n Математичні бібліотеки Робота з алфавітно-цифровим індикатором Вимірювання ємності. . Підключення бібілотеки n n n Пдключення файла заголовку #include "HD 44780 LIB. h“ Компіляція додаткових тектових файлів (не завжди) Компоновка проекта з додатковими об’єктними файлами

Операційні системи для мікроконтролерів n Програмне забезпечення для віртуалізації ресурсів мікроеконтролера q q n Операційні системи для мікроконтролерів n Програмне забезпечення для віртуалізації ресурсів мікроеконтролера q q n Керування апаратним забезпеченням Планування завдань Однаковий інтерфейс для всіх завдань “Така собі біліотека” Для мікроконтролерів q q q RTOS – робота в ральному часі Мікро або екзоядро – надання функцій виділення ресурсів та/або перемикання між задачами ОС компілюється разом з завдяннями і завантажується в мікроконтролер

Приклад операційої системи void main ( void ) { init. System(); while (1) { Приклад операційої системи 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 Прошивка мікроконтролера 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 керує вибором Прошивка AVR через SPI n n 6 або 10 піновий роз’єм RESET керує вибором режиму прошивки, чи нормалної роботи Програматор є ведучим і генерує сигнал SCK Перехід в режим прошивки відбувається при певних співвідношеннях рівнів RESET та SCK

Прошивка MSP 430 по 2 -х провідному SBW інтерфейсу n Spi Bi Wire q Прошивка MSP 430 по 2 -х провідному SBW інтерфейсу n Spi Bi Wire q q Всього два піна RESET та TEST Послідовна передача всіх даних

Налагодження програм (debug) n Налагодження в симуляторі q q q q n Програма компілюється Налагодження програм (debug) n Налагодження в симуляторі q q q q n Програма компілюється із спеціальною інформацією наладки Завантажується в програму наладки Є можливість зупиняти програму в різних місцях Дивитись вміст пам’яті та регістрів Змінювати вмість пам’яті та регістрів Дивитись стек викликів функцій … Налагодження в схемі q q Те ж саме тільки прямо в схемі – значно ефективніше FET (flash emulation tool) JTAG наладчики Потрібні спеціальні пристрої (Launchpad підтримує)

Програматори n Ардуіно q q n AVR Не підтримує наладку в схемі Launchpad q Програматори n Ардуіно q q n AVR Не підтримує наладку в схемі Launchpad q q MSP 430 Підтримує наладку в схемі

Симуляція n n Моделювання роботи схеми в комп’ютерный програмі Симуляція коду q q q Симуляція n n Моделювання роботи схеми в комп’ютерный програмі Симуляція коду q q q n Симуляція електричної схеми q q n IAR Workbench Proteus VMLAB Proteus PSpice Повна симуляція q q Proteus VMLAB

Середовища розробки програм n n n Спрощення редагування коду Спрощення компіляції Спрощення прошивки Спрощення Середовища розробки програм n n n Спрощення редагування коду Спрощення компіляції Спрощення прошивки Спрощення симуляції Спрощення наладки Графічний інтерфейс користувача q q IAR Workbench (багато різних) AVR studio (AVR Arduino. cc (AVR) Energia (MSP 430)

Proteus (ISIS) n Створення схеми q q n n Додавання компонентів Додавання з’єднань Створити Proteus (ISIS) n Створення схеми q q n n Додавання компонентів Додавання з’єднань Створити новий елемент Розміщення елементів Симуляція Наладка q Двічі клацнути мишкою на елементі схеми

IAR Workbench n Створити WORKSPACE q q n Створити проект q q n Вміст IAR Workbench n Створити WORKSPACE q q n Створити проект q q n Вміст для проектів MENU->New->Workspace Project->Create New Project Одна програма Редагуємо файли

Опції для компіляції в IAR під FET і Proteus n В опціях проекта Опції для компіляції в IAR під FET і Proteus n В опціях проекта

Вказування програми для мыкроконтролера в Proteus n В параметрах мікросхеми Вказування програми для мыкроконтролера в Proteus n В параметрах мікросхеми

Arduino. cc n n Не повна програма, а частини коду (скетчі) Приклади q n Arduino. cc n n Не повна програма, а частини коду (скетчі) Приклади q n Компіляція q n Sketch->Verify/Compile Завантаження q n File->Examples File->Upload Плату «видно на послідовному порті»