Настройка среды PetaLinux

Введение в PetaLinux

PetaLinux — это инструментарий для разработки встраиваемых систем Linux, выпущенный компанией Xilinx (теперь под управлением AMD), специально разработанный для ее ПЛИС (таких как Zynq, Zynq UltraScale+ MPSoC, MicroBlaze и др.) и адаптивных SoC. Он создан на основе Yocto Project и предоставляет полный набор инструментов, который упрощает процесс разработки, настройки и развертывания встраиваемых систем Linux. PetaLinux — это не специальное ядро Linux, а скорее набор инструментов для настройки среды разработки, который уменьшает трудозатраты на конфигурирование U-Boot, ядра и корневой файловой системы. Он может автоматически настраивать соответствующее программное обеспечение на основе информации об оборудовании, экспортированной из Vivado.

Шаги установки PetaLinux

Здесь мы выберем установку PetaLinux на Ubuntu 20.04.6. Поскольку на хост-машине используется Windows, мы установим виртуальную машину Ubuntu 20.04.6 после установки VirtualBox. Вы также можете установить Ubuntu через VMware. Для получения конкретных инструкций по установке Ubuntu на VirtualBox или VMware, пожалуйста, найдите соответствующую информацию в интернете.

После установки системы Ubuntu необходимо выполнить следующие операции.

image-20250627164525060

Если тип интерпретатора совпадает, продолжайте. Если нет, используйте следующую команду, чтобы изменить dash на bash:

Во всплывающем диалоговом окне нажмите «НЕТ».

После этого система начнет установку PetaLinux. Когда вы увидите сообщение "Press Enter to display the license agreements", нажмите Enter, чтобы продолжить. Затем появятся три лицензионных соглашения. Нажмите Q, чтобы выйти, затем нажмите Y и Enter, чтобы продолжить. После этого система начнет установку PetaLinux.

image-20250627170615206

Появится следующий вывод:

Вы можете записать это в системные переменные окружения:

 

Если отображается каталог установки PetaLinux, это означает, что рабочая среда настроена и работает правильно.

Конфигурация проекта Petalinux

Интерфейс конфигурации проекта Petalinux

Выполнение команды petalinux-config --get-hw-description вызовет появление окна, в котором можно настроить проект Petalinux. Если он уже был сконфигурирован и вы хотите настроить его позже, вы можете запустить команду "petalinux-config" для его конфигурации.

image-20250708140532419

Используйте клавиши "↑" и "↓" на клавиатуре для выбора меню для настройки и нажмите клавишу "Enter", чтобы войти в подменю. Синяя выделенная первая буква в меню является горячей клавишей для этого меню; нажатие соответствующей выделенной буквы на клавиатуре быстро выберет соответствующее меню. После выбора подменю нажатие клавиши "Y" запишет соответствующую опцию конфигурации в файл конфигурации, и префикс меню изменится на "< * >". Нажатие клавиши "N" не будет компилировать соответствующий код, а нажатие клавиши "M" скомпилирует соответствующий код как модуль, при этом префикс меню изменится на "< M >". Нажмите клавишу "Esc" дважды для выхода, то есть возврата на предыдущий уровень. Нажмите клавишу "?" для просмотра справочной информации по этому меню. Нажмите клавишу "/", чтобы открыть окно поиска, где можно ввести содержимое для поиска. В нижней части интерфейса конфигурации есть пять кнопок. Функции этих пяти кнопок следующие:

Краткое описание этих меню сверху вниз:

u-boot и ядро Linux

В опции Linux Components Selection можно настроить источник u-boot и ядра Linux. Нажмите клавишу Enter, чтобы перейти в следующий интерфейс выбора. u-boot и ядро Linux по умолчанию загружаются из GitHub, что требует подключения Linux-хоста к интернету для загрузки. В этом эксперименте соответствующие ресурсы были загружены локально. Ссылки для загрузки: linux-xlnx, uboot-xlnx

Примечание: ① Обязательно используйте версию, соответствующую petalinux; мы используем версию petalinux2021.1. ② Если нескольким проектам petalinux необходимо использовать локальный исходный код, каждый проект petalinux должен иметь свой собственный соответствующий исходный код ядра и исходный код u-boot. В противном случае, если один проект petalinux изменит исходный код, это повлияет на другие проекты.

image-20250811134401230

 

image-20250708154325387

Скопируйте исходный код ядра на виртуальную машину и распакуйте его. Здесь мы выбираем распаковку в /home/mind/petalinux_downloads (сначала необходимо создать папку petalinux_downloads).

image-20250708141924947

Измените источник ядра Linux/u-boot на локальное получение и настройте адрес загруженного офлайн-пакета после распаковки:

Выберите Linnux Components Selection --> u-boot --> ext-local-src

Linnux Components Selection --> linux-kernel --> ext-local-src

После выбора появятся две дополнительные опции: External u-boot local source settings --->

External u-boot local source settings --->

Выберите эти два пункта, заполните соответствующие адреса, сохраните и выйдите.

image-20250708142114624

image-20250708142020912

image-20250708142041644

image-20250708142150144

Настройка офлайн-компиляции

