Меню English Ukrainian російська Головна

Безкоштовна технічна бібліотека для любителів та професіоналів Безкоштовна технічна бібліотека


Мікроконтролери для початківців і не лише. Енциклопедія радіоелектроніки та електротехніки

Безкоштовна технічна бібліотека

Енциклопедія радіоелектроніки та електротехніки / Мікроконтролери

Коментарі до статті Коментарі до статті

ПЕРШЕ ЗНАЙОМСТВО

Спочатку кілька слів для тих, кому тема циклу, якщо судити за його назвою, здається апріорно нецікавою чи "чужою". Можливо, ви у своїх конструкціях досі не застосовували мікроконтролери (далі для стислості МК) і вважаєте, що і в найближчому майбутньому зможете обходитися без них. Можливо також, ви припускаєте, що створення мікроконтролерної системи для вирішення вашого завдання буде надто обтяжливим та економічно недоцільним. Не поспішайте: спеціально для вас ми хочемо навести кілька фактів та трохи статистики.

Наприклад візьмемо найближчого родича МК - персональний комп'ютер - і порівняємо інтенсивності їх застосування. За даними аналітичної компанії Loewenbaum & Cо. Inс. (США), кількість персональних комп'ютерів, випущених у світі 1997 р., досягла приблизно 20 млн шт. Погодьтеся, це дуже багато. А тепер уявіть, що це гігантське число становить лише 0,2% від світового обсягу випуску МК. За даними аналітичної компанії IC Insights Inс. (США) світовий ринок у 1998 р. поглинув їх понад 13,5 млрд шт.!

Висновок напрошується сам. Якщо вже сьогодні важко знайти область діяльності людини, де б ефективно не використовувався комп'ютер, то що тоді говорити про МК? Чому вони стали такими популярними та буквально незамінними? Відповідь криється у самій структурі мікроконтролера. Як перший наближення до визначення цього поняття вважатимуться, що МК - це комп'ютер, що розмістився на одній мікросхемі. Звідси та її основні привабливі якості: малі габарити, споживання, ціна; високі продуктивність, надійність і здатність бути адаптованим для виконання різних завдань.

МК відрізняється від мікропроцесора тим, що крім центрального процесора (ЦП) містить пам'ять і численні пристрої введення/виводу: аналого-цифрові перетворювачі, послідовні та паралельні канали передачі інформації, таймери реального часу, широтно-імпульсні модулятори (ШІМ), генератори програмованих т. д. За своєю структурою та принципом функціонування МК, по суті, не відрізняється від персонального комп'ютера. Тому слова мікроконтролер та мікро-ЕОМ є синонімами. Однак перший термін (від англійського слова соntrol - управляти) більш поширений, оскільки відображає його основне призначення - використання в системах автоматичного управління, вбудованих в різні пристрої: кредитні картки, фотоапарати, стільникові телефони, музичні центри, телевізори, відеомагнітофони і відеокамери, пральні машини, мікрохвильові печі, системи охоронної сигналізації, системи запалення бензинових двигунів, електроприводи локомотивів, ядерні реактори та багато іншого. Вбудовані системи управління стали настільки масовим явищем, що фактично сформувалася нова галузь економіки, що отримала назву Embedded Systems (системи, що вбудовуються - англ.).

Нині у світі випускаються тисячі різновидів МК. Вони поставляються в корпусах з числом висновків від 8 до 356, працюють при температурі від -55 до +125oС на частотах від 32 кГц до 200 МГц, здатні функціонувати при напрузі живлення від 1,2, споживаючи при цьому струм, що не перевищує одиниці мікроампер . Ціна виробів також безперервно знижується. Деякі восьмирозрядні МК вже сьогодні коштують не дорожче 50 центів, що можна порівняти з вартістю однієї мікросхеми "жорсткої логіки".

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

Сподіваємося, що наведені факти вже налаштували вас на шанобливе ставлення до головного героя нашої розповіді. Дійсно, МК став подією світового масштабу, що вторгся практично у всі види людської діяльності.

Що ж забезпечило таке бурхливе зростання популярності цих виробів, що з'явилися трохи більше 25 років тому? Що це за пристрої та які їх можливості та перспективи?

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

На ці запитання ми спробуємо відповісти у пропонованому циклі статей.

ЗАКОН МУРА І ПЕРШИЙ МК

Ще в 1965 р. Гордон Мур (Gоrdоn Мооrе), один із майбутніх засновників могутньої корпорації Intel, звернув увагу на цікавий факт. Представивши у вигляді графіка зростання продуктивності мікросхем, що запам'ятовують, він виявив цікаву закономірність: нові моделі мікросхем з'являлися кожні 18 - 24 місяці, а їх ємність при цьому зростала щоразу приблизно вдвічі. Якщо така тенденція продовжиться, припустив Г. Мур, то потужність обчислювальних пристроїв експоненційно зросте протягом короткого проміжку часу.

Передбачення Г. Мура згодом блискуче підтвердилося, а виявлена ​​ним закономірність спостерігається й у наші дні, причому з вражаючою точністю, будучи основою численних прогнозів зростання продуктивності. За 28 років, які з моменту появи мікропроцесора 4004 (1971 р.), число транзисторів на кристалі зросла більш ніж 12 000 раз: з 2 300 до 28 000 000 в мікросхемі Сорреттюе.

Ну а 1976 р. експоненційний розвиток напівпровідникової технології призвело до створення фірмою Intel першого МК - 8048. Крім ЦП, до його складу входила пам'ять програм, пам'ять даних, восьмибітний таймер і 27 ліній вводу/виводу. Сьогодні 8048 є вже надбанням історії, а ось наступний виріб, випущений Intel у 1980 р., живе і живе досі. Це – МК 8051.

АРХІТЕКТУРА МК 8051

Цей МК вважатимуться класичним зразком, за образом і подобою якого було створено безліч інших виробів. Його структурна схема представлена ​​на рис. 1. ЦП – головний вузол МК. З ним пов'язане таке найважливіше поняття як система команд.

Мікроконтролери для початківців і не тільки

Система команд - це унікальний, притаманний даного ЦП набір двійкових кодів, визначальних перелік всіх його можливих операцій. Кожен такий код визначає одну операцію та називається кодом операції або командою. Чим більше кодів використовується у системі команд, тим більше операцій здатний виконати ЦП. МК 8051 - восьмирозрядний, тому коди операцій мають розмір 8 біт. Теоретично може бути лише 256 восьмибітних кодів операцій. У 8051 використовуються 255.

Залежно від кількості використаних кодів операцій системи команд поділяють дві групи: СISС і RISС. Термін СISС означає складну систему команд і є абревіатурою англійського визначення Сторах Instruction Set Сторін. Аналогічно термін RISС означає скорочену систему команд і походить від англійської Reduсеd Instruction Set Сomrutеr. Систему команд МК 8051 можна зарахувати до типу С15С.

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

