Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Белых Андрей Александрович

Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем
<
Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Белых Андрей Александрович. Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем : Дис. ... канд. техн. наук : 05.13.15 Москва, 2006 176 с. РГБ ОД, 61:06-5/1810

Содержание к диссертации

Введение

1. Анализ средств разработки программного обеспечения однокристальных микроконтроллеров 12

1.1 Проблемы разработки программного обеспечения встраиваемых систем, реализуемых на однокристальных микроконтроллерах 12

1.2 Цели анализа архитектуры микроконтроллеров и средств разработки программного обеспечения встраиваемых систем 14

1.3 Языки разработки программного обеспечения встраиваемых систем 15

1.4 Инструментальные среды разработки программного обеспечения для однокристальных микроконтроллеров 23

1.5 Основные результаты и выводы 29

2. Архитектура современных однокристальных микроконтроллеров 31

2.1 Типы микроконтроллеров 31

2.2 Архитектура микроконтроллеров 35

2.3 Методы адресации и типы данных, используемые в микроконтроллерах 39

2.4 Анализ архитектуры современных промышленно выпускаемых микроконтроллеров 45

2.5 Основные результаты и выводы 57

3. Методика разработки программного обеспечения однокристальных микроконтроллеров, основанная на унификации их архитектур 59

3.1 Принципы разработки ПО встраиваемых систем 59

3.2 Выделение целевого класса и базового набора архитектур ОМК 64

3.3 Унификация архитектур ОМК, включенных в базовый набор 65

3.4 Разработка программного обеспечения для ОМК 66

3.5 Методика разработки программного обеспечения для микроконтроллеров 68

3.6 Основные результаты и выводы 69

4. Процесс унификации архитектур однокристальных микроконтроллеров 70

4.1 Определение целевого класса архитектур ОМК 70

4.2 Принципы построения унифицированной архитектуры 71

4.3 Формализованное описание архитектуры 74

4.4 Процедура построения унифицированной архитектуры ОМК 80

4.5. Пример применения процедуры построения унифицированного ОМК... 86

4.6 Основные результаты и выводы 92

5. Архитектура абстрактного однокристального микроконтроллера, полученная унификацией архитектур микроконтроллеров широкого применения 93

5.1 Базовый класс архитектур ОМК 93

5.2 Система команд унифицированной архитектуры 93

5.3 Структура унифицированного ОМК 100

5.4 Общность унифицированной архитектуры ОМК 102

5.5 Основные результаты и выводы 103

6. Принципы создания инструментальной среды разработки программ на унифицированном ассемблере 105

6.1 Общее описание инструментальной среды разработки 105

6.2 Разработка встроенного кросс-транслятора 105

6.3 Разработка базы данных /Р-модулей 111

6.4 Разработка клиентской части инструментальной среды разработки 114

6.5 Основные результаты и выводы 116

7. Оценка эффективности методики и средств разработки программ, основанных на унификацииции архитектур однокристальных микроконтроллеров 117

7.1 Область применения методики 117

7.2 Показатели эффективности средств разработки программ 118

7.3 Сравнительная оценка эффективности средств разработки программ... 122

7.4 Основные результаты и выводы 128

Заключение 129

Список использованных источников

Введение к работе

Актуальность. В настоящее время в системах управления и обработки данных все чаще применяются микроконтроллеры, решающие широкий спектр задач. Однокристальные микроконтроллеры (ОМК) являются наиболее массовым видом устройств современной микропроцессорной техники, годовой объем выпуска которых составляет более 2,5 млрд. штук. Интегрируя на одном кристалле высокопроизводительный процессор, память и набор периферийных схем, ОМК позволяют с минимальными затратами реализовать высокоэффективные системы и устройства управления различными объектами (процессами). В отличие от обычных микропроцессоров, для работы которых необходимы внешние интерфейсные схемы, в корпусе ОМК наряду с основными функциональными узлами размещены такие вспомогательные узлы, как тактовый генератор, таймер, контроллер прерываний, цифро-аналоговый и аналого-цифровой преобразователи, порты ввода-вывода.

