diff mbox series

[v2,2/3] ARC: Add defconfigs for ARC HS58 & HS68 processors in simulators

Message ID 20240106212059.3739123-2-abrodkin@synopsys.com
State New
Headers show
Series [v2,1/3] ARCv3: Add support of ARCv3 32-bit and 64-bit processors | expand

Commit Message

Alexey Brodkin Jan. 6, 2024, 9:20 p.m. UTC
To simplify ramp-up with Linux on 32-bit  ARC HS58 & 64-bit ARC HS68
processors we introduce 2 defconfigs with instructions on how to build
embedded Linux image for them and how to run resultoing image.

As with earlier images for simulated platforms it's possible to
use the same image with either proprietary Synopsys nSIM simulator,
QEMU or even with real FPGA-based prototyping platform called HAPS.

That not only convenient, but also helps to work on observed issues,
i.e. run the same image on so very different platforms and see if
earlier observed problem is still there. That way we may easily
verify various platforms against each other.

For example, if one image works on nSIM & FPGA but doesn't work
on QEMU, it's clear something needs to be fixed in QEMU.

But if exactly the same though unexpected behavior is observed on all
the platforms, we may say with quite some confidence, that we're dealing
with a pure software or tools issue.

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: Shahab Vahedi <shahab@synopsys.com>
Signed-off-by: Vladimir Isaev <VVIsaev@gmail.com>
Signed-off-by: Vineet Gupta <vgupta@kernel.org>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Tested-By: Waldemar Brodkorb <wbx@openadk.org>
---

Changes in v2:

 - Added Waldemar's Tested-by tag

 board/synopsys/nsim/hs5x.props          | 30 +++++++++++++++++++++++++
 board/synopsys/nsim/hs6x.props          | 30 +++++++++++++++++++++++++
 board/synopsys/nsim/post-image-arcv3.sh |  4 ++++
 board/synopsys/nsim/readme.txt          | 16 +++++++++++++
 configs/snps_arc32_defconfig            | 29 ++++++++++++++++++++++++
 configs/snps_arc64_defconfig            | 26 +++++++++++++++++++++
 6 files changed, 135 insertions(+)
 create mode 100644 board/synopsys/nsim/hs5x.props
 create mode 100644 board/synopsys/nsim/hs6x.props
 create mode 100755 board/synopsys/nsim/post-image-arcv3.sh
 create mode 100644 configs/snps_arc32_defconfig
 create mode 100644 configs/snps_arc64_defconfig
diff mbox series

Patch

diff --git a/board/synopsys/nsim/hs5x.props b/board/synopsys/nsim/hs5x.props
new file mode 100644
index 0000000000..1d8974650e
--- /dev/null
+++ b/board/synopsys/nsim/hs5x.props
@@ -0,0 +1,30 @@ 
+nsim_isa_family=av3hs
+nsim_isa_dc_hw_prefetch=1
+nsim_isa_dual_issue_option=1
+nsim_isa_atomic_option=2
+nsim_isa_m128_option=0
+nsim_isa_ll64_option=1
+nsim_isa_mpy_option=9
+nsim_isa_div_rem_option=2
+nsim_isa_enable_timer_0=1
+nsim_isa_enable_timer_1=1
+nsim_isa_rtc_option=1
+icache=16384,64,4
+dcache=16384,64,2
+mmu_version=16
+mmu_pagesize=4096
+mmu_address_space=32
+nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24
+nsim_isa_number_of_interrupts=32
+nsim_isa_number_of_external_interrupts=32
+nsim_isa_has_fp=1
+nsim_isa_fp_dds_option=1
+nsim_isa_fp_div_option=1
+nsim_isa_fp_dp_option=1
+nsim_isa_fp_hp_option=1
+nsim_isa_fp_vec_option=1
+nsim_isa_fp_wide_option=1
+nsim_isa_mpy64=1
+nsim_isa_div64_option=1
+nsim_isa_dsp_option=3
+nsim_isa_dsp_wide_option=1
diff --git a/board/synopsys/nsim/hs6x.props b/board/synopsys/nsim/hs6x.props
new file mode 100644
index 0000000000..e26cec0a64
--- /dev/null
+++ b/board/synopsys/nsim/hs6x.props
@@ -0,0 +1,30 @@ 
+nsim_fast=0
+nsim_isa_dual_issue_option=1
+nsim_isa_has_hw_pf=1
+nsim_isa_m128_option=1
+nsim_isa_has_hw_pf=1
+nsim_isa_vec64=1
+nsim_isa_family=arc64
+nsim_isa_enable_timer_0=1
+nsim_isa_enable_timer_1=1
+nsim_isa_rtc_option=1
+nsim_isa_addr_size=64
+nsim_isa_pc_size=64
+icache=16384,64,4,o
+dcache=16384,64,4,o
+mmu_version=16
+mmu_pagesize=4096
+mmu_address_space=48
+nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24
+nsim_isa_mpy_option=9
+nsim_isa_mpy64=1
+nsim_isa_div64_option=1
+nsim_isa_div_rem_option=2
+nsim_isa_atomic_option=2
+nsim_isa_has_fp=1
+nsim_isa_fp_dds_option=1
+nsim_isa_fp_div_option=1
+nsim_isa_fp_dp_option=1
+nsim_isa_fp_hp_option=1
+nsim_isa_fp_vec_option=1
+nsim_isa_fp_wide_option=1
diff --git a/board/synopsys/nsim/post-image-arcv3.sh b/board/synopsys/nsim/post-image-arcv3.sh
new file mode 100755
index 0000000000..dd5a634661
--- /dev/null
+++ b/board/synopsys/nsim/post-image-arcv3.sh
@@ -0,0 +1,4 @@ 
+#!/bin/sh
+
+# Install vmlinux with debug symbols
+install -m 0644 ${2}/vmlinux ${1}/
diff --git a/board/synopsys/nsim/readme.txt b/board/synopsys/nsim/readme.txt
index cc89cf87ac..e43a70038f 100644
--- a/board/synopsys/nsim/readme.txt
+++ b/board/synopsys/nsim/readme.txt
@@ -41,3 +41,19 @@  $ nsimdrv \
 	-prop=nsim_isa_pct_counters=8 \
 	-prop=nsim_isa_pct_size=48 \
 	output/images/vmlinux
