Przeglądaj źródła

add support for qemu-arm, fix usage of xz compressed initramfs, which is now the default here

Waldemar Brodkorb 13 lat temu
rodzic
commit
64d1148c48

+ 1 - 1
mk/image.mk

@@ -95,7 +95,7 @@ ${BIN_DIR}/${INITRAMFS}: ${TARGET_DIR}
 	cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | \
 		sed "s#\(.*\)#:0:0::::::\1#" | sort | \
 	    ${TOOLS_DIR}/cpio -o -C512 -Hnewc -P | \
-		lzma -9 >$@ 2>/dev/null
+		xz -C crc32 >$@ 2>/dev/null
 
 ${BUILD_DIR}/${INITRAMFS_PIGGYBACK}: ${TARGET_DIR}
 	${SED} 's/.*CONFIG_(BLK_DEV_INITRD|INITRAMFS_SOURCE).*//' \

+ 23 - 3
target/arm/Makefile

@@ -7,6 +7,7 @@ include $(TOPDIR)/mk/modules.mk
 include $(TOPDIR)/mk/kernel-build.mk
 include $(TOPDIR)/mk/image.mk
 
+ZKERNEL:=$(LINUX_DIR)/arch/arm/boot/zImage
 KERNEL:=$(LINUX_DIR)/vmlinux
 LOADADDR:=0x20008000
 
@@ -38,25 +39,44 @@ imageinstall: kernel-install $(BIN_DIR)/$(ROOTFSTARBALL)
 endif
 ifeq ($(ADK_TARGET_FS),archive)
 imageinstall: $(BIN_DIR)/$(ROOTFSTARBALL)
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+	@cp $(ZKERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+else
 	@cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+endif
 	@echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
 	@echo "The RootFS tarball is: $(BIN_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
 	@echo "Use following command to create a QEMU Image:"
 	@echo "sudo ./scripts/create-image.sh -f $(ADK_TARGET_ROOTFS) qemu-${CPU_ARCH}.img $(BIN_DIR)/$(ROOTFSTARBALL)"
 	@echo "Start qemu with following options:"
-	@echo 'qemu-system-arm -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -hda qemu-${CPU_ARCH}.img -append "root=/dev/hda1"'
+	@echo 'qemu-system-arm -M spitz -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -hda qemu-${CPU_ARCH}.img -append "root=/dev/hda1"'
+endif
 endif
 ifeq ($(ADK_TARGET_FS),initramfs)
 imageinstall: $(BIN_DIR)/$(INITRAMFS)
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+	@cp $(ZKERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+else
 	@cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+endif
 	@echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
 	@echo 'The initramfs image is: ${BIN_DIR}/${INITRAMFS}'
-	@echo 'qemu-system-arm -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -initrd ${BIN_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+	@echo "Start qemu with following command line:"
+	@echo 'qemu-system-arm -M spitz -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -initrd ${BIN_DIR}/${INITRAMFS}'
+endif
 endif
 ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
 imageinstall: ${BUILD_DIR}/${INITRAMFS_PIGGYBACK} createinitramfs
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+	@cp $(ZKERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+else
 	@cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+endif
 	@echo 'The kernel+initramfs file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
 	@echo "Start qemu with following command line:"
-	@echo 'qemu-system-arm -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL)'
+	@echo 'qemu-system-arm -M spitz -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL)'
+endif
 endif

+ 15 - 0
target/arm/sys-available/qemu-arm

@@ -0,0 +1,15 @@
+config ADK_TARGET_SYSTEM_QEMU_ARM
+	bool "Qemu Emulator"
+	select ADK_arm
+	select ADK_qemu_arm
+	select ADK_little
+	select ADK_EABI
+	select ADK_KERNEL_ARCH_PXA
+	select ADK_KERNEL_PXA_SHARPSL
+	select ADK_KERNEL_MACH_SPITZ
+	select ADK_KERNEL_SPI_PXA2XX
+	select ADK_TARGET_NO_FPU
+	select ADK_HARDWARE_QEMU
+	help
+	 Support for Qemu Emulator (arm).
+	 Optimized for PXA270 Spitz.

+ 2 - 0
target/config/Config.in

@@ -348,6 +348,7 @@ config ADK_TARGET_CMDLINE
 	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_IBM_X40
 	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_INTEL_ATOM
 	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_X86
+	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_ARM
 	default "console=tty0" if ADK_TARGET_SYSTEM_QEMU_SH
 	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D13
 	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D2
@@ -462,6 +463,7 @@ config ADK_TARGET_ROOTFS_INITRAMFS
 		ADK_LINUX_X86_64 || \
 		ADK_LINUX_NATIVE
 	select ADK_KERNEL_BLK_DEV_INITRD
+	select ADK_KERNEL_RD_XZ
 	help
 	  create an read-only initramfs system.
 

+ 1 - 0
target/linux/Config.in

@@ -20,6 +20,7 @@ source target/linux/config/Config.in.misc
 source target/linux/config/Config.in.mips
 source target/linux/config/Config.in.lib
 source target/linux/config/Config.in.pm
+source target/linux/config/Config.in.serial
 source target/linux/config/Config.in.spi
 source target/linux/config/Config.in.kvm
 source target/linux/config/Config.in.debug

+ 8 - 0
target/linux/config/Config.in.serial

@@ -0,0 +1,8 @@
+config ADK_KERNEL_SERIAL_PXA
+	boolean
+	default y if ADK_TARGET_SYSTEM_QEMU_ARM
+
+config ADK_KERNEL_SERIAL_PXA_CONSOLE
+	boolean
+	default y if ADK_TARGET_SYSTEM_QEMU_ARM
+

+ 4 - 0
target/linux/config/Config.in.spi

@@ -12,3 +12,7 @@ config ADK_KERNEL_SPI_RB4XX
 config ADK_KERNEL_SPI_RB4XX_CPLD
 	select ADK_KERNEL_SPI
 	boolean
+
+config ADK_KERNEL_SPI_PXA2XX
+	select ADK_KERNEL_SPI
+	boolean

+ 9 - 0
target/linux/config/Config.in.systems

@@ -35,6 +35,15 @@ config ADK_KERNEL_LEMOTE_MACH2F
 	boolean
 
 # arm systems
+config ADK_KERNEL_ARCH_PXA
+	boolean
+
+config ADK_KERNEL_PXA_SHARPSL
+	boolean
+
+config ADK_KERNEL_MACH_SPITZ
+	boolean
+
 config ADK_KERNEL_ARCH_AT91
 	boolean