Спочатку реалізовувати такий підхід вдавалося лише істотно скоротивши набір команд, звідси і народилася назва RISС. Наприклад, система команд МК сімейства Місrосhiр РIC включає всього 35 інструкцій і може бути віднесена до типу RISС. Очевидно, що в загальному випадку одній команді CISС-архітектури має відповідати декілька команд RISС-архітектури. Однак зазвичай виграш від підвищення швидкодії в рамках RISС-архітектури перекриває втрати від менш ефективної системи команд, що призводить до більш високої ефективності RISС-систем загалом порівняно із СISС. Так. Найшвидша команда МК 8051 виконується за 12 тактів. Навіть якщо кожної інструкції потрібно виконати три інструкції RISC-контролера, то результаті RISC-архитектура забезпечить чотириразове збільшення продуктивності.

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

Тут можна було б вигукнути: майбутнє - за RISC-архітектурою! Однак нині межа між цими двома поняттями стрімко стирається. Наприклад. МК сімейства АVR фірми Аtmel мають систему команд із 120 інструкцій, що відповідає типу CISC. Проте більшість їх виконується за один такт, що є ознакою RISC-архітектури. Сьогодні прийнято вважати, що основною ознакою RISC-архітектури є виконання команд за такт тактового генератора. Число команд саме собою значення вже не має.

Тактовий генератор виробляє імпульси для синхронізації всіх вузлів пристрою. Частоту їхнього прямування можуть задавати кварцовий резонатор або RС-ланцюг, що підключаються до висновків МК. У деяких МК передбачено режим роботи тактового генератора без застосування зовнішніх елементів. У цьому випадку частота тактових імпульсів залежить від параметрів кристала, що визначаються у процесі його виробництва.

ПЗУ - постійний пристрій, призначений для зберігання програм, тому часто цю пам'ять називають кодовою або пам'яттю програм. До недавнього часу існувало два основні різновиди ПЗУ - маскові та програмовані.

У масочні ПЗУ інформацію заносять у процесі виготовлення МК за допомогою технологічних шаблонів – масок. Змінити її після закінчення виробничого циклу неможливо.

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

