Базовый маршрут разработки ПЛИС Altera Cyclone V SOC FPGA с аппаратной процессорной системой ARM Cortex A9 на примере стартового отладочного комплекта SoCrates и референсного дизайна EBV Elektronik. Часть 2

PDF версия
Первая часть настоящей статьи, в которой рассмотрены возможности пакета системной интеграции Qsys, интегрированной в основной пакет проектирования Altera Quartus 2, опубликована в предыдущем номере журнала [1]. Вторая часть продолжает рассказ о маршруте разработки на SOC FPGA от Altera и посвящена вопросам создания в ПО Altera SOC EDS (Embedded Development Suite), пакета поддержки платы BSP и генерации загрузчика preloader для последующей выгрузки и исполнения загрузчика U boot операционной системы Linux из SDRAM. В статье рассматривается процесс запуска ОС Linux на плате SOCrate и приложений под OC Linux.

Введение

Для прохождения второй части маршрута разработки потребуется установить следующее ПО (подробности изложены в первой части статьи, опубликованной в [1]):

  1. Установить пакет Quartus‑2 версии 13.0 или 13.1 с сайта Altera [5, 6] или с сайта EBV [7]. Для работы с решением SOC FPGA подходит бесплатная версия Web edition, с установленной библиотекой поддержки семейства Cyclone‑5.
  2. Установить пакет SOC EDS (ARM DS‑5 Altera edition).
  3. Linux или виртуальная машина, например WMware.
  4. Созданный проект (первая часть статьи) или референсный проект (ссылка ниже).
  5. Скачать файлы референсного проекта EBV Elektronik.

Заметим, что в процессе освоения маршрута разработки SOC Altera весьма целесообразно использовать интернет-ресурс, поддерживаемый компанией Altera и посвященный решению SOC FPGA [8]. На ресурсе находятся исходные коды программ, скрипты и сам референсный проект [9], описываемый в этой статье.

Для работы с решением SOC FPGA есть несколько отладочных комплектов от компании Altera и третьих партнеров. Мы рассмотрим маршрут разработки на стартовом бюджетном комплекте, разработанном компанией EBV Elektronik совместно с немецкой компанией DevBoards. Стоимость такого комплекта в РФ с НДС составляет около 440 евро. Приведенный маршрут разработки будет справедлив и для других отладочных комплектов.

Отладочная плата SoCrates позволяет взаимодействовать со всей периферией процессорной системы: Ethernet, USB, SPI, I2C, UART, μSDCard и GPIO. На плате установлена ОЗУ-память 32 bit DDR3 и QSPI Flash как альтернатива загрузке процессорной системы из SD-карты. Массив FPGA может быть конфигурирован из второй установленной QSPI Flash. Порты ввода/вывода 3.3 V IO и LVDS IO ПЛИС выведены на разъемы: мультиплексированные выводы. Имеется специальный LVDS-разъем для подключения видеосенсора EBV Observer CMOS Sensor Board. Внизу платы есть разъем для подсоединения TFT-дисплея через LVDS-интерфейс, и в скором времени будет доступен референсный дизайн для работы с графикой.

Подробное описание платы и datasheet находится по ссылке [7].

Первый этап работы с референсным дизайном сводится к синтезу дополнительных периферийных устройств на ПЛИС как демонстрация идеологии гибкости ПЛИС путем расширения аппаратной периферии процессорной системы HPS и построения собственной системы на кристалле. В референсном дизайне добавлена (синтезирована) следующая часть периферии посредством вызова стандартных библиотечных компонентов Qsys: добавлены внутренняя память ОЗУ на блоках внутренней памяти ПЛИС, модуль ШИМ-контроллера, регистр SysID для целей синхронизации аппаратуры системы на кристалле с версией пакета поддержки платы (BSP), а также параллельная шина для управления светодиодами. На рис. 2 [1] приведена схема подключения синтезируемых в данном референсном дизайне компонент к мостам процессорной системы HPS (процесс подробно описан в первой части статьи). Результатом первого этапа работы с референсным дизайном является готовая система на кристалле и файлы перехода к созданию ПО. Разработчики, желающие опустить первый этап, могут воспользоваться готовым проектом Quartus (файл .qpf) из референсного дизайна.

Второй этап работы с референсным дизайном сводится к получению образа загрузчика preloader, загрузке OS Linux и простейших приложений, действующих с синтезированным на первом этапе периферийным компонентом, используя файлы перехода, которые находятся в папке референсного проекта Установочная директория Quartus/hps_isw_handoff/SOC_system_hps_0. Схему прохождения маршрута смотрите на рис. 11.

