config: add Synopsys nSIM and nSIM OSCI platforms
PATCH 1/1 config: add Synopsys nSIM and nSIM OSCI platforms
nSIM and nSIM OSCI are 2 simulation platforms from Synopsys that could emulate both ARCompact and ARCv2 CPUs.
Note for ARCv2 we provide both UP (uni-processor) and SMP (multi-processor) configs.
So-called "standalone" nSIM and it's free flavor Free nSIM have only 1 peripheral - serial port. Still they are (especially free version) very useful for regression testing and debugging of Linux kernel.
nSIM OSCI emulates more functional boards having not only serial port but as well:
* LCD screen
* PS/2 keyboard
* Ethernet controller (which communicates with the host)
--- configs/snps_nsim_700_defconfig | 18 ++++++++++++++++++ configs/snps_nsim_hs38_defconfig | 19 +++++++++++++++++++ configs/snps_nsim_hs38_smp_defconfig | 19 +++++++++++++++++++ configs/snps_nsimosci_700_defconfig | 19 +++++++++++++++++++ configs/snps_nsimosci_hs38_defconfig | 20 ++++++++++++++++++++ configs/snps_nsimosci_hs38_smp_defconfig | 20 ++++++++++++++++++++ 6 files changed, 115 insertions(+) create mode 100644 configs/snps_nsim_700_defconfig create mode 100644 configs/snps_nsim_hs38_defconfig create mode 100644 configs/snps_nsim_hs38_smp_defconfig create mode 100644 configs/snps_nsimosci_700_defconfig create mode 100644 configs/snps_nsimosci_hs38_defconfig create mode 100644 configs/snps_nsimosci_hs38_smp_defconfig
configs/snps_nsim_700_defconfig new file +18 -0
@@ -0,0 +1,18 @@ +# Architecture +BR2_arcle=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nsim" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC nSIM" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_DEFCONFIG="nsim_700" +BR2_LINUX_KERNEL_VMLINUX=y +
configs/snps_nsim_hs38_defconfig new file +19 -0
@@ -0,0 +1,19 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nsim" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC nSIM" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_DEFCONFIG="nsim_hs" +BR2_LINUX_KERNEL_VMLINUX=y +
configs/snps_nsim_hs38_smp_defconfig new file +19 -0
@@ -0,0 +1,19 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nsim" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC nSIM" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_DEFCONFIG="nsim_hs_smp" +BR2_LINUX_KERNEL_VMLINUX=y +
configs/snps_nsimosci_700_defconfig new file +19 -0
@@ -0,0 +1,19 @@ +# Architecture +BR2_arcle=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nsimosci" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC nSIM OSCI" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" + +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_DEFCONFIG="nsimosci" +BR2_LINUX_KERNEL_VMLINUX=y +
configs/snps_nsimosci_hs38_defconfig new file +20 -0
@@ -0,0 +1,20 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nsimosci" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC nSIM OSCI" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" + +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_DEFCONFIG="nsimosci_hs" +BR2_LINUX_KERNEL_VMLINUX=y +
configs/snps_nsimosci_hs38_smp_defconfig new file +20 -0
@@ -0,0 +1,20 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="nsimosci" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC nSIM OSCI" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" + +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_DEFCONFIG="nsimosci_hs_smp" +BR2_LINUX_KERNEL_VMLINUX=y +
Signature · 1 line
2.5.5
PATCH 1/1 config: add Synopsys nSIM and nSIM OSCI platforms
Hello,
Quoted 11 lines · Vlad Zakharov
nSIM and nSIM OSCI are 2 simulation platforms from Synopsys that could emulate both ARCompact and ARCv2 CPUs.
Note for ARCv2 we provide both UP (uni-processor) and SMP (multi-processor) configs.
So-called "standalone" nSIM and it's free flavor Free nSIM have only 1 peripheral - serial port. Still they are (especially free version) very useful for regression testing and debugging of Linux kernel.
Quoted 7 lines
nSIM OSCI emulates more functional boards having not only serial port but as well:
* LCD screen
* PS/2 keyboard
* Ethernet controller (which communicates with the host)Signed-off-by Vlad Zakharov <[email protected]>
Thanks for this contribution. It would be useful to add a readme.txt file that explains how to start the result of the Buildroot build with those simulation platforms, especially the one that is freely available.
Quoted 7 lines
--- configs/snps_nsim_700_defconfig | 18 ++++++++++++++++++ configs/snps_nsim_hs38_defconfig | 19 +++++++++++++++++++ configs/snps_nsim_hs38_smp_defconfig | 19 +++++++++++++++++++ configs/snps_nsimosci_700_defconfig | 19 +++++++++++++++++++ configs/snps_nsimosci_hs38_defconfig | 20 ++++++++++++++++++++ configs/snps_nsimosci_hs38_smp_defconfig | 20 ++++++++++++++++++++
Do we really need all those combinations? I do understand the 700 vs. HS38 difference, but couldn't the rest be handled with just different DTBs ? It seems annoying to have both one kernel defconfig for each of those, and then one Buildroot configuration for each of those as well.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 config: add Synopsys nSIM and nSIM OSCI platforms
Hi Thomas,
Quoted 36 lines · Thomas Petazzoni
Hello,
Quoted 12 lines · Vlad Zakharov
nSIM and nSIM OSCI are 2 simulation platforms from Synopsys that could emulate both ARCompact and ARCv2 CPUs.
Note for ARCv2 we provide both UP (uni-processor) and SMP (multi-processor) configs.
So-called "standalone" nSIM and it's free flavor Free nSIM have only 1 peripheral - serial port. Still they are (especially free version) very useful for regression testing and debugging of Linux kernel.
Quoted 7 lines
nSIM OSCI emulates more functional boards having not only serial port but as well:
?* LCD screen
? * PS/2 keyboard
???* Ethernet controller (which communicates with the host)Signed-off-by Vlad Zakharov <[email protected]>Thanks for this contribution. It would be useful to add a readme.txt file that explains how to start the result of the Buildroot build with those simulation platforms, especially the one that is freely available.
Quoted 8 lines
---
?configs/snps_nsim_700_defconfig??????????| 18 ++++++++++++++++++ ?configs/snps_nsim_hs38_defconfig?????????| 19 +++++++++++++++++++ ?configs/snps_nsim_hs38_smp_defconfig?????| 19 +++++++++++++++++++ ?configs/snps_nsimosci_700_defconfig??????| 19 +++++++++++++++++++ ?configs/snps_nsimosci_hs38_defconfig?????| 20 ++++++++++++++++++++ ?configs/snps_nsimosci_hs38_smp_defconfig | 20 ++++++++++++++++++++
Quoted 4 lines
Do we really need all those combinations? I do understand the 700 vs. HS38 difference, but couldn't the rest be handled with just different DTBs ? It seems annoying to have both one kernel defconfig for each of those, and then one Buildroot configuration for each of those as well.
Unfortunately it's not only different .dtb.
On ARC for SMP we need to modify kernel configuration as well.
I hope some day we'll be able to run the same one kernel binary on any flavor of ARCv2 CPU (be it UP or SMP) but now we cannot.
We still have way too many differences between UP and SMP. If you just git grep?CONFIG_SMP in arch/arc you'l see some of those.
In general I agree so many configs in BR look weird and what's worse requires much more work on maintenance. So we may try to select more useful configs but for me it's hard to make this decision because from one point of view in case of ARCv2 we're more interested in SMP configs (that's one of the main differences compared to older ARCompact CPUs) but in simulation SMP setups work significantly slower and IMHO UP versions are much more usable if SMP itself is not a requirement.
-Alexey
PATCH 1/1 config: add Synopsys nSIM and nSIM OSCI platforms
Hello,
Quoted 11 lines · Alexey Brodkin
Quoted 11 lines
Quoted 7 lines
nSIM OSCI emulates more functional boards having not only serial port but as well:
?* LCD screen
? * PS/2 keyboard
???* Ethernet controller (which communicates with the host)Signed-off-by Vlad Zakharov <[email protected]>Thanks for this contribution. It would be useful to add a readme.txt file that explains how to start the result of the Buildroot build with those simulation platforms, especially the one that is freely available.
Would it be possible to resubmit with a readme.txt file (not one per configuration, but a global one that covers all those configurations).
Quoted 12 lines
Quoted 11 lines
Quoted 6 lines
?configs/snps_nsim_700_defconfig??????????| 18 ++++++++++++++++++ ?configs/snps_nsim_hs38_defconfig?????????| 19 +++++++++++++++++++ ?configs/snps_nsim_hs38_smp_defconfig?????| 19 +++++++++++++++++++ ?configs/snps_nsimosci_700_defconfig??????| 19 +++++++++++++++++++ ?configs/snps_nsimosci_hs38_defconfig?????| 20 ++++++++++++++++++++ ?configs/snps_nsimosci_hs38_smp_defconfig | 20 ++++++++++++++++++++Do we really need all those combinations? I do understand the 700 vs. HS38 difference, but couldn't the rest be handled with just different DTBs ? It seems annoying to have both one kernel defconfig for each of those, and then one Buildroot configuration for each of those as well.
Quoted 5 lines
Unfortunately it's not only different .dtb.
On ARC for SMP we need to modify kernel configuration as well.I hope some day we'll be able to run the same one kernel binary on any flavor of ARCv2 CPU (be it UP or SMP) but now we cannot.
OK.
Then is there a way to where the nsim and its corresponding nsimosci variant? What is the difference between the two?
Looking at the kernel defconfigs, it seems that the only important difference is the built-in DTB:
-CONFIG_ARC_BUILTIN_DTB_NAME="nsim_hs"
+CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci_hs"
Can't you use an external DTB instead ?
Quoted 6 lines
In general I agree so many configs in BR look weird and what's worse requires much more work on maintenance. So we may try to select more useful configs but for me it's hard to make this decision because from one point of view in case of ARCv2 we're more interested in SMP configs (that's one of the main differences compared to older ARCompact CPUs) but in simulation SMP setups work significantly slower and IMHO UP versions are much more usable if SMP itself is not a requirement.
Is nSIM even available for free ? Can I download it and test those defconfigs ?
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH 1/1 config: add Synopsys nSIM and nSIM OSCI platforms
Hi Thomas,
Quoted 54 lines · Thomas Petazzoni
Hello,
Quoted 9 lines · Alexey Brodkin
Quoted 9 lines
Quoted 9 lines
nSIM OSCI emulates more functional boards having not only serial port but as well:
?* LCD screen
? * PS/2 keyboard
???* Ethernet controller (which communicates with the host)Quoted 5 lines
Quoted 5 lines
Quoted 1 line
Signed-off-by Vlad Zakharov <[email protected]>??Thanks for this contribution. It would be useful to add a readme.txt file that explains how to start the result of the Buildroot build with those simulation platforms, especially the one that is freely available.
Would it be possible to resubmit with a readme.txt file (not one per configuration, but a global one that covers all those configurations).
Quoted 15 lines
Quoted 10 lines
Quoted 9 lines
?configs/snps_nsim_700_defconfig??????????| 18 ++++++++++++++++++ ?configs/snps_nsim_hs38_defconfig?????????| 19 +++++++++++++++++++ ?configs/snps_nsim_hs38_smp_defconfig?????| 19 +++++++++++++++++++ ?configs/snps_nsimosci_700_defconfig??????| 19 +++++++++++++++++++ ?configs/snps_nsimosci_hs38_defconfig?????| 20 ++++++++++++++++++++ ?configs/snps_nsimosci_hs38_smp_defconfig | 20 ++++++++++++++++++++??Quoted 4 lines
Do we really need all those combinations? I do understand the 700 vs. HS38 difference, but couldn't the rest be handled with just different DTBs ? It seems annoying to have both one kernel defconfig for each of those, and then one Buildroot configuration for each of those as well.??
Quoted 5 lines
Unfortunately it's not only different .dtb.
On ARC for SMP we need to modify kernel configuration as well.I hope some day we'll be able to run the same one kernel binary on any flavor of ARCv2 CPU (be it UP or SMP) but now we cannot.
OK.
Then is there a way to where the nsim and its corresponding nsimosci variant? What is the difference between the two?
Looking at the kernel defconfigs, it seems that the only important difference is the built-in DTB:
(quoted diff) +1
-1-CONFIG_ARC_BUILTIN_DTB_NAME="nsim_hs" +CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci_hs"
Quoted 1 line
Can't you use an external DTB instead ?
Hm... that's what happens when new pair of eyes starts to look at things :)
Right I think we may unify those configs, for that we'll need to merge options for drivers and then the only real difference will be DTB.
A small problem here is both simulators as of now are supposed to load just one Elf with everything built-in. And so we build 2 different binaries which at high-level differ in built-in .dtb. Indeed it's much more elegant to keep only 1 defconfig for all different flavors of boards like what IMX has now with
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/configs/imx_v6_v7_defconfig
But I think it worth a separate discussion on linux-snps mailing list.
As for this discussion I'd prefer to keep using in-tree kernel defconfigs compared to option to have combined defconfig in BR. That IMHO simplifies maintenance, i.e. if defconfigs get changed in upstream we won't miss thanges on the next kernel version bump in BR.
Quoted 9 lines
Quoted 6 lines
In general I agree so many configs in BR look weird and what's worse requires much more work on maintenance. So we may try to select more useful configs but for me it's hard to make this decision because from one point of view in case of ARCv2 we're more interested in SMP configs (that's one of the main differences compared to older ARCompact CPUs) but in simulation SMP setups work significantly slower and IMHO UP versions are much more usable if SMP itself is not a requirement.
Is nSIM even available for free ? Can I download it and test those defconfigs ?
Sure you may download a copy of Free nSIM here after a simple registration:
https://www.synopsys.com/cgi-bin/dwarcnsim/req1.cgi
Since that's a completely new tool for you I may expect you face some issues in that case please don't hesitate to contact me.
Another important note: as of today Free version of nSIM only supports UP (single-core) configurations, which means you won't be able to try SMP configs in run-time.
-Alexey