Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Just black screen after running Qemu

I have just installed QEMU and compiled linux kernel with ARM support but when I run below command

qemu-system-arm -M versatilepb -m 128M -kernel /home/arit/QEMU/linux-3.8.4/arch/arm/boot/uImage -append "console=tty1"

I could only see Black screen ,I also tried what is being suggested in below thread

Qemu shows a black screen

But still it didn't work.

Following is the output of make command which I run to compile kernel Source

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -s

 Image Name:   Linux-3.8.4
 Created:      Tue Dec 24 12:49:07 2013
 Image Type:   ARM Linux Kernel Image (uncompressed)
 Data Size:    4406472 Bytes = 4303.20 kB = 4.20 MB
 Load Address: fffffff2
 Entry Point:  fffffff2

Are Load and Entry points OK here?

like image 940
Amit Singh Tomar Avatar asked Jan 11 '23 15:01

Amit Singh Tomar


1 Answers

As you asking Is this config file is responsible for setting up entry and load address of uImage

Yes make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

this command is responsible for loading entry point. How ? --->In kernel source code open vi scripts/mkuboot.sh

here check MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")

the script will take care to call scripts/Makefile.lib.

here in code

MKIMAGE := $(srctree)/scripts/mkuboot.sh

  UIMAGE_ARCH ?= $(SRCARCH)
  UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
  UIMAGE_OPTS-y ?=
  UIMAGE_TYPE ?= kernel
  UIMAGE_LOADADDR ?= arch_must_set_this
  UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
  UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
  UIMAGE_IN ?= $<
  UIMAGE_OUT ?= $@

-->

if the user doesnt mention LOADADDR in command line the address is took from below
UIMAGE_LOADADDR ?= arch_must_set_this

ifneq ($(LOADADDR),)
UIMAGE_LOADADDR=$(LOADADDR)
else
   ifeq ($(CONFIG_ZBOOT_ROM),y)
   UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
  else
UIMAGE_LOADADDR=$(ZRELADDR)
endif
endif

UIMAGE_LOADADDR=$(ZRELADDR) --> this variable responsible for loading entry address

the valve $(ZRELADDR) is took from board specific for in our case versatile so

arch/arm/mach-versatile/Makefile.boot

here

   zreladdr-y   += 0x00008000
params_phys-y   := 0x00000100
initrd_phys-y   := 0x00800000

This is how in kernel scripts are automated when make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

executed.

like image 117
vinay hunachyal Avatar answered Jan 16 '23 18:01

vinay hunachyal