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

Для програмування потрібен програматор. Тут насамперед треба домовитися про термінологію [2-1]. При масовому виробництві зазвичай використовують промислові програматори (Мал. 2.3), що мають самостійні ор

гани управління, контролю, індикації.

Для дрібносерійного і одиничного виробництва (читай «домашніх умов») раціональніше використовувати комп'ютерні програматори. В їх основі лежить проста формула: «Программатор = Олектріче-ський адаптер> + <Комп'ютер> + <Програма ^. Адаптер легко виготовити самостійно. Комп'ютер є частиною робочого місця радіоаматора, а керуюча програма доступна в Інтернеті і, як правило, безкоштовна.

Розрізняють автономні (Мал. 2.4) і внутрісхемний (Мал. 2.5) комп'ютерні про

грамматори. Перші з них працюють в незалежному режимі. Мікросхема МК вручну встановлюється в панельку, програмується, потім витягується з панельки і переноситься у готовий виріб. Другі з них використовують спеціальний технологічний роз'єм, розташований на платі вироби. Через нього, не випаюючи МК, можна в будь-який момент «перепрошити» флеш-ПЗУ.

Дуже часто в Інтернеті (та й в технічній літературі) «програматором» чомусь називають саме електричний адаптер, хоча це і не зовсім вірно.

Внутрішньосхемного програмування набагато зручніше автономного, однак практика показує, що краще тримати «на запасному шляху» обидва программатора одночасно. Це стане в нагоді, наприклад, для оперативної перевірки працездатності

 

 

 

 

 

 

здатності МК, для попереднього введення в нього програми-завантажувача, для зміни режимів роботи через конфігураційні біти.

Нові терміни «програма-завантажувач» і «конфігураційні біти» розглядатимуться далі, але для початку треба чітко представляти їх фізичне місце розташування в пам'яті. Судячи по стрілках, зображеною на Рис. 2.6, три області пам'яті з чотирьох доступні для зовнішнього програмування. Інформація в них зберігається при вимиканні джерела живлення.

Четверта область, ОЗУ або, по-англійськи, RAM, служить для тимчасового зберігання даних. В ОЗУ перебувають регістри спеціальних функцій SFR (Special Function Register), що відповідають за поточний режим роботи МК. Їх детальний опис наводиться в даташітах, причому єдиного стандарту не існує (а жаль!). Кожен регістр з області SFR має своє унікальне ім'я, наприклад, MCUCR, RAMPZ і т.д.

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

Таблиця 2.1. Різновиди типів пам'яті у різних МК

Тип пам'яті МК

Розшифровка

Виконувані функції

   Mask ROM

   Masked Read Only Memory

Масочної ПЗУ, програмоване при виготовленні кристала мікросхеми

   OTPROM

   One-Time Programmable ROM

ПЗУ, одноразово програмована користувачем (самостійно)

   QTPROM

   Quick-Turn Programmable ROM

ПЗУ, одноразово програмована на заводі-виробнику за кодами користувача

   SQTPROM

   Serialized QTPROM

Те ж, що QTPROM, але кожному МК присвоюється унікальний серійний номер

   UVEPROM

   Ultra Violet Erasable Programmable ROM

ПЗУ, стирані ультрафіолетовим опроміненням кристала через прозоре вікно в корпусі

   EEPROM

   Electrical EPROM

Електрично стирані ПЗУ з довільним доступом до осередків (ЕСПЗУ)

   Flash

Флеш-ПЗП (в перекладі з англ. "Спалах")

Електрично стирані ПЗУ з блоковим доступом до осередків

   RAM

   Random Access Memory

Статичне ОЗУ (рідше динамічне ОЗУ) з довільним доступом до осередків

   SFR

   Special Function Register

Окрема область ОЗУ, де зберігаються параметри поточного режиму роботи МК

   ROM-less

«Без ПЗУ»