Система управления, в зависимости от сложности решаемых ею задач, может быть реализована на основе специализированной интегральной схемы, многокристальной микропроцессорной системы (МПС) или на основе ОМК. Применение МПС, выполненной в виде модульной конструкции, или однокристального микроконтроллера позволяет «встроить» систему управления непосредственно в управляемый объект. Поэтому для характеристики систем управления данного класса в настоящее время широко используется термин «встроенная система» {embedded system). Этот термин обозначает вычислительную систему, входящую неотъемлемой частью в состав другой системы, или, что более точно, - аппаратные средства обработки данных и программное обеспечение, формирующие управляющий компонент какой-либо технической метасистемы, который должен функционировать при минимальном вмешательстве человека.

Основными характеристиками встраиваемых систем являются [1]:

- ограниченность аппаратных ресурсов;

неизменность программного обеспечения в процессе применения;

высокая надежность;

короткий цикл разработки- внедрения;

серийность производства;

низкая себестоимость.

Именно благодаря этим качествам ОМК находят широкое применение в системах промышленной автоматики, контрольно-измерительных приборах и системах, аппаратуре связи, автомобильной электронике, медицинском оборудовании, бытовой технике и многих других областях.

Применение однокристальных микроконтроллеров позволяет перенести основные затраты, связанные с разработкой встраиваемых систем управления, из аппаратной в программную область. Это неминуемо влечет за собой увеличение сложности программного обеспечения (ПО) микроконтроллеров.

Особенностью разработки ПО для ОМК является использование языка низкого уровня - языка ассемблера. Это связано с тем, что при реализации встраиваемых систем критичными являются время реакции на внешние воздействия, время выполнения заданных процедур обработки данных, размер программного кода и области данных [2]. Последнее связано с тем, что зачастую сначала выбираются аппаратные средства, включающие ядро и периферию микроконтроллера, и только затем разрабатывается ПО для выбранного ОМК. Следовательно, выход за рамки возможностей микроконтроллера, например по такому показателю, как емкость памяти, влечет повторный выбор ОМК и проектирование системы практически с нуля. Это обусловлено тем, что языки ассемблеров и архитектуры вновь выбранного и ранее используемого микроконтроллеров могут существенным образом отличаться.

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

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

Целью диссертационной работы является разработка механизмов унификации архитектур ОМК и их применение для повышения эффективности создания программного обеспечения встраиваемых систем.

Для достижения поставленной цели требовалось, чтобы были решены следующие основные задачи:

проведен анализ существующих методов и средств разработки ПО однокристальных микроконтроллеров, а также архитектур ОМК наиболее известных производителей;

поставлена задача повышения эффективности разработки ПО ОМК, относящихся к ограниченным целевым классам архитектур, на основе унификации архитектур этих классов;

предложен способ формального описания архитектур ОМК;

сформулированы правила выделения базового набора унифицируемых архитектур ОМК в целевом классе;

разработана процедура унификации целевых архитектур по выделенному базовому набору;

разработана методика создания ПО для однокристальных микроконтроллеров;

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

разработан инструментарий, позволяющий вести создание программ для однокристальных микроконтроллеров с использованием унифицированного ассемблера;

определены критерии оценки использования унифицированной архитектуры и ассемблера;

проведена сравнительная оценка эффективности использования унифицированной архитектуры и ассемблера при создании ПО встраиваемых систем.

Методы исследования. При выполнении работы использовались методы теории множеств, теории графов, теории формальных грамматик, теории программирования, методы формального описания синтаксиса и семантики языков программирования.

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

предложен способ формального описания архитектур однокристальных микроконтроллеров, включающий формальное описание структуры, системы команд и алгоритма функционирования;

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

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

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

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

Апробация работы. Основные результаты исследований отражены в докладах на международных конференциях «Компьютерные технологии в науке, производстве, социальных и экономических процессах» (Новочеркасск, 2004), «Радиоэлектроника, электротехника и энергетика» (Москва, 2002, 2003, 2004).

Публикации. По теме диссертации опубликовано 6 научных работ.

Белых А.А. Применение модульных принципов при разработке ПО для встраиваемых систем. // Восьмая международная науч.-техн. конф. студентов и аспирантов «Радиоэлектроника, электротехника и энергетика»: Тез. докл. в 3-х т. - М.: МЭИ, 2002. Т. 1.-С. 317-318.

