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

Данная публикация будет состоять из небольшого обзора платки с заглавной картинки и того, как «программировать» и «конфигурировать» подобное железо. Кому это интересно прошу под кат.
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.
Более подробное описание можете поглядеть по ссылке.
Отмечу, что если собираетесь использовать такой камень, то обязательно приобретайте для него радиатор и стойки для соответствующей платы. А если и этого не хватает, то привинтите туда ещё и вентилятор, т.к. этот зверь греется сильно.
Программирование
Собственно, программивать 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 ориентировочно таков:
- Создание проекта в IDE фирмы Xilinx
- Разработка конфигурации
- Генерация bitstream'а
- Прошивка
Создание проекта в 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 Ура товарищи! Светодиод горит!

Заметки:
Конфигурировать FPGA, естественно, можно и отладчиком. Только у меня его нет. Vivado очень мощная штука и требует много памяти и ресурсов CPU. На моих i5 и 4GB ОЗУ постоянно свапует.
Также нужно быть внимательным разработчиком, т.к. я слышал несколько историй о том, как жгли камни неправильно настраивая вывода FPGA. Быть может, это невалидно для Zynq.
P.S.:
Я решил взять эту платку т.к.
Комментарии (9)
 - gazpar05.03.2017 18:58- У меня пока руки кривы, чтобы правильно это сделать. Как наловчусь, так сделаю. 
 - kyb2706.03.2017 09:18- Интересная платка. Как прошла доставка? 
 А hdmi не пробовали еще? На сайте предлагают evaluation вариант ядра. Чем это скажется совсем непонятно. - gazpar06.03.2017 18:37- HDMI пробовал- рабочий стол отображается, запускал пару приложений. Вроде работает. 
 
 Доставка не очень из-за того, что ЕМС уроды(специально скипали доставку для того, чтобы я сам её забрал+специально заблаговременно не оповещают о доставке или о не-доставке(к примеру, не собираются доставлять груз в оговорённое время, хотя заявка об этом подана заблаговременно)).
 
 - eromos06.03.2017 18:32- Немного странный вопрос: а где вы нашли такой радиатор, можно ссылочку пожалуйста? 
 
 А платка и правда интересная, похожа очень на microzed по своему составу…
 - Mogwaika07.03.2017 11:28+1- ПЛИСовая часть цинка управляет светодиодом напрямую или через интерфейсы процессора? 
 Вы бы хотя бы описали простейшее взаимодействие программируемой логики и софтовой части…
 А то статья о том как залить файлик.
 Про написание сопроцессора статья будет?
 
           
 
Vaxx
Спасибо, а статьи создание проекта в IDE Vivado фирмы Xilinx и разработка программы будут?