Схема прохождения маршрута проектирования второго этапа

Рис. 11. Схема прохождения маршрута проектирования второго этапа

 

Основной маршрут проектирования SOC FPGA, этап перехода к разработке ПО (HW/SW handoff) по шагам

Для целей генерации пакета поддержки платы (BSP), загрузчика preloader и последующего запуска ОС Linux на плате SoCrates вызывается консоль командного интерпретатора command shell.bat из каталога установки ПО SOC EDS (путь: каталог установки ПО SOC EDS\Altera\13.0sp1\). С помощью команды bsp-editor вызывается графический интерфейс редактора пакета BSP (рис. 12). Далее для целей настройки установок загрузчика preloader в окне редактора создания нового пакета поддержки платы (File New BSP) установлена директория файлов перехода, описывающих состав системы на кристалле и содержащих настройки физического интерфейса памяти DDR3, установленной на плате SoCrates. Чтобы установить источник загрузки (рис. 13), в опциях настройки редактора BSP settings выбрана опция Boot_from_SDMMC, так как в референсном дизайне использована загрузка с подготовленной SD-карты, уже содержащей загрузчик U‑boot и ядро системы. Настройки редактора пакета BSP приведены на рис. 7–9 [1]. Процессорная система HPS может иметь и альтернативные способы загрузки, например NAND, QSPI или загрузку по сети. Также заметим, что решение Altera SOC FPGA поддерживает загрузку со стороны ПЛИС.

Генерация BSP

Рис. 12. Генерация BSP

Выбор источника загрузки

Рис. 13. Выбор источника загрузки

После успешной генерации пакета поддержки платы нужно вернуться к встроенному командному интерпретатору (embedded command shell) и перейти к директории, используемой редактором bsp-editor для генерации исходных файлов загрузчика preloader, после чего запустить процесс сборки бинарного файла командой make — собранный файл имеет название preloader-mkpimage.bin (256 кбайт) и содержит четыре идентичных раздела-версии, файл находится в папке проекта:

<Папка проекта>/software/spl_bsp.
$ cd /<Папка проекта>/software/spl_bsp
$ make

Для загрузки ОС Linux с SD-карточки нужно скопировать образ preloader-mkpimage.bin file в специальный раздел отформатированной SD-карты. SD-карта платы SoCrates уже отформатирована надлежащим образом (подробные указания к форматированию карты и разбитию на разделы можно посмотреть в руководстве Altera Embedded Starting Guide, раздел Setting up the SD Card under Linux). Кратко, на SD-карте SoCrates есть три отформатированных раздела:

  • sdb1, содержащий U‑Boot SPL;
  • sdb2, содержащий Linux uImage, Device tree и .sof-файлы конфигурации ПЛИС;
  • sdb3 — файловая система Linux и .sof-файлы ПЛИС.

Процесс копирования работает под Linux или через специальные Windows-утилиты копирования. Автор использовал виртуальную машину WMware. Образ загрузчика preloader-mkpimage.bin записывается в первый раздел SD-карт, для примера sdb1=1M (только для целей примера, на каждой конкретной машине разделы отличаются sda/sdb/sdb), через команду побитного копирования dd с определенного адреса. Укажите именно ваш раздел в of=/dev/sdb1, в противном случае вы можете уничтожить содержимое нужного вам раздела:

$ cd ~/каталог прелоадер/
$ sudo dd if=preloader-mkpimage.bin of=/dev/sdb1 bs=64k seek=0
$ sync

После успешной записи образа загрузчика preloader в первый раздел SD-карты (образы u‑boot, Linux File System, Linux Kernel и Device Tree уже находятся на SD-карточке в соответствующих разделах sdb1, sdb3 и sdb2) карта устанавливается в плату SoCrates и подается питание к плате.

Для того чтобы соединиться с платой через консоль и вывести на экран процесс загрузки ОС Linux (рис. 14), потребуется подключение через интерфейс последовательного порта, установленного на плате: TUSB3410 (Serial на USB) — драйвер инсталлируется с сайта производителя TI [11]. Для индикации соединения на плате имеется светодиод LED (D44). Для настройки параметров соединения используется программа терминала TeraTerm или PuTTy, где скорость работы порта конфигурируется на 57 600 бод. После установки SD-карты в плату требуется нажать кнопку мягкой перезагрузки Soft-Reset, расположенную рядом с мостом Serial/USB.

Загрузка ОС Linux на плате SOCrate (login: root, вход без пароля)

Рис. 14. Загрузка ОС Linux на плате SOCrate (login: root, вход без пароля)