Белых А.А. Критерии эффективной разработки ПО для встраиваемых систем. // Девятая международная науч.-техн. конф. студентов и аспирантов: Тез. докл. в 3-х т. - М.: МЭИ, 2003. Т. 1. - С. 348.

Белых А.А. Хранение информации о языках программирования для встраиваемых систем. // Тезисы и доклады X международной конф. «Теоретические и клинические аспекты применения биорезонансной терапии». - М.: ИМЕДИС, 2004. Ч. 2 - С. 372-374.

Белых А.А. Генерация промежуточного кода при компиляции ПО для встраиваемых систем. // Десятая международная науч.-техн. конф. студентов и аспирантов «Радиоэлектроника, электротехника и энергетика»: Тез. докл. в 3-х т. - М.: МЭИ, 2004. Т. 1. - С. 358-359.

Белых А.А. Проблемы эффективной разработки ПО для встраиваемых систем и пути их решения. // Тезисы и доклады X международной конф. «Теоретические и клинические аспекты применения биорезонансной терапии». - М.: ИМЕДИС, 2004. Ч. 2 - С. 381-387.

Белых А.А. Принципы построения унифицированной архитектуры однокристального микроконтроллера. // Компьютерные технологии в науке, производстве, социальных и экономических процессах: Материалы V международной, науч.-практ. конф., г. Новочеркасск, ноябрь 2004 г.: в 3 ч. / Юж.-Рос. гос. техн. ун-т (НПИ). - Новочеркасск: ЮРГТУ, 2004. 4.2. - С. 27-28.

Структура и объем работы. Диссертация состоит из введения, семи глав, заключения, списка информационных источников и приложений. Диссертация содержит 135 страниц машинописного текста без учета приложений.

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

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

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

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

Пятая глава посвящена разработке унифицированной архитектуры ОМК для ранее определенного целевого класса 8-ми разрядных архитектур ОМК, разработке унифицированной системы мнемоник, структуры такого ОМК, и описанию его функционирования.

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

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

В заключении приводятся основные результаты, полученные при выполнении диссертационной работы.

Цели анализа архитектуры микроконтроллеров и средств разработки программного обеспечения встраиваемых систем

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

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

В связи с этим анализ архитектур современных однокристальных микроконтроллеров и средств разработки ПО встраиваемых систем на основе ОМК должен преследовать две основных цели. 1. Уточнение исходного класса целевых архитектур (семейств) ОМК. Определение набора признаков, характеризующих архитектуру ОМК как целевую (дающую возможность включить отдельный микроконтроллер или целое ОМК-семейство в число целевых - см. главу 2). 2. Исследование частоты и эффективности использования тех или иных языков программирования для создания ПО микроконтроллеров целевого класса. 3. Анализ возможностей использования имеющихся сред разработки ПО ОМК-семейств для генерации целевого машинного кода при двухуровневой схеме трансляции «унифицированный ассемблер - целевой ассемблер - целевой загружаемый машинный код».

При разработке ПО ОМК возможно использование как языков низкого уровня - машинного языка, языка ассемблера, так и языков высокого уровня -С, Pascal и т.д. В данном разделе проводится анализ языков, используемых для программирования современных микроконтроллеров, выявление их достоинств и недостатков с точки зрения применения во встраиваемых системах.

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

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

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

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

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

Методы адресации и типы данных, используемые в микроконтроллерах

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

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

В таблице на примере команды сложения (Add) приведены наиболее употребительные названия методов адресации, хотя при описании архитектуры в документации разные производители используют разные названия для этих методов. В этой таблице знакосочетание « =« используется для обозначения оператора присваивания, а латинская буква Л/обозначает память (Memory) [13]. Таким образом, M[Rl] обозначает содержимое ячейки памяти, адрес которой определяется содержимым регистра R1.

