Мови програмування для мікроконтролерів

01.09.2015

Мови програмування для мікроконтролерів

Програмування для мікроконтролерів, як і програмування для універсальних комп’ютерів пройшло великий шлях розвитку від програмування в машинних кодах до застосування сучасних інтегрованих систем написання програм, налагодження та програмування мікроконтролерів. В даний час вихідний текст програми пишеться на одній з мов програмування.

Самі мови програмування в свою чергу поділяються на дві групи:

  1. мови програмування «високого» рівня
  2. мови програмування «низького» рівня.

До мов програмування «низького» рівня належать мови програмування в яких кожному оператору відповідає не більше однієї машинної команди. Набір машинних команд кожного конкретного процесора обов’язково входить до складу такої мови програмування. Мови програмування низького рівня в даний час називаються асемблерами (стара назва автокоды). Для кожного процесора існує своя група асемблерів. Ассемблеры для одного і того ж процесора різняться між собою додатковими можливостями, які полегшують програмування.

Мови програмування «високого» рівня дозволяють замінювати один оператор кількома машинними командами. Це дозволяє збільшувати продуктивність праці програмістів. Крім того, мови «високого» рівня дозволяють писати програми, які можуть виконуватися на різних мікропроцесорах. (Природно, що при цьому необхідно використовувати програми — транслятори для відповідного процесора.) В даний час найбільш поширені такі мови програмування високого рівня як З і PLM

Про переваги і недоліки мов високого і низького рівнів говорилося досить багато. Вибір мови програмування залежить від складу апаратури, для якої пишеться програма, а також від потрібної швидкодії всього програмно-апаратного комплексу в цілому.

У тих випадках, коли обсяг ОЗУ і ПЗУ малий (в районі декількох кілобайт) альтернативи асемблера немає. Саме ці мови програмування дозволяють отримувати самий короткий і найбільш швидкодіючий код програми (при інших рівних умовах, т. к. зіпсувати можна все!).

Мови програмування високого рівня дозволяють значно скоротити час створення програми, але при цьому збільшується розмір програми, тому для такого вибору мови програмування для мікропроцесорних систем необхідно мати досить великий обсяг пам’яті програм (кілька десятків кілобайт). Збільшення обсягу програми пов’язане з декількома чинниками:

  1. Мова програмування розраховується на всі випадки життя, тому в більшості випадків людина міг би написати програму коротше (виключивши не потрібні в даному конкретному випадку перевірки або захисту).
  2. Програміст не бачить до чого призводить використання тих або інших операторів мови програмування, тому може вибирати оператори, не оптимальні з точки зору довжини машинного коду програми, так і з точки зору швидкодії програми.
  3. Програміст не використовує підпрограми там, де вони могли б скоротити обсяг програми, так як мовою програмування високого рівня це всього один або декілька операторів.

Перший з цих пунктів поступово втрачає своє значення з появою все більш досконалих трансляторів. Третій пункт теж вирішується тим же шляхом при застосуванні різних видів оптимізаторів, які входять до складу компілятора. Однак у більшості випадків оптимізатор не може визначити однакові дії, якщо вони відрізняються хоча б однією командою. Крім того, оптимізатор працює лише в межах одного модуля!

Види програм — трансляторів

Процес перетворення операторів вихідного мови програмування в машинні коди мікропроцесора називається трансляцією вихідного тексту. В даний час ручна трансляція програм практично не використовується. Трансляція здійснюється спеціальними програмами-трансляторами. Їх класифікація наведена на малюнку 1.

Мови програмування для мікроконтролерів

Малюнок 1. Класифікація програм-трансляторів мов програмування

Існує два великих класи програм-трансляторів: компілятори та інтерпретатори. При використанні компіляторів весь вихідний текст програми перетворюється в машинні коди, і саме ці коди записуються в пам’ять мікропроцесора. При використанні інтерпретатора в пам’ять мікропроцесора записується вихідний текст програми, а трансляція здійснюється при зчитуванні з пам’яті програм чергового оператора. Природно, що швидкодія інтерпретаторів набагато нижче в порівнянні з компіляторами, т. к. при використанні оператора в циклі він транслюється багаторазово.