Проект компиляции Petalinux по умолчанию требует загрузки некоторых ресурсов из интернета. Если сеть плохая, компиляция может быть очень медленной или даже завершиться неудачей. Чтобы решить эту проблему, мы можем предварительно загрузить два офлайн-пакета ресурсов, а затем настроить Petalinux для офлайн-компиляции. На этом этапе пакеты ресурсов u-boot и Linux были загружены из GitHub. Нам все еще нужно загрузить downloads, ssate:

Примечание: Обязательно загружайте файлы, соответствующие версии Petalinux. Мы используем версию Petalinux 2021.1, поэтому нам нужно найти эти два файла под меткой 2021.1 для загрузки.

image-20250811134812601

 

Выберите инструмент Petalinux arm- sstate-cache:

image-20250811135409751

image-20250811135440321

Скопируйте загруженные архивы на виртуальную машину и распакуйте их. Здесь мы выбираем распаковку в /home/mind/petalinux-downloads:

image-20250708141924947

Выберите нижнюю опцию "Yocto Settings —>":

image-20250708142626192

 

В интерфейсе "Yocto Settings —>" снимите выделение с "Enable Network sstate feeds" и выберите "Enable BB NO NETWORK". Поскольку мы уже загрузили необходимые пакеты локально, нет необходимости подключаться к интернету во время компиляции, что может сократить время компиляции.

Примечание: Даже если настроена офлайн-компиляция, система Ubuntu должна иметь возможность подключения к сети при сборке проекта, так как Petalinux необходимо загрузить некоторый исходный код из GitHub.

image-20250708143753844

Установите путь для пакета "sstate_aarch64". Выберите опцию "Local sstate feeds settings —>" на этой странице и настройте путь, где находятся соответствующие распакованные файлы.

image-20250708160707544

image-20250708143851198

Установите путь для пакета "downloads". Сначала выберите опцию < Exit >, чтобы вернуться к интерфейсу, показанному ниже, затем выберите опцию "Add pre-mirror url —>": file:/// должен быть добавлен перед этим путем.

image-20250708144003442

image-20250708144036650

Изменение типа файловой системы

На начальной странице выберите Image Packaging Configuration ---->

 

image-20250708161228286

Первая опция - это конфигурация типа корневой файловой системы, которая по умолчанию установлена в INITRD и обычно может быть оставлена по умолчанию. Если нам нужно запускать корневые файловые системы Ubuntu или Debian, ее необходимо настроить как EXT4 (SD/eMMC/SATA/USB). Для загрузки с монтированием NFS ее необходимо настроить как NFS. Здесь она установлена в EXT4.

Примечание: Корневая файловая система типа INITRD полностью новая и неизмененная при каждом перезапуске системы Linux. Это означает, что все изменения, сделанные после запуска системы, теряются после выключения питания, и система перезагрузится с предыдущей неизмененной корневой файловой системой. Выбор "EXT4" позволяет разместить корневую файловую систему на разделе ext4 SD-карты или eMMC, поэтому все изменения, сделанные после запуска системы, не будут потеряны после выключения питания.

Опция "Copy final images to tftpboot": Когда в корневом каталоге Ubuntu создается папка с именем tftpboot, проект автоматически копирует соответствующие файлы в каталог /tftpboot после создания образа.

image-20250708161334786

 

Наконец, нажмите Save, Exit.

Запись образа на TF-карту

После настройки проекта Petalinux и выполнения следующих команд будут сгенерированы образ ядра и файловая система:

На этом этапе в каталоге image/linux создаются следующие файлы: BOOT.bin, boot.scr, image.ub и rootfs.tar.gz. Далее необходимо сохранить образ ядра и файловую систему на TF-карту.

Вставьте TF-карту. В это время вы можете проверить и выбрать место подключения TF-карты в правом нижнем углу виртуальной машины:

image-20250708171452626

Введите "p", чтобы увидеть текущее состояние разделов.

Введите "d", чтобы удалить раздел. Если разделов несколько, необходимо ввести "d" несколько раз.

Снова введите "p", чтобы увидеть текущее состояние разделов. Если текущий раздел не является разделом DOS, введите "o", чтобы изменить его на DOS.

Введите "n", чтобы создать раздел. Введите "p", затем последовательно введите "1", "2048" и "+200M".

Введите "t", чтобы установить тип раздела, затем введите "c", чтобы установить тип "W95 FAT32 LBA".

Введите "a", чтобы сделать раздел загрузочным.

Используйте команду "n", чтобы выделить все оставшееся пространство второму разделу. Просто нажмите Enter.

Введите "p", чтобы проверить, есть ли два раздела. Если все правильно, введите "w", чтобы записать таблицу разделов на TF-карту.

image-20250708145305669

image-20250715154826897

Создание и использование пакетов BSP

Используя пакеты Petalinux BSP, мы можем удобно и быстро предоставлять наши проверенные проекты Petalinux другим или использовать проверенные проекты Petalinux других разработчиков. Вам нужно освоить всего две команды для создания и использования пакетов BSP.

Используйте следующую команду для создания пакета BSP для проекта Petalinux в текущем пути терминала:

Используйте следующую команду для создания проекта Petalinux с использованием пакета BSP в текущем пути терминала:

Примечание: Если проект, использованный для создания пакета BSP, успешно компилируется, то проект, созданный с использованием этого пакета BSP, также можно будет скомпилировать напрямую.