Embedded FPGA - поднимаем Linux на Zynq-7000

preview_player
Показать описание
SoC'культ привет! Вот мы дождались, когда в отдельном чате по Embedded части #FPGA назреют массы и поднимется бунт, который приводит нас к такой интересной теме как "Работа с #Linux на системах-на-кристалле #Zynq". На этом стриме стриме мы разберем, что нам нужно сделать, для того, чтобы научиться собирать линукс для Zynq, как создавать аппаратную платформу в FPGA части СнК и как ее использовать/обращаться к ней из операционной системы Linux. В качестве подопытного железа мы воспользуемся отладкой MyIR Z-Turn, но думаю, что после этого эфира мы сможем пересобрать все это дела и для любой другой отладки на Zynq.

PS: "Petalinux должен сдохнуть" - ведущий
--
--
0:00 - Приветственное Слово
2:00 - Объявление о Конференция FPGA-Systems
6:00 - Вступительное слово Игоря Александровича
6:40 - Тема Zynq 7000 на базе процессора SOC ARM
7:00 - Отладочная плата Z-Turn Board
8:10 - Описание структуры, элементов и схемы платы
9:40 - Находим называние кристалла на схеме
10:00 - Создаем проект в Vivado 2019.02 для системы Zynq
13:20 - Настройка памяти DDR3
17:20 - Создание Block Design для системы Zynq в Vivado
18:30 - Настройка clk и reset для Zynq
19:20 - Настройки входного клока
21:40 - Создание axi_gpio модуля
23:30 - Загрузка PS первична !
24:50 - Добавляем axi_interconnect
26:40 - Соединяем линии clk и данных между блоками
29:10 - Соединение reset к модулям
30:00 - настройка axi_gpio модуля
31:40 - Банки ввода-вывода ZYNQ 500 501
33:20 - Настройка напряжений для банков Zynq
34:20 - Настройка QSPI интерфейс
35:00 - Настройка Ethernet контроллера ENET0
38:00 - Пояснение по MIO и EMIO
47:00 - Описание возможности gmii to rgmii интерфейса
49:10 - Настройка SD карты
49:50 - Настройка источника питания SD card
51_30 - Настройка USB-UART
53:10 - Настройка I2C
54:00 - Настройка CAN
1:01:20 - Address Editor смотрим карту памяти
1:02:30 - Генерация проекта
1:05:20 - Включаем настройки генерации .bin файла
1:08:10 - Установка ila на вых портов axi_gpio
1:09:30 - Объявление о плате Mini-Zed для отладки проектов
1:15:17 - Запускаем synthesis проекта
1:20:20 - Про необходимые репозитария и ссылки на них от Xilinx
1:24:00 - Про публинчые ключи для криптографии образов
1:27:30 - Export Hardware, получаем xsa файл
1:30:40 - Работа с репозиториями и подготовка source папки
1:31:20 - git chckeout
1:40:00 - Открываем Vitis GUI
1:40:18 - Генерация devicetree из Vitis (мышкой)
1:52:00 - Перебираемся на машину с линухом для генерации софта
1:53:08 - Необходимые репозитории
1:53:45 - Структура папок проекта
1:58:23 - Скрипт для конфига билдрута (br-config)
2:02:05 - Запуск окна конфига
2:03:31 - Buildroot -Taget options
2:04:25 - Buildroot - Build options (все настройки по умолчанию)
2:04:40 - Buildroot - Toolchain
2:10:06 - Buildroot -System configuration
2:24:08 - Buildroot -Filesystem Images
2:25:37 - Пара слов про свои приложения (BR2_External)
2:26:42 - Сохраняем кофиг
2:27:00 - Пара слов про скрипт билда (br_build)
2:27:45 - Запуск сборки
2:29:35 - Результат сборки
2:40:33 - Конфиг u-boot и последующая сборка
2:42:23 - Как выглядит devicetree для u-boot И чем отличается
2:43:25 - Запуск интерфейса конфига u-boot
2:44:06 - На что стоит обратить внимание
2:47:27 - Убедиться то стоит отметка
2:48:03 - сохраняем конфиг и запускаем сборку (запуск автоматом, так как это прописано в скрипте выше)
2:48:38 - Если все ОК, то появится файл
2:50:25 - Ставим на плате режим загрузки по JTAG
2:53:23 - Проверяем определилась ли плата и работаем с платой через JTAG (загружаем убут)
2:26:13 - Подключаемся к УАПП платы и проверяем работу u-boot
2:57:18 - Минутка мотивации с бесконечно глубокой мыслью :)
3:03:43 - Пара слов про env
3:06:26 - Шаги для записи env в QSPI (делаем FSBL)
3:08:50 - Ковыряем исходник FSBL для запинывания программируемого тактового генератора, если он есть.(на момент старта убута клоки должны работать)
3:12:00 - Делаем BOOT.bin
3:16:28 - Заливаем BOOT.bin во флеш
3:18:17 - Проверяем
3:19:20 - Еще раз пара слов про скрипт сборки убута ub_build
3:21:40 - Подведение итога предыдущих действий
3:22:13 - Конфигурация ядра (описание скрипта сборки)
3:24:33 - Из важного в конфиге ядра
3:26:58 - Сборка и установка модулей
3:27:15 - Пересобираем rootFS так как установились некоторые драйвера
3:29:15 - Смотрим devicetree ядра
3:34:50 - Объяснения работы сишного препроцессора #include в процессе генерации devicetree
3:39:54 - Собираем все образы в один (взгляд на *.its)
4:08:40 - Про четыре возможности загрузки битстрим PL
--

