Failed to boot PetaLinux from u-boot (SDK 1.1)
When booting my PetaLinux system from u-boot, nothing happens and the board appears to be dead.
When booting the PetaLinux image from flash or the network ('run netboot'), after u-boot starts the kernel nothing else happens and the board appears to be dead:
## Booting kernel from Legacy Image at 50002000 ... Image Name: PetaLinux Kernel 2.6-MMU Image Type: MicroBlaze Linux Kernel Image (uncompressed) Data Size: 9481732 Bytes = 9 MB Load Address: 50000000 Entry Point: 50000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK ## Transferring control to Linux (at address 50000000), 0x50000000 ramdisk 0x00000000, FDT 0x00000000...
However, I can succesfully boot the Linux kernel image.elf directly using petalinux-jtag-boot.
I am using PetaLinux SDK v1.1.
There are many possible reasons for the 'dead board' scenario, including mis-configured hardware such as clocking or reset signals, or even a mis-configured serial port interface.
However, there is a bug in the PetaLinux SDK 1.1 release which can cause this problem, relating to the initialisation of CPU caches early in the kernel boot. Please try the workaround described below, to see if that resolves your problem.
This issue is not present in PetaLinux SDK v1.2 and later.
To fix this issue, please edit the file
around line 56, as follows:
/* Add this line */ invalidate_dcache(); enable_dcache()
This will cause the CPU data cache to be correctly invalidated before being enabled.
Then, rebuild the kernel and system image and try booting again.
If the behaviour persists even after making this change then the problem lies elsewhere, quite possibly in your EDK hardware project.
This issue has been fixed in PetaLinux SDK v1.2 and later releases.