Научная статья на тему 'Влияние аппаратной организации на технологию программирования встроенных систем'

Влияние аппаратной организации на технологию программирования встроенных систем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
166
85
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Влияние аппаратной организации на технологию программирования встроенных систем»

5

ИНФОРМАЦИОННО-УПРАВЛЯЮЩИЕ

СИСТЕМЫ

ВЛИЯНИЕ АППАРАТНОЙ ОРГАНИЗАЦИИ НА ТЕХНОЛОГИЮ ПРОГРАММИРОВАНИЯ ВО ВСТРОЕННЫХ СИСТЕМАХ

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

Профессия программиста сейчас чрезвычайно популярна. Персональные компьютеры уверенно входят в нашу жизнь, и люди, умеющие не только общаться с ними, но и задавать их функциональность, очень перспективны. Во множестве вузов страны готовят специалистов по различным направлениям, которые потом могут участвовать в разработке вычислительных систем, быть программистами, проектировщиками, архитекторами, тестерами и т.п. Несмотря на большой поток выпускников вузов - будущих программистов, среди них очень мало людей, пригодных к участию в разработке программного обеспечения для встроенных систем (ВсС). Специалистов с подходящей специализацией должны выпускать кафедры с направлением «Информатика и вычислительная техника», но по объективным причинам они с этим не справляются [1]. По оценкам специалистов время, проведенное выпускником вуза на работе, по истечению которого от него можно ожидать прогнозируемых результатов (оценить профессиональную пригодность), составляет около полугода для разработчиков систем на основе персональных компьютеров, локальных сетей и Internet. Для разработчика ВсС «подготовительный период» составляет не менее двух лет. Причиной этого является то, что подготовка специалистов в этой области включает в себя базовые знания, а современные тенденции и технологии разработки ВсС в нее не входят.

10-15 лет назад разработчиков ВсС можно было условно поделить на программистов и схемотехников, при этом они не сильно отличались друг от друга. Вычислительная и коммуникационная мощность электронных компонент позволяла реализовывать простые (по сегодняшним меркам) аппаратные решения. Программное обеспечение плохо переносилось на другие аппаратные платформы. Технический прогресс позволил значительно усложнить аппаратную базу и программное управление, реализованное на ее основе. Это потребовало повышения квалификации разработчиков ВсС, которое, в свою очередь, разделило эти группы разработчиков и ухудшило взаимодействие между ними. Усовершенствование элементной базы предоставило больше возможностей программному обеспечению, сделало возможным использовать сложные алгоритмы, сложные структуры данных и управления, обрабатывать большие объемы информации. Все это в совокупности вывело ВсС на новый уровень [2]. Современные ВсС имеют сложную организацию, могут использовать операционные системы реального времени, объединяться в контроллерные сети (Embedded Net), использовать современные и высокоскоростные технологии связи.

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

Р.Р. Ковязин

Введение

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

• надежное программирование;

• вычислительные ресурсы существенно ограничены;

• важен реальный масштаб времени;

• значительное число используемых аппаратных платформ.

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

Вычислители и технологии программирования

В программировании широко используется термин уровень программирования. Рассмотрим платформу IBM PC с процессором Intel x86. Благодаря долгому развитию у нее существует множество уровней программирования, начиная от программирования на ассемблере и заканчивая библиотеками MFC, VCL и др. под платформу WIN32. Чем выше уровень программирования, тем меньше в нем остается средств непосредственного управления процессором и аппаратными ресурсами системы, тем больше в нем «удобств», предоставляемых операционной системой, различными службами, драйверами, библиотеками функций и т.п. Существуют интерпретирующие ядра (виртуальные машины), например, Java, Smalltalk, Perl, в которых аппаратный процессор вообще подменяется программным. Несмотря на то, что процессор один, его программирование на разных уровнях существенно отличается.

Очевидно, что уровни программирования определяются используемыми инструментальными средствами. Для унифицированного рассмотрения программируемых устройств, использующихся во ВсС, введем понятие вычислитель - устройство или комплекс устройств, имеющее уровень программирования. Наличие нескольких уровней программирования означает наличие нескольких вычислителей. Традиционное разделение программы на прикладной и системный уровень равносильно введению в систему нового вычислителя. Разработчик программы формирует управление ресурсами вычислителя, а не использующегося в системе процессора, который является самым низкоуровневым вычислителем. Разработчику не всегда предоставляется возможность программировать этот вычислитель [3]. Внутреннее устройство вычислителя, его компоненты, реализация, число внутренних уровней программирования и т. п. важны только для разработчика этого вычислителя, но не для разработчика, пользующегося им. В основе всех вычислителей лежат программируемые устройства: микроконтроллеры, микропроцессоры и программируемые логические интегральные схемы (ПЛИС).

Технология программирования (ТП) применительно ко ВсС является технологией реализации программного управления средствами вычислителей системы. В каждом из них может использоваться своя ТП. ТП объединяет в себе множество необходимых для создания программ понятий. Их можно разделить на несколько категорий:

