Библиотека knigago >> Компьютеры: Языки и системы программирования >> Ada >> Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1815, книга: Я - снайпер Рейха
автор: Йозеф Оллерберг

Книга «Я — снайпер Рейха», написанная Йозефом Оллербергом, представляет собой глубоко личный и захватывающий рассказ о жизни и опыте немецкого снайпера во время Второй мировой войны. Благодаря форме мемуаров книга дает читателям уникальную возможность взглянуть на войну глазами человека, который участвовал в ней на передовой. Оллерберг честно и подробно описывает свою военную подготовку, боевые действия и душевные переживания. Оллерберг был чрезвычайно опытным снайпером и установил рекорд...

СЛУЧАЙНАЯ КНИГА

Призраки прошлого. Ольга Александровна Ильина
- Призраки прошлого

Жанр: Любовная фантастика

Год издания: 2016

Серия: Тайна Солнечной принцессы

Евгений Турышев - Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт

Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт
Книга - Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт.  Евгений Турышев  - прочитать полностью в библиотеке КнигаГо
Название:
Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт
Евгений Турышев

Жанр:

Статьи и рефераты, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Ada

Изадано в серии:

неизвестно

Издательство:

СИ

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт"

Евгений Турышев подробно разбирает работу с GNAT для встраиваемых ARM процессоров на примере конкретной платы.

Читаем онлайн "Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт". [Страница - 3]

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

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

Для процессора 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

# копирую в традиционное для рантайма место


На этом со сборкой библиотеки рантайма всё.

Отладчик и терминал

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

Руководство openocd можно найти на сайте проекта.

Общие модули

Предположим, что все наши проекты будут находиться в каталоге $PROJ.

Условимся складывать вспомогательные файлы для запуска openocd, скрипт с общими функциями GDB, скрипт для запуска консоли и т. п. в $PROJ/utils.

Ещё один каталог $PROJ/xstk-common создадим для хранения общих модулей, пригодных для использования в любом приложении.

В первую очередь туда поместим файл sam4s.ads с описанием аппаратуры процессора. Он позволит для доступа к регистрам различных подсистем MCU пользоваться именами переменных и символическими константами, а не адресами регистров и числовыми значениями.

Этот файл я скопировал из ZFP и дополнил всем, что мне понадобилось. Хотя в реальном приложении его размер должен быть минимально необходимым, для наших экспериментов тем лучше, чем полнее будет описана аппаратура. Это позволит реже перелистывать 1300-страничное руководство по процессору.

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

В Ada вместо этого мы определяем полноценные переменные с указанием их размещения в памяти по физическому адресу регистра и добавлением аспектов Volatile, Import.

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


Пример:


  type PIO_Registers is record

    PER    : Word;

    PDR    : Word;

    PSR    : Word;

    Pad0   : Word;

 ...

  end record;

  PIOA: PIO_Registers with Volatile, Import,

  Address => System'To_Address (PIOA_Base);


Одни из самых востребованных операций при работе с MCU — работа с портами ввода-вывода, поэтому следующая полезная вещь — модуль IO_Ports io_ports.ads, io_ports.adb.

И, на базе пакета IO_Ports ещё два тривиальных пакета для работы с кнопками и светодиодами платы процессора и платы расширения Oled1.

Итого в $PROJ/xstk-common у нас:


  io_ports.adb

  io_ports.ads

  sam4s.ads

  xstk_board.adb

  xstk_board.ads

  xstk_oled1_board.adb

  xstk_oled1_board.ads


--">
стр.

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.