Arm Linux ":Start_Kernel Is Not Calling After Decompressing UImage"

ARM LINUX :start_kernel is not calling after decompressing uImage

The boot of Linux on embedded is done in 3 steps:

  1. Bootloader

    • Low-level hardware initialization
    • Loads the Linux kernel in RAM and passes control to Linux
  2. Bootstrap loader (inside the Linux kernel image):

    • Decompress and relocate the kernel
    • Pass control to it
  3. Linux kernel:

    • Boot the system by running start_kernel() which, in the end, spawns the initprocess

Your output is between step 2 and step 3 (i.e., kernel decompressed).

You've probably not set all the things to have a working console:

  1. Compile the target Linux kernel enabling through make menuconfig the serial console in

    Device Drivers -> Character Devices -> Serial Drivers
  2. Enable the specific driver for serial communications in the kernel configuration (i.e., through make menuconfig)

  3. Set Linux console on the right device by setting option console=device,baudrate in the bootargs variable of U-Boot.

QEMU Showing Black Screen After Creating Linux uImage for ARM

Try using the below command.

qemu-system-arm -M versatilepb -m 256M -nographic -kernel
arch/arm/boot/uImage -append "console=ttyS0"

ARM board booting issue

I assume that you are connected with a serial console to the device, as you see the U-Boot output. Have you configured your kernel to use the serial console? If not, you probably will not see anything.

Show us the kernel command line, plus what did you do (to/in the kernel)? Are you using a plain vanilla kernel?

Assuming you have a kernel for your device that supports your boards hardware, you can for example add something like the following to the kernel command line: console=ttyS0,115200.

That way, the kernel will use that console for output. But for that to work the kernel has to be built for your device (e.g., has to know where and that there is a serial device).

That being said, it can be that the kernel is just booting up, but you don't see anything, because the kernel does not know the serial console you are using is existing and thus is not displaying anything.



Related Topics



Leave a reply



Submit