Язык Ada на Atmel SAM4 (Cortex-M) — быстрый старт
- Автор: Евгений Турышев
- Жанр: Образование
Читать книгу "Язык Ada на Atmel SAM4 (Cortex-M) — быстрый старт"
Сборка ZFP
Далее собираем runtime-библиотеку для нашей платформы.
Здесь необходимо пояснить, что для GNAT существует понятие «профиля компилятора», которое описывает совокупность доступных средств языка, функциональность и объём runtime-библиотеки.
По степени увеличения функциональности существуют предопределённые профили Zero Footprint Profile (ZFP), Cert Profile, Ravenscar Profiles (два варианта профиля — sfp и full), Full Ada Language Support.
Основной мотивацией существования профилей AdaCore называет лёгкость и снижение цены сертификации приложения на соответствие требованиям надёжности и безопасности при использовании ограниченного профиля. Подробнее здесь.
Кроме того, и это может быть важно для применения в микроконтроллерах, библиотека урезанного профиля имеет существенно меньший размер, чем более функциональная.
Для процессора sam4s официально поддерживается только один профиль — Zero Footprint Profile (ZFP). Это наиболее ограниченная версия языка, из которой исключено всё, что касается динамической семантики.
В частности исключены все средства поддержки многозадачности, как task и protected objects. Поэтому этот рантайм позволяет разрабатывать только однозадачные приложение. Но, даже в случае однозадачной программы, обмен с устройствами по прерыванием создаёт подобие многозадачной среды.
Кроме, того есть ограничения на обработку исключений (допустимы только локальные обработчики), отсутствуют контролируемые типы, полный список можно узнать заглянув в system.ads.
Подробнее о предопределённых профилях здесь.
Приступаем к сборке ZFP.
Распаковываем gnat-gpl-2015-src, bb-runtimes-gpl-2015-src, gcc-4.9-gpl-2015-src в один каталог, допустим он указан у нас в переменной окружения $SOURCES.
bash$ export SOURCES=...
# путь к бинарной версии компилятора
bash$ export PATH=/usr/gnat/bin:$PATH
bash$ export GNAT_SRC_DIR=$SOURCES/gnat-gpl-2015-src/src/ada/
bash$ export GCC_SRC_DIR=$SOURCES/gcc-4.9-gpl-2015-src
bash$ cd $SOURCES/bb-runtimes-gpl-2015-src
bash$ ./build-all.sh -g -v --no-link --target=sam4s zfp
# --no-link — указывает, что все файлы нужно копировать, а не делать ссылки
bash$ cp —R install /usr/gnat/arm-eabi/lib/gnat/zfp-sam4s
# копирую в традиционное для рантайма место
На этом со сборкой библиотеки рантайма всё.