While U-Boot can boot a variety of file types (ldr files, elf files, binary files) and it includes support for its own special format - the U-Boot image format (or uImage).

The format stores information about the operating system type, the load address, the entry point, basic integrity verification (via CRC), compression types, and free description text. Some common bootable U-Boot images you will encounter are files typically named uImage or vmImage.

These images are operated on in directly addressable memory regions. So you can boot directly out of external memory or flash hooked up to the asynchronous memory banks. If the image is stored elsewhere (say serial or NAND flash), you'll have to boot indirectly.

decompresses the image at the specified address (in this case “0x1000000”) to its load address “0x1000”. Care must be taken that the decompressed image does not over-write the compressed image. To determine if this will be a problem - the size of the decompressed image (which is only known at compression time) should be added to the load address. If the compressed image is located anywhere overlapping the destination of the decompressed image, you will have problems.

copies the bootargs to the scratchpad memory (where the kernel looks for it).

Normally you do not need to create a boot image yourself as the uClinux-dist and Linux kernel will generate appropriate images for you. But in case you need to, the command to use is called mkimage. You can either find this with the toolchain (just add the corresponding bfin-… prefix), or you can find it in the U-Boot source directory in the tools folder.