Versal - Petalinux 2024.2(下载与安装+VD100+安装JupyterLab+SD卡分区+SDT流程)

目录

[1. 简介](#1. 简介)

[2. 下载与安装](#2. 下载与安装)

[2.1 下载 2024.2](#2.1 下载 2024.2)

[2.2 参考手册](#2.2 参考手册)

[2.3 安装准备](#2.3 安装准备)

[2.4 安装过程](#2.4 安装过程)

[3. 使用示例](#3. 使用示例)

[3.1 配置环境](#3.1 配置环境)

[3.2 减少构建时间](#3.2 减少构建时间)

[3.3 创建工程](#3.3 创建工程)

[3.4 导入 XSA](#3.4 导入 XSA)

[3.5 基本配置](#3.5 基本配置)

[3.6 额外配置](#3.6 额外配置)

[3.7 修改设备树](#3.7 修改设备树)

[3.8 构建(Build)](#3.8 构建(Build))

[3.9 生成启动镜像](#3.9 生成启动镜像)

[3.10 拷贝至 SD](#3.10 拷贝至 SD)

[3.11 启动 Linux](#3.11 启动 Linux)

[3.12 安装 Conda](#3.12 安装 Conda)

[3.13 常用命令](#3.13 常用命令)

[4. SDT Flow](#4. SDT Flow)

[4.1 资料](#4.1 资料)

[4.2 输入与输出](#4.2 输入与输出)

[4.3 生成方法](#4.3 生成方法)

[5. SD 卡分区](#5. SD 卡分区)

[5.1 空白 SD 卡](#5.1 空白 SD 卡)

[5.2 分区一](#5.2 分区一)

[5.3 分区二](#5.3 分区二)

[5.4 加载磁盘](#5.4 加载磁盘)

[5.5 拷贝镜像](#5.5 拷贝镜像)

[6. 其他](#6. 其他)

[6.1 U-Boot 命令](#6.1 U-Boot 命令)

[6.1.1 mmc](#6.1.1 mmc)

[6.2 异常汇总](#6.2 异常汇总)

[6.2.1 网口连接](#6.2.1 网口连接)

[6.2.2 无法 ping 通](#6.2.2 无法 ping 通)

[6.2.3 update 更新失败](#6.2.3 update 更新失败)

[6.2.4 仓库状态 404](#6.2.4 仓库状态 404)

[7. 总结](#7. 总结)


1. 简介

本博文分享在 VD100 硬件平台上,通过 Petalinux 2024.2 构建 Linux 的过程。

包括:

  • Petalinux 2024.2 的下载与安装
  • 在 VD100 硬件平台构建 Linux 全过程
  • SDT 生成设备树的方法
  • SD 卡分区
  • 一些常见异常的汇总和分析

2. 下载与安装

2.1 下载 2024.2

PetaLinux Tools DownloadsVivado, Vitis, Vitis Embedded Platform, PetaLinux, Device modelshttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-2.html

2.2 参考手册

《PetaLinux Tools Reference Guide (UG1144)》
《PetaLinux Tools Reference Guide (UG1144)》https://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guidehttps://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guidehttps://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guidehttps://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guidehttps://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guidehttps://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guidehttps://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guide

2.3 安装准备

1)我的配置(符合要求):

  • 32 GB DDR5-5600
  • AMD 7940HS
  • Ubuntu Desktop 20.04.6 LTS

The PetaLinux tools need to be installed as non-root users.

2)依赖包

bash 复制代码
sudo apt-get install iproute2 gawk python3 python build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3

参考:《2024.2_PetaLinux_OS_Package_List.xlsx》

000037095 - PetaLinux 2024.2 - Product Update Release Notes and Known Issueshttps://adaptivesupport.amd.com/s/article/000037095?language=en_UShttps://adaptivesupport.amd.com/s/article/000037095?language=en_UShttps://adaptivesupport.amd.com/s/article/000037095?language=en_UShttps://adaptivesupport.amd.com/s/article/000037095?language=en_UShttps://adaptivesupport.amd.com/s/article/000037095?language=en_UShttps://adaptivesupport.amd.com/s/article/000037095?language=en_UShttps://adaptivesupport.amd.com/s/article/000037095?language=en_US

3)dash

Petalinux 工具要求主机系统 /bin/sh 为 bash。

bash 复制代码
# 检查 /bin/sh 指向哪个 shell:
>> ll /bin/sh
---
lrwxrwxrwx 1 root root 4 12月 20 23:02 /bin/sh -> dash*

更改 /bin/sh:

bash 复制代码
>> sudo dpkg-reconfigure dash

在弹出的界面中选择 "No" 来将 /bin/sh 链接到 bash。

2.4 安装过程

《Reference Guide (UG1144)》:Installing the PetaLinux Tool

bash 复制代码
>> chmod 755 ./petalinux-v<petalinux-version>-final-installer.run
>> ./petalinux-v2024.2-11062026-installer.run

可以指定安装目录 :

bash 复制代码
>> mkdir -p /opt/petalinux/2024.2
>> ./petalinux-v2024.2-11062026-installer.run -d /opt/petalinux/2024.2/

注:chmod 755 使 PetaLinux 安装程序脚本变为可执行文件。

  • (7)所有者: 读、写、执行
  • (5)所属组: 读、执行
  • (5)其他用户: 读、执行

在安装过程中,会两次弹出协议,按 q 退出后,按 y 同意即可,安装成功提示如下:

bash 复制代码
>> ./petalinux-v2024.2-11062026-installer.run -d /opt/petalinux/2024.2/
---
PetaLinux CMD tools installer version 2024.2
============================================
[INFO] Checking free disk space
[INFO] Checking installed tools
[INFO] Checking installed development libraries
[INFO] Checking network and other services
[WARNING] No tftp server found - please refer to "UG1144  PetaLinux Tools Documentation Reference Guide" for its impact and solution

LICENSE AGREEMENTS

PetaLinux SDK contains software from a number of sources.  Please review
the following licenses and indicate your acceptance of each to continue.

You do not have to accept the licenses, however if you do not then you may
not use PetaLinux SDK.

Use PgUp/PgDn to navigate the license viewer, and press 'q' to close

Press Enter to display the license agreements
Do you accept Xilinx End User License Agreement? [y/N] > y
Do you accept Third Party End User License Agreement? [y/N] > y
[INFO] Installing PetaLinux SDK...done
[INFO] Setting it up...done
[INFO] Extracting xsct tarball...done
[INFO] PetaLinux SDK has been successfully set up and is ready to be used.

3. 使用示例

3.1 配置环境

bash 复制代码
>> source /opt/petalinux/2024.2/settings.sh

第一次 souring 会出现如下提示:

bash 复制代码
>> source /opt/petalinux/2024.2/settings.sh
---
*************************************************************************************************************************************************
The PetaLinux source code and images provided/generated are for demonstration purposes only.
Please refer to https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/2741928025/Moving+from+PetaLinux+to+Production+Deployment
 for more details
*************************************************************************************************************************************************
PetaLinux environment set to '/opt/petalinux/2024.2'
[INFO] Checking free disk space
[INFO] Checking installed tools
[INFO] Checking installed development libraries
[INFO] Checking network and other services
[WARNING] No tftp server found - please refer to "UG1144 2024.2 PetaLinux Tools Documentation Reference Guide" for its impact and solution

验证工作环境是否已设置:

bash 复制代码
>> echo $PETALINUX
---
/opt/petalinux/2024.2

3.2 减少构建时间

Petalinux 工程编译时会从网上获取大量的必要资源,编译速度依赖于网速,如果网络不稳定还有可能在等待很久之后编译失败,推荐使用离线镜像

参考一:

PetaLinux Yocto Tips - Xilinx Wiki - Confluencehttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips#PetaLinuxYoctoTips-HowtoreducebuildtimeusingSSTATECACHEhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips#PetaLinuxYoctoTips-HowtoreducebuildtimeusingSSTATECACHEhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips#PetaLinuxYoctoTips-HowtoreducebuildtimeusingSSTATECACHEhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips#PetaLinuxYoctoTips-HowtoreducebuildtimeusingSSTATECACHEhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips#PetaLinuxYoctoTips-HowtoreducebuildtimeusingSSTATECACHEhttps://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips#PetaLinuxYoctoTips-HowtoreducebuildtimeusingSSTATECACHE相关主题:

  • How to reduce build time using SSTATE CACHE

参考二:《PetaLinux Tools Documentation: Reference Guide (UG1144)》

相关主题:

  • Downloading Mirrors

离线镜像下载地址:

DownloadsVivado, Vitis, Vitis Embedded Platform, PetaLinux, Device modelshttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.htmlhttps://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html

3.3 创建工程

bash 复制代码
>> petalinux-create project --template versal --name vd100
>> cd vd100 # 项目目录

参数解释如下:

  • --template <PLATFORM>, 以下平台类型受支持:
    • versal (for Versal adaptive SoC)
    • zynqMP (for Zynq UltraScale+ MPSoC)
    • zynq (for Zynq 7000 devices)
    • microblaze (for MicroBlaze processor)
      • 注:MicroBlaze 模板不能用于Zynq 7000、Zynq MPSoC 或 Versal 的 PL 中。
  • --name <PROJECT_NAME>,项目名称(项目目录)。

3.4 导入 XSA

XSA 生成请参见博文:Versal - 基础1(PL点灯+构建CIPS+VD100+查找资料和文档)-CSDN博客

导入硬件并进行基本配置(xsa 保存在 vd100 同级目录中):

bash 复制代码
>> cd vd100 # 进入项目目录
>> petalinux-config --get-hw-description ../design_1_wrapper.xsa
---
[INFO] Getting hardware description
[INFO] Renaming design_1_wrapper.xsa to system.xsa
[INFO] Extracting yocto SDK to components/yocto. This may take time!
[INFO] Bitbake is not available, some functionality may be reduced.
[INFO] Using HW file: /home/dd/Documents/petalinux/vd100/project-spec/hw-description/system.xsa
[INFO] Getting Platform info from HW file
[INFO] Generating Kconfig for project

按两次 Esc 返回上一层。

3.5 基本配置

导入硬件时,会自动弹出 menuconfig 窗口(PetaLinux System Configuration)。

想要再次弹出此窗口,也可执行运行:

bash 复制代码
>> cd vd100 # 进入项目目录
>> petalinux-config

在此 menuconfig 中,进行一些基本的配置:

bash 复制代码
PetaLinux System Configuration
 -> Subsystem Hardware Settings
     ->Ethernet Settings
        -> Obtain IP address automatically :: False
        -> Static IP address :: 192.168.137.5
        -> Static IP gateway :: 192.168.137.1

 -> Image Packaging Configuration
     -> Root filesystem type :: EXT4 (SD/eMMC/SATA/USB)
     -> Device node of SD device :: /dev/mmcblk1p2
     -> Copy final images to tftpboot :: False

 -> Yocto Settings
     -> Add pre-mirror url :: file:///home/dd/Documents/devBoard/common/Petalinux/downloads_2024.2_11061705/downloads/
     -> Local sstate feeds settings :: /home/dd/Documents/devBoard/common/Petalinux/sstate_aarch64_2024.2_11061705/aarch64/
     -> Enable Network sstate feeds :: False
     -> Enable BB NO NETWORK :: True

基本配置文件存储在:

bash 复制代码
<vd100_prj>/project-spec/configs/config

3.6 额外配置

petalinux-config 配置汇总:

bash 复制代码
>> cd vd100 # 项目目录

>> petalinux-config -c u-boot

>> petalinux-config -c kernel

>> petalinux-config -c rootfs

1)Package Management

bash 复制代码
>> petalinux-config -c rootfs
---
menuconfig
---
-> Image Features
    -> package-management :: True
    -> package-feed-uris ()
    -> package-feed-archs ()
  • 无需设置基础包源 URL(package-feed-uris)。
  • 无需设置包源架构(package-feed-archs)。

从 2021.1 版本开始,指定包源 URI 和包源架构是可选的。PetaLinux 或 Yocto 会根据项目自动设置这些 URI 和架构。

注:PetaLinux 是嵌入式系统,其软件包数量通常比通用发行版(如 Ubuntu)少。

2)配置用户名和密码

《UG1144》:Adding Extra Users to the PetaLinux System

bash 复制代码
>> petalinux-config -c rootfs
---
menuconfig
---
-> PetaLinux RootFS Settings
    -> (user1:passwd1;user2:passwd2) Add Extra Users
    -> (user1:audio,video,aie,input;) Add Users to Groups
    -> (user1) Add Users to Sudo users

3)packagegroup-self-hosted

bash 复制代码
>> petalinux-config -c rootfs
---
menuconfig
---
-> Petalinux Package Groups
    -> packagegroup-self-hosted
        -> packagegroup-self-hosted :: True

3.7 修改设备树

按照如下目录修改设备树:

<vd100_prj>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

bash 复制代码
/include/ "system-conf.dtsi"
/ {	
};

/* SD */
&sdhci1 {
	disable-wp;
	no-1-8-v;
};

有关设备树的额外信息:

1)设备树文件后缀缩写

  • DTS: Device tree source 设备树源文件
  • DTSI: Device tree source include 设备树头文件
  • DTB: Device tree binary 设备树二进制文件

2)单独编译设备树

修改 "<vd100_prj>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi" 中的设备树后,可以通过单独编译设备树,可用于验证修改设备树是否成功:

bash 复制代码
>> petalinux-build -c device-tree

生成的 dts 文件在 "<vd100_prj>/images/linux/" 中。

3)反编译设备树

bash 复制代码
>> fdtdump system.dtb > system.dts
  • 生成的 dts 和 dtb 文件在同一目录下
  • 生成的 dts 文件末尾,包含 一个 symbols 节点,它的作用是定义符号别名(aliases)。
bash 复制代码
...

__symbols__ {
    ...
    sdhci0 = "/axi/mmc@f1040000";
    sdhci1 = "/axi/mmc@f1050000";
    serial0 = "/axi/serial@ff000000";
    serial1 = "/axi/serial@ff010000";
    ...
    axi_gpio_0 = "/pl-bus/gpio@20100000000";
    memoryaxi_noc_0_ddr = "/memory@0";
};

3.8 构建(Build)

bash 复制代码
>> cd vd100 # 进入项目目录
>> petalinux-build

这一步骤生成:

  • 设备树 DTB 文件
  • FSBL(适用于 Zynq 7000、Zynq MPSoC 和 MicroBlaze)
  • PLM(适用于 Versal SoC)
  • PSM(适用于 Versal SoC)
  • TF-A(适用于 Zynq MPSoC 和 Versal SoC)
  • U-Boot
  • Linux Kernel
  • Rootfs
  • U-Boot boot script(boot.scr)

最后,它生成必要的引导镜像。

成功标志:

bash 复制代码
WARNING: XSCT has been deprecated. It will still be available for several releases. In the future, it's recommended to start new projects with SDT workflow.
Loading cache: 100% |                                                                                                                                        | ETA:  --:--:--
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |#######################################################################################################################################| Time: 0:00:59
Parsing of 5800 .bb files complete (0 cached, 5800 parsed). 8454 targets, 998 skipped, 27 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
NOTE: Fetching uninative binary shim file:///home/dd/Documents/petalinux/vd100/components/yocto/downloads/uninative/6bf00154c5a7bc48adbf63fd17684bb87eb07f4814fbb482a3fbd817c1ccf4c5/x86_64-nativesdk-libc-4.6.tar.xz;sha256sum=6bf00154c5a7bc48adbf63fd17684bb87eb07f4814fbb482a3fbd817c1ccf4c5 (will check PREMIRRORS first)
Checking sstate mirror object availability: 100% |############################################################################################################| Time: 0:00:04
Sstate summary: Wanted 3107 Local 0 Mirrors 2878 Missed 229 Current 0 (92% match, 0% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 6793 tasks of which 5966 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message.
[INFO] copy to TFTP-boot directory is not enabled
[INFO] Successfully built project

有一个警告:

XSCT 已经被弃用,建议在未来的项目中使用 SDT(System Device Tree)工作流程。

3.9 生成启动镜像

《UG1144》Generate Boot Image for Versal Adaptive SoC

Boot Image 通常包含:

  • PDI 文件(从硬件设计导入)
  • PLM
  • PSM 固件
  • Arm Trusted Firmware
  • U-Boot
  • DTB
bash 复制代码
>> cd vd100 # 项目目录
>> petalinux-package boot --u-boot --force

3.10 拷贝至 SD

**注:**需要提前按照 "2.5 SD 卡分区" 章节对 SD 做好分区。

bash 复制代码
# 挂载 SD (Host)
sudo mount /dev/sda1 /media/dd/BOOT && sudo mount /dev/sda2 /media/dd/ROOTFS

# 删除之前的系统文件
sudo rm -rf /media/dd/BOOT/* /media/dd/ROOTFS/*

# 拷贝新的系统文件
cd images/linux/
sudo cp boot.scr BOOT.BIN image.ub /media/dd/BOOT && sync
sudo tar zxvf rootfs.tar.gz -C /media/dd/ROOTFS/ && sync

# 解除挂载(Host)
sudo umount /media/dd/BOOT /media/dd/ROOTFS

3.11 启动 Linux

1)基本连接参数

  • 波特率:115200
  • 流控制:关闭
  • 拨码开关,下图所示:

2)更新系统时间

bash 复制代码
sudo date -s "2025-01-29 14:30:00"

3)手动修改仓库配置文件

请参见:6.2.4 仓库状态 404

3.12 安装 Conda

1)下载 Miniconda

Download Now | Anaconda

2)安装 Conda

bash 复制代码
>> chmod 755 Miniconda3-latest-Linux-aarch64.sh
>> ./Miniconda3-latest-Linux-aarch64.sh
---
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
   run the following command when conda is activated:

conda config --set auto_activate_base false

You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>>

You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:

eval "$(/home/dong/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)"

To install conda's shell functions for easier access, first activate, then:

conda init

Thank you for installing Miniconda3!

询问你是否希望自动初始化 conda:

  • 如果选择 yes(是),那么 conda 会修改你的 shell 配置文件,使得 conda 在终端启动时自动激活(会改变命令提示符)。
  • 如果选择 no(默认),conda 不会自动激活,你需要手动执行 conda activate 来进入 conda 环境。

3)安装常用包

bash 复制代码
conda install jupyterlab numpy pandas matplotlib

这里包括:

  • JupyterLab(交互式编程环境)
  • NumPy(数值计算)
  • Pandas(数据分析)
  • Matplotlib(数据可视化)

4)启动 Jupyter Lab

bash 复制代码
jupyter lab --no-browser --port 8888 --ip 192.168.137.5

3.13 常用命令

|-------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
| APT | DNF |
| Advanced Package Tool | Dandified YUM① |
| Debian-based Linux distributions | Fedora-based distros |
| Debian, Ubuntu | Red Hat, CentOS |
| DEB package format | RPM② package format |
| >> sudo apt update >> sudo apt upgrade >> sudo apt search package >> sudo apt install package | >> sudo dnf update >> sudo dnf upgrade >> sudo dnf search package >> sudo dnf install package |
| ---- | >> sudo dnf install /path/to/package.rpm③ |
| >> sudo apt remove package >> sudo apt autoremove④ | >> sudo dnf remove package >> sudo dnf autoremove④ |
| >> sudo apt purge package⑤ | ---- |

① YUM(Yellowdog Updater, Modified)

"Dandified" 是不太常见的,意思是 "过分注重穿着打扮的,过于考究的"。

" YUM "译为修改后的Yellowdog更新程序

② Red-hat Package Manager

③ Install manually downloaded rpm package

④ Remove dependency package no longer need

⑤ Remove configuration files and app data

bash 复制代码
>> dnf repolist # Verify repository
>> dnf repoquery #查询已安装或可用于安装的软件包及其相关信息
>> dnf search <package_name> # search for a specific package's availability.
>> dnf list installed

4. SDT Flow

4.1 资料

1)System Device Tree Generator

生成系统设备树文件

system-device-tree-xlnx/README.md at master · Xilinx/system-device-tree-xlnx · GitHubContribute to Xilinx/system-device-tree-xlnx development by creating an account on GitHub.https://github.com/Xilinx/system-device-tree-xlnx/blob/master/README.mdhttps://github.com/Xilinx/system-device-tree-xlnx/blob/master/README.mdhttps://github.com/Xilinx/system-device-tree-xlnx/blob/master/README.mdhttps://github.com/Xilinx/system-device-tree-xlnx/blob/master/README.mdHSI:Hardware Software Interface

2)《UG1144》- System Devicetree flow to Build Images

4.2 输入与输出

Input for SDTGen

  • Vivado generated XSA

Output of SDTGen

  • system-top.dts
  • versal.dtsi
  • pl.dtsi
  • board.dtsi
  • versal-clk.dtsi
  • pcw.dtsi

4.3 生成方法

sdtgen set_dt_param             \
    -xsa ./design_1_wrapper.xsa \
    -dir ./                     \
    -board_dts vd100

sdtgen generate_sdt

5. SD 卡分区

5.1 空白 SD 卡

插入一张空白 SD 卡,或者删除所有分区:

5.2 分区一

点击 **"+"**图标,新建第一个分区:

  • 格式:FAT
  • 大小:2G
  • 命名:BOOT

5.3 分区二

点击 **"+"**图标,新建第二个分区:

  • 格式:EXT4
  • 大小:余下所有磁盘空间
  • 命名:ROOTFS

5.4 加载磁盘

1)在 Local Ubuntu 中

可以直接点击三角形即可加载,两个磁盘分区(BOOT、ROOTFS)都需要加载:

2)在 Remote Ubuntu 中(如 SSH 中)

参考《KV260 - PYNQ 主目录 - U盘挂载-CSDN博客

首先,查看 U 盘设备节点:

bash 复制代码
>> sudo fdisk -l
------
...
Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048  3844095  3842048  1.9G  c W95 FAT32 (LBA)
/dev/sda2       3844096 61849599 58005504 27.7G 83 Linux

可以看出,硬盘 /dev/sda 有两个分区,其中一个是 FAT32 格式,另一个是 Linux 原生格式。

然后,运行如下命令进行挂载:

bash 复制代码
sudo mkdir /media/dd/BOOT
sudo mkdir /media/dd/ROOTFS

sudo mount /dev/sda1 /media/dd/BOOT
sudo mount /dev/sda2 /media/dd/ROOTFS

如果需要卸载,执行如下命令:

bash 复制代码
sudo umount /media/dd/BOOT
sudo umount /media/dd/ROOTFS

sudo rm -rf /media/dd/BOOT
sudo rm -rf /media/dd/ROOTFS

5.5 拷贝镜像

1)删除已有数据

bash 复制代码
sudo rm -rf /media/dd/BOOT/* /media/dd/ROOTFS/*

2)拷贝 BOOT 分区(分区一)的内容:

  • boot.scr
  • BOOT.bin
  • image.ub
bash 复制代码
cd <vd100_prj>/images/linux/
sudo cp boot.scr BOOT.BIN image.ub /media/dd/BOOT && sync

3)处理 ROOTFS分区(分区二)中内容:

需要用 tar 命令把 rootfs.tar.gz 用 root 权限解压到 ROOTFS 分区:

bash 复制代码
cd <vd100_prj>/images/linux/
sudo tar zxvf rootfs.tar.gz -C /media/dd/ROOTFS/ && sync

等待大约 30s 即可解压完毕。

4)充填完毕,需要卸载磁盘请执行:

bash 复制代码
sudo umount /media/dd/BOOT
sudo umount /media/dd/ROOTFS

6. 其他

6.1 U-Boot 命令

6.1.1 mmc

1)mmc list,列出所有连接的 mmc 设备。

bash 复制代码
>> mmc list
---
mmc@f1040000: 0 (eMMC)
mmc@f1050000: 1

对于 VD100 硬件平台:

  • 0 是 U-Boot 分配给 eMMC 设备的编号
  • 1 是 U-Boot 分配给 SD2.0 设备的编号

2)mmc dev 1,切换至 1 号 mmc 设备。

3)mmc info,打印当前的 mmc 信息。

bash 复制代码
>> mmc info
---
Device: mmc@f1050000
Manufacturer ID: fe
OEM: 3432
Name: SD16G
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 29.5 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes

6.2 异常汇总

6.2.1 网口连接

问题:网线连接至哪个口?

ETH1

6.2.2 无法 ping 通

现象:Host PC 可以 ping 通 VD100,VD100 无法 ping 通 Host PC。

解决办法:进入 "高级安全 Windows Defender 防火墙" -> 入站规则:

  • 核心网络诊断 - ICMP 回显请求(ICMPv4-In) -> 启用

说明:

  • 入站规则是指防火墙对从互联网或其他网络进入计算机的流量进行控制。
  • 出站规则是指防火墙对从计算机出去的流量进行控制。

6.2.3 update 更新失败

现象:

bash 复制代码
sudo dnf update
---
OE Remote Repo: sswreleases rel-v2024.2 generic rpm all                                                                                      0.0  B/s |   0  B     00:04
Errors during downloading metadata for repository 'oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-all':
  - Curl error (60): SSL peer certificate or SSH remote key was not OK for https://petalinux.xilinx.com/sswreleases/rel-v2024.2/generic/rpm/all/repodata/repomd.xml [SSL certificate problem: certificate has expired]
...

原因分析:

  • 远程服务器证书已过期: Xilinx 服务器上的 SSL 证书可能已过期,导致无法建立安全连接。
  • 本地系统时间不正确: 如果本地系统时间不准确,可能会导致 SSL 证书被视为无效。

解决办法:

1)检查本地系统时间: 确保当前 Linux 系统的时间和日期是正确的。

bash 复制代码
>> timedatectl
---
               Local time: Tue 2038-01-19 01:34:44 UTC
           Universal time: Tue 2038-01-19 01:34:44 UTC
                 RTC time: Tue 2038-01-19 01:34:44
                Time zone: UTC (UTC, +0000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

2)手动校准系统时间:

bash 复制代码
sudo date -s "2025-01-29 14:30:00"
---
Wed Jan 29 14:30:00 UTC 2025

3)再次运行更新无报错。

6.2.4 仓库状态 404

现象:DNF 无法从指定的仓库(在这种情况下是 oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-versal_generic_xcve2302)下载元数据(repomd.xml 文件),因为服务器返回了404状态码,表明该资源(即元数据文件)在服务器上不存在。

bash 复制代码
sudo dnf update
---
OE Remote Repo: sswreleases rel-v2024.2 generic rpm versal_generic_xcve2302                                                                  216  B/s | 577  B     00:02
Errors during downloading metadata for repository 'oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-versal_generic_xcve2302':
  - Status code: 404 for https://petalinux.xilinx.com/sswreleases/rel-v2024.2/generic/rpm/versal_generic_xcve2302/repodata/repomd.xml (IP: 23.43.51.7)
Error: Failed to download metadata for repo 'oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-versal_generic_xcve2302': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Ignoring repositories: oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-versal_generic_xcve2302
Last metadata expiration check: 0:50:36 ago on Wed Jan 29 14:31:16 2025.
Dependencies resolved.
Nothing to do.
Complete!

通过查看 Index of /sswreleases/rel-v2024.2/generic/rpm 网址,确实仓库地址不再可用。

解决办法:

  • 手动修改仓库配置文件,编辑 /etc/yum.repos.d/ 目录下的仓库配置文件。
bash 复制代码
>> ls /etc/yum.repos.d/
---
oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm.repo

修改其中内容:

bash 复制代码
[oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-versal_generic_xcve2302]
name=OE Remote Repo: sswreleases rel-v2024.2 generic rpm versal_generic_xcve2302
baseurl=https://petalinux.xilinx.com/sswreleases/rel-v2024.2/generic/rpm/versal_generic_xcve2302
gpgcheck=0
---
替换为
---
[oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm-versal_ai_edge_generic]
name=OE Remote Repo: sswreleases rel-v2024.2 generic rpm versal_ai_edge_generic
baseurl=https://petalinux.xilinx.com/sswreleases/rel-v2024.2/generic/rpm/versal_ai_edge_generic
gpgcheck=0

也就是将 "versal_generic_xcve2302" 替换为 "versal_ai_edge_generic"。

操作汇总:

bash 复制代码
>> cp /etc/yum.repos.d/oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm.repo ~

# 在 Mobaxterm 中执行替换:
# versal_generic_xcve2302 -> versal_ai_edge_generic

>> sudo cp ~/oe-remote-repo-sswreleases-rel-v2024.2-generic-rpm.repo /etc/yum.repos.d

7. 总结

在 UM790 上使用 Petalinux 2024.2 构建 Linux 速度非常快,相比我之前使用的 Petalinux 2022.1 有质的飞跃。

通过 X11 转发,复制 Linux 镜像到 SD 卡稍微复杂点。

相关推荐
小镇敲码人11 分钟前
【Linux网络编程】之守护进程
linux·运维·网络
流星白龙23 分钟前
【Linux】30.Linux 多线程(4)
linux·运维·服务器
小白也有IT梦2 小时前
如何在 Linux 中管理自定义脚本:将 ~/bin 目录添加到 $PATH
linux·path·脚本管理
Algorithm-0072 小时前
【软件测试入门】Linux操作系统初级命令大全
linux·运维·chrome
Golinie2 小时前
【C++高并发服务器WebServer】-14:Select详解及实现
linux·服务器·c++·select·webserver
致奋斗的我们2 小时前
MySQL主从同步
linux·数据库·mysql·adb·青少年编程·shell·openeluer
handsomestWei2 小时前
centos部署openvpn
linux·运维·centos
zidan14123 小时前
XILINX硬件设计-(1)LVDS接口总结
fpga开发
啄缘之间3 小时前
verilog练习:i2c slave 模块设计
学习·fpga开发·verilog·uvm
LaoZhangGong1233 小时前
Linux第106步_Linux内核RTC驱动实验
linux·stm32·嵌入式硬件·rtc