User Tools

Site Tools


hw:zynq:linux:petalinux:boot_kernel_2020.2

Boot and Kernel configure & build with PetaLinux 2020.2 without BSP (board support package)

  1. Create Vivado design and export the hardware with bitstream.
    Default XSA (Xilinx Support Archive) location is:
    <project_directory>/

    In case you need it (but usually you shouldn't), default bitstream location is:

    <project_directory>/<project_name>.runs/impl_1/
  2. Setup PetaLinux enviroment (see Install PetaLinux)

  3. Create PetaLinux project:
    petalinux-create --type project --template zynq --name <boot_project_name>
    cd <boot_project_name>

    For UltraScale+:

    petalinux-create -t project --template zynqMP --name <boot_project_name>
  4. Get hardware description from Vivado project:
    petalinux-config --get-hw-description <path_to_vivado_project_directory>/
  5. Set booting from SD card by navigating through settings tree and choosing the proper options:
    Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> boot image settings  : set ‘image storage media’ option to ‘primary sd’
                                                                                  -> kernel image settings: set ‘image storage media’ option to ‘primary sd’
                                                                                  -> dtb image settings   : set ‘image storage media’ option to ‘primary sd’
    Image Packaging Configurations: set ‘Root filesystem type’ option to ‘EXT4 (SD/eMMC/SATA/USB)’
                                  : uncheck 'Copy final images to tfpboot'

    Select Exit to write the configuration.

    In case you want to reconfigure boot settings, run:

    petalinux-config
  6. Check whether all required drivers/modules are enabled in kernel config:
    petalinux-config -c kernel

    Hint: you can use vim-like search /<search_string> to list all enabled drivers/modules.
    Remember to Save changes before exit – it seems that there is no autosave!

  7. In order to use the generic UIO driver uio_pdrv_genirq enable kernel modules in kernel config:
    petalinux-config -c kernel

    by navigating through settings tree and enabling modules (there should be '<M>', not '<*>'):

    Device Drivers -> <*> Userspace I/O drivers -> <M> Userspace I/O platform driver with generic IRQ handling
                                                   <M> Userspace platform driver with generic irq and dynamic memory
  8. In order to use the generic UIO driver modify the device tree to assign the compatibility with this driver to your hardware:
    vim ./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

    and add the entry at the end of this file:

    &axi_gpio_0 {
    	compatible = "generic-uio";
    };

    for every hardware module you have.
    Please notice that axi_gpio_0 is only an example of module name!

  9. Build the boot and kernel:
    petalinux-build
  10. Determinate the bit file name in PetaLinux project (it is copied automatically from Vivado design by –get-hw-description):
    ls ./images/linux/*.bit
  11. Create BOOT.BIN image:
    petalinux-package --boot --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/<bit_filename>.bit --u-boot
/services/www/http/wiki/data/pages/hw/zynq/linux/petalinux/boot_kernel_2020.2.txt · Last modified: 2021/04/21 15:59 by jakub.moron