Makefile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # tools
  2. GRUB_DIR := grub-2.04
  3. OS_NAME := rtthread
  4. QEMU := qemu-system-i386
  5. GDB := gdb
  6. TRUNC := truncate
  7. MCOPY := mcopy
  8. # file name
  9. DISK0 := disk0.img
  10. DISK1 := disk1.img
  11. SZ_DISK0 := 64M
  12. SZ_DISK1 := 64M
  13. MKFS := mkfs.fat
  14. ROM_DIR := ../../../userapps/root
  15. RTTHREAD_ELF:= rtthread.elf
  16. # config graphic window ? (y/n)
  17. QEMU_WINDOW ?= n
  18. # config netcard ? (y/n)
  19. QEMU_NETCARD ?= y
  20. QEMU_NETCARD_NAME ?=rtl8139
  21. # netcard type: tap/user
  22. QEMU_NET_MODE ?=user
  23. # qemu args
  24. QEMU_ARGS := -m 256m \
  25. -rtc base=localtime \
  26. -boot d \
  27. -cdrom $(OS_NAME).iso
  28. ifeq ($(QEMU_WINDOW),y)
  29. QEMU_ARGS += -serial stdio
  30. else
  31. QEMU_ARGS += -nographic
  32. endif
  33. ifeq ($(QEMU_NETCARD),y)
  34. QEMU_ARGS += -net nic,model=$(QEMU_NETCARD_NAME)
  35. ifeq ($(QEMU_NET_MODE),tap)
  36. QEMU_ARGS += -net tap,ifname=tap0,script=no,downscript=no
  37. else
  38. QEMU_ARGS += -net user
  39. endif
  40. endif
  41. QEMU_ARGS +=-drive id=disk0,file=$(DISK0),format=raw,if=none \
  42. -drive id=disk1,file=$(DISK1),format=raw,if=none \
  43. -device ahci,id=ahci \
  44. -device ide-hd,drive=disk0,bus=ahci.0 \
  45. -device ide-hd,drive=disk1,bus=ahci.1
  46. all: makeiso makedisk
  47. makeiso: $(RTTHREAD_ELF)
  48. @$(MAKE) -s -C $(GRUB_DIR) KERNEL=$(RTTHREAD_ELF) OS_NAME=$(OS_NAME)
  49. makedisk:
  50. $(TRUNC) --size $(SZ_DISK0) $(DISK0)
  51. $(TRUNC) --size $(SZ_DISK1) $(DISK1)
  52. $(MKFS) -F32 $(DISK0)
  53. -$(MCOPY) -i $(DISK0) $(ROM_DIR)/bin/*.elf ::
  54. run: makedisk makeiso
  55. $(QEMU) $(QEMU_ARGS)
  56. qemudbg:
  57. $(QEMU) -S -gdb tcp::10001,ipv4 $(QEMU_ARGS)
  58. # 连接gdb server: target remote localhost:10001
  59. gdb:
  60. $(GDB) $(RTTHREAD_ELF)
  61. clean:
  62. @$(MAKE) -s -C $(GRUB_DIR) clean