Zimage:
Vmlinux is the kernel file, and zimage is the default kernel image file compressed by default. It is obtained by compressing vmlinux with a piece of unzipping startup code.
Uimage:
Uimage is produced by using the mkimage tool to process common compressed kernel image files (zimage. It is a uboot-specific image file. It is added with a 64-Byte "Header" before zimage, indicating the kernel version, loading location, generation time, size, and other information. It is no different from zimage after 0x40.
With the uimage header description, U-boot will know the corresponding image information. If there is no header, You need to manually set those parameters.
How to generate uimage:
Find the mkimage file in the/tools directory of uboot and copy it to the/usr/local/bin directory. Then run make uimage in the kernel directory. If it succeeds, you can find the uimage file in the arch/ARM/boot/directory, which is 64 bytes larger than zimage.
Differences between zimage and uimage