Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт 4 стр.


Тип МКПЗУ FLASH, байтыОЗУ, байтыEEPROM, байтыЧисло линий ввода/выводаКонтроллеры последовательных интерфейсовТаймер Число каналов/разрядностьАЦП Число каналов/разрядностьМодуль ШИМ Число каналов/разрядностьСпециальные модули *)Частота шины CPU, МГцНапряжение питания, В
Серия А
MC9S12A32320004096102491IIC 2 SCI SPI8/168/104/16 8/8255
MC9S12A64655364096102459 91IIC 2 SCI SPI8/168/104/16 7/8 8/8255
MC9S12A128 MC9S12A128B1310728192204859 91IIC 2 SCI SPI8/168/104/16 8/8EBUS255
MC9S12A256B2614412288409659 91IIC 2 SCI SPI8/162/10 3/10 8/104/16 8/8EBUS255
MC9S12A5125120004096102459IIC 2 SCI SPI8/1616/107/8255
Серия С
MC9S12C32320002000нет60CAN SCI SPI8/168/106/8LVI16 253,3 5,0
MC9S12C64640004000нет60CAN SCI SPI8/1686/8LVI253,3 5,0
MC9S12C96960004000нет60CAN SCI SPI8/1686/8LVI253,3 5,0
MC9S12C1281280004000нет60CAN SCI SPI8/1686/8LVI253,3 5,0
Серия D
MC9S12D32320004096102491CAN IIC 2 SCI SPI8/168/104/16 8/8255,0
MC9S12D64655364096102459 91CAN IIC 2 SCI SPI8/168/104/16 7/8 8/8255,0
MC9S12DJ64655364096102459 91CAN IIC J1850 2 SCI SPI8/168/104/16 7/8 8/8255,0
MC9S12DB1281310728192204891BYTE-FLIGHT 2 CAN 2 SCI 2 SPI8/1616/108/8EBUS255,0
MC9S12DB128B1310728192204891BYTE-FLIGHT CAN 2 SCI 2 SPI8/1616/108/8EBUS255,0
MC9S12DG128 MC9S12DG128B1310728192204859 912 CAN IIC 2 SCI SCP 2 SPI7/16 8/1616/108/8EBUS255,0
MC9S12DG256B26144122884096912 CAN IIC 2 SCI 2 SPI8/1616/104/16 8/8EBUS LVI255,0
MC9S12DJ128 MC9S12DJ128B1310728192204859 912 CAN IIC J1850 2 SCI 2 SPI7/16 8/168/104/16 8/8EBUS255,0
MC9S12DJ256B26214412288409659 912 CAN IIC J1850 2 SCI 3 SPI7/16 8/168/104/16 8/8EBUS255,0
MC9S12DP256B262144122884096915 CAN IIC J1850 2 SCI 3 SPI8/1616/108/8EBUS255,0
MC9S12DP512512000122884096915 CAN IIC J1850 2 SCI 3 SPI8/1616/108/8EBUS255,0
MC9S12DT128 MC9S12DT128B13107281922048913 CAN IIC 2 SCI 2 SPI8/168/104/16 8/8EBUS255,0
MC9S12DT256B262144122884096913 CAN IIC 2 SCI 2 SPI8/168/104/16 8/8EBUS LVI255,0
Серия E
MC9S12E64655364096 8192нет59 91IIC 3 SCI SPI4/1616/106/8PWMF 2 DAC255,0
Серия G
MC9S12GC16160002000нет60SCI SPI8/168/106/8LVI16 253,3 5,0
MC9S12GC32320002000нет60SCI SPI8/168/106/8LVI16 253,3 5,0
MC9S12GC64640004000нет60SCI SPI8/168/106/8LVI253,3 5,0
MC9S12GC96960004000нет60SCI SPI8/168/106/8LVI253,3 5,0
MC9S12GC1281280004000нет60SCI SPI8/168/106/8LVI253,3 5,0
Серия H
MC9S12H12813107260004096992 CAN IIC 2 SCI SPI8/1616/104/16 8/8EBUS LVI LCD 32×4 MC 24165,0
MC9S12H256262144122884096992 CAN IIC 2 SCI SPI8/1616/104/16 8/8EBUS LVI165,0
Разные МК
MC9S12NE64640008000нет48 80Ethernet IIC 2 SCI SPI4/168/10нетRTI253,3 5,0
MC9S12T646553620482048SCI SPI8/168/104/16 8/85,0
MC9S12UF32327683584нет75SCI USB 2.08/16305,0

Рис. 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 разрядных чисел без знака необходимо было подсчитать число чисел, равных заданному значению. Поскольку компилятор Си сначала преобразует исходный текст программы в программу на языке ассемблер и только потом превращает ассемблерный текст в коды инструкций микроконтроллера, студенты смогли сравнить собственные ассемблерные программы с аналогичными программами, сгенерированными компилятором. И студенты могли убедиться, что их программы оказались компактнее и более логично написанными, чем ассемблерная программа на выходе компилятора.

В дополнение к уже отмеченным преимуществам, язык ассемблера предоставляет разработчику прямой доступ ко всем без исключения аппаратным средствам МК. Такой доступ возможен и в Си, но с меньшими возможностями, т.е. в ограниченном объеме. Однако это преимущество в полной мере может быть реализовано только высококлассным специалистом. Программист, успешно решающий задачи на ассемблере, должен детально разбираться в алгоритмах преобразования кодов и очень хорошо знать аппаратные возможности МК.

2.3. Преимущества языков высокого уровня

Если Вы программировали на ассемблере, то Вы должны были изучить массу приемов, которые и позволят Вам стать профессионалом высокого уровня. Вы должны были познакомиться не только с деталями архитектуры МК, но и с особенностями его системы команд. Однако при переходе к другому типу МК, Вам придется потратить не так мало времени, чтобы адаптировать свои программы к МК с другой системой команд ассемблера. Такую ситуацию называют несовместимостью кодов.

Недавно один из авторов этой книги должен был выполнить разработку, в которой заказчик определил использование МК компании Atmel. Он никогда ранее не использовал 8-разрядные МК от компании Atmel, но был не прочь их освоить. Поэтому автор решил выполнять проект на Си. Это позволило ему быстрее завершить исполнение заказа. Если бы он решил выполнять проект на ассемблере, то ему потребовалось значительно больше времени не только для изучения архитектуры и алгоритмов работы периферийных модулей, но и системы команд, поскольку МК Atmel существенно отличаются от знакомых автору МК Motorola/Freescale Semiconductor. Кроме того, область применения устройства была такой, что он мог не беспокоиться о размере программы и времени ее выполнения. Поэтому в приведенных условиях выбор языка Си для проекта был логичным и естественным.

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

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

Назад Дальше