#systemverilog #uvm #fpga
Рекомендации по теме
Комментарии
Автор

0:00 - Приветственное Слово
2:00 - Объявление о Конференция FPGA-Systems
6:00 - Вступительное слово Игоря Александровича
6:40 - Тема Zynq 7000 на базе процессора SOC ARM
7:00 - Отладочная плата Z-Turn Board
8:10 - Описание структуры, элементов и схемы платы
9:40 - Находим называние кристалла на схеме
10:00 - Создаем проект в Vivado 2019.02 для системы Zynq
13:20 - Настройка памяти DDR3
17:20 - Создание Block Design для системы Zynq в Vivado
18:30 - Настройка clk и reset для Zynq
19:20 - Настройки входного клока
21:40 - Создание axi_gpio модуля
23:30 - Загрузка PS первична !
24:50 - Добавляем axi_interconnect
26:40 - Соединяем линии clk и данных между блоками
29:10 - Соединение reset к модулям
30:00 - настройка axi_gpio модуля
31:40 - Банки ввода-вывода ZYNQ 500 501
33:20 - Настройка напряжений для банков Zynq
34:20 - Настройка QSPI интерфейс
35:00 - Настройка Ethernet контроллера ENET0
38:00 - Пояснение по MIO и EMIO
47:00 - Описание возможности gmii to rgmii интерфейса
49:10 - Настройка SD карты
49:50 - Настройка источника питания SD card
51_30 - Настройка USB-UART
53:10 - Настройка I2C
54:00 - Настройка CAN
1:01:20 - Address Editor смотрим карту памяти
1:02:30 - Генерация проекта
1:05:20 - Включаем настройки генерации .bin файла
1:08:10 - Установка ila на вых портов axi_gpio
1:09:30 - Объявление о плате Mini-Zed для отладки проектов
1:15:17 - Запускаем synthesis проекта
1:20:20 - Про необходимые репозитария и ссылки на них от Xilinx
1:24:00 - Про публинчые ключи для криптографии образов
1:27:30 - Export Hardware, получаем xsa файл
1:30:40 - Работа с репозиториями и подготовка source папки
1:31:20 - git chckeout
1:32:10 - генерируем devicetree через xsct, через API hsi выполняя gendt.tcl
1:36:30 - описание ps7_init.tcl
1:40:00 - Открываем Vitis GUI
1:40:18 - Генерация devicetree из Vitis (мышкой)
1:52:00 - Перебираемся на машину с линухом для генерации софта
1:53:08 - Необходимые репозитории
1:53:45 - Структура папок проекта
1:58:23 - Скрипт для конфига билдрута (br-config)
2:02:05 - Запуск окна конфига
2:03:31 - Buildroot -> Taget options
2:04:25 - Buildroot -> Build options (все настройки по умолчанию)
2:04:40 - Buildroot -> Toolchain
2:10:06 - Buildroot -> System configuration
2:24:08 - Buildroot -> Filesystem Images
2:25:37 - Пара слов про свои приложения (BR2_External)
2:26:42 - Сохраняем кофиг
2:27:00 - Пара слов про скрипт билда (br_build)
2:27:45 - Запуск сборки
2:29:35 - Результат сборки
2:40:33 - Конфиг u-boot и последующая сборка
2:42:23 - Как выглядит devicetree для u-boot И чем отличается
2:43:25 - Запуск интерфейса конфига u-boot
2:44:06 - На что стоит обратить внимание
2:47:27 - Убедиться то стоит отметка
2:48:03 - сохраняем конфиг и запускаем сборку (запуск автоматом, так как это прописано в скрипте выше)
2:48:38 - Если все ОК, то появится файл
2:50:25 - Ставим на плате режим загрузки по JTAG
2:53:23 - Проверяем определилась ли плата и работаем с платой через JTAG (загружаем убут)
2:24:55 - Загружаем u-boot.elf
2:26:13 - Подключаемся к УАПП платы и проверяем работу u-boot
2:57:18 - Минутка мотивации с бесконечно глубокой мыслью :)
3:03:43 - Пара слов про env
3:06:26 - Шаги для записи env в QSPI (делаем FSBL)
3:08:50 - Ковыряем исходник FSBL для запинывания программируемого тактового генератора, если он есть.(на момент старта убута клоки должны работать)
3:12:00 - Делаем BOOT.bin
3:16:28 - Заливаем BOOT.bin во флеш
3:18:17 - Проверяем
3:19:20 - Еще раз пара слов про скрипт сборки убута ub_build
3:21:40 - Подведение итога предыдущих действий
3:22:13 - Конфигурация ядра (описание скрипта сборки)
3:24:33 - Из важного в конфиге ядра
3:26:58 - Сборка и установка модулей
3:27:15 - Пересобираем rootFS так как установились некоторые драйвера
3:29:15 - Смотрим devicetree ядра
3:34:50 - Объяснения работы сишного препроцессора #include в процессе генерации devicetree
3:39:54 - Собираем все образы в один (взгляд на *.its)
4:08:40 - Про четыре возможности загрузки битстрим PL

