I designed my project with zc702, and passed the test using the ADI no-OS test program.
For making HDMI work on Linux, I download the kernel source and build it, just same to Building the Zynq Linux kernel and devicetrees from source(link: https://wiki.analog.com/resources/tools-software/linux-build/generic/zynq), the only difference is not using Linaro Ubuntu destop as root file, system, but a simple file system based on busybox(support fbset cmd). the Linux can boot up without error priinted, and the /dev/fb is created, however the HDMI output can not work well:
1. the boot log can not display. the penguin in screen is incomplete, but pieces not in order.
2. I write a test program to fill fb with some color, the image in screen is different with program writed, and the image keep flashing just like repeatly display two different image.
3. I can change resolution by fbset and verify the setting by readback current mode by command of cat /xxx/xxx/mode, but when test hdmi_clk signal by OSC, it always run at 148.5Mhz, even when I change fb to 1280*768.
I also found that the screen is not stable at startup until I choose a resolution when I do the no-OS test experiment.
So, what should I do to fix it? did I make some mistakes?
thanks for your reply. I have found the solution. it because I set a wrong ddr part, DA-107 in a xilinx pdf. after change to HX15E and update the fsbl, the board work well in any resolution.
From the HDL point of view, is this: https://github.com/analogdevicesinc/hdl/tree/master/projects/adv7511/zc702 what you use?
the version of noOS ，vivado and linux kernel are 2018r2，I designed my project but the part of hdmi display keep same with ADI design.
I tested ADI and my no-OS design and found that my design can not work well in 1920x1080 mode, there are many flush in screen.
I think it also lead my question in Linux. So what do you think about that my design can work well in these resulotion except 1080p? or how can I manually set the hdmi design work in other resulotion?
thanks for your reply and sorry for my fault.
If I correctly understood you have a custom HDL but kept the adi_dma and adi_axi_hdmi_tx IP. Please try, just for validation purposes your setup with our official linux Linaro or Kuiper rootfs. Of course with adapted devicetree to suit your HDL memory mapping.
I'm asking this because we had problems on some projects with HDMI at high resolutions/framerates because of some HDL timing errors and timing constrains.