У програмовані ПЗП інформацію записують за допомогою пристрою, що називається програматором. МК з такими ПЗУ бувають двох типів: одноразово та багаторазово програмовані (перепрограмовані). Перші, як каже сама назва, допускають лише одноразове програмування, після чого стерти інформацію вже неможливо (МК з ОТР-пам'яттю - від англ. Оnе Тіме Рrogrammablе). Використовують їх у дрібносерійному виробництві (до 1000 шт.). коли застосування масочних МК економічно невиправдане.

Багаторазово програмовані мікросхеми поділяються на МК, оснащені ПЗУ зі стиранням ультрафіолетовим опроміненням (випускаються в корпусах з "вікном"), і МК з пам'яттю, що електрично перепрограмується. Недолік МК з ПЗУ зі стиранням ультрафіолетовим опроміненням - дуже висока вартість і відносно невелика кількість циклів запису/стирання (залежить від сумарної дози опромінення кристала і зазвичай не перевищує 15...20)

В даний час все популярнішою стає нова технологія реалізації ПЗУ - Рlash-пам'ять. Її головна перевага в тому. що вона побудована на принципі електричної перепрограмованості. тобто допускає багаторазове стирання та запис інформації за допомогою програматорів. Мінімальна гарантована кількість циклів запису/прання зазвичай перевищує кілька тисяч. Це суттєво збільшує життєвий цикл та підвищує гнучкість МК-систем. оскільки дозволяє вносити зміни у програму МК як у етапі розробки системи, і у його роботи у реальному устройстве.

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

Архітектура МК 8051 передбачає роздільне використання пам'яті програм і даних і зветься гарвардською. Зазвичай таку архітектуру використовують для підвищення швидкодії системи за рахунок поділу шляхів доступу до пам'яті програм та даних, але в 8051 вона була застосована з метою одержання пам'яті програм та даних, що не потребують однакового розміру. Антипод гарвардської - архітектура фон Неймана - передбачає зберігання програм та даних у спільній пам'яті і найхарактерніша для мікропроцесорів, орієнтованих використання у комп'ютерах. Прикладом можуть бути мікропроцесори сімейства х86.

Таймери ТО, Т1 - шістнадцятирозрядні програмовані таймери/лічильники, які можуть бути запрограмовані на виконання цілого ряду функцій. Їх можна використовувати для точного формування часових інтервалів, підрахунку імпульсів на висновках МК, формування послідовності імпульсів, тактування приймача послідовного каналу зв'язку. Таймери/лічильники здатні виробляти запити переривань, перемикаючи ЦП їх обслуговування по подіям і звільняючи його від необхідності періодичного опитування стану таймерів. Оскільки основне застосування МК знаходять у системах реального часу, таймери/лічильники є обов'язковим елементом. У деяких модифікаціях кількість таймерів сягає 32.

Послідовний порт – канал інформаційного обміну МК із зовнішнім світом. Такі канали зв'язку займають мінімальну кількість висновків кристала, забезпечуючи зв'язок значні відстані з мінімальними апаратними витратами. У 8051 реалізований універсальний асинхронний послідовний приймач (UARТ), що підтримує протокол стандарту RS-232С, що забезпечує можливість організації зв'язку цього МК з персональним комп'ютером. Крім RS-232С, популярними протоколами у світі вбудованих систем є RS-485. I2С (двопровідна двонаправлена ​​шина). SРІ (послідовний периферійний трипровідний інтерфейс). Вitbus (послідовна магістраль управління), САN (міжконтроллерний мережевий інтерфейс), USВ (універсальна послідовна шина) та деякі інші. Практично для будь-якого типу послідовного каналу сьогодні можна знайти МК, який має у своєму складі відповідний послідовний порт.

Паралельні порти вводу/виводу також обов'язкова частина будь-якого МК. Зазвичай їх використовують для зв'язку з найближчим оточенням – датчиками та виконавчими механізмами.

Важлива особливість паралельних портів МК - можливість програмування виконання кількох функцій. Наприклад, у 8051 висновки портів Р0 і Р2 можуть використовуватися або як звичайні статичні регістри вводу/виводу, або як шина адреси і даних для підключень зовнішніх пристроїв, таких як додаткова пам'ять програм, пам'ять даних, пристрої вводу/виводу. Це надає МК архітектурної гнучкості. Порт РЗ може або використовуватися як статичний регістр вводу/виводу, або виконувати спеціальні функції для роботи послідовного каналу, таймерів, контролера переривань і т. д. Можливість перепрограмування дозволяє максимально ефективно задіяти всі висновки МК в проектованому пристрої.

Система переривань - одне з найважливіших елементів МК. Особливість систем реального часу у тому, що з них надзвичайно важливим параметром є час реакцію зовнішні події. Пояснимо на простому прикладі. Коли ви робите математичний розрахунок на комп'ютері, то зазвичай запускаєте програму, призначену для виконання цих розрахунків, і після того, як вона завантажиться в пам'ять комп'ютера, вводьте умову завдання та чекаєте на результат. Час очікування у разі немає принципового значення (у межах розумного, звісно) - повільна робота комп'ютера може дратувати, але у результаті це позначиться. Система реального часу передбачає цілком конкретну, що розраховується на етапі розробки швидкість реакції системи управління зовнішні події. Затримки понад розрахункові тут просто неприпустимі - вони можуть призводити до катастрофічних наслідків.

Проблеми швидкої реакцію події вирішуються організацією системи переривань. Вона має на увазі, що для кожної такої події розробляється окремий "шматок" коду, який формує реакцію МК на нього. Цей "шматок" коду називають підпрограмою обробки запиту на переривання (для стислості часто використовують термін підпрограма переривання) і розміщують у пам'яті програм за відомою адресою. У момент виникнення заданої події сигнал про це надходить на вхід контролера переривань. Останній являє собою пристрій, що встановлює однозначну відповідність між вхідним сигналом про подію, що відбулася, і адресою програмної пам'яті, за яким розміщена точка входу в підпрограму обробки запиту переривання від даної події. Контролер перериває виконання ЦП поточної програми та ініціює його перехід виконання підпрограми обробки переривання. Час, що минув з моменту виникнення події на початок виконання першої інструкції підпрограми переривання, називають часом реакції МК на подію. Після закінчення обробки ЦП автоматично повертається до виконання перерваної програми.

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

Зазвичай, коли говорять про якесь МК, то завжди згадують сімейство, до якого він належить. До одного сімейства відносять вироби, що мають однакове ядро, під яким розуміють сукупність таких понять, як система команд, циклограма роботи ЦП, організація пам'яті програм і даних, система переривань і базовий набір периферійних пристроїв. Фактично на рис. 1 представлено ядро, що стало основою створення сотень інших модифікацій сімейства 8051.

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

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

Розробка програми - одне із найважливіших етапів у створенні пристрою з урахуванням МК. Без неї він "мертвий", не реагує на зовнішні дії і не видає сигналів, що управляють.

При включенні живлення МК негайно починає виконувати програму, що у підключеної до нього пам'яті програм (зазвичай це ПЗУ). Її виконання починається з деякої фіксованої адреси, найчастіше нульової. Адреса - це просто номер осередку ПЗУ Процес здійснюється наступним чином: МК зчитує число, що зберігається в пам'яті програм, і в залежності від його значення, що називається машинним кодом, виконує певні дії над вмістом регістрів АЛП. пам'яті, портів тощо. буд. Наприклад, прочитавши з пам'яті програм число 32Н. МК "розуміє", що потрібно рахувати значення з вхідного порту номер 2 і помістити його в регістр-акумулятор. Часто одного байти для опису дії не вистачає, і тоді МК зчитує з пам'яті додаткові байти.

Після виконання дії МК зчитує значення з наступного по порядку комірки пам'яті і т. д. Сукупність байтів, що описують одну дію, що виконується МК, називають машинною командою (інструкцією), а сукупність таких команд, які "розуміє" МК. - Його системою команд чи набором інструкцій (Instruction Set). МК різних сімейств мають різні системи команд, т. е. машинні коди вони мають різні значення, хоча виконують схожі дії.

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

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

Першим кроком у полегшенні процесу створення програм була комп'ютерна програма – так званий транслятор із мови асемблера. Ідея полягала в тому, щоб виражати виконувані МК дії більш зрозумілою людині мовою і потім перетворювати ці вирази на машинні коди. У наведеному вище прикладі машинної інструкції, яка зчитує значення порту 2 і поміщає його в акумулятор, дії, що виконуються, можна умовно позначити як MOV A.P2.

Тут слово MOV (від англ. move), зване мнемонікою інструкції, означає пересилання значення, а А і Р2, іменовані операндами, вказують, звідки взяти значення і куди його помістити. Система подібних позначень називається мовою асемблера. Програма написана на ньому. обробляється транслятором, який перетворює конструкції мови асемблера на машинні коди.

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

Незважаючи на очевидні переваги програмування на асемблері перед програмуванням у машинних кодах, у багатьох випадках асемблер недостатньо ефективний для реалізації завдань розробника. Справа в тому, що МК здатний виконувати лише найпростіші дії на кшталт арифметичних операцій над цілими числами, пересилок, порівнянь тощо. Для більш складних завдань, наприклад, для операцій над числами з плаваючою комою, розробникам доводилося писати спеціальні підпрограми, користуватися якими незручно і громіздко. p align="justify"> Наступним кроком у розробці програм для МК стало створення спеціальних комп'ютерних програм - трансляторів з мов програмування високого рівня, або компіляторів. Найбільшого поширення набула мова програмування Сі.

З появою трансляторів розробка програм МК різко спростилася. Якщо, наприклад, потрібно скласти у програмі два числа, то тепер досить просто написати а = b + с. а транслятор перетворює цей вислів на необхідну послідовність машинних команд в залежності від типів змінних a, b і с.

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

Розглянемо процес створення програми для МК мовою Сі. У процесі розробки знадобиться персональний комп'ютер.

Після з'ясування поставленого завдання розробник пише вихідний текст своєї програми мовою Сі за допомогою будь-якого текстового редактора. Потім він запускає програму-транслятор із мови Сі. яка перетворює вихідний текст на проміжний об'єктний файл. Транслятор управляється за допомогою набору ключів (їх опис можна знайти в документації), які вказуються в його командному рядку. Якщо при написанні програми розробник припустився синтаксичних помилок, транслятор видає на екран їх список із зазначенням для кожного номера рядка у файлі вихідного тексту. Розробник має виправити усі помилки. Після успішної трансляції об'єктні файли потрібно обробити редактором зв'язків (лінкером), який генерує файл програми в машинних кодах.

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

Описаний процес виглядає досить громіздким: розробник повинен вручну запускати різноманітні програми (текстовий редактор, компілятор Сі, лінкер пам'ятати керуючі ключі, шукати помилки в програмі за номерами рядків у файлі. Останнім на сьогоднішній день кроком у полегшенні праці розробника програм для МК стала поява інтегрованих розробки (Integrated Development Environment. IDE) Інтегроване середовище розробки - це комп'ютерна програма, що пов'язує воєдино всі етапи розробки програми, яка поєднує в собі текстовий редактор для написання вихідних текстів, транслятори з асемблера та Сі, лінкер, відладчик, довідкову інформацію з МК інші засоби, необхідні розробнику Налаштування трансляторів, лінкера та інших компонентів здійснюється не методом вказівки ключів у командному рядку, а у вигляді діалогових вікон, де потрібно тільки розставити "галочки" в потрібних місцях. .

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

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

Основні характеристики найпопулярніших пакетів засобів розробки наведено у таблиці.

Мікроконтролери для початківців і не тільки
(Натисніть для збільшення)

СИМВІЛЬНЕ НАЛАДЖЕННЯ ПРОГРАМ ДЛЯ МК

За рідкісним винятком програми для МК через помилки, що містяться в них, не починають працювати з першого разу і вимагають налагодження. До питань налагодження розробники ставляться по-різному. Деякі вважають, що досить уважно проаналізувати вихідний текст, подивитися за допомогою осцилографа, що відбувається на висновках МК, і можна виправити всі помилки. Такий спосіб застосовується, якщо розробник має великий досвід, добре знає застосовуваний МК і має в своєму розпорядженні транслятор, який завжди генерує правильний код (зазвичай це асемблер), і достатнім часом.

Інші використовують у своїй практиці саморобні налагоджувальні монітори - набори спеціальних підпрограм, що завантажуються в МК разом із основною програмою. Остання викликає у контрольних точках підпрограми монітора, а ті видають інформацію про стан ресурсів МК. У такий спосіб можна налагодити практично будь-яку програму, але має недоліки, які можуть виявитися істотними. По-перше, налагоджувальному монітору необхідно надати для роботи частину ресурсів МК: як мінімум - частина адресного простору коду і кілька осередків стека, а як максимум - ще й частина ОЗП і периферійні пристрої МК. використовувані монітором для відображення інформації. Виділити ресурси монітору налагодження буває непросто, якщо основна програма сама активно завантажує МК. Наприклад, у МК PIC 16С5х (Microchip) всього два вічка стека, і використовувати виклики підпрограм налагоджувального монітора важко. По-друге, виклики монітора забирають час у основної програми і, отже, його не можна викликати з критичних часів програми. По-третє, створення налагоджувального монітора, саме собою, потребує часу.

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

Перш ніж розповідати про можливості, що надаються такими відладниками, необхідно торкнутися вибору компілятора, за допомогою якого вихідні тексти програм перетворюються на машинний код. У переважній більшості випадків переважно програмування мовою високого рівня. Використання асемблера необхідно, якщо до розміру і швидкодії коду, що генерується, пред'являються дуже жорсткі вимоги. В даний час таких випадків стає все менше, тому що практично завжди можна взяти "швидший" МК з великим обсягом пам'яті. Крім того, сучасні пакети крос-коштів дозволяють легко писати змішані програми, де частина модулів написана на Сі. а найбільш критичні до швидкодії частини – на асемблері. Компілятори Сі дозволяють також вставляти у вихідні тексти інструкції асемблерів.

Які переваги програмування на Сі проти програмуванням на асемблері? Коротко вони полягають у наступному:

  • відпадає необхідність дбати про операції з числами великої розрядності. Компілятор автоматично згенерує правильний код операції а+Ь. якщо а та b будуть 8-, 16-, 32-бітними числами, числами з плаваючою комою і навіть числами різних типів;
  • в комплекті з компілятором поставляється велика бібліотека функцій (підпрограм), що реалізують різні математичні операції (тригонометричні функції, зведення в ступінь тощо). роботу з символьними рядками, форматоване введення/виведення тощо;
  • багато помилок програміста діагностуються компілятором: він, наприклад, не дозволить передати функції неправильне число параметрів або параметри неправильних типів, забути поставити оператор повернення тощо;
  • вихідний текст, написаний на Сі, набагато легше читається, він компактніший, легше модифікується;
  • програми, написані на Сі. легше переносяться на МК інших сімейств.

Щоб ефективно налагоджувати програми, написані мовою високого рівня, розробник повинен мати у своєму розпорядженні налагоджувальні засоби, що надають адекватні можливості для відображення даних, що використовуються в програмі, а також для відстеження виконання програми за її вихідним текстом. Для забезпечення таких можливостей потрібні дві умови:

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

Тепер розглянемо, як налагоджувач повинен інтерпретувати символьну інформацію та які можливості повинні у зв'язку з цим надаватися користувачеві.

ВІДСТЕЖЕННЯ ВИКОНАННЯ ПРОГРАМИ ЗА ЇЇ ВИХІДНОМУ ТЕКСТУ

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

Таблиця номерів рядків дозволяє також проводити контекстні дії з текстом програми, наприклад, виконувати її "до курсору", тобто до вказаного користувачем місця у вихідному тексті, ставити точки зупинки на вказані рядки тощо. Контекстні дії зручні тим, що розробнику не потрібно знати адреси, що відповідають рядкам вихідного тексту: відладчик сам визначить їх за таблицею. Відладчик повинен також "знати" адреси підпрограм, функцій та міток коду та вміти знаходити вихідний текст функції на її ім'я.

ВІДОБРАЖЕННЯ ДАНИХ, ЩО ВИКОРИСТОВУЮТЬСЯ В ПРОГРАМІ, ЩО НАЛАГАЄТЬСЯ

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

Як правило, розробники використовують у програмах іменовані дані, тобто кожному об'єкту, який використовується в програмі, надається ім'я. Об'єкти можуть бути різної складності – від простих осередків пам'яті до складних конструкцій мов високого рівня типу структур, масивів тощо.

ДАНІ В АСЕМБЛЕРНИХ ПРОГРАМАХ

У асемблерних програмах використовують у основному прості дані, т. е. осередки пам'яті. Використовуються також масиви. Для правильного відображення простих даних відладчику потрібно "знати":

  • ім'я об'єкта:
  • адресу об'єкта у пам'яті;
  • адресний простір МК, де розташовується об'єкт. Багато МК мають більше однієї області даних. Наприклад, МК сімейства MCS-51 є внутрішня пам'ять даних, зовнішня пам'ять даних і бітовий простір;
  • розрядність об'єкта, тобто займане ним число байт. 16-бітові МК, такі як представники сімейства MCS-96, "вміють" оперувати 8-. 16-. 32-бітними даними. Тут слід зазначити один істотний момент. Для розробника важливо, який розмір має об'єкт. Наприклад, восьмирозрядні МК сімейства PIC (Microchip) оперують лише байтами. Якщо необхідно мати в програмі, наприклад, 16-бітний лічильник, то маніпулювати кожним байтом доводиться окремо. Але програмісту при налагодженні хотілося б бачити не кожен байт лічильника окремо, а обидва байти відразу, у вигляді 16-бітної змінної. Популярні крос-ассемблери такої можливості не надають. Виняток - крос-асемблер PASM-PIC фірми "Фітон", який дозволяє оголошувати у програмі дані розміром байт, слово, подвійне слово, а також масиви таких об'єктів. Під час налагодження програм, написаних за допомогою PASM-PIC. всі об'єкти відображаються у вигляді, що відповідає їх логічному розміру та структурі;
  • область видимості об'єкта. Якщо програма складається з кількох модулів, програміст має можливість локалізувати область видимості імені в межах одного модуля. Таким чином, у різних модулях можуть існувати об'єкти з однаковими іменами, але різними атрибутами. Відладчик повинен "розбиратися", коли якийсь об'єкт активний, і правильно відображати його. Зауважимо, однак, що практика використання однакових імен у різних модулях часто призводить до плутанини та помилок. Якщо об'єкт оголошений глобальним (PUBLIC) і видно у всіх модулях, труднощів з інтерпретацією немає.

Маючи вищевикладену інформацію, відладчик повинен, отримавши від користувача ім'я об'єкта, відобразити його значення відповідно до типу. Найбільш "просунуті" налагоджувачі додатково можуть відображати інші атрибути об'єкта.

ДАНІ У ПРОГРАМАХ НА МОВИХ ВИСОКОГО РІВНЯ

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

СТРУКТУРА ОБ'ЄКТІВ

Крім простих змінних різної розрядності, в програмах на Сі використовуються також змінні з плаваючою комою, структури (struct), об'єднання або спілки (union), покажчики, одновимірні та багатовимірні масиви. Останні можуть складатися як із простих об'єктів, так і зі складних (структур, спілок, покажчиків).

Використання складних об'єктів у програмах, безумовно, зручне. Однак через складність їхньої структури вкрай бажано мати можливість її адекватного відображення на етапі налагодження. У відладниках фірми "Фітон" складні об'єкти можуть відображатися як у стислому (список значень елементів), так і у розгорнутому вигляді із зазначенням адреси, значення та типу кожного елемента масиву та/або члена структури. Реалізація покажчиків у різних компіляторах різна. Те, що МК зазвичай має кілька адресних просторів, створює додаткові труднощі, оскільки під час роботи з покажчиком має бути відомо, крім адреси, і адресний простір, куди вказує покажчик. В деяких реалізаціях ідентифікатор адресного простору є складовою значення покажчика, в інших компілятор заздалегідь "знає" це і генерує відповідний код.

Крім цього компонент адреси в покажчику може бути розміром від 8 до 32 біт. При відображенні значень покажчиків відладчик повинен знати всі деталі їх реалізації в кожному компіляторі.

СПОСОБИ РОЗМІЩЕННЯ ОБ'ЄКТІВ У ПАМ'ЯТІ

Крім статичних об'єктів, адреси яких змінюються під час виконання програми, у програмі, написаної мовою високого рівня, можуть існувати звані автоматичні об'єкти, пам'ять під які тимчасово відводиться в стеку МК. Адреси таких об'єктів не абсолютні, а динамічно визначаються на етапі виконання програми. Зазвичай вони відраховуються від поточного значення деякої статичної змінної, яка називається покажчиком кадру стека (Base Pointer або BP). Так як значення BP формується програмою динамічно на етапі виконання, значення автоматичних об'єктів доступні тільки в межах їхньої області видимості, тобто при правильному значенні BP. Відладчик при відображенні значень автоматичних об'єктів повинен знати спосіб, яким визначаються адреси, а також відстежувати правильність значення BP

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

ОБЛАСТЬ ВИДІМОСТІ ОБ'ЄКТУ

Як і в асемблерних, в програмах на Сі існують глобальні об'єкти, доступні на ім'я з будь-якого модуля, і об'єкти, локалізовані в модулі (ці об'єкти оголошуються як static). Однак автоматичні та регістрові змінні створюють налагоджувачам додаткові труднощі при відображенні їх значень. Справа в тому що. по-перше, час життя автоматичного об'єкта обмежена його областю видимості, а по-друге, що охоплюють області видимості можуть мати свої автоматичні об'єкти з тими самими іменами. Проілюструємо це з прикладу функції, має кілька вкладених областей видимості:

Мікроконтролери для початківців і не тільки

Змінна з іменем "а" існує весь час, поки виконується функція f, але залежно від того, яка частина функції виконується, ім'я "а" означає різні змінні. При трасуванні функції f відладчик повинен залежно від того, яка змінна активна, правильно показувати її значення.

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

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

Для полегшення процесу налагодження систем розроблено цілий клас інструментальних засобів. Їх основне призначення - зробити процес функціонування МК, що налагоджується, "прозорим", тобто легко контрольованим, довільно керованим і модифікованим по волі розробника. Хороший професійний інструментальний комплекс додатково може надати розробнику безліч сервісних послуг, тим самим полегшуючи його працю, позбавляючи від рутинних операцій.

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

ВНУТРІСХЕМНІ ЕМУЛЯТОРИ

Внутрішньосхемний емулятор (ВСЕ) - програмно апаратний засіб, здатне замінювати собою емульований процесор у реальному пристрої. ВСЕ - найбільш потужний та універсальний налагоджувальний засіб.

Функціонально ВСЕ діляться на стикувані із зовнішньою обчислювальною машиною (зазвичай це - IBM-сумісний ПК) і автономно, що функціонують. Останні мають власні обчислювальні ресурси та засоби введення/виводу, тому при рівних можливостях коштують значно дорожче перших, а при однаковій ціні суттєво поступаються їм у функціональних та сервісних можливостях.

З налагоджуваною системою ВРЕ зазвичай з'єднують кабелем зі спеціальною емуляційною головкою. Відносно нещодавно з'явилися моделі ВСЕ, у яких така головка конструктивно поєднана з основним блоком і вставляється в систему, що налагоджується, замість МК. Якщо останній неможливо видалити (висновки впаяні в плату), використання ВСЕ припустимо за умови, що цей МК має режим налагодження, в якому всі його висновки знаходяться в третьому (високоімпедансному) стані. У цьому випадку для підключення ВРЕ використовують спеціальний адаптер-кліпсу, що приєднується безпосередньо до висновків МК, що емульується.

Як мінімум. ВСЕ містить відладчик, вузол емуляції МК. емуляційну пам'ять та підсистему точок зупинки. До складу більш досконалих ВРЕ можуть додатково входити трасувальник, процесор точок зупинки, профільувальник (аналізатор ефективності програмного коду), таймер реального часу, програмно-апаратні засоби, що дозволяють читати та модифікувати ресурси емульованого процесора "на льоту", програмно-апаратні засоби, що забезпечують синхронне управління та необхідні для емуляції в мультипроцесорних системах, інтегроване середовище розробки.

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

Більш потужні налагоджувачі (зазвичай їх називають високорівневими або High-Level Debuggers) дозволяють також.

  • вести символьне налагодження (завдяки тому, що відладчик, використовуючи спеціальну інформацію, що постачається компілятором, "знає" адреси всіх символьних змінних, масивів та структур). При цьому користувач може оперувати більш прийнятними для людини символьними іменами, не обтяжуючи себе запам'ятовуванням їх адрес;
  • контролювати й аналізувати як дизассемблированный текст, а й вихідний текст програми, написаної мовою високого рівня, і навіть із власними коментарями.

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

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

Емуляційну пам'ять використовують у процесі налагодження замість ПЗУ системи, що розробляється. Більше того, вона дозволяє налагоджувати програму без реальної системи або її макета. Якщо необхідно внести зміни в програму, що налагоджується, достатньо завантажити нову або модифіковану програму в пам'ять емулятора, а не займатися перепрограмуванням ПЗУ.

Існують ВСЕ. які дозволяють користувачеві "підставляти" емуляційну пам'ять замість ПЗУ не тільки цілком, а й побічно (у деяких моделях мінімальний розмір блоку – 1 байт). у порядку, визначеному користувачем. Для цього йому достатньо задав" розподіл пам'яті даних і пам'яті програм, відповідно до якого процесор отримуватиме доступ і до вмісту ПЗУ в системі, що налагоджується, і до вмісту емуляційної пам'яті ВСЕ. Таку пам'ять зазвичай називають пам'яттю з можливістю мепінгу.

Трасувальник являє собою логічний аналізатор, що працює синхронно з процесором і фіксує потік виконуваних інструкцій та стану обраних зовнішніх сигналів. Існують ВСЕ, що дозволяють трасувати як зовнішні сигнали, а й стану внутрішніх ресурсів МК. наприклад, регістрів. У цих пристроях використовують спеціальні версії МК (емуляційні кристали).

Процесор точок зупинки дає можливість зупиняти виконання програми або робити інші дії (наприклад, запускати або зупиняти трасувальник) при виконанні заданих користувачем умов, на відміну від механізму звичайних точок зупинки, процесор дозволяє на апаратному рівні формувати та відстежувати умови практично будь-якої складності, при цьому емульований процес не виводиться із масштабу реального часу. У деяких моделях ВСЕ процесор точок зупинки може додатково використовуватися для динамічного управління трасувальником.

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

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

Наявність у програмній оболонці ВРЕ вбудованого редактора, менеджера проектів та системи управління істотно полегшує роботу розробника, позбавляючи його безлічі рутинних дій. Для нього стирається грань між написанням програми, її редагуванням та налагодженням. Перехід від редагування вихідного тексту до налагодження та назад здійснюється "прозоро" та синхронно з активізацією відповідних вікон. Менеджер проектів при необхідності автоматично запускає компіляцію та активізує відповідне вікно програмного інтерфейсу. Так само просто можна перейти до налагодження проекту за допомогою наявного відладчика-симулятора або приступити до "прошивки" ПЗУ налагодженою програмою.

Деякі ВСЕ надають користувачам та інші додаткові можливості. Серед них особливо слід зазначити одну, хоч і досить специфічну, але в ряді випадків має принципове значення, можливість побудови багатоемуляторних комплексів, необхідних для налагодження мультипроцесорних систем.

У загальному випадку можливості ВСЕ з контролю та управління функціонуванням пристроїв, що налагоджуються, можуть бути обмежені (наприклад, некоректною обробкою переривань у покроковому режимі, забороною на використання послідовного порту тощо). Також необхідно пам'ятати, що у кожної моделі ВСЕ є свій перелік підтримуваних МК та компіляторів.

Однак для більшості популярних МК розроблені ВСЕ, які не мають обмежень щодо використання ресурсів кристалів, що відладжуються. Можливості такого ВСЕ проілюструємо на прикладі моделі PICE-51 фірми "Фітон".

PICE-51 - пристрій, створений із застосуванням програмованих логічних ІВ (ПЛІС). Це дозволило різко зменшити розміри ВРЕ, мінімізувати відхилення його електричних і частотних характеристик від характеристик емульованого МК і тим самим досягти максимальної точності емуляції на частотах до 33 МГц при напругах живлення від 3,3 до 5 В. Перезавантажувальна апаратна структура РЄ-51 забезпечує емуляцію практично всіх МК сімейства MCS-51. Програмна підтримка працює у середовищі Windows.

PICE-51 складається з основної плати, змінного адаптера під конкретну групу МК та змінної емуляційної головки також під конкретний тип корпусу. На основній платі зібрані трасувальник і процесор точок зупинки, на платі змінного адаптера - процесор, що емулює, під конкретний тип МК. Емуляційні головки забезпечують встановлення приладу в розетки DIP та PLCC на платі користувача. Живлення здійснюється від блоку з вихідною напругою +5 В (0,5 А) або від пристрою, що налагоджується. Зв'язок з комп'ютером - гальванічно розв'язаним каналом RS-232C при швидкості 115 кбод.

Інші характеристики та можливості PICE-51 наступні:

  • точна емуляція - відсутність будь-яких обмежень використання програмою користувача ресурсів МК;
  • до 256 Кбайт емульованої пам'яті програм та даних. Підтримка банкованої моделі пам'яті. Розподіл пам'яті між ВСЕ та пристроєм користувача з точністю до 1 байти;
  • до 512К апаратних точок зупинки доступу до пам'яті програм і даних,
  • апаратна підтримка для налагодження програм мовами високого рівня;
  • трасування восьми довільних зовнішніх сигналів;
  • чотири виходи синхронізації апаратури користувача;
  • трасувальник реального часу з буфером обсягом від 16 до 64К фреймів (масивів) по 64 біти з доступом "на льоту". Трасування адреси, даних, сигналів керування, таймера реального часу та восьми зовнішніх сигналів користувача;
  • програмований фільтр трасування;
  • апаратний процесор точок зупинки з можливістю завдання складної умови зупинки емуляції по комбінації сигналів адреси, даних, управління, восьми зовнішніх сигналів, таймера реального часу, лічильників подій та таймера затримки:
  • чотири комплексні точки зупинки, які можуть бути використані незалежно або в комбінаціях за умовами AND/OR/IF-THEN;
  • 48-розрядний таймер реального часу;
  • "прозора" емуляція - доступ "на льоту" до емульованої пам'яті, точок зупинки, процесора точок зупинки, буфера трасування, таймера реального часу;
  • керований генератор тактової частоти для емульованого МК. Можливість плавної зміни від 500 кГц до 40 МГц;
  • вбудована система самодіагностики апаратури ВРЕ. Підтримується розробка програм на рівні ведення проектів для макроассемблера МСА-51 ("Фі-тон"/"Мікрокосм"), а також для пакетів крос-коштів фірм Keil Software та IAR Systems;
  • підтримка повнофункціонального символьного налагодження програм, створених за допомогою наступних компіляторів: асемблера ASM51 фірми Intel, компілятора PL/M фірми Intel, асемблерів та компіляторів Сі фірм Avocet Systems. Hi-tech. Tasking Software;
  • автоматичне збереження та завантаження файлів конфігурації апаратури, інтерфейсу та опцій налагодження. Забезпечено сумісність файлів конфігурації з симулятором PDS-51 та переносимість проектів між PICE-51 та симулятором PDS-51;
  • можливість налаштування кольорів, шрифтів та інших параметрів для всіх вікон одночасно та для кожного вікна окремо.

Такий широкий набір функціональних можливостей робить ВСЕ найбільш потужним та універсальним засобом налагодження.

СИМУЛЯТОРИ

Симулятор - програмний засіб, здатний імітувати роботу МК та її пам'яті. Як правило, воно складається з відладчика, моделі центрального процесора та пам'яті. Більш досконалі пристрої містять у своєму складі моделі вбудованих периферійних пристроїв (таймерів, портів. АЦП та систем переривань).

Симулятор повинен "вміти" завантажувати файли програм у всіх популярних форматах, максимально повно відображати інформацію про стан ресурсів МК, що симулюється. а також надавати можливості щодо симуляції виконання завантаженої програми у різних режимах. У процесі налагодження модель виконує програму, і на екрані монітора комп'ютера з'являється поточний стан моделі.

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

Залежно від класу налагоджувача, деякі моделі симуляторів підтримують високорівневу символьну налагодження програм.

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

У реальній системі МК зазвичай "займається" зчитуванням інформації із підключених до нього зовнішніх пристроїв (датчиків), обробкою її та видачею керуючих сигналів на виконавчі пристрої. Для того, щоб у простому симуляторі змоделювати роботу датчика, потрібно вручну змінювати поточний стан моделі периферійного пристрою, до якого в реальній системі підключений датчик. Якщо, наприклад, прийому байта через послідовний порт встановлюється певний прапорець, а сам байт потрапляє у певний регістр, то обидві ці дії потрібно робити в симуляторі вручну. У деяких моделях цю проблему вирішено: симулятори мають вбудовані засоби створення моделей підключених до МК зовнішніх пристроїв, включаючи засоби графічного відображення інформації.

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

Налагоджувальні монітори

Налагоджувальний монітор - спеціальна програма, що завантажується в пам'ять системи, що налагоджується. Вона змушує МК виконувати, окрім прикладного завдання, ще й налагоджувальні функції:

  • завантаження прикладних кодів користувача у вільну від монітора пам'ять;
  • встановлення точок зупинки;
  • запуск та зупинення завантаженої програми в реальному часі;
  • прохід програми користувача кроками;
  • перегляд, редагування вмісту пам'яті та керуючих регістрів.

Програма монітора працює "у зв'язці" з комп'ютером або пасивним терміналом, на яких і відбувається візуалізація та керування процесом налагодження. Гідність цього підходу

  • дуже малі витрати при збереженні можливості вести налагодження в реальному масштабі часу, головний недолік;
  • відволікання ресурсів МК на налагоджувальні та зв'язкові процедури (монітор займає певний обсяг пам'яті, переривання, послідовний канал). Нещодавно з'явилися програми, які практично не займають апаратних ресурсів МК (про них буде розказано у розділі "Емулятор ПЗУ").