ПЗУ в МК відсутня, керуюча програма запроваджується з зовнішнього носія

   Fuse, Option Bits, Configuration Bits

Конфігураційні біти

Кілька байтів пам'яті, що визначають глобальні режими роботи МК

   BootLoader

Програма-завантажувач (Bootstrap Loader)

Записана у флеш-ПЗУ невелика програма, через яку багато разів переписується основна програма МК

Кількість перезаписів не обмежена, тому зміну режимів можна проводити неодноразово і в будь-якому місці програми. У Табл. 2.1 наведена розшифровка зустрічаються в М До типів пам'яті.

Різновиди технологій програмування

У різних мікроконтролерних платформах при програмуванні застосовуються свої фірмові засоби, технології і навіть назви, а саме:

• ISP (In-System Programming), ICSP (In-Circuit Serial Programming), ISSP (In-System Serial Programming) – низьковольтне послідовне програмування (Мал. 2.7, а);

• JTAG (Joint Test Action Group) – низьковольтне шлейфним програмування за стандартом IEEE Std 1149.1 з можливістю налагодження (Мал. 2.7, б);

• debugWire – низьковольтне бднопроводное програмування з можливістю налагодження (Мал. 2.7, в);

• BootLoader – низьковольтне програмування, при якому в ПЗУ МК спочатку заносяться коди завантажувача на іншому програматорі (Мал. 2.7, г, д);

• HVSP (High Voltage Serial Programming) – високовольтне послідовне програмування (Мал. 2.7, е);

• HVPP (High Voltage Parallel Programming) – високовольтне паралельне програмування (Мал. 2.7, ж).

 

 

Поділ на низькі і високі «вольти» відбулося історично. Перші МК програмувались підвищеним напругою +8 … 14 / +24 … 27 В і вимагали вилучення мікросхеми з панельки на платі пристрою. У міру вдосконалення технології інженери-конструктори навчилися вбудовувати підвищують DC / DC-перетворювачі напруги прямо на підкладку кристала мікросхеми. Програмування стало низьковольтним від +5 В і внутрісхемний, оскільки тепер не потрібно витягувати МК з панельки.

Поділ на «паралельне» і «послідовне» програмування теж має історичні корені. На зорі микроконтроллерной ери споживачі намагалися здешевити виробництво, замовляючи на заводі-виробнику великі партії МК з певною версією програми. Промислове тіражірова

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

З широким впровадженням низьковольтних адаптерів виявилося, що вигідніше виробляти програмування невеликих партій МК у себе на фірмі. Кілька зайвих секунд затримки «погоди не роблять », зате економія і зручність в наявності. Проте прощатися з паралельним режимом ще рано, тому що через нього в деяких МК, наприклад, Atmel ATmega, «прошиваються» важливі конфігураційні біти. Кажуть, для сумісності поколінь «знизу-вверх».

Наступною помітною віхою стало об'єднання процесу програмування з налагодженням програми. Технології JTAG, debugWire дають програмісту повний контроль над апаратною начинкою МК, дозволяють зупиняти роботу програми в потрібних точках, перевіряти стан портів і регістрів в режимі реального часу. Це інструмент для професіоналів. Як правило, такі отладчики мають вигляд заводських фірмових модулів зі своїм програмним забезпеченням. Аматорські розробки теж існують, але вони вимагають високої кваліфікації виконавця.

Ще одне цікаве напрямок – це віддалене програмування через програму-завантажувач (BootLoader). Попередньо в МК «прошивається» коротка завантажувальна програма, яка за певних умов може перепрограмувати своє власне флеш-ПЗУ і осередки EEPROM. Схоже на найпростішу інтелектуальну систему з елементами самонавчання. Такий собі «внутрімікросхемний робот ». Коди нової прошивки передаються в МК з комп'ютера по одному з доступних каналів зв'язку: USB, COM, 12С, 1гОАіт.д. Якщо комп'ютер программатора буде підключений до Інтернету, то змінити прошивку можна з іншого віддаленого комп'ютера, перебуваючи в будь-якій точці Земної кулі.

