Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Рис. 1.10. Технические характеристики МК семейства HCS12
Примечание:
EBUS — модуль интерфейса внешней магистрали;
LVI — модуль контроля за пониженным напряжением питания;
RTI — модуль меток реального времени;
PWMF — модуль специализированного генератора для управления силовыми коммутаторами в электроприводе;
DAC — модуль одноканального ЦАП;
LCD 32×4 — контроллер управления ЖКИ-дисплеем (4 группы по 32 сегмента);
MC 24 — 24 выхода с повышенной токовой нагрузкой для управления маломощными шаговыми электродвигателями.
Сегодня в состав семейства HCS12 входят 6 серий. Серия А — МК общего применения с тремя типами относительно простых контроллеров последовательных интерфейсов. Серии С и CG — недорогие модели без EEPROM, способные работать при пониженном напряжении питания. Серия D, объединяющая наибольшее число МК, ориентирована на использование в CAN–приложениях. Отдельные модели содержат до 5 CAN–контроллеров на кристалле! Серия E — МК с встроенным ШИМ–генератором для управления электроприводом. Серия H — специализированные МК для управления приборными панелями автомобилей, содержат драйверы шаговых двигателей стрелочных индикаторов и контроллер управления ЖК–индикатором. Указанная производителем специализация не препятствует использованию этих МК в устройствах другого типа с многофункциональными приборными панелями. Три последних МК в таблице рис. 1.10 — родоначальники новых серий. Среди них особенно интересен МК HC9S12NE64 c контроллером 10/100 Ethernet на кристалле.
1.5. Заключение по главе 1
В этой главе мы дали определение встраиваемым системам и привели примеры таких систем. Мы также обсудили проблемы, связанные с разработкой встраиваемых систем. В заключении мы провели обзор основных технических характеристик микроконтроллеров семейства 68HC12/HCS12, тех МК, с которыми Вы будете иметь дело на протяжении всей этой книги.
1.6. Вопросы и задания
Основные1. Перечислите основные блоки вычислителя.
2. Какие функции выполняет центральный процессор в составе вычислителя?
3. Дайте определение термину компьютер.
4. Дайте определение термину микропроцессор.
5. Дайте определение термину микроконтроллер.
6. Как называется магистраль микропроцессорной системы, по которой передаются сигналы управления от центрального процессора к блоку памяти?
7. Какие функции может исполнять модуль ШИМ микроконтроллера 68HC12 в системе управления?
8. Перечислите, какие домашние встроенные системы не были упомянуты в этой главе?
Более сложные1. Поясните, чем отличаются микроконтроллер и персональный компьютер.
2. В тексте изученной Вами главы утверждается, что разработчик персональных компьютером может не уделять значительного внимания мощности потребления и размерам блока памяти своего изделия. Почему так? Каковы ограничения? В каких изделиях этого класса ограничения на мощность потребления умеренные, в каких более жесткие?
3. Приведите примеры работы встроенных систем в реальном масштабе времени?
4. В каких случаях Вы, как разработчик встроенной системы, можете выбрать однокристальный режим работы МК, а в каких расширенный режим работы?
5. В тексте главы утверждается, что тестирование встраиваемой микропроцессорной системы является достаточно сложной задачей, решение которой должно быть продумано на стадии проектирования изделия. Почему так?
Исследовательские1. Программно–аппаратный дуализм встраиваемой микропроцессорной системы?
2. В настоящее время встраиваемые системы перестают быть автономными устройствами. Они связываются между собой подобно объединению компьютеров в сеть Internet. Поэтому в скором времени пользователь столкнется с необходимостью понимания не только своей собственной системы, но и понимания абстрактного взаимодействия систем. Как Вы представляете себе проблемы создания информационных сетей на основе встраиваемых систем? Как изменится инфраструктура нашего общества при реализации этих идей?
Глава 2
ПРОГРАММИРОВАНИЕ ВСТРАИВАЕМЫХ СИСТЕМ И СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ
ПОСЛЕ ИЗУЧЕНИЯ ГЛАВЫ ВЫ СМОЖЕТЕ:
• Провести сравнительный анализ языка ассемблер и языков программирования высокого уровня для разработки программного обеспечения встраиваемых систем.
• Рассказать об особенностях языка Си, которые позволили выбрать его в качестве основного языка высокого уровня для кодирования управляющих программ встраиваемых систем.
• Рассказать об основных положениях метода структурного проектирования и применить этот метод на практике в области встраиваемых систем.
• Понять важность документирования в процессе разработки.
• Перечислить правила ведения инженером рабочей тетради.
• Применить методы универсального языка моделирования к описанию функционирования встраиваемых систем.
Предлагаемая Вашему вниманию глава, быть может, самая главная в этой книге. Она предлагает Вам несколько шире взглянуть на процесс проектирования встраиваемых систем, нежели Вы делали это до настоящего времени. Мы покажем в этой главе, почему язык Си стал основным языком высокого уровня для проектирования управляющих программ встраиваемых систем. Далее мы сравним технологии программирования встраиваемых систем на Си и на ассемблере и покажем, что оптимальным является сочетание этих двух языков. Следующим предметом нашего изучения будет метод структурного проектирования в приложении к встраиваемым системам. Мы рассмотрим основные положения этого метода и приведем примеры его использования. Мы также рассмотрим способы описания программного продукта с использованием универсального языка моделирования.
2.1. Почему мы программируем микроконтроллеры на Си?
На протяжении всей этой книги для написания фрагментов программ управления мы используем язык Си. Мы выбрали Си для программирования встраиваемых микропроцессорных систем по многим причинам, которые, мы надеемся, станут Вам ясны по мере знакомства с материалом этой главы.
В предисловии мы адресовали данную книгу подготовленным читателям, которые знакомы с основами цифровой и микропроцессорной техники, имеют опыт программирования на языке ассемблера для какого либо типа МК. Не пугайтесь, если Вы чувствуете себя недостаточно образованным в перечисленных областях знаний. Мы постарались преподнести материал данной книги так, чтобы он легко усваивался учащимися. Для того чтобы восполнить недостающие знания в области цифровой техники, рекомендуем обратиться к книге [9] или к иным подобным изданиям. Для предварительного знакомства с архитектурой и системой команд микроконтроллеров 68HC12 Вы можете использовать книгу [6].
В следующих параграфах данной главы мы познакомим Вас с технологиями создания программного обеспечения для встраиваемых систем. Мы проведем сравнительный анализ преимуществ и недостатков технологий программирования встроенных систем на Си и на ассемблере. Мы также постараемся разъяснить Вам, почему язык Си стал стандартом программирования для встроенных систем.
2.2. Преимущества программирования на языке ассемблер
Многие разработчики встраиваемых систем используют для программирования микроконтроллеров только язык ассемблера. И существует много убедительных доводов в пользу такого решения. В общем, хорошо написанная на языке ассемблера программа исполняется за меньшее время и занимает в памяти меньший объем, нежели та же программа, написанная на языке высокого уровня. Именно эти характеристики: время выполнения и размер программного кода, — являются критическими для приложения, где элементная база обладает относительно невысоким быстродействием, а память программ ограниченна в объеме.
В одном из курсов по микропроцессорной технике, мы попросили студентов во время лабораторных работ запрограммировать одну и ту же задачу на ассемблере и на языке Си. Пример был следующий: в массиве 16 разрядных чисел без знака необходимо было подсчитать число чисел, равных заданному значению. Поскольку компилятор Си сначала преобразует исходный текст программы в программу на языке ассемблер и только потом превращает ассемблерный текст в коды инструкций микроконтроллера, студенты смогли сравнить собственные ассемблерные программы с аналогичными программами, сгенерированными компилятором. И студенты могли убедиться, что их программы оказались компактнее и более логично написанными, чем ассемблерная программа на выходе компилятора.
В дополнение к уже отмеченным преимуществам, язык ассемблера предоставляет разработчику прямой доступ ко всем без исключения аппаратным средствам МК. Такой доступ возможен и в Си, но с меньшими возможностями, т.е. в ограниченном объеме. Однако это преимущество в полной мере может быть реализовано только высококлассным специалистом. Программист, успешно решающий задачи на ассемблере, должен детально разбираться в алгоритмах преобразования кодов и очень хорошо знать аппаратные возможности МК.