ПЛАТИ РОЗВИТКУ

Плати розвитку, чи, як їх називати у зарубіжної літературі, оціночні плати (Evaluation Boards). - Своєрідні конструктори для макетування прикладних систем. Останнім часом багато фірм-виробників, випускаючи нові моделі МК. пропонують та відповідні плати розвитку. Зазвичай це друкована плата з встановленими на ній МК і всіма необхідними для нормальної роботи елементами, а також системами зв'язку з комп'ютером. Як правило, на платі передбачено вільне місце для монтажу пристрою користувача, що розробляється. Іноді є і готове "розведення" для встановлення рекомендованих фірмою додаткових пристроїв (ПЗУ, ОЗУ, РК дисплея, клавіатури, АЦП та ін.). Плати, доопрацьовані користувачем, вигідно використовувати як одноплатні контролери, що вбудовуються в дрібносерійну продукцію (5...20 шт.).

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

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

У другому випадку плата розвитку містить убудовані системи програмування внутрішнього ПЗП МК. які керуються комп'ютером. Програму монітора заносять у ПЗУ МК разом із прикладною, підготовленою відповідним чином (у потрібні місця вставляють виклики підпрограм налагодження монітора). Потім здійснюється пробний прогін. Щоб внести виправлення в програму, що відладжується, її стирають з ПЗУ і записують в нього відкориговану. Готову прикладну програму отримують із налагодженої шляхом видалення монітора та всіх викликів його функцій. На такий алгоритм налагодження розраховані плати розвитку для МК сімейств PIC-Micro (Microchip), 80С750 (Philips), 89С2051 (Atmel).

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

