КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 713596 томов
Объем библиотеки - 1406 Гб.
Всего авторов - 274796
Пользователей - 125122

Новое на форуме

Новое в блогах

Впечатления

kiyanyn про серию Вот это я попал!

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

Нечитаемо...


Рейтинг: 0 ( 1 за, 1 против).
Влад и мир про Семенов: Нежданно-негаданно... (Альтернативная история)

Автор несёт полную чушь. От его рассуждений уши вянут, логики ноль. Ленин был отличным экономистом и умел признавать свои ошибки. Его экономическим творчеством стал НЭП. Китайцы привязали НЭП к новым условиям - уничтожения свободного рынка на основе золота и серебра и существование спекулятивного на основе фантиков МВФ. И поимели все технологии мира в придачу к ввозу промышленности. Сталин частично разрушил Ленинский НЭП, добил его

  подробнее ...

Рейтинг: +4 ( 4 за, 0 против).
Влад и мир про Шенгальц: Черные ножи (Альтернативная история)

Читать не интересно. Стиль написания - тягомотина и небывальщина. Как вы представляете 16 летнего пацана за 180, худого, болезненного, с больным сердцем, недоедающего, работающего по 12 часов в цеху по сборке танков, при этом имеющий силы вставать пораньше и заниматься спортом и тренировкой. Тут и здоровый человек сдохнет. Как всегда автор пишет о чём не имеет представление. Я лично общался с рабочим на заводе Свердлова, производившего

  подробнее ...

Рейтинг: +2 ( 2 за, 0 против).
Влад и мир про Владимиров: Ирландец 2 (Альтернативная история)

Написано хорошо. Но сама тема не моя. Становление мафиози! Не люблю ворьё. Вор на воре сидит и вором погоняет и о ворах книжки сочиняет! Любой вор всегда себя считает жертвой обстоятельств, мол не сам, а жизнь такая! А жизнь кругом такая, потому, что сам ты такой! С арифметикой у автора тоже всё печально, как и у ГГ. Простая задачка. Есть игроки, сдающие определённую сумму для участия в игре и получающие определённое количество фишек. Если в

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
DXBCKT про Дамиров: Курсант: Назад в СССР (Детективная фантастика)

Месяца 3-4 назад прочел (а вернее прослушал в аудиоверсии) данную книгу - а руки (прокомментировать ее) все никак не доходили)) Ну а вот на выходных, появилось время - за сим, я наконец-таки сподобился это сделать))

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

В начале

  подробнее ...

Рейтинг: +2 ( 2 за, 0 против).

Язык Ada на Atmel SAM4 (Cortex-M) - быстрый старт [Евгений Турышев] (fb2) читать постранично, страница - 3


 [Настройки текста]  [Cбросить фильтры]

href="https://turishev.ru/content/soft/sam4s/gnat-zfp-src/arch/system.ads" rel="nofollow noopener noreferrer">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