0. Environment set up
- PetaLinux relies on Python 2.7. It would ease the process by creating a Conda environment with Python 2.7 enabled and doing PetaLinux work in it.
- Sometime you should source the following file to run PetaLinux smoothly
$PetaLinux/components/yocto/source/arm/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi
1. Create a new project
petalinux-create -t project --template zynq -n $(project_name)
or
petalinux-create -t project -s $(bsp_file)
2. Import hardware information and configure
Refer to the directory where the .hdf
file is instead of the path to the .hdf
file.
petalinux-config --get-hw-description=$(path_to_hdf)
The following is a list of requirements for a Zynq hardware project to boot Linux (UG980):
- One Triple Timer Counter (TTC) (Required)
IMPORTANT:
If multiple TTCs are enabled, the Zynq Linux kernel uses the first TTC block from the device tree.
Please make sure the TTC is not used by others.- External memory controller with at least 32MB of memory (Required)
- UART for serial console (Required)
IMPORTANT: If soft IP is used, ensure the interrupt signal is connected- Non-volatile memory (Optional) e.g. QSPI Flash, SD/MMC
- Ethernet (Optional, essential for network access)
IMPORTANT: If soft IP is used, ensure the interrupt signal is connected
HDF文件是一個zip文件,可以直接使用7zip解壓;也可以把后綴改為zip初家,使用其它工具解壓。解壓后可以得到文件design_1.hwh, design_1_bd.tcl, design_1_wrapper.bit, psu_init.c, psu_init.h, psu_init.html, psu_init.tcl, psu_init_gpl.c, psu_init_gpl.h, sysdef.xml蝇闭。
- psu_init.c, psu_init.h是Vivado根據(jù)工程師配置的硬件信息,產(chǎn)生的C代碼硬毕,會被編譯進FSBL呻引,用于初始化MPSoC的MIO,DDR等吐咳。
- design_1_bd.tcl是一個TCL腳本逻悠,Vivado可以執(zhí)行這個腳本恢復整個Vivado工程元践。
- sysdef.xml,design_1_bd.tcl都含有工具版本信息童谒,可以查看Vivado的版本单旁。
2.1 Ethernet configuration
Subsystem AUTO Hardware Settings
Ethernet Settings
2.2 tftp server configuration
u-boot Configuration
TFTP server IP address
Image Packaging Configuration
tftpboot directory
2.3 Firmware information
Firmware Version Configuration
2.4 Change to boot from SD card
Image Packaging Configuration
Root filesystem type
SD card
3. Create a new application/module
petalinux-create -t apps -n $(app_name)
petalinux-create -t modules -n $(module_name)
The PL device tree is located at:
./components/plnx_workspace/device-tree/device-tree/pl.dtsi
4. Configure kernel
petalinux-config -c kernel
For DMA, may need to disable DMAS engine:
Device Drivers
DMA Engine support
Xilinx AXI DMAS Engine
. Uncheck the option. (per https://lauri.vosandi.com/hdl/zynq/xilinx-dma.html)
5. Configure rootfs
petalinux-config -c rootfs
Select modules/apps to be enabled:
apps
6. Build
petalinux-build
7. Create BOOT.bin
petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot --force
or
create a file, e.g., boot.bif
(UG1283)
image : {
[bootloader] images/linux/zynq_fsbl.elf
images/linux/system.bit
images/linux/u-boot.elf
}
And then, run command:
bootgen -image boot.bif -o i BOOT.BIN -w on
8. Boot file system from SD card
a) Change configuration if using standalone rootfs
When reading hardware configuration (petalinux-config --get-hw-description=xxx
)
Select Image Packaging Configuration
Root filesystem type
SD card
Or when configuring:
petalinux-config
Select Image Packaging Configuration
Root filesystem type
SD card
If using default rootfs, keep this option unchanged:
Image Packaging Configuration
Root filesystem type
INITRAMFS
b) Generate images
petalinux-build
petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot --force
c) Prepare SD card
cp /tftpboot/BOOT.BIN /media/$(username)/BOOT/.
cp /tftpboot/image.ub /media/$(username)/BOOT/.
cp /tftpboot/boot.scr /media/$(username)/BOOT/.
PetaLinux 2020.1 changed uboot so that it requires boot.scr also in the BOOT partition of the SD card.
If use rootfs images created by PetaLinux:
cp images/linux/rootfs.cpio /media/$(username)/rootfs
If use standalone rootfs:
sudo cp -a /path-to-compiled-rootfs/* /media/$(username)/rootfs/.
Then
petalinux-util --update-sdcard -d /media/$(username)/BOOT
Unmount and eject the SD card.
Reference
- UG980
- UG1144
- UG1157
- UG1283