display error when run Linux with HDMI output with zc702

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?