+
+Build & run image on ARC HS58:
+ * Build:       make snps_arc32_defconfig && make
+ * Run in nSIM: nsimdrv -propsfile=board/synopsys/nsim/hs5x.props output/images/loader
+ * Run in QEMU: qemu-system-arc -M virt,ram_start=0 -cpu hs5x -m 2G -display none \
+                        -nographic -monitor none -kernel output/images/loader \
+                        -netdev user,id=net0 -device virtio-net-device,netdev=net0 \
+                        -device virtio-rng-pci
+
+Build & run image on ARC HS58:
+ * Build:       make snps_arc64_defconfig && make
+ * Run in nSIM: nsimdrv -propsfile=board/synopsys/nsim/hs6x.props output/images/loader
+ * Run in QEMU: qemu-system-arc64 -M virt,ram_start=0 -cpu hs6x -m 2G -display none \
+                        -nographic -monitor none -kernel output/images/loader \
+                        -netdev user,id=net0 -device virtio-net-device,netdev=net0 \
+                        -device virtio-rng-pci
diff --git a/configs/snps_arc32_defconfig b/configs/snps_arc32_defconfig
new file mode 100644
index 0000000000..e94b0fdfeb
--- /dev/null
+++ b/configs/snps_arc32_defconfig
@@ -0,0 +1,29 @@ 
+#Architecture
+BR2_arcle=y
+BR2_arc32=y
+
+# System
+BR2_SYSTEM_DHCP="eth0"
+BR2_TARGET_GENERIC_GETTY=y
+
+# Filesystem
+BR2_TARGET_ROOTFS_INITRAMFS=y
+
+# Image
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/synopsys/nsim/post-image-arcv3.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="$(LINUX_DIR)"
+
+# Toolchain
+BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y
+
+# Linux headers same as kernel
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/linux.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="f6e9dab9d1dc1e8fa2acb75504bf5ff86b885b8e"
+BR2_LINUX_KERNEL_DEFCONFIG="haps_hs5x"
+BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
+BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="loader"
diff --git a/configs/snps_arc64_defconfig b/configs/snps_arc64_defconfig
new file mode 100644
index 0000000000..7275b233eb
--- /dev/null
+++ b/configs/snps_arc64_defconfig
@@ -0,0 +1,26 @@ 
+#Architecture
+BR2_arcle=y
+BR2_arc64=y
+
+# System
+BR2_SYSTEM_DHCP="eth0"
+BR2_TARGET_GENERIC_GETTY=y
+
+# Filesystem
+BR2_TARGET_ROOTFS_INITRAMFS=y
+
+# Image
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/synopsys/nsim/post-image-arcv3.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="$(LINUX_DIR)"
+
+# Linux headers same as kernel
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_16=y
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/foss-for-synopsys-dwc-arc-processors/linux.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="f6e9dab9d1dc1e8fa2acb75504bf5ff86b885b8e"
+BR2_LINUX_KERNEL_DEFCONFIG="haps_arc64"
+BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
+BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="loader"