Налагоджувальні можливості комплекту "плата розвитку плюс монітор" не настільки універсальні, як можливості ВРЕ. до того ж деяка частина ресурсів МК у процесі налагодження відбирається до роботи монітора. Проте наявність закінченого набору готових програмно-апаратних засобів, що дозволяють без втрати часу приступити до монтажу та налагодження прикладної системи, у багатьох випадках є вирішальним фактором. Особливо якщо врахувати, що коштує такий комплект у кілька разів менше, ніж універсальний емулятор.

ЕМУЛЯТОРИ ПЗУ

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

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

Останнім часом з'явилися звані інтелектуальні емулятори ПЗУ. Вони дозволяють "заглядати" всередину МК на платі користувача і по управлінню налагодженням схожі на ВСЕ. Фірма Cactus навіть представляє свій фактично інтелектуальний емулятор ПЗУ, як ВСЕ ряду МК, настільки неможливо відрізнити роботу з тим і іншим. Насправді процесор у цьому випадку не заміщається, а використовується те, що стоїть на платі користувача.

Інтелектуальний емулятор ПЗУ це гібрид звичайного емулятора ПЗУ. налагоджувального монітора та системи швидкого перемикання шини з одного на інший. Цим створюється ефект, якби монітор налагодження був встановлений на платі користувача, і при цьому він практично не займає у МК апаратних ресурсів, крім невеликої (приблизно 4 Кбайт) зони програмних кроків. Подібний емулятор розроблений, наприклад, фірмою "Фітон" для всіх існуючих та майбутніх МК, які мають ядро ​​8051, але додатково насичені різними пристроями вводу/виводу. Виріб підтримує безліч різних МК фірм Philips, Siemens. OKI.

