Fix make qemu rasperry pi 3b emulation

This commit is contained in:
Andrey Turkin 2024-11-14 06:54:10 +03:00
parent d874500dba
commit 6205eafd4c
2 changed files with 45 additions and 30 deletions

View file

@ -10,7 +10,7 @@ PODMAN_HOME?=$(ROOT)/build/podman
## Podman command with its many arguments ## Podman command with its many arguments
PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR):Z --volume $(PODMAN_HOME):/home:Z PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR):Z --volume $(PODMAN_HOME):/home:Z
PODMAN_ENV?=--env PATH=/home/poduser/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0 PODMAN_ENV?=--env PATH=/home/poduser/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0
PODMAN_CONFIG?=--env ARCH=$(ARCH) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG) PODMAN_CONFIG?=--env ARCH=$(ARCH) --env BOARD=$(BOARD) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG)
PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --userns keep-id --user `id -u` --interactive --tty --env TERM=$(TERM) PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --userns keep-id --user `id -u` --interactive --tty --env TERM=$(TERM)
PODMAN_RUN?=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) PODMAN_RUN?=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG)

View file

@ -32,25 +32,35 @@ else ifeq ($(ARCH),aarch64)
# Default to UEFI as U-Boot doesn't set up a framebuffer for us and we don't yet support # Default to UEFI as U-Boot doesn't set up a framebuffer for us and we don't yet support
# setting up a framebuffer ourself. # setting up a framebuffer ourself.
uefi?=yes uefi?=yes
live=yes live?=yes
QEMU_ARCH=aarch64 QEMU_ARCH=aarch64
QEMU_MACHINE?=virt QEMU_MACHINE?=virt
QEMU_CPU=max QEMU_CPU=max
QEMU_SMP?=1 QEMU_SMP?=1
QEMU_MEM?=2048 QEMU_MEM?=2048
ifeq ($(BOARD),raspi3bp) ifeq ($(BOARD),raspi3bp)
FIRMWARE=$(BUILD)/raspi3bp_uboot.rom QEMU_KERNEL=$(BUILD)/raspi3bp_uboot.rom
disk?=sdcard disk?=sdcard
else ifeq ($(uefi),yes) QEMU_MACHINE:=raspi3b
FIRMWARE=/usr/share/AAVMF/AAVMF_CODE.fd QEMU_SMP:=4
QEMU_MEM:=1024
net:=usb-net
audio:=no
ifneq ($(usb),no)
QEMUFLAGS+=-usb -device usb-kbd -device usb-tablet
endif
else else
FIRMWARE=$(BUILD)/qemu_uboot.rom ifeq ($(uefi),yes)
endif FIRMWARE=/usr/share/AAVMF/AAVMF_CODE.fd
ifneq ($(gpu),no) else
QEMUFLAGS+=-device ramfb FIRMWARE=$(BUILD)/qemu_uboot.rom
endif endif
ifneq ($(usb),no) ifneq ($(gpu),no)
QEMUFLAGS+=-device qemu-xhci -device usb-kbd -device usb-tablet QEMUFLAGS+=-device ramfb
endif
ifneq ($(usb),no)
QEMUFLAGS+=-device qemu-xhci -device usb-kbd -device usb-tablet
endif
endif endif
else ifeq ($(ARCH),riscv64gc) else ifeq ($(ARCH),riscv64gc)
live=no live=no
@ -92,6 +102,10 @@ ifneq ($(FIRMWARE),)
QEMUFLAGS+=-bios $(FIRMWARE) QEMUFLAGS+=-bios $(FIRMWARE)
endif endif
ifneq ($(QEMU_KERNEL),)
QEMUFLAGS+=-kernel $(QEMU_KERNEL)
endif
ifeq ($(live),yes) ifeq ($(live),yes)
DISK=$(BUILD)/livedisk.iso DISK=$(BUILD)/livedisk.iso
else else
@ -123,26 +137,25 @@ endif
ifeq ($(net),no) ifeq ($(net),no)
QEMUFLAGS+=-net none QEMUFLAGS+=-net none
else ifeq ($(net),rtl8139)
# RTL8139
QEMUFLAGS+=-netdev user,id=net0 -device rtl8139,netdev=net0 \
-object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
else ifeq ($(net),virtio)
# virtio-net
QEMUFLAGS+=-netdev user,id=net0 -device virtio-net,netdev=net0 \
-object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
else else
ifneq ($(bridge),) ifeq ($(net),rtl8139) # RTL8139
QEMUFLAGS+=-netdev bridge,br=$(bridge),id=net0 -device e1000,netdev=net0,id=nic0 QEMUFLAGS+=-device rtl8139,netdev=net0
else ifeq ($(net),virtio) # virtio-net
QEMUFLAGS+=-device virtio-net,netdev=net0
else ifeq ($(net),usb-net)
QEMUFLAGS+=-device usb-net,netdev=net0
else else
ifeq ($(net),redir) QEMUFLAGS+=-device e1000,netdev=net0,id=nic0
# port 8080 and 8083 - webservers endif
# port 64126 - our gdbserver implementation
QEMUFLAGS+=-netdev user,id=net0,hostfwd=tcp::8080-:8080,hostfwd=tcp::8083-:8083,hostfwd=tcp::64126-:64126 -device e1000,netdev=net0,id=nic0 ifneq ($(bridge),)
else QEMUFLAGS+=-netdev bridge,br=$(bridge),id=net0
QEMUFLAGS+=-netdev user,id=net0 -device e1000,netdev=net0 \ else ifeq ($(net),redir)
-object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap # port 8080 and 8083 - webservers
endif # port 64126 - our gdbserver implementation
QEMUFLAGS+=-netdev user,id=net0,hostfwd=tcp::8080-:8080,hostfwd=tcp::8083-:8083,hostfwd=tcp::64126-:64126
else
QEMUFLAGS+=-netdev user,id=net0 -object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
endif endif
endif endif
@ -221,6 +234,8 @@ endif
qemu-deps:$(FIRMWARE) qemu-deps:$(FIRMWARE)
qemu-deps:$(QEMU_KERNEL)
qemu-deps: $(PFLASH0) qemu-deps: $(PFLASH0)
ifneq ($(PFLASH1),) ifneq ($(PFLASH1),)