From a95ed61808c203b10faaff7c96383c42015a2d1c Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Tue, 18 Aug 2026 10:39:17 +0200 Subject: [PATCH] boards/qemu-intel64: add python configuration Add a defconfig that runs CPython on qemu-intel64 (flat build) and place the .PyRuntime section (created by the apps CPython port) in .data so it is covered by the kernel physical mapping. Signed-off-by: raiden00pl Assisted-by: Claude Code --- .../intel64/boards/qemu-intel64/index.rst | 17 +++ .../qemu-intel64/configs/python/defconfig | 108 ++++++++++++++++++ .../x86_64/qemu/qemu-intel64/scripts/qemu.ld | 1 + 3 files changed, 126 insertions(+) create mode 100644 boards/x86_64/qemu/qemu-intel64/configs/python/defconfig diff --git a/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst b/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst index bb82dec0645..25f729e1d47 100644 --- a/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst +++ b/Documentation/platforms/x86_64/intel64/boards/qemu-intel64/index.rst @@ -169,6 +169,23 @@ ostest The "standard" NuttX examples/ostest configuration with the default console on legacy UART0 port (base=0x3f8) +python +------ + +This configuration runs the CPython interpreter (``apps/interpreters/python``) +with SMP and networking (e1000) enabled. It works only with the Make-based +build system. + +Command to run the image with user-mode networking:: + + qemu-system-x86_64 -m 2G -smp 4 -cpu host -enable-kvm \ + -kernel nuttx -nographic -serial mon:stdio \ + -device e1000,netdev=u0 -netdev user,id=u0 + +Then start the interpreter from NSH:: + + nsh> python + jumbo ----- diff --git a/boards/x86_64/qemu/qemu-intel64/configs/python/defconfig b/boards/x86_64/qemu/qemu-intel64/configs/python/defconfig new file mode 100644 index 00000000000..a054dc0ff89 --- /dev/null +++ b/boards/x86_64/qemu/qemu-intel64/configs/python/defconfig @@ -0,0 +1,108 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_X86_64_ACPI_DUMP is not set +CONFIG_16550_ADDRWIDTH=16 +CONFIG_16550_UART0=y +CONFIG_16550_UART0_BASE=0x3f8 +CONFIG_16550_UART0_CLOCK=1843200 +CONFIG_16550_UART0_IRQ=36 +CONFIG_16550_UART0_SERIAL_CONSOLE=y +CONFIG_16550_UART=y +CONFIG_ARCH="x86_64" +CONFIG_ARCH_BOARD="qemu-intel64" +CONFIG_ARCH_BOARD_INTEL64_QEMU=y +CONFIG_ARCH_CHIP="qemu" +CONFIG_ARCH_CHIP_INTEL64_QEMU=y +CONFIG_ARCH_INTEL64_CORE_FREQ_KHZ=2600000 +CONFIG_ARCH_INTERRUPTSTACK=8192 +CONFIG_ARCH_SETJMP_H=y +CONFIG_ARCH_SIZET_LONG=y +CONFIG_ARCH_X86_64=y +CONFIG_BOARDCTL_ROMDISK=y +CONFIG_BOARD_LOOPSPERMSEC=999 +CONFIG_BOOT_RUNFROMEXTSRAM=y +CONFIG_BUILTIN=y +CONFIG_CONSOLE_SYSLOG=y +CONFIG_DEBUG_ASSERTIONS=y +CONFIG_DEBUG_ASSERTIONS_EXPRESSION=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_TASK_STACKSIZE=4194304 +CONFIG_DEV_SIMPLE_ADDRENV=y +CONFIG_DEV_URANDOM=y +CONFIG_EVENT_FD=y +CONFIG_EXPERIMENTAL=y +CONFIG_FS_LARGEFILE=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_FS_TMPFS=y +CONFIG_IDLETHREAD_STACKSIZE=4194304 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INTERPRETERS_CPYTHON=y +CONFIG_INTERPRETERS_CPYTHON_STACKSIZE=1048576 +CONFIG_IOB_ALIGNMENT=64 +CONFIG_IOB_BUFSIZE=2048 +CONFIG_IOB_NBUFFERS=1024 +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIBC_LOCALE=y +CONFIG_LIBC_LOCALE_GETTEXT=y +CONFIG_LIBC_STRERROR=y +CONFIG_LIBM_NEWLIB=y +CONFIG_LIB_ZLIB=y +CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDB_DNSSERVER_NOADDR=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETINIT_DNS=y +CONFIG_NETINIT_DNSIPADDR=0x08080808 +CONFIG_NETINIT_DRIPADDR=0x0a000202 +CONFIG_NETINIT_IPADDR=0x0a00020f +CONFIG_NETUTILS_CODECS=y +CONFIG_NETUTILS_IPERF=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_TFTPC=y +CONFIG_NETUTILS_WEBCLIENT=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_E1000=y +CONFIG_NET_ETH_PKTSIZE=1514 +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_MAX_LISTENPORTS=8 +CONFIG_NET_RECV_BUFSIZE=16384 +CONFIG_NET_STATISTICS=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_PCI=y +CONFIG_PCI_MSIX=y +CONFIG_PIPES=y +CONFIG_PREALLOC_CHILDSTATUS=16 +CONFIG_PRIORITY_INHERITANCE=y +CONFIG_PSEUDOFS_SOFTLINKS=y +CONFIG_PTHREAD_MUTEX_TYPES=y +CONFIG_PTHREAD_STACK_MIN=4194304 +CONFIG_RAM_SIZE=268435456 +CONFIG_SCHED_CHILD_STATUS=y +CONFIG_SCHED_HAVE_PARENT=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_THREAD_LOCAL=y +CONFIG_SCHED_TICKLESS=y +CONFIG_SCHED_WAITPID=y +CONFIG_SIG_DEFAULT=y +CONFIG_SMP=y +CONFIG_START_DAY=3 +CONFIG_START_MONTH=3 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_TIMER_FD=y +CONFIG_TLS_NELEM=10 +CONFIG_TLS_TASK_NELEM=10 +CONFIG_USEC_PER_TICK=1 diff --git a/boards/x86_64/qemu/qemu-intel64/scripts/qemu.ld b/boards/x86_64/qemu/qemu-intel64/scripts/qemu.ld index ebeae91dd52..88e2f904332 100644 --- a/boards/x86_64/qemu/qemu-intel64/scripts/qemu.ld +++ b/boards/x86_64/qemu/qemu-intel64/scripts/qemu.ld @@ -122,6 +122,7 @@ SECTIONS _sdata = ABSOLUTE(.); *(.data .data.*) *(.ldata .ldata.*) + *(.PyRuntime) *(.gnu.linkonce.d.*) CONSTRUCTORS . = ALIGN(4);