ІНТЕГРОВАНІ СЕРЕДОВИЩА РОЗРОБКИ

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

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

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

Уникнути великого обсягу рутинної роботи і тим самим істотно підвищити продуктивність праці програміста дозволяють так звані інтегровані середовища (оболонки) розробки, що з'явилися і швидко завойовують популярність (Integrated Development Environment IDE).

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

Інтегроване середовище дозволяє:

  • використовувати вбудований багатофайловий текстовий редактор, спеціально орієнтований працювати з вихідними текстами програм;
  • спостерігати одночасно (у багатовіконному режимі) діагностику виявлених при компіляції помилок та вихідний текст програми, доступний для редагування;
  • вести паралельну роботу над кількома проектами. Менеджер проектів дозволяє використовувати будь-який проект як шаблон для нового. Опції компіляторів і список вихідних файлів проекту, що використовуються, встановлюються в діалогових меню і зберігаються в рамках проекту, усуваючи необхідність роботи з незручними batch-файлами;
  • піддавати перекомпіляції тільки модулі, що редагувалися;
  • завантажувати програму, що налагоджується, в наявні засоби налагодження і працювати з ними без виходу з оболонки;
  • підключати до оболонки практично будь-які програмні засоби.

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

Таким чином, вибираючи інструментальні засоби налагодження, доцільно брати до уваги наступний комплекс показників: перелік підтримуваних МК, обмеження на ресурси емульованих/симулюваних МК, можливість символьного налагодження, перелік підтримуваних компіляторів і, нарешті, сервісні можливості.