Найбільш далекоглядні програмісти вводять в завантажувач криптозахист, щоб байти, що передаються по вільному каналу зв'язку, не могли бути розшифровані сторонньою людиною. У деяких МК програма-завантажувач є спочатку вбудованої в пам'ять. Її коди технологічно вводяться в матрицю прямо на заводі-виробнику. Приклади – Philips LPC2104 («Оп-Chip BootLoader Software») і Texas Instruments MSP430F (початковий апаратний завантажувач BSL).

Область пам'яті завантажувача захищається від перегляду та зміни спеціальними конфігураційними битами. Для першого знайомства досить знати, що конфігураційні біти (вони ж «fuse», «Fuse Bits», «Fuses», «Option Bits», «фьюз») – це деякі елементи пам'яті МК, які можна багаторазово прошивати в «1» або «О» за допомогою програматора.

Назва «fuse» ввела в обіг фірма Atmel, чиї МК дуже популярні. Однак цей термін несколько.двусмисленен, т.к. зазвичай він позначає перепалюваних перемичку, яка використовується в однократно програмувальних ПЗУ Таку перемичку відновити неможливо – на відміну від вмісту конфігураційних бітів, яке може бути обнулені в процесі повного стирання пам'яті МК. Однак з основної програми цього зробити не можна, що, очевидно, і призвело до вибору термінології. Варто зазначити, що в російськомовному Інтернеті часто використовують транскрипцію англійського терміна – «фьюз».

Розшифровка призначень конфігураційних бітів наводиться в даташі-тах. Конфігураційними бітами можна також вважати й біти захисту LockBits.

 

 

Вони дозволяють захистити коди програми від копіювання, перегляду і несанкціонованої зміни. Фізично конфігураційні біти виділяються в окрему область пам'яті, щоб їх було важко (Або неможливо) змінити в процесі експлуатації, а також при хакерських атаках.

Мікросхем, які підтримують всі відомі способи «послідовно-паралельного» програмування, не існує. Зазвичай доступні один, два або три різних способи. Самое Найважливіше, що всі сучасні МК можуть програмуватися внутрісхемного. Це дозволяє використовувати прості і надійні програматори, що працюють в протоколі SPI (Serial Programming Interface). У ньому за-діюча лінії портів з запам'ятовуються назвами MISO, MOSI, SCK.

З електричної точки зору висновки, які беруть участь у програмуванні, є звичайними входами / виходами КМОП-елементів. Придумувати самому схеми адаптерів програматорів не треба, їх легше знайти в Інтернеті.

Реальні схеми комп'ютерних програматорів

Перше практичне завдання, яке повинен виконати будь-яка людина, що бажає освоїти МК, полягає у виготовленні (придбанні) програматора. Орієнтуватися треба на низьковольтні варіанти з послідовним інтерфейсом зв'язку. У Табл. 2.2 наведені адреси сайтів, що містять схемні рішення для 8-бітних AYR-і Р1С-контролерів [2-2].

 

 

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

• USB – найшвидші і перспективні, але відносно складні;

• LPT – найпростіші у виготовленні, але не завжди стабільно працюють;

• СОМ – наймасовіші в аматорській середовищі (на сьогоднішній день), але з низькою швидкістю програмування.

У Табл. 2.3 дані посилання на безкоштовні універсальні оболонки, що використовуються в программаторах з інтерфейсами USB, LPT, СОМ. Без них «залізна» частина пристрою функціонувати не буде. Крім універсальних, існують і вузькоспеціалізовані оболонки, розраховані тільки на одну платформу МК, наприклад, «AVRDUDE» (Atmel AVR), «PICkit-2» (Microchip PIC) і т.д.

Джерело:
Рюмік С.М. 1000 і одна мікроконтроллерной схема. (Випуск 1)