Важным вопросом построения любой системы команд является оптимальное кодирование команд. Оно определяется количеством регистров и применяемых методов адресации, а также сложностью аппаратуры, необходимой для дешифрации кодов команд. Именно поэтому в современных RISC-архитектурах используются достаточно простые методы адресации, позволяю щие резко упростить дешифрацию команд. Более сложные и редко встречающиеся в реальных программах методы адресации реализуются с помощью дополнительных команд, что вообще говоря приводит к увеличению размера программного кода. Однако такое увеличение длины программ с лихвой окупается возможностью простого увеличения тактовой частоты /ДОС-процессоров.

Можно выделить четыре основных типа операций управления потоком команд: условные переходы, безусловные переходы, вызовы процедур и возвраты из процедур. Частота использования этих команд по статистике примерно следующая. В программах доминируют команды условного перехода. Среди указанных команд управления в разных программах частота их использования колеблется от 66 до 78%. Следующие по частоте использования - команды безусловного перехода (от 12 до 18%). Частота переходов к выполнению процедур и возврата из них составляет 10 - 16% [14].

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

Реализация возвратов и переходов по косвенному адресу, в которых адрес не известен во время компиляции программы, требует методов адресации, отличных от адресации относительно счетчика команд. В этом случае адрес перехода должен определяться динамически во время работы программы. Наиболее простой способ заключается в указании регистра для хранения адреса возврата.

Одним из ключевых вопросов реализации команд перехода состоит в том, насколько далеко целевой адрес перехода находится от самой команды перехода? И на этот вопрос статистика использования команд дает ответ: в подавляющем большинстве случаев переход идет в пределах 3-7 команд относительно команды перехода, причем в 75% случаев выполняются переходы в направлении увеличения адреса, т. е. вперед по программе [14].

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

Выделение целевого класса и базового набора архитектур ОМК

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

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

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

В свою очередь, формализованное описание архитектуры ОМК получается путем формализации спецификации ОМК с помощью означенных ранее признаков (параметров архитектуры).

Каждый ОМК можно описать набором параметров, характеризующих его структуру и функционирование. Например, такими параметрами могут служить размер и количество регистров общего назначения (РОН); наличие внутренней памяти данных, ее разрядность и размер; размер и количество регистров специального назначения (для управления периферией ОМК, состоянием процессора, и др.); наличие внутренней памяти программ и ее размер; разрядность и поддерживаемая функциональность арифметико-логического устройства (АЛУ), возможность оперирования с данными «двойной» разрядности (для операций умножения и деления); количество аккумуляторов (для сохранения оперативных данных); поддерживаемые способы адресации процессора (и их отображение на структуру ОМК).

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

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

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

Методика унификации рассматривается в следующей главе 4.

Разработка ПО подразумевает не только проектирование программной системы и написание программного кода (кодирование), но и компиляцию этого программного кода (рисунок 3.4). Учитывая тот факт, что в нашем случае программное обеспечение может разрабатываться на разных языках - унифи цированном ассемблере или целевых языках, процесс компиляции состоит из двух фаз. Безусловно, он мог быть и одностадийным. Однако, в этом случае, потребовалось бы более трудоемкое проектирование унифицированного компилятора. В случае двух стадийной компиляции, после кросс-компиляции получается программный код на целевом ассемблере с помощью таблиц соответствия языков. В то время как сама программа «компилятор» не меняется при добавлении поддержки нового семейства ОМК, необходимы добавления в таблицы соответствия языков (унифицированного и нового целевого ОМК).

Принципы построения унифицированной архитектуры

На этапе синтаксического анализа нужно установить, имеет ли цепочка лексем структуру, заданную синтаксисом языка, и зафиксировать эту структуру. Следовательно, снова надо решать задачу разбора: дана цепочка лексем, и надо определить, выводима ли она в грамматике, определяющей синтаксис языка. Однако структура таких конструкций как выражение, описание, оператор и т.п., более сложная, чем структура идентификаторов и чисел. Поэтому для описания синтаксиса языков программирования нужны более мощные грамматики, чем регулярные грамматики, применяемые в лексическом анализе. В настоящее время для выполнения синтаксического анализа часто используют укорачивающие контекстно-свободные грамматики (УКС-грамматики) [42], правила которых имеют вид А — а, где А є V, ае(Киї), Грамматики этого класса, с одной стороны, позволяют достаточно полно описать синтаксическую структуру реальных языков программирования; с другой стороны, для разных подклассов УКС-грамматик существуют достаточно эффективные алгоритмы разбора [42].

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