• вычислительные модели;

• методики (шаблоны и типовые решения);

• языки программирования;

• инструментальные средства.

Все эти категории связаны друг с другом, между ними можно вводить разные отношения следствия. ТП объединяет в себе способ, процесс и средства алгоритмизации.

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

«Разработчики» «Пользователи» Описание

Отсутствуют Отсутствуют Вырожденный случай. Вычислитель не является программируемым.

Отсутствуют Присутствуют Программное обеспечение создается для вычислителя, разработанного сторонней фирмой. Это самый распространенный вариант использования вычислителей во ВсС.

Присутствуют Отсутствуют Разрабатываемая ВсС допускает пользовательское программирование, является программируемым вычислителем. Она может существовать как самостоятельная система или как подсистема.

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

Таблица. Варианты организации разработчиков программного обеспечения ВсС

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

Классификация вычислителей

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

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

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

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

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

Вычислители классифицируются на основе классов программ. Последовательные программы соответствуют принципам программного управления фон Неймана. Большинство существующих программируемых вычислителей, используемых при разработке ВсС, являются последовательными. Последовательно-параллельные вычислители менее распространены в области ВсС и реализуются, например, в различных API (WIN32 API, POSIX и др.). Если параллелизм доступа к ресурсам вычислителя достигается неявно, то он не считается параллельно-последовательным. Вычислителями с параллельным программным управлением в определенном смысле являются ПЛИС.

Основным ограничением, вносимым вычислителями с различным программным управлением, являются доступные вычислительные модели. Языки для создания последовательных и параллельных программ различаются множеством вычислительных моделей, реализованных в них. Среди всех поддержанных моделей можно выделить базовые и производные. В последовательных и параллельных программах отличаются базовые модели, хотя некоторые производные совпадают. Для параллельных программ базовой вычислительной моделью является модель дискретных событий, а для последовательных программ - синхронный автомат [4]. Принципиальные отличия в базовых моделях программ ведут к тому, что обычно разработчики специализируются на разработке программ только одного из классов. Специализация в разработке программ обоих классов в соответствии с составляющими ТП влечет за собой необходимость владения характерными вычислительными моделями, методиками, языками и инструментальными средствами обоих классов.

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

Превышение пределов разрядной сетки влечет за собой трудности, в большинстве случаев скрываемые инструментальным обеспечением и незаметные на программном уровне. Результатом является значительное увеличение размера кода и замедление работы с «большими» данными.

• 4-битные вычислители решают специфические задачи и обычно используются в сложных электронных компонентах ВсС (контроллеры ЖКИ, инфракрасные приемопередатчики и т. п.). Программное управление алгоритмически простое и низкоскоростное.

• 8-битные вычислители используются в электронных компонентах, как и 4-битные. Кроме этого, их используют для решения низкоскоростных коммуникационных задач, задач логического управления небольшой и средней сложности, управления частью периферии контроллера. Программа обычно имеет однородную структуру [3]. Ресурсы вычислителя ограничены и достаточно универсальны.

• 16-битные вычислители используются для коммуникационных задач средней сложности, на них строят стеки протоколов различных интерфейсов. В программе появляется структура: операционные среды, виртуальные машины и т.п. Объем ресурсов вычислителя увеличился по сравнению с предыдущим классом. Для организации более сложного программного управления появляется специализация по

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

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

Распространенность архитектуры. Использование процессоров определенной архитектуры определяет доступный арсенал инструментальных средств. Разработчики инструментальных средств стараются вывести свои продукты на высокий уровень, равняясь на широко распространенные инструментальные средства известных фирм (Microsoft, Metroworks). Хотя инструментальная поддержка процессоров разных архитектур существенно отличается, ее отдельные компоненты можно сделать единообразными для всех архитектур: среду разработки, редактор, интерфейс компилятора, компоновщика и т.п. Выделим следующие классы архитектур:

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

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

• Широко распространенные архитектуры имеют хорошую инструментальную поддержку, большое число готовых решений. Во ВсС нашли применение архитектуры x86, ARM, MCS-51, AVR, PIC и др. Инструментальные средства создаются как разработчиками процессора, так и сторонними фирмами (Keil Software, HI-TECH и др.)

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

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

Распространенность архитектуры в первую очередь влияет на инструментальную поддержку вычислителя и документирование.

Заключение

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

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

Литература

1. B. Graaf et al. Embedded Software Engineering: The State of Practice. IEEE Software, 2003.

2. E. Lee. What's Ahead for Embedded Software? 2000.

3. Ковязин Р., Платунов А. Программирование микроконтроллерных систем. // Электронные компоненты. 2003. №4.

4. L. Lavagno, A. Sangiovanni-Vincentelli, E. Sentovich. Models of Computation for Embedded System Design. 1998.

i Надоели баннеры? Вы всегда можете отключить рекламу.