Застосування інтерпретатора може забезпечити виграш лише у разі розробки для мови програмування «високого» рівня. В цьому випадку може бути заощаджена внутрішня пам’ять програм, а також полегшений процес налагодження програм (при застосуванні мови програмування BASIC) або полегшений перенесення програм з одного типу процесора на інший (при застосуванні мови програмування JAVA).

При програмуванні на мові програмування ASSEMBLER застосування інтерпретатора призводить до програшу по всім параметрам, тому для мов програмування низького рівня застосовуються тільки програми-компілятори.

Для програмування мікроконтролерів на мові програмування «низького» рівня, так і на мові програмування «високого» рівня використовуються тільки компілятори, тому розглянемо детальніше види цих трансляторів.

Види компіляторів

Програми-компілятори бувають оціночні та професійні.

Оціночні або навчальні компілятори дозволяють написати найпростіші програми для конкретного процесора і визначити чи підходить процесор для тих завдань, які належить вирішувати в процесі розробки пристрою. Звичайно, якщо програма дуже проста, то можна весь програмний продукт написати на оціночному компіляторі. Оціночні компілятори дозволяють транслювати файл вихідного тексту програми. Іноді такі компілятори дозволяють включати в процес трансляції вміст окремих файлів спеціальною директивою. В результаті роботи оціночного компілятора відразу виходить виконуваний або завантажувальний модуль програми, тому такі компілятори називаються компілятори з єдиної трансляцією .

Професійні транслятори дозволяють проводити трансляцію вихідного тексту програми по частинах. Це дозволяє значно скоротити час трансляції вихідного тексту програми, так як не потрібно транслювати весь текст програми, а можна транслювати лише ту частину програми, яка змінювалася після попередньої трансляції.

Крім того, кожний програмний модуль може писати окремий програміст. Це дозволяє скоротити час написання програми. Навіть у тому випадку, якщо програму пише одна людина, час написання програми скорочується за рахунок використання готових налагоджених і оттранслированных програмних модулів. У таких компіляторах процес трансляції програми розбивається на два етапи: трансляція програмного модуля і зв’язування програмних модулів в єдину програму. Тому такі компілятори називаються компіляторами з роздільною трансляцією .

Оціночні компілятори зазвичай пропонуються безкоштовно фірмами — виробниками мікроконтролерів. Тільки фірма Intel запропонувала в свій час професійний пакет розробки програм — мова програмування PLM-51 до складу якого входить професійний мова програмування ASM-51.

Професійні компілятори розробляються і продаються окремими фірмами. Для мікроконтролерів сімейства MCS-51 здобули популярність продукти таких фірм як FRANCLIN. IAR. KEIL .

До складу сучасних засобів написання і налагодження програм для мікроконтролерів зазвичай входять емулятори процесорів або налагоджувальні плати, текстовий редактор, компілятори мови високого рівня (найчастіше «С») і асемблера, редактор зв’язків і завантажувач програми в налагоджувальну плату. Всі програми зазвичай об’єднані інтегрованою середовищем розробки програмного проекту, що дозволяє підтримувати один або кілька програмних проектів.

Література:

  1. М. Рафикумазан Мікропроцесори і машинне проектування мікропроцесорних систем, пер. з англ. — М. Світ, 1988
  2. Н. Вірт Систематичне програмування. Введення. М. Світ, 1977
  3. Н. Вірт Алгоритми і структури даних. Нова версія для Оберона + CD. М. ДМК Прес, 2010
  4. М. Бен-Арі Мови програмування. Практичний порівняльний аналіз: М. Світ, 2000
  5. Уоллес Вонг Основи програмування для «чайників» М. Діалектика, 2007

Разом зі статтею «Мови програмування для мікроконтролерів» читають:

Короткий опис статті: мови програмування

Джерело: Мови програмування для мікроконтролерів

Також ви можете прочитати