- PVSM.RU - https://www.pvsm.ru -

Программирование SoC Zynq

В прошлой публикации [1] я упомянул, что мой SBC для экспериментов пал смертью храбрых. Само собою, встала проблема нового подопытного.

Простой одноплатник мне как-то не хотелось приобретать, поэтому выбор мой пал на SoC'и. Выбирал я между Zynq и Cyclone V. По названию темы, думаю, догадались, что же я решил выбрать.
Программирование SoC Zynq - 1
Данная публикация будет состоять из небольшого обзора платки с заглавной картинки и того, как «программировать» и «конфигурировать» подобное железо.
Кому это интересно прошу под кат.

Board

Приобрёл платку Z-turn Board фирмы Myir.
На ней камень Zynq 7020, 85к логических ячеек, 2 ядра Cortex-A9, 1 GB DDR3. Выведеные на плате интерфейсы: JTAG, HDMI, micro SD host, Ethernet, UART, USB OTG и ~100 GPIO pins. Из периферии есть LED, RGB LED, buzzer, inertial and temperature sensors.

Более подробное описание можете поглядеть по ссылке [2].

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

Программирование

Собственно, программивать Zynq можно двумя путями: 1) как обычный MCU baremetal 2) из под OS.

Baremetal

В этом случае всё предельно просто: накидываете программку--->компилите--->заливаете JTAG'ом в камень. У этого камня 256 кБ флэша для прошивки.
Т.к. JTAG отладчик я не преобретал, то показывать тут нечего=)

OS

В моём случае на micro SD карточке сборка Линукса. Т.е. путь создания, проверки и отладки программ аналогичен описанному, в прошлой публикации.
Элементарщина: накидываете программку--->компилите toolchain'ом и копируюте на плату/компилите на плате/копируюте на плату скрипт--->отлаживаете/запускаете--->имеете профит!

Думаю, заострять на этом внимание не особо нужно, поэтому просто <<Hello Zynq!>>:

bash>$ touch hellozynq.py
bash>$ echo '#!/bin/python
> print "Hello Zynq!"
> ' > hellozynq.py
bash>$ cat hellozynq.py 
#!/bin/python
print "Hello Zynq!"

Копируем наш файлик на борду:

bash>$ scp hellozynq.py root@<ip_address>:/root/hellozynq.py
root@<ip_address>'s password: 
hellozynq.py                                    100%   35     0.0KB/s   00:00

Запускаем:

root@localhost:~# chmod +x hellozynq.py
root@localhost:~# python hellozynq.py 
Hello Zynq!
root@localhost:~# uname -a
Linux localhost.localdomain 3.15.0-xilinx #9 SMP PREEMPT Tue May 26 17:26:14 CST 2015 armv7l armv7l armv7l GNU/Linux

Конфигурирование

А вот здесь заострим внимание.
Путь конфигурирования FPGA части этого SoC'a ориентировочно таков:

  1. Создание проекта в IDE фирмы Xilinx
  2. Разрабокта конфигурации
  3. Генерация bitstream'а
  4. Прошивка

Создание проекта в IDE фирмы Xilinx и разрабокта программы сами по себе займут по статье. Поэтому я возьму готовый проект, который шёл вместе с бордой.
Сперва запускаем проект.
Затем запускаем синтез и имплемнтацию.
После генерируем bitstream файл.

Копируем его на борду:

bash>$ scp another_blink.bit root@192.168.100.9:/root/ablink.bit
root@192.168.100.9's password: 
hw.bit                                                             100% 3951KB   3.9MB/s   00:00

Проверяем каталог:

root@localhost:~# ls -lahs *.bit
3.9M -rw-r--r-- 1 root root 3.9M Mar  5 10:35 ablink.bit
3.9M -rw-r--r-- 1 root root 3.9M Mar  1 18:17 blink_conf.bit
3.9M -rw-r--r-- 1 root root 3.9M Mar  2 03:13 hw.bit
   0 -rw-r--r-- 1 root root 3.9M Mar  2 18:50 uf.bit

И конфигурируем FPGA:

root@localhost:~# cat hw.bit > /dev/xdevcfg 

Ура товарищи! Светодиод горит!
Программирование SoC Zynq - 2

Заметки:
Конфигурировать FPGA, естественно, можно и отладчиком. Только у меня его нет.
Vivado очень можная штука и требует много памяти и ресурсов CPU. На моих i5 и 4GB ОЗУ постоянно свапует.
Также нужно быть внимательным разработчиком, т.к. я слышал несколько историй о том, как жгли камни неправильно настраивая вывода FPGA. Быть может, это невалидно для Zynq.

P.S.:
Я решил взять эту платку т.к. она самая дешёвая и доступная мне интересны FPGA тем, что в них можно синтезировать любые цифровые интерфейсы, делать мультиплексоры выводов и, самое крутое, синтезировать вычислители (автоматы, процессоры, сопроцессоры типа FPU и т.п.). А в купе с Linux'ом на процессорной части можно творить крутейшие вещи.

Автор: gazpar

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/247857

Ссылки в тексте:

[1] публикации: https://habrahabr.ru/post/319736/

[2] ссылке: http://www.myirtech.com/list.asp?id=502

[3] Источник: https://habrahabr.ru/post/323224/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best