FPGASystems
Автор

1:40:18 - Генерация devicetree из Vitis (мышкой)
1:52:00 - Перебираемся на машину с линухом для генерации софта
1:53:08 - Необходимые репозитории
1:53:45 - Структура папок проекта
1:58:23 - Скрипт для конфига билдрута (br-config)
2:02:05 - Запуск окна конфига
2:03:31 - Buildroot -> Taget options
2:04:25 - Buildroot -> Build options (все настройки по умолчанию)
2:04:40 - Buildroot -> Toolchain
2:10:06 - Buildroot -> System configuration
2:24:08 - Buildroot -> Filesystem Images
2:25:37 - Пара слов про свои приложения (BR2_External)
2:26:42 - Сохраняем кофиг
2:27:00 - Пара слов про скрипт билда (br_build)
2:27:45 - Запуск сборки
2:29:35 - Результат сборки
2:40:33 - Конфиг u-boot и последующая сборка
2:42:23 - Как выглядит devicetree для u-boot И чем отличается
2:43:25 - Запуск интерфейса конфига u-boot
2:44:06 - На что стоит обратить внимание
2:47:27 - Убедиться то стоит отметка
2:48:03 - сохраняем конфиг и запускаем сборку (запуск автоматом, так как это прописано в скрипте выше)
2:48:38 - Если все ОК, то появится файл
2:50:25 - Ставим на плате режим загрузки по JTAG
2:53:23 - Проверяем определилась ли плата и работаем с платой через JTAG (загружаем убут)
2:24:55 - Загружаем u-boot.elf
2:26:13 - Подключаемся к УАПП платы и проверяем работу u-boot
2:57:18 - Минутка мотивации с бесконечно глубокой мыслью :)
3:03:43 - Пара слов про env
3:06:26 - Шаги для записи env в QSPI (делаем FSBL)
3:08:50 - Ковыряем исходник FSBL для запинывания программируемого тактового генератора, если он есть.(на момент старта убута клоки должны работать)
3:12:00 - Делаем BOOT.bin
3:16:28 - Заливаем BOOT.bin во флеш
3:18:17 - Проверяем
3:19:20 - Еще раз пара слов про скрипт сборки убута ub_build
3:21:40 - Подведение итога предыдущих действий
3:22:13 - Конфигурация ядра (описание скрипта сборки)
3:24:33 - Из важного в конфиге ядра
3:26:58 - Сборка и установка модулей
3:27:15 - Пересобираем rootFS так как установились некоторые драйвера
3:29:15 - Смотрим devicetree ядра
3:34:50 - Объяснения работы сишного препроцессора #include в процессе генерации devicetree
3:39:54 - Собираем все образы в один (взгляд на *.its)
4:08:40 - Про четыре возможности загрузки битстрим PL

arzamas
Автор

Вопрос. По времени это 1:52. Что значит делаем софт на линуксовой машине? А до этого вы ведь собирали проект под Win10. Не понятный переход. Какая связь между всем описанным материалом и "линуксовой машиной", и что именно надо делать на "линуксовой машине". Я не придираюсь, мне просто не понятно. Хотел научиться, а тут получается целого куска нет...
И вы говорите:"Я возьму уже готовый проект". А что брать остальным, если такого проекта нет? И опять же вопрос, а чем же мы тогда почти два часа занимались? Разве мы не проект делали на Vivado?

vladimirkacher
Автор

Отработал Вашу инструкцию уже до 2:29:45, даже на двух различных компьютерах, под Debian и Ubuntu. Toolchain не собирается ни там, ни там. Попытаюсь дальше отработать, но меня терзают смутные сомнения, что и дальше не заработает. Да и на видео у Вас как-то странно вышло. Вроде бы что-то делаете, а в результате используете домашние заготовки. Это не упрек, просто жаль и Вашего времени и моего. По этой инструкции нельзя к сожалению научиться чему-то реальному...

vladimirkacher
Автор

Добрый день! Не получается сгенерировать *.xsa методом как на 1:27:53. Использую Vivado 2017.1 Есть ли особенность работы в моей версии среды разработки?

arzamas
Автор

Не запускается xsct на 1:33. Терминал пишет, что нет такой команды. Подскажите, что делать.

vladimirkacher
Автор

он же скопировал чужой ролик и голос ужал .

AlexKruk-kb