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

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Курсова робота

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

Введення

Мікроконтро ллер (англ. Micro Controller Unit, MCU) - мікросхема, призначена для керування електронними пристроями. Типовий мікроконтроллер поєднує в собі функції процесора і периферійних пристроїв, може містити ОЗУ і ПЗУ. По суті, це однокристальний комп'ютер, здатний виконувати прості завдання. Велика частина випускаються в сучасному світі процесорів - мікроконтролери.

Про однокристальних мікро-ЕОМ чи мікроконтролерах в журналі «Радіо» писалося не раз. Це - і цикл статей про однокристальних мікро-ЕОМ 8048, 8051, 8052, і окремі оглядові статті про мікроконтролерах нових сімейств MCS -96, MCS -151, MCS -152, PIC 16 C ХХ, Z 8 і т.д., і опису програмно-апаратних засобів налагодження мікроконтролерних пристроїв. Мабуть, прийшла пора систематизувати відомості про ці найцікавіших і всемогутніх виробах електронних фірм, познайомити читачів з мікроконтролера, що випускаються в світі сьогодні, розповісти про те, що вони можуть і як це реалізується на практиці, про сучасні засоби програмування і налагодження пристроїв на основі мікроконтролерів, зокрема, про те, що можна зробити, не маючи засобів налагодження або користуючись програмним симулятором-відладчиком, який передбачається розмістити на сайті журналу «Радіо» в Інтернеті, і т.д. Даний цикл статей адресований в першу чергу читачам, що раніше не мали справи з мікроконтролера, але, безсумнівно, буде корисний і тим, хто вже застосовував їх у своїх конструкціях.

1. Перше знайомство

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

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

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

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

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

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

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

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

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

2. Закон Мура і перший МК

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

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

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

Архітектура МК 8051

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

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

У залежності від кількості використаних кодів операцій, системи команд поділяють на дві групи: CISC і RISC. Термін CISC означає складну систему команд і є абревіатурою англійського визначення Complex Instruction Set Computer. Аналогічно термін RISC означає скорочену систему команд і походить від англійського Reduced Instruction Set Computer. Систему команд МК 8051 можна віднести до типу CISC.

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

Спочатку реалізовувати такий підхід вдавалося, лише істотно скоротивши набір команд, звідси і народилася назва RISC. Наприклад, система команд МК сімейства Microchip PIC 16 включає в себе всього 35 інструкцій і може бути віднесена до типу RISC. Очевидно, що в загальному випадку одній команді CISC -архітектури повинні відповідати кілька команд RISC-архітектури. Проте зазвичай виграш від підвищення швидкодії в рамках RISC-архітектури перекриває втрати від менш ефективної системи команд, що призводить до більш високої ефективності RISC-систем в цілому в порівнянні з CISC. Так, найшвидша команда МК 8051 виконується за 12 тактів. Навіть якщо для кожної інструкції потрібно виконати три інструкції RISC-контролера, то в підсумку RISC-архітектура забезпечить чотириразове збільшення продуктивності.

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

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

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

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

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

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

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

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

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

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

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

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

Послідовний порт - канал інформаційного обміну МК із зовнішнім світом. Такі канали зв'язку займають мінімальну кількість висновків кристала, забезпечуючи зв'язок на значні відстані з мінімальними апаратними витратами, У 8051 реалізований універсальний асинхронний послідовний приймач (UART), що підтримує протокол стандарту RS -232 C, що забезпечує можливість організації зв'язку цього МК і персональним комп'ютером. Крім RS -332 C, популярними протоколами в світі вбудованих систем є RS -485, I 2 C (двухпроводная двунаправленная шина), SPI (послідовний периферійний трьохпровідний інтерфейс), Bitbus (послідовна магістраль управління), CAN (межконтроллерний мережевий інтерфейс), US У (універсальна послідовна шина) і деякі інші. Практично для будь-якого типу послідовного каналу сьогодні можна знайти МК, що має в своєму складі відповідний послідовний порт.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

З появою трансляторів розробка програм для МК різко спростилася. Якщо, наприклад, потрібно скласти в програмі два числа, то тепер достатньо просто написати

a = b + c;

а транслятор перетворює це вираження в необхідну послідовність машинних команда залежно від типів змінних a, b і c.

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

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

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

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

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

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

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

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

4. Символьна налагодження програм для МК

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

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

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

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

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

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

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

  • багато помилок програміста діагностуються компілятором: він, наприклад, не дозволить передати функції невірне число параметрів або параметри невірних типів, забути поставити оператор повернення тощо;

  • вихідний текст, написаний на Сі, набагато легше читається, він компактніше, легше модифікується;

  • програми, написані на Сі, легше переносяться на M До інших сімейств.

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

  • компілятор повинен надавати достатню інформацію про структуру програми і використовуються нею даних. Цю інформацію називають символьної (налагоджувальної);

  • відладчик повинен вміти інтерпретувати цю інформацію.

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

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

Відстеження виконання програми з її початкового тексту

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

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

Відображення даних, використовуваних в відлагоджує програми

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

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

Дані в ассемблерних програмах

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

  • ім'я об'єкта;

  • адреса об'єкту в пам'яті;

  • адресний простір МК, в якому розташовується об'єкт. Багато МК мають більш як однієї області даних. Наприклад, в МК сімейства MCS -51 є внутрішня пам'ять даних, зовнішня пам'ять даних і бітове простір;

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

  • область видимості об'єкта. Якщо програма складається з декількох модулів, в програміста є можливість локалізувати область видимості імені в межах одного модуля. Таким чином, у різних модулях можуть існувати об'єкти з однаковими іменами, але різними іншими атрибутами. Відладчик повинен «розбиратися», коли який об'єкт активний, і правильно відображати його. Зауважимо, однак, що практика використання однакових імен в різних модулях часто призводить до плутанини і помилок. У разі якщо об'єкт оголошено глобальним (PUBLIC) і видно в усіх модулях, труднощів з інтерпретацією не виникає.

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

