УДК 621.38(06) Электроника К.В. КОНОНЕНКО, Ю.Б. РЕШЕТНИКОВА Московский инженерно-физический институт (государственный университет) СРЕДА ПРОГРАММИРОВАНИЯ ДЛЯ ВСТРАИВАЕМЫХ СИСТЕМ НА КРИСТАЛЛЕ НА БАЗЕ ARM-ЯДЕР Разработана среда программирования, предназначенная для встраиваемых систем на кристалле на базе ARM-ядер. Проектирование прикладного обеспечения для систем на кристалле на базе ARM-ядер [1], [2] происходит всё на более высоком уровне сложности. Использование языка программирования C/C++ оказывается неэффективным для проектов большой сложности. Особенности языка C/C++, которые необходимо учитывать, существенно зависят от используемой операционной системы и аппаратного обеспечения. Написание платформо-независимого кода становится нетривиальной задачей. Существует потребность в создании среды программирования, которая бы была изначально платформо-независимой, но в которой одновременно можно было бы использовать уже ранее созданные платформо-зависимые библиотеки, написанные на языках высокого и низкого уровня для целевой операционной системы. Целесообразным оказывается использование виртуальных машин. Наиболее известные реализации - стековые виртуальные машины Java и .NET. В работах [3], [4] описана реализация системы программирования .NET, предназначенная для операционной системы GNU/Linux. Созданная в данной работе система основана на среде исполнения Portable .NET [5]. Особенностью большинства ARM процессоров является отсутствие сопроцессора для операций над числами с плавающей точкой. Таким образом, возможны два варианта. Первый - состоит в том, что при попытке выполнить недопустимую операцию ARM-процессор посылает исключение операционной системе, которая его обрабатывает, выполняя операцию вместо сопроцессора. Этот вариант является более медленным по сравнению с использованием программной эмуляции, предоставляемой компилятором. Целесообразным оказывается использование динамической компиляции, когда некоторые инструкции виртуальной машины интерпретируются, а другие компилируются в машинный код компилятором времени выполнения. Для операций над целыми числами Portable.NET использует ______________________________________________________________________ ISBN 5-7262-0633-9. НАУЧНАЯ СЕССИЯ МИФИ-2006. Том 1 157 УДК 621.38(06) Электроника компилятор времени выполнения, а для операций над числами с плавающей точкой интерпретацию. Особенностью операционных систем семейства GNU/Linux является их универсальность при работе с различным оборудованием, универсализация работы с оборудованием. Однако кроме работы с ядром и процессором, особенностью системы на кристалле является возможное отсутствие дисплея, значительное варьирование его характеристик, ограничения, связанные с размером используемой памяти. Версии используемых библиотек, их имена также могут существенно различаться в различных версиях операционной системы GNU/Linux. Кроме того, сложной задачей становится создание удобного механизма кросс компиляции. В рамках данной работы в среду исполнения Portable.NET были внесены изменения с целью уменьшения ее размера, обеспечения удобной кросс компиляции, увеличения скорости работы среды, добавления библиотеки GTK# [6], выявления и устранение ошибок в исходном коде. Вся работа по созданию конечного пакета для целевой системы-накристалле выполняется в среде Open Embedded [7]. Пакеты делятся на два вида, компилируемые в бинарные файлы совместимые с системой, и пакеты кросс компиляции для целевой системы на кристалле. Для работы с графическим дисплеем поддерживаются два варианта. Первый вариант – основан на использовании библиотеки X11. Она хорошо переносима на новые платформы. Поэтому этот вариант работает на любой системе на кристалле поддерживающей не только текстового изображения, но и графического. Используется .NET библиотека Windows.Forms.dll, вывод графики в которой реализован полностью на основе примитивов X11. Второй поддерживаемый вариант – использование .NET библиотеки GTK#, основанной на платформо-независимых графических примитивах библиотеки GTK. Список литературы 1. 2. 3. 4. 5. 6. 7. RISC-микроконтроллеры с процессорным ядром ARM, А. Емелин, И. Шагурин // http://www.cec-mc.ru/read/art12.shtml ARM Architecture Reference Manual // http://arm.com Rhys Weatherley, Gopal V: Design of the Portable .NET Interpreter, .NET Developers Journal, Vol. 1, Issue No. 3, Mar 2003. Rhys Weatherley: TreeCC: An Aspect-Oriented Approach to Writing Compilers, Free Software Magazine, Vol. 1, Issue No. 2, Feb 2002. Домашняя страница DotGNU // http://dotgnu.org Домашняя страница GTK# // http://gtk-sharp.sourceforge.net Страница проекта Open Embedded // http://oe.handhelds.org ______________________________________________________________________ ISBN 5-7262-0633-9. НАУЧНАЯ СЕССИЯ МИФИ-2006. Том 1 158 УДК 621.38(06) Электроника ______________________________________________________________________ ISBN 5-7262-0633-9. НАУЧНАЯ СЕССИЯ МИФИ-2006. Том 1 159