Существуют табличные методы синтаксического анализа [41], применимые ко всему классу КС-грамматик и требующие для разбора цепочек длины п времени сп (алгоритм Кока-Янгера-Касами) либо сп (алгоритм Эрли). Их разумно применять только в том случае, если для интересующего нас языка не существует грамматики, по которой можно построить анализатор с линейной временной зависимостью.

Алгоритмы синтаксического анализа, расходующие на обработку входных цепочек символов время, линейно зависящее от длин этих цепочек приме нимы только к некоторым подклассам КС-грамматик. Рассмотрим один из таких методов - метод рекурсивного спуска.

Реализуется метод рекурсивного спуска следующим способом: для каждого нетерминального символа грамматики создается своя процедура, носящая его имя. Ее задача - начиная с указанного места исходной цепочки символов найти подцепочку, которая выводится из этого нетерминала. Если такую подцепочку считать не удается, то процедура завершает свою работу вызовом процедуры обработки ошибки, которая выдает сообщение о том, что цепочка не принадлежит языку, и останавливает разбор. Если подцепочку удалось найти, то работа процедуры считается нормально завершенной и осуществляется возврат в точку вызова. Тело каждой такой процедуры пишется непосредственно на основании правил вывода соответствующего нетерминала: для правой части каждого правила осуществляется поиск подцепочки, выводимой из этой правой части. При этом терминальные символы распознаются самой процедурой, а нетерминальные символы соответствуют вызовам процедур, носящих их имена.

Метод рекурсивного спуска применим в том случае, если каждое правило грамматики имеет вид: - либо А - а, где ае(КиГ) и это единственное правило вывода для нетерминального символа А; - либо А - а\а\ «гаг I I tfn m где ci\ є T для всех і = 1,2,...,n; ax flj для і Ф]\ а; є (Fu 7) , то есть, если для нетерминального символа А существует несколько правил вывода, то они должны начинаться с терминальных символов и при том различных [46].

Заметим, что изложенные в п. 6.1.2 ограничения являются достаточными, но не необходимыми. Так как не все правила грамматики, определяющей синтаксис языка ассемблера (рисунок 6.1) удовлетворяют этим требованиям, попытаемся их ослабить - при описании синтаксиса языков программирования часто встречаются правила, задающие последовательность однотипных конструкций, отделенных друг от друга каким-либо знаком-разделителем (например, список инструкций или директив В языка ассемблер, операндов команд ОР).

Общий вид этих правил: L — а \ а (либо в сокращенной форме L — а

Формально здесь не выполняются условия применимости метода рекурсивного спуска, так как две альтернативы начинаются одинаковыми терминальными символами. Однако, если принять условие, что в таких случаях будет выбираться самая длинная подцепочка (что и требуется при разборе реальных языков), то разбор становится детерминированным.

Отметим, что в таком случае накладывается дополнительное ограничение на подцепочки, следующие за цепочкой символов, выводимых из L - они не должны начинаться с разделителя (для инструкций и операндов - с запятой), иначе процедура соответствующая L попытается считать часть исходной цепочки, которая не выводится из L.

Листинг программы синтаксического анализа программ, написанных на унифицированном языке ассемблера, реализующей метод рекурсивного спуска представлен в приложении 4.

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

Таким образом, БД должна содержать, помимо информации о IP-модулях, информацию о системах команд микроконтроллеров, унифицированной системе мнемоник и данные о перекодировке инструкций (кросс-трансляции).

Определим сущности и их атрибуты, которые должны храниться в БД: - модуль: название модуля, тип модуля, входные и выходные параметры (свойства), иконка модуля для отображения на панели готовых модулей, используемая система мнемоник; - система мнемоник: название системы мнемоник, число инструкций, набор команд до и после вызова тела компонента, набор инструкций и соответствующий мнемокод (для макроязыка), комментарий к инструкции и параметры (операнды) к ней; - свойства модуля: имя параметра, описание, тип.

Похожие диссертации на Унификация архитектур однокристальных микроконтроллеров и ее применение для разработки программного обеспечения встраиваемых систем