Итак, ОС Linux запущена на плате SoCrates! Для того чтобы войти в ОС Linux, понадобится ввести login=root, пароля не нужно. Для дальнейшей передачи программы на исполнение следует установить Ethernet-соединение с платой и назначить статический IP-адрес через консоль и проверить соединение:

$ ifconfig eth0 192.168.42.99 up
$ ping . . . . ваш IP-адрес хост-машины / $ ping 192.168.42.99

После установки соединения в референсном дизайне нужно запустить на плате несколько небольших программ-приложений (программы: hellosoc.c и devmem2.c), чтобы проверить работоспособность ранее синтезированного периферийного модуля управления светодиодами. Необходимо установить на виртуальную машину компилятор gcc — Linaro. Данный процесс описан в руководстве Altera — Embedded Linux Getting Started Guide:

$ gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux
% export PATH=/home/mint/altera-linux/linaro/gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123_linux/bin:$PATH

Код программ доступен со страницы референс-дизайна EBV Elektronik (раздел SoCrates workshop software) [10]. Первая программа hellosoc представляет собой Hello World, код приведен ниже, вторая программа devmem2 читает и записывает в адресное пространство:

# include <stdio.h>
int main (int argc, void**argv)
{ printf (“Hello World from SoCrates!”\n);
return 0; }

Программы требуется откомпилировать на Linux хост-машине под Linaro cross-compiler через команду в терминале и передать для последующего исполнения c платы SoCrates, через команду scp или через tftp-сервер:

% arm-linux-gnueabihf-gcc –o hellosoc hellosoc.c (devmem2.c)
% scp hellosoc root@192.168.42.99 <пользователь и адрес платы>:~/hello <директория на плате)>

Запуск программ hellosoc и devmem2 на исполнение на плате SoCrates осуществляется через следующие команды в терминале:

% chmod +x hellosoc (devmem2)
% ./hellosoc (devmem2)

Первая программа выводит сообщение в консоль Hello World from SoCrates!, вторая программа более интересная, позволяет работать с адресным пространством. В примере рассматривается управление светодиодами через компонент LED PIO (рис. 15), синтезированный на FPGA. Компонент LED PIO управляется мостом управления lwhps2fpga bridge. Базовый адрес моста LW= 0xFF200000. Смещение компонента LED PIO в нашей системе относительно моста управления нулевое — 0x0 (среда Qsys).

Смещение компонента LED PIO в Qsys

Рис. 15. Смещение компонента LED PIO в Qsys

Если FPGA еще не сконфигурирована, откройте программатор Quartus II Programmer и сконфигурируйте ПЛИС образом SoCrates_lab1.sof. Через команды в терминале (TeraTerm) зажгите и погасите светодиоды на плате SoCrates, передав программе следующие команды:

% ./devmem2 0xFF200000 w 00
% ./devmem2 0xFF200000 w 09

Поздравляем! Если вы закончили материал из первой и второй части статьи, то успешно освоили начальный маршрут проектирования SOC FPGA Altera. Желаем успеха в самостоятельной разработке на SOC FPGA!

 

Заключение

В следующей статье планируется рассмотреть пакет ARM DS‑5 Altera edition — совместную разработку компаний Altera и ARM, позволяющую, используя аппаратные возможности, заложенные в архитектуре решения SOC FPGA, производить взаимную отладку cross-trigger между процессором и ПЛИС через назначение точки останова в ПО ARM DS‑5 Altera edition и установление срабатывания логики в логическом анализаторе пакета Quartus‑2, Logic Analyser, и наоборот.

Статья опубликована в журнале “Компоненты и технологии” №5’2014

Литература
  1. Висторовский А. Базовый маршрут разработки ПЛИС Altera Cyclone V SOC FPGA с аппаратной процессорной системой ARM Cortex A9 на примере стартового отладочного комплекта SoCrates и референсного дизайна EBV Elektronik. Часть 1. // Компоненты и технологии. 2014. № 4.
  2. Altera Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual.
  3. Altera SoC Embedded Design Suite User Guide.
  4. SoCrates Reference Design EBV ELEKTRONIK.
  5. http://www.altera.com/products/software/quartus-ii/web-edition/qts-we-index.html
  6. https://www.altera.com/download/software/soc-eds
  7. http://www.ebv.com/products/product-details/5797/SoCrates?L=0
  8. http://rocketboards.org/
  9. http://www.rocketboards.org/foswiki/Projects/SoCratesHWReferenceDesign
  10. http://rocketboards.org/foswiki/Documentation/EBVSoCratesWorkshops
  11. http://www.ti.com/litv/zip/sllc428a /ссылка устарела/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *