ZYNQ HW: EBAZ4205
Автор: sea
Рецензент: KeisN13
2021 г.
Поддержать комьюнити
[Link]
Оглавление
Аннотация ........................................................................................................................................ 3
Обзор платы ..................................................................................................................................... 3
Параметры платы ........................................................................................................................ 3
Программатор .............................................................................................................................. 5
Приступаем к работе ....................................................................................................................... 6
Сборка и настройка HW части ................................................................................................... 6
SW часть проекта ...................................................................................................................... 16
Итоги .............................................................................................................................................. 24
Ссылки............................................................................................................................................ 25
2
Поддержать комьюнити
[Link]
Аннотация
Цель данного туториала - повторить создание проекта Hello World с выводом текстовой
строки в последовательный интерфейс UART, но на плате EBAZ4205. Для этого нужно будет
учесть аппаратные особенности этой платы. Так же, отличием этого туториала является
использование Vitis вместо более раннего варианта SDK.
Обзор платы
Плата EBAZ4205 является управляющей картой от крипто майнера Ebit E9 + BTC. Сейчас
как майнер стала не актуальна, поэтому б/у платы появились по доступной цене (порядка 1000р)
на ebay и aliexpress (поисковая фраза "ZYNQ 7000"). При покупке я выбрал более дорогой вариант,
где продавец припаивает слот для MicroSD карточки на плату. По умолчанию слот не припаян.
Кроме слота, продавец припаял еще разъем для подключения UART и JTAG для
программирования. Кроме этого, перепаян резистор R2577, R2584 для загрузки системы не с flash
а с MicroSD.
Параметры платы
ПЛИС XC7Z010CLG400, Dual Core Cortex A9 @ 666.66MHz and Artix-7 FPGA with 28k LEs.
3
Поддержать комьюнити
[Link]
Внешняя память DDR3 256MB
Внешняя FLASH память - 128MB SLC NAND FLASH.
Ethernet трансивер для сети 10/100Mbps: IP101GA
Как становится ясно, плата требует небольшой доработки перед использованием. Для того,
чтобы подать питание на плату, нужно запаять недостающий диод с обратной стороны.
4
Поддержать комьюнити
[Link]
После чего, питание можно будет подавать через стандартный разъем, похожий на Molex
6pin. Я же для подачи питания, использую разъем подключения вентиляторов. Напряжение 5..12
вольт, ток 500 мА.
Программатор
В качестве программатора использую китайский Platform Cable USB II Model DLC10
5
Поддержать комьюнити
[Link]
Приступаем к работе
Еще одно отличие этой статьи от серии статей про Minized это использование Vivado
2020.2 и Xilinx Vitis 2020.2 (в отличие от SDK в более ранних версиях)
Сборка и настройка HW части
Создаем новый проект и попробуем повторить функционал, который выведет строчку
"Hello world" чере UART порт (для того, чтобы это увидеть, нам потребуется переходник USB
UART). В таком проекте потребуется настроить по-минимуму аппаратную часть ZYNQ: порт
UART, DDR память; и написать прошивку для ядра.
6
Поддержать комьюнити
[Link]
Задаем имя проекта
Выберем модель ПЛИС
7
Поддержать комьюнити
[Link]
Нажмем Finish
Дождемся инициализации проекта
Готово!
8
Поддержать комьюнити
[Link]
В IP INTEGRATOR создаем блок Create Block Design имя оставлю по умолчанию
Добавлю систему ZYNQ7 на диаграмму
ZYNQ на диаграмме
9
Поддержать комьюнити
[Link]
Дважды кликаем по блоку ZYNQ на диаграмме, чтобы перейти в настройки системы ZYNQ
Переходим во вкладку PS-PL Configuration и на всякий случай снимаем галочку
Настроим аппаратные блоки, хотя некоторые могут и не потребоваться.
10
Поддержать комьюнити
[Link]
На вкладке MIO Configuration настроим SD и UART1
Если в будущих проектах планируется тактировать PL логику от системы ZYNQ в качестве
источника, то это можно настроить во вкладке Clock Cinfiguration выход FCLK_CLK0
11
Поддержать комьюнити
[Link]
Далее, настроим параметры DDR
Там же параметры задержки
На этом все. Нажимаем "OK".
На диаграмме запускаем "Run Block Automation" оставляя параметры по умолчанию и тоже
нажимаем "ОК"
12
Поддержать комьюнити
[Link]
На диаграмме увидим следующее
Сохраняем диаграмму.
Переходим на вкладку Sources, выбираем диаграмму, создаем обертку и генерируем че-то
там еще. Моя не понимать
Create HDL Wrapper - cоглашаемся, пусть система обновляет файлы в случае изменения
дизайна.
13
Поддержать комьюнити
[Link]
В Generate тоже оставляем все без изменений
Далее запускаем Run Synthesis, Run Implementation, Generate Bitstream. В итоге можно
открыть Implementation Design и посмотреть на него (как на новые ворота)
Далее экспортируем полученный результат
14
Поддержать комьюнити
[Link]
Включая bitstream
Пути и имя не меняем
15
Поддержать комьюнити
[Link]
Готово
Мы настроили аппаратную часть, экспортировали ее и готовы к написанию прошивки.
Теперь переходим в Vitis через меню Tools -> Launch Vitis IDE
SW часть проекта
Создаем новый проект платформы. File -> New -> Platform Project...
16
Поддержать комьюнити
[Link]
Задаем имя платформы
Выбираем через browse экспортированный ранее проект
Больше ничего менять не нужно, нажимаем Finish
17
Поддержать комьюнити
[Link]
Теперь нужно немного скорректировать конфигурацию, чтобы выводить stdin/stdout на наш
uart1. В Board Support Package переходим в настройки Modify BSP Settings
И проверяем, что все настроено на uart1
Запускаем build проекта.
18
Поддержать комьюнити
[Link]
Платформа готова. Теперь создаем приложение File -> New -> Application Project
Далее выбираем нашу платформу
Задаем имя приложения
19
Поддержать комьюнити
[Link]
Далее
Выбираем темплейт Hello World и нажимаем Finish
Мы можем открыть исходный код полученного приложения. Скомпилировать и прошить в
плату.
20
Поддержать комьюнити
[Link]
Компиляция - пкм по проекту приложения - Build Project
Запускаем. Но перед запуском, нужно убрать флешку из разъема SD если она там была,
иначе платформа загрузится с нее и не будет доступна для прошивки через JTAG.
Подключаем программатор к плате. Подключаем переходник USB-rs232 к выходу UART на
плате. Подаем питание.
21
Поддержать комьюнити
[Link]
Запускаем прошивку на плате.
Для работы с терминалом выберем встроенный инструмент Vitis Serial
22
Поддержать комьюнити
[Link]
Нажем + для настройки, выбираем порт своего переходника и скорость 115200
Начался процесс прошивки
В терминале видим сообщения от ядра! Все получилось
23
Поддержать комьюнити
[Link]
Итоги
Пройдя инструкцию по шагам, мы произвели минимальную настройку системы ZYNQ на
базе платы EBAZ4205. Для этого мы настроили ее в соответствии с ее аппаратными
особенностями: выбрали последовательный порт UART, который выведен на разъем, настроили
работу установленной на плате DDR памяти. Экспортировали полученный проект из Vivado.
Далее в Vitis мы создали проект платформы на базе нашей платы и создали проект приложения на
базе темплейта Hello World. В результате должны были увидеть текстовые сообщения,
выведенные через последовательный порт UART, программой, работающей в ядре. И нам это
удалось!
Мотивировать автора статьи Поддержать проект [Link]
Оставить комментарий/отзыв здесь или здесь
24
Поддержать комьюнити
[Link]
Ссылки
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link] - linux образ для SD флешки для запуска
Разные примеры использования и доработки платы
[Link] EBAZ4205 ZYNQ development board-the
first step in getting started
[Link] helloworld of EBAZ4205 of zynq7010
[Link] EBAZ4205 mine board ZYNQ7010 uses
JTAG to burn program to NAND and run - переключатель
[Link] Mining board EBAZ4205-ZYNQ7010 linux
development notes 1---create vivado bare metal project and SDK
[Link] Mining machine board EBAZ4205-
ZYNQ7010 linux development notes 3--I2C driver framework explained
[Link] zynq7010 transformation of EBAZ4205 entry
- как добавить 50 МГц генератор в PL
[Link] Run AXI_DMA interrupt loopback test on
EBAZ4205 zynq7010
[Link] EBAZ4205 key interrupt
[Link] EBAZ4205 mining board petalinux
development LINUX project
[Link] видео, на базе которого был создан этот туториал
25