Prechádzať zdrojové kódy

Run raw binary rather than ELF.

QEMU doesn't seem to pass the FDT if the kernel is an ELF.
Andrew Walbran 2 rokov pred
rodič
commit
49d6dc00e9
2 zmenil súbory, kde vykonal 7 pridanie a 3 odobranie
  1. 6 2
      examples/aarch64/Makefile
  2. 1 1
      examples/aarch64/image.ld

+ 6 - 2
examples/aarch64/Makefile

@@ -1,6 +1,7 @@
 target := aarch64-unknown-none
 mode := release
 kernel := target/$(target)/$(mode)/aarch64
+kernel_bin := target/$(target)/$(mode)/aarch64.bin
 
 sysroot := $(shell rustc --print sysroot)
 objdump := $(shell find $(sysroot) -name llvm-objdump) --arch-name=aarch64
@@ -20,6 +21,9 @@ env:
 kernel:
 	cargo build $(BUILD_ARGS)
 
+$(kernel_bin): kernel
+	aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_bin)
+
 asm: kernel
 	$(objdump) -d $(kernel) | less
 
@@ -32,11 +36,11 @@ header: kernel
 clean:
 	cargo clean
 
-qemu: kernel
+qemu: $(kernel_bin)
 	qemu-system-aarch64 \
 		-machine virt \
 		-cpu max \
 		-serial mon:stdio \
-		-kernel $(kernel)
+		-kernel $(kernel_bin)
 
 run: qemu

+ 1 - 1
examples/aarch64/image.ld

@@ -6,7 +6,7 @@ ENTRY(entry)
 
 MEMORY
 {
-	image : ORIGIN = 0x40000000, LENGTH = 2M
+	image : ORIGIN = 0x40080000, LENGTH = 2M
 }
 
 SECTIONS