Petalinux使用记录
运行环境
- vivado2021.1
- petalinux2021.1
- 开发板为ZYNQ MPSOC的zu15eg:xczu15eg-ffvb1156-2-i
- Ubuntu18.04
安装过程
-
环境:
使用与vivado相同版本的petalinux,在vivado bd中生成zynq,配置DDR,并且开启其他必要的配件,导出xsa到petalinux中作为硬件环境。petaliux的安装参考ug1144。
-
安装过程
从模板创建一个petaliunx工程
petalinux-create -t project --template zynqMP -n peta_test
读取xsa文件配置petalinux工程
petalinux-config --get-hw-description /home/gsy/xsa/
可能会出现下面错误,将终端全屏即可,此错误为窗口太小导致gui无法加载
gsy@gsy:~/fpga_prj/peta_test$ petalinux-config --get-hw-description /home/gsy/xsa/
[INFO] Sourcing buildtools
INFO: Getting hardware description...
INFO: Renaming system_wrapper.xsa to system.xsa
[INFO] Generating Kconfig for project
[INFO] Menuconfig project
ERROR: Failed to menu config project component
ERROR: Failed to config project.
ERROR: Get hw description Failed!. Check the /home/gsy/fpga_prj/peta_test/build/config.log file for more details...
正确进入系统配置界面如下,各个选项的作用参考ug1144,选择Imaging packaging configuration选项
选择 INITRAMFS
保存并且退出
配置linux内核
petalinux-config -c kernel
设置保持默认,退出
配置 Linux 根文件系统
petalinux-config -c rootfs
配置设备树:
(挖坑-待研究)
编译petalinux工程
petalinux-build
制作BOOT.BIN启动文件
petalinux-package --boot --fsbl --fpga --u-boot --force
到此工程制作完成
制作SD启动卡并且上板运行
插入sdk并且连接到虚拟机上的Ubuntu,查看sd卡名
sudo fdisk -l
进入磁盘管理工具
按下p打印磁盘信息
按下d删除分区,将两个分区删除。下面开始新建分区。输入“n”创建一个新分区。通过选择’p’使其为主,使用默认分区号1 和第一个扇区 2048。设置最后一个扇区,也就是设置第一个分区的大小,一般设置 500M 足够了,通过输入“+ 500M”,为该分区预留 500MB。
设置分区类型,输入“t”,然后输入“c”,设置为“W95 FAT32 (LBA)“
新建第二个分区,按下p使其成为主分区,一路回车将剩余空间全部分给分区2
分区 #2 包含一个 ext4 签名。
所以这意味着在这个分区上有EXT4文件系统
最终设置分区如下:
按下w写入并且退出
从prj_name/images/linux中分别拷贝rootfs.tar.gz解压到rootfs分区中
拷贝boot.src、BOOT.BIN和image.ub到分区boot中
将sd卡插入开发板并且将开发板设置为sd卡启动模式。连接好串口,设置好uart的参数,点亮开发板,运行如下:
U-Boot 2021.01 (Jun 01 2021 - 11:54:06 +0000)
Board: Xilinx ZynqMP
DRAM: 4 GiB
PMUFW: v1.1
EL Level: EL2
Chip ID: zu15eg
NAND: 0 MiB
MMC: mmc@ff170000: 0
Loading Environment from FAT... *** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Bootmode: SD_MODE1 //SD启动模式
Reset reason: EXTERNAL
Net: No ethernet found.
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
2594 bytes read in 13 ms (194.3 KiB/s)
## Executing script at 20000000
Trying to load boot images from mmc0
14514068 bytes read in 945 ms (14.6 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
Using 'conf-system-top.dtb' configuration
Trying 'kernel-1' kernel subimage
Description: Linux kernel
Created: 2021-06-04 15:57:16 UTC
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x100000f8
Data Size: 9356113 Bytes = 8.9 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x00080000
Entry Point: 0x00080000
Hash algo: sha256
Hash value: 7224bf7e3ef2d3fbf8a59459151e4b164ec500c88bb93959c67a1f8b5ceb1efa
Verifying Hash Integrity ... sha256+ OK
## Loading ramdisk from FIT Image at 10000000 ...
Using 'conf-system-top.dtb' configuration
Trying 'ramdisk-1' ramdisk subimage