No kernel output after U-Boot load
Q: I compiled (new) kernel and started it by (new) U-Boot on a (new) board and I get nooutput after U-Boot copied the kernel to RAM and jumped to it:
## Booting image at 83000000 ... Image Name: Linux-2.6.23-rc3-davinci1 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1434276 Bytes = 1.4 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK OK Starting kernel ... <nothing, no output>
A: The kernel uncompression code is probably not writing to your serial port. Edit arch/arm/mach-davinci/include/mach/uncompress.h to refer to your UART instead of UART2 (the default).
No output after uncompressing kernelQ: I get past the kernel uncompressing part but I still get nooutput after that:
## Booting image at 83000000 ... Image Name: Linux-2.6.23-rc3-davinci1 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1434276 Bytes = 1.4 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK OK Starting kernel ... Uncompressing Linux............................................................. ................................. done, booting the kernel. <nothing, no output>
A: Enable
Kernel hacking -> Kernel debugging -> Kernel low-level debugging functions
in Kernel configuration. Drop a printascii() in printk()and see where it hangs.
Enable debug output without kernel recompileQ: I want to enable kernel debugging, but I don't want (I'm not able) to recompile the kernel. Is there an other way to enable kernel low level debugging output?
A: Instead of above Kernel hacking -> Kernel debugging -> Kernel low-level debugging functionsyou can try to reconfigure serial console at kernel command line. If you use e.g. U-Boot to pass kernel parameters, you can try to replace
... console=/dev/ttyS0,115200n8 ...
with
... console=uart,io,0xe1020000,115200n8 ...
Note: Once the kernel boots fine, you must change the console definition back to the standard value, otherwise the kernel will have a conflict when reserving the memory location again for the ttyS0.
Error aQ: I enabled low-level debugging function like described above and then get
Linux............................................................. ................................. done, booting the kernel. Error a
A: "a" stands for "architecture". This means that U-Boot passes the wrong architecture machine number in processor register r1 to kernel. U-Boot and Kernel machine numbers don't match. For possible solutions see below.
Wrong machine number IQ: My (old/new) U-Boot doesn't start my (new/old) Linux kernel correctly, because the machine numberpassed by U-Boot to the kernel don't match kernels one.
A: Correct your U-Boot and/or Linux kernel to use matching machine numbers.
Wrong machine number IIQ: My (old/new) U-Boot doesn't start my (new/old) Linux kernel correctly, because the machine numbers don't match. I don't want to correct machine numbers. What else can I do?
A: Try hackishpatchto disable machine number in kernel.
Machine numbersQ: What are these machine numbers this FAQ talks about above?
A: See Machine numbersand machine number registry. Machine number is compiled into U-Boot and passed by register to Linux kernel. Linux kernel has machine number compiled in as well. Both machine numbers have to match, else kernel won't boot.