Дані в програмах на мовах високого рівня

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

5. Структура об'єктів

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

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

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

Способи розміщення об'єктів в пам'яті

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

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

Область видимості об'єкта

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

void f (int а)

{

long b;

if (a == 0) a + +;

for (b = a * 2; b <100; b + +)

{

long с;

long a = b / 3;

if (a == 0) a + +;

for (c = a; з <10; c + +)

{

char a = з == 9? 1: 0;

fl (a);

}

f2 (a);

}

f 3 (a);

}

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

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

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

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

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

6. Внутрішньосхемного емулятори

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • точна емуляція - відсутність будь-яких обмежень на використання програмою користувача ресурсів МК;

  • до 256 Кбайт емуліруемой пам'яті програм і даних. Підтримка банкірованной моделі пам'яті. Розподіл пам'яті між ВСЕ і пристроєм користувача з точністю до 1 байта;

  • до 512К апаратних точок зупину з доступу до пам'яті програм і даних;

  • апаратна підтримка для налагодження програм на мовах високого рівня;

  • трасування восьми довільних зовнішніх сигналів;

  • чотири виходи синхронізації апаратури користувача;

  • трассировщик реального часу з буфером об'ємом від 16 до 64К фреймів (масивів) по 64 біти з доступом «на льоту». Трасування адреси, даних, сигналів керування, таймер реального часу і восьми зовнішніх сигналів користувача;

  • програмований фільтр трасування;

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

  • чотири комплексних точки зупину, які можуть бути використані незалежно або в комбінаціях за умовами AND / OR / IF - THEN;

  • 48-розрядний таймер реального часу;

  • «Прозора» емуляція - доступ «на льоту» до емуліруемой пам'яті, точкам зупину, процесору точок зупину, буферу трасування, таймером реального часу;

  • керований генератор тактової частоти для емульованого МК. Можливість плавної зміни її від 500 кГц до 40 МГц;

  • вбудована система самодіагностики апаратури ВСЕ, Підтримується розробка програм на рівні ведення проектів для макроассемблера MCA -51 («Фітон» / «Мікрокосм»), а також для пакетів крос-засобів фірм Keil Software і IAR Systems;

  • підтримка повнофункціональної символьної налагодження програм, створених за допомогою наступних компіляторів: асемблера ASM 51 фірми Intel, компілятора PL / M фірми Intel, асемблерів і компіляторів Сі фірм Avocet Systems, Hi - Tech, Tasking Software;

  • автоматичне збереження та завантаження файлів конфігурації апаратури, інтерфейсу і опцій налагодження. Забезпечено сумісність файлів конфігурації з симулятором PDS -51 і переносимість проектів між PICE - 51 і симулятором PDS -51;

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

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

Симулятори

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

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

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

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

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

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

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

7. Налагодження монітори

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

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

  • установку точок зупину;

  • запуск і останов завантаженої програми в реальному часі;

  • прохід програми користувача по кроках;

  • перегляд, редагування вмісту пам'яті і регістрів.

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

Плати розвитку

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

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

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

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

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

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

Емулятори ПЗУ

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

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

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

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

8. Інтегровані середовища розробки

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

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

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

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

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

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

  • використовувати вбудований многофайловий текстовий редактор, спеціально орієнтований на роботу з вихідними текстами програм;

  • спостерігати одночасно (в багатовіконному режимі) діагностику виявлених при компіляції помилок і початковий текст програми, доступний редагування;

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

  • піддавати перекомпіляції тільки редакцій модулі;

  • завантажувати налагоджують програму в наявні засоби налагодження і працювати з ними без виходу з оболонки;

  • підключати до оболонки практично будь-які програмні засоби.

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

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

Висновок

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

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

Література

  1. Бродин В.Б., Калінін А. В. Системи на мікроконтролерах і БІС програмованої логіки. - М.: ЕКОМ, 2002.

  2. Мікушін А. Цікаво про мікроконтролерах. - М.: БХВ-Петербург, 2006. - ISBN 5-94157-571-8

  3. Фрунзе А. В. Мікроконтролери? Це ж просто!. - М.: ТОВ «ВД СКІМ», 2002. - Т. 1.

  4. Фрунзе А. В. Мікроконтролери? Це ж просто!. - М.: ТОВ «ВД СКІМ», 2002. - Т. 2.

  5. Фрунзе А. В. Мікроконтролери? Це ж просто!. - М.: ТОВ «ВД СКІМ», 2003. - Т. 3.

  6. Голубців. М.С. Мікроконтролери AVR: від простого до складного - М.: СОЛОН-Прес, 2003. 288 с. - (Серія «Бібліотека інженера»).

  7. Журнал «Радіо» № 2 за 2000 р.

Посилання (links):
  • http://digital.sibsutis.ru/content.htm
  • Додати в блог або на сайт

    Цей текст може містити помилки.

    Комунікації, зв'язок, цифрові прилади і радіоелектроніка | Курсова
    207.4кб. | скачати


    Схожі роботи:
    Windows XP - для початківців
    P-CAD для початківців
    Бретонська мова для початківців
    Найкраще Тільки для повнолітніх
    Молоді спеціалісти - це не тільки цінні кадри але і додатковий головний біль для наймача
    Мікроконтролери CISC архітектури
    Мікроконтролери RISC архітектури
    Мікроконтролери Z86 фірми ZILOG
    Омани початківців наукових дослідників
    © Усі права захищені
    написати до нас