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 <raiden00@railab.me>
Assisted-by: Claude Code
This commit is contained in:
raiden00pl 2026-08-18 10:39:17 +02:00 committed by Alan C. Assis
parent ee07c9212f
commit a95ed61808
3 changed files with 126 additions and 0 deletions

View file

@ -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
-----

View file

@ -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

View file

@ -122,6 +122,7 @@ SECTIONS
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.ldata .ldata.*)
*(.PyRuntime)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
. = ALIGN(4);