Автори: Ю.Зобнін, Ш.Кобахідзе, м.Москва

Дивіться інші статті розділу Мікроконтролери.

Читайте та пишіть корисні коментарі до цієї статті.

<< Назад

Останні новини науки та техніки, новинки електроніки:

Новий спосіб управління та маніпулювання оптичними сигналами 05.05.2024

Сучасний світ науки та технологій стрімко розвивається, і з кожним днем ​​з'являються нові методи та технології, які відкривають перед нами нові перспективи у різних галузях. Однією з таких інновацій є розробка німецькими вченими нового способу керування оптичними сигналами, що може призвести до значного прогресу фотоніки. Нещодавні дослідження дозволили німецьким ученим створити регульовану хвильову пластину всередині хвилеводу із плавленого кремнезему. Цей метод, заснований на використанні рідкокристалічного шару, дозволяє ефективно змінювати поляризацію світла через хвилевід. Цей технологічний прорив відкриває нові перспективи розробки компактних і ефективних фотонних пристроїв, здатних обробляти великі обсяги даних. Електрооптичний контроль поляризації, що надається новим методом, може стати основою створення нового класу інтегрованих фотонних пристроїв. Це відкриває широкі можливості для застосування. ...>>

Приміальна клавіатура Seneca 05.05.2024

Клавіатури – невід'ємна частина нашої повсякденної роботи за комп'ютером. Однак однією з головних проблем, з якою стикаються користувачі, є шум, особливо у випадку преміальних моделей. Але з появою нової клавіатури Seneca від Norbauer & Co може змінитися. Seneca – це не просто клавіатура, це результат п'ятирічної роботи розробників над створенням ідеального пристрою. Кожен аспект цієї клавіатури, починаючи від акустичних властивостей до механічних характеристик, був ретельно продуманий і збалансований. Однією з ключових особливостей Seneca є безшумні стабілізатори, які вирішують проблему шуму, характерну для багатьох клавіатур. Крім того, клавіатура підтримує різні варіанти ширини клавіш, що робить її зручною для будь-якого користувача. І хоча Seneca поки не доступна для покупки, її реліз запланований на кінець літа. Seneca від Norbauer & Co є втіленням нових стандартів у клавіатурному дизайні. Її ...>>

Запрацювала найвища у світі астрономічна обсерваторія 04.05.2024

Дослідження космосу та її таємниць - це завдання, яка привертає увагу астрономів з усього світу. У свіжому повітрі високих гір, далеко від міських світлових забруднень, зірки та планети розкривають свої секрети з більшою ясністю. Відкривається нова сторінка в історії астрономії із відкриттям найвищої у світі астрономічної обсерваторії – Атакамської обсерваторії Токійського університету. Атакамська обсерваторія, розташована на висоті 5640 метрів над рівнем моря, відкриває нові можливості для астрономів у вивченні космосу. Це місце стало найвищим для розміщення наземного телескопа, надаючи дослідникам унікальний інструмент вивчення інфрачервоних хвиль у Всесвіті. Хоча висотне розташування забезпечує більш чисте небо та менший вплив атмосфери на спостереження, будівництво обсерваторії на високій горі є величезними труднощами та викликами. Однак, незважаючи на складнощі, нова обсерваторія відкриває перед астрономами широкі перспективи для дослідження. ...>>

Випадкова новина з Архіву

Соціологія пересадки органів 06.05.2006

Опитування 1900 осіб, проведене Інститутом Геллапа в США, показало, що більше половини дорослих американців не заперечували б проти пересадки їх органів після смерті хворим, що потребують цього.

Готовність подарувати свої органи однакова у чоловіків та жінок, але різна у різних вікових фупп та рас. У віці від 35 до 44 років готові заповідати свої органи понад 75% населення, у віці від 18 до 24 років - 55%, а понад 65 - лише 38% (можливо тому, що вони помилково думають, ніби органи людей похилого віку нікуди не годяться).

Поділ по расах такий: серед білих і людей азіатського походження 62% згодні заповідати свої органи нужденним, серед американців іспанського походження – 47%, а серед негрів – лише 25%.

Серед чорних американців високий рівень недовіри як до трансплантології, а й у медицині взагалі. Однак саме в цій групі найбільше потребують пересадки. Хоча афроамериканці становлять 13% населення США, у списках, що очікують пересадки нирки (найчастіша операція трансплантації), їх 35%.

Інші цікаві новини:

▪ Ажурний метал

▪ Кільце стежить за пульсом

▪ Розкрито секрет довголіття черепах

▪ Отримано нову форму аморфного льоду

▪ Intel навчить телевізори впізнавати людей

Стрічка новин науки та техніки, новинок електроніки

 

Цікаві матеріали Безкоштовної технічної бібліотеки:

▪ Розділ сайту Дозиметри. Добірка статей

▪ стаття Якби знала я, якби знала. Крилатий вислів

▪ стаття Де у світі взагалі немає прізвищ? Детальна відповідь

▪ стаття Завідувач денного стаціонару. Посадова інструкція

▪ стаття Радіоприймач із польовими транзисторами. Енциклопедія радіоелектроніки та електротехніки

▪ стаття Перетворювач 12/220 вольт. Енциклопедія радіоелектроніки та електротехніки

Залишіть свій коментар до цієї статті:

ім'я:


E-mail (не обов'язково):


коментар:





All languages ​​of this page

Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт

www.diagram.com.ua

www.diagram.com.ua
2000-2024