boards/rp23xx: Add a xipfs configuration with the FDPIC loader.

The xipfs configuration alongside it stops at the filesystem.  This one
turns on CONFIG_FDPIC as well, so the board runs the module loader and
the FDPIC half of the test suite, and it carries the four options the
loader needs but which are not obviously part of it:

CONFIG_LIBC_EXECFUNCS with a system symbol table, because a module
resolves its imports against one.  POSIX timers stay enabled -- the
callback test module imports timer_create, and with them disabled the
loader cannot resolve that symbol, so the whole module fails to load and
the FDPIC section reports twelve failures that name the callback rather
than the missing timer.  CONFIG_SCHED_HPWORK and CONFIG_SIG_EVTHREAD
carry the SIGEV_THREAD delivery itself.

CONFIG_INIT_STACKSIZE is raised to 16 KB: the test suite runs the
power-loss sweeps from the init task.

CONFIG_NXFLAT is deliberately left out.  The nxflatxip demo's build runs
mknxflat, which the CI container does not have, and that is why
xipfs-nxflat is excluded from the CI build list.  The FDPIC modules are
prebuilt blobs instead, so this configuration builds with a plain
toolchain and CI covers the loader.

Verified on a Pimoroni Pico Plus 2.

Assisted-by: Claude Code:claude-opus-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
This commit is contained in:
Marco Casaroli 2026-07-25 17:48:52 +02:00
parent 1a4af86499
commit 059dd663e4
2 changed files with 65 additions and 0 deletions

View file

@ -177,6 +177,14 @@ xipfs
XIPFS mounted on the on-board flash, with the ``xipfs`` command and the
XIPFS test suite.
xipfs-fdpic
-----------
Same as ``xipfs``, plus the FDPIC module loader, the FDPIC half of the test
suite and the ``fdpicxip`` demo. The modules it runs are prebuilt blobs, so
this configuration builds with a plain toolchain; rebuilding them from source
needs an ``arm-uclinuxfdpiceabi`` toolchain.
xipfs-nxflat
------------

View file

@ -0,0 +1,57 @@
#
# 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_NSH_ARGCAT is not set
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
# CONFIG_NSH_DISABLE_DATE is not set
# CONFIG_NSH_DISABLE_LOSMART is not set
# CONFIG_STANDARD_SERIAL is not set
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="pimoroni-pico-2-plus"
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_BOARD_PIMORONI_PICO_2_PLUS=y
CONFIG_ARCH_CHIP="rp23xx"
CONFIG_ARCH_CHIP_RP23XX=y
CONFIG_ARCH_RAMVECTORS=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BOARDCTL_RESET=y
CONFIG_BOARD_LOOPSPERMSEC=10450
CONFIG_BUILTIN=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXECFUNCS_HAVE_SYMTAB=y
CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y
CONFIG_FDPIC=y
CONFIG_FS_PROCFS=y
CONFIG_FS_PROCFS_REGISTER=y
CONFIG_FS_XIPFS=y
CONFIG_FS_XIPFS_FAULT_INJECT=y
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=16384
CONFIG_LIBC_EXECFUNCS=y
CONFIG_MTD=y
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_READLINE=y
CONFIG_RAM_SIZE=532480
CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP23XX_FLASH_MTD=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_WAITPID=y
CONFIG_SIG_EVTHREAD=y
CONFIG_START_DAY=9
CONFIG_START_MONTH=2
CONFIG_START_YEAR=2021
CONFIG_SYSLOG_CONSOLE=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_XIPFS=y
CONFIG_TESTING_FS_XIPFS=y
CONFIG_TESTING_FS_XIPFS_MTD="/dev/rpflash"
CONFIG_UART0_SERIAL_CONSOLE=y