Jump to content
  • 0

Petalinux zybo z7 HDMI no output



I want to boot petalinux with linaro on my Zybo Z7-10 board, First I tested with the tutorial : https://github.com/Digilent/Petalinux-Zybo-Z7-10 . I got the hdmi output but with wrong colors and graphics rendering. I found a post with the same issue, then I changed the block design, I did the following steps,

Made a block diagram in vivado 2017.4 as given in 1.png

Inside the hdmi block is in 2.png

Both images attached herewith.

I got this HDMI project from here (https://wiki.york.ac.uk/display/RTS/Zybo+Z7+HDMI+Output with https://github.com/RTSYork/zybo-z7-hdmi)


I generated the bitstream and exported the hardware (with include bitstream selected) to get the .hdf file, I tested this design I am getting the HDMI output ok on my HDMI TV


Now I goto petalinux 2017.4 and did initial settings,


source /opt/pkg/petalinux/settings.sh


petalinux-util --webtalk off


Created new project, and add my hardware to it,

petalinux-create --type project --template zynq --name zyboz7

cd zyboz7/

petalinux-config --get-hw-description=/home/aashish/peta/LINUX/linux/linux.sdk


the changes I made are,

Linux Components Selection --->u-boot (ext-local-src) --->

  ( ) u-boot-plnx                      

  ( ) remote                             

  (X) ext-local-src 


External u-boot local source settings --->(/home/aashish/peta/zyboz7/components/u-boot-digilent) EXternal u-boot local source path


DTG Settings --->Kernel Bootargs --->(console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait) Auto generated bootargs (NO EDIT!)


Image Packaging Configuration --->

 ( ) INITRAMFS                        

 ( ) INITRD                           

  ( ) JFFS2                            

  ( ) NFS                              

 (X) SD card                          

 ( ) other


Now I build the project successfully,  



Generated the boot files,

petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/design_1_wrapper.bit --u-boot


Now I Format an 16GB SD card with two partitions: The first 600 MB and be FAT32 formatted. The second partition has remaining space and formatted as ext4.


Copied images/linux/BOOT.BIN and images/linux/image.ub to the first partition of SD card. and  linaro to the second partition of SD card,



cd /media/aashish


cd Downloads/


sudo tar -xzvf linaro-precise-ubuntu-desktop-20120923-436.tar.gz -C /media/aashish/1f3b4346-f0a4-444f-9e1b-86d3c6ca226e

mkdir -p /tmp/linaro

sudo cp linaro-precise-ubuntu-desktop-20120923-436.tar.gz /tmp/linaro/fs.tar.gz

cd /tmp/linaro

sudo tar zxf fs.tar.gz

cd binary/boot/filesystem.dir

mkdir -p /tmp/sd_ext4

sudo mount /dev/sdb2 /tmp/sd_ext4

cd /tmp/linaro/binary/boot/filesystem.dir

sudo rsync –a ./ /tmp/sd_ext4

sudo rsync -a ./ /tmp/sd_ext4

sudo umount /tmp/sd_ext4


But after spending whole night at the end I got no output on my HDMI tv. I also noticed that my system-user.dtsi is empty after building my petalinux

Please help me to solve this problem.




Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

You need to get the device tree modifications from the digilent BSP. specifically you need teh following in `project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi` in your petalinux project.


&amba_pl {
	encoder_0: digilent_encoder {
		compatible = "digilent,drm-encoder";
		digilent,fmax = <150000>;
		digilent,edid-i2c = <&i2c0>;

	xilinx_drm {
		compatible = "xlnx,drm";
		xlnx,vtc = <&v_tc_out>;
		xlnx,connector-type = "HDMIA";
		xlnx,encoder-slave = <&encoder_0>;
		clocks = <&axi_dynclk_0>;
		planes {
			xlnx,pixel-format = "rgb888";
			plane0 {
				dmas = <&axi_vdma_1 0>;
				dma-names = "dma0";
&axi_dynclk_0 {
	compatible = "digilent,axi-dynclk";
	#clock-cells = <0>;
	clocks = <&clkc 15>;
&axi_vdma_1 {
	dma-ranges = <0x00000000 0x00000000 0x40000000>;
&v_tc_out {
	compatible = "xlnx,v-tc-5.01.a";


Then you need to enable `CONFIG_COMMON_CLK_AXI_CLKGEN` in the kernel configuration and set the CONFIG_CMA_SIZE_MBYTES kernel parameter to 128.


Finally you need to get two drivers from the 2017.4 petalinux kernel source as used in the digilient BSP. The digilent_encoder and digilent dynamic clock. I have included the source files. Then you need to add the drivers as modules in petalinux.

petalinux-create -t modules --name clk-dglnt-dynclk --enable
petalinux-create -t modules --name digilent-encoder --enable


copy the contents of `clk-dglnt-dynclk.c` into  `project-spec/meta-user/recipes-modules/clk-dglnt-dynclk/files/clk-dglnt-dynclk.c`

copy the contents of `digilent_encoder.c` to `project-spec/meta-user/recipes-modules/digilent-enconder/files/digilent-enconder.c`


Then rebuild and it should work. Tested on 2017.4


digilent_encoder.c clk-dglnt-dynclk.c

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...