summaryrefslogtreecommitdiff
path: root/target/riscv32/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'target/riscv32/Makefile')
-rw-r--r--target/riscv32/Makefile47
1 files changed, 34 insertions, 13 deletions
diff --git a/target/riscv32/Makefile b/target/riscv32/Makefile
index 9b268093a..37750d763 100644
--- a/target/riscv32/Makefile
+++ b/target/riscv32/Makefile
@@ -5,15 +5,35 @@ include $(ADK_TOPDIR)/rules.mk
include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
-KERNEL:=$(LINUX_DIR)/vmlinux
-OSTRIP:=-R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id
-QEMU_ARGS:=-nographic
+KERNEL:=$(LINUX_DIR)/arch/riscv/boot/Image
+QEMU_ARGS:=-M virt -m 256 -nographic -device loader,file=$(FW_DIR)/$(TARGET_KERNEL),addr=0x80200000
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0
+endif
+ifeq ($(ADK_TARGET_FS),archive)
+QEMU_ARGS+=-device virtio-blk-device,drive=vda -drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=none,id=vda,format=raw
+endif
# target helper text
+ifeq ($(ADK_TARGET_FS),archive)
+targethelp:
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "Use following command to create a QEMU Image:"
+ @echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"
+ @echo "Start qemu with following options:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/fw_jump.elf'
+endif
+endif
ifeq ($(ADK_TARGET_FS),initramfs)
targethelp:
@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
@echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-riscv32 ${QEMU_ARGS} -kernel $(FW_DIR)/fw_jump.elf -initrd ${FW_DIR}/${INITRAMFS}'
+endif
endif
ifeq ($(ADK_TARGET_FS),initramfsarchive)
targethelp:
@@ -23,23 +43,24 @@ endif
ifeq ($(ADK_TARGET_FS),initramfspiggyback)
targethelp:
@echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-riscv32 ${QEMU_ARGS} -kernel $(FW_DIR)/fw_jump.elf'
+endif
endif
kernel-strip:
- $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
kernel-install: kernel-strip
- @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
+ @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
bbl:
- @mkdir -p $(BUILD_DIR)/bbl
- @rm -rf $(BUILD_DIR)/riscv-pk
- (cd $(BUILD_DIR)/ && git clone https://github.com/riscv/riscv-pk.git)
- (cd $(BUILD_DIR)/bbl && PATH='$(HOST_PATH)' ../riscv-pk/configure \
- --host=$(GNU_TARGET_NAME) --target=$(GNU_TARGET_NAME) \
- --with-payload=$(FW_DIR)/$(TARGET_KERNEL))
- (cd $(BUILD_DIR)/bbl && PATH='$(HOST_PATH)' make)
- cp $(BUILD_DIR)/bbl/bbl $(FW_DIR)/$(TARGET_KERNEL).bbl
+ @rm -rf $(BUILD_DIR)/opensbi
+ (cd $(BUILD_DIR)/ && git clone https://github.com/riscv/opensbi.git)
+ (cd $(BUILD_DIR)/opensbi && PATH='$(HOST_PATH)' \
+ CROSS_COMPILE=$(GNU_TARGET_NAME)- \
+ PLATFORM=qemu/virt make)
+ cp $(BUILD_DIR)/opensbi/build/platform/qemu/virt/firmware/fw_jump.elf $(FW_DIR)
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),initramfs)