Санкт-Петербургский государственный университет
Опубликован: 14.07.2013 | Доступ: свободный | Студентов: 510 / 180 | Длительность: 06:03:00
Специальности: Программист
Лекция 2:

Программирование для встроенных систем

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

3.1. Введение

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

3.2. Общие принципы

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

  1. Прототипирование целевой аппаратуры и исследование проектных альтернатив (design space exploration) - разработка набора типовых тестов (т.е. программ для целевой машины), их запуск и профилирование на различных вариантах аппаратуры позволяет получать оценки эффективности того или иного проектного варианта и принимать решения о выработке новых улучшений, например, оптимизации системы команд ядра, добавлении / удалении тех или иных функциональных блоков, регистров и сопроцессоров.
  2. Раннее создание приложений - программное обеспечение для целевой платформы должно быть создано и предварительно отлажено еще до появления реальной аппаратуры. Это необходимо для сокращения времени выхода на рынок полного решения в виде "аппаратура + программы".
  3. Верификация спецификаций аппаратуры - использование построенного кросс-симулятора позволяет проводить его взаимную верификацию с симуляторами. Такая верификация играет важную роль в процессе финального обеспечения качества перед запуском аппаратуры в производство.

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

Обобщенная схема проектирования встраиваемых систем

Рассмотрим известную обобщенную схему проектирования встраиваемой системы.

Обобщенная схема проектирования встраиваемой

Рис. 3.1. Обобщенная схема проектирования встраиваемой

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

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

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

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

  1. синтезируемые RTL (register transfer level) описания аппаратуры (обычно на VHDL/Verilog);
  2. исходные (на С/ассемблере) и машинные (firmware) коды базовых системных и прикладных программ для целевой аппаратуры;
  3. набор инструментов кросс-разработки (среда программирования, см. подраздел 1.2) для создания и отладки новых программ;
  4. документацию для программистов (справочники по архитектуре системы, по системе команд, по поставляемому системному программному обеспечению и различным библиотекам, по среде программирования).

Существует много различных методов и средств автоматизации проектирования аппаратуры. В случае встраиваемых систем огромное внимание уделяется задаче оптимального разбиения системы на аппаратные и программные компоненты (HW/SW partitioning and codesign). Однако в данной главе ограничимся только рассмотрением создания и использования (кроме собственно основного назначения для разработки реальных программ) кросс-инструментария как средства получения дополнительных данных для поддержки принятия проектных решений в процессе проектирования аппаратуры (см. следующие разделы). Конкретные методы использования таких данных выходят за рамки данной статьи.