Skip to content

Commit 2c598c9

Browse files
committed
boards/rp23xx: Add an FDPIC configuration for the Pimoroni Pico Plus 2.
xipfs-fdpic is the xipfs configuration plus the FDPIC loader and the fdpicxip demo, so that the fdpic and reject sections of the XIPFS test suite have something to run. It is the configuration the loader was tested with, and until now none was in the tree: FDPIC needed a dozen options set by hand, three of which are not obvious. CONFIG_LIBC_ENVPATH and CONFIG_LDPATH_INITIAL, because a library named in DT_NEEDED is opened by name and dlopen() searches LD_LIBRARY_PATH. And CONFIG_LIBC_ELF_HAVE_SYMTAB, because a library resolves its own imports against the module registry's symbol table rather than the one exec() supplies. CONFIG_DEFAULT_TASK_STACKSIZE goes to 4096, from the board's 2048, and both sides of the loader need it. A module that calls into the firmware's printf family overflows 2048, and with no MPU that is a lockup with no diagnostic at all; CONFIG_ELF_STACKSIZE is not set here because it defaults to CONFIG_DEFAULT_TASK_STACKSIZE and so follows it to 4096. The XIPFS test task is sized from it directly, and at 2048 that task overflows in printf partway through the module tests, so the suite stops mid-run with no failure reported and no dump -- which reads as a loader bug rather than as the test running out of stack. Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
1 parent 026c9e6 commit 2c598c9

2 files changed

Lines changed: 81 additions & 0 deletions

File tree

  • Documentation/platforms/arm/rp23xx/boards/pimoroni-pico-2-plus
  • boards/arm/rp23xx/pimoroni-pico-2-plus/configs/xipfs-fdpic

Documentation/platforms/arm/rp23xx/boards/pimoroni-pico-2-plus/index.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,21 @@ xipfs
177177
XIPFS mounted on the on-board flash, with the ``xipfs`` command and the
178178
XIPFS test suite.
179179

180+
xipfs-fdpic
181+
-----------
182+
183+
Same as ``xipfs``, plus the FDPIC module loader and the
184+
``fdpicxip`` demo, so the ``fdpic`` and ``reject`` sections of the XIPFS
185+
test suite have something to run. The demo carries its modules as
186+
committed byte arrays, so nothing beyond the ordinary ARM toolchain is
187+
needed to build it; rebuilding those from source needs
188+
``arm-uclinuxfdpiceabi`` binutils. See :doc:`/components/fdpic`.
189+
190+
``CONFIG_ELF_STACKSIZE`` is 4096 here rather than the 2048 the rest of
191+
the board's tasks use. A module that calls into the firmware's printf
192+
family overflows 2048, and with no MPU that is a lockup rather than a
193+
diagnostic.
194+
180195
xipfs-nxflat
181196
------------
182197

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#
2+
# This file is autogenerated: PLEASE DO NOT EDIT IT.
3+
#
4+
# You can use "make menuconfig" to make any modifications to the installed .config file.
5+
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
6+
# modifications.
7+
#
8+
# CONFIG_NSH_ARGCAT is not set
9+
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
10+
# CONFIG_NSH_DISABLE_DATE is not set
11+
# CONFIG_NSH_DISABLE_LOSMART is not set
12+
# CONFIG_STANDARD_SERIAL is not set
13+
CONFIG_ARCH="arm"
14+
CONFIG_ARCH_BOARD="pimoroni-pico-2-plus"
15+
CONFIG_ARCH_BOARD_COMMON=y
16+
CONFIG_ARCH_BOARD_PIMORONI_PICO_2_PLUS=y
17+
CONFIG_ARCH_CHIP="rp23xx"
18+
CONFIG_ARCH_CHIP_RP23XX=y
19+
CONFIG_ARCH_RAMVECTORS=y
20+
CONFIG_ARCH_STACKDUMP=y
21+
CONFIG_BINFMT_CONSTRUCTORS=y
22+
CONFIG_BOARDCTL_RESET=y
23+
CONFIG_BOARD_LOOPSPERMSEC=10450
24+
CONFIG_BUILTIN=y
25+
CONFIG_DEBUG_FULLOPT=y
26+
CONFIG_DEBUG_SYMBOLS=y
27+
CONFIG_DEFAULT_TASK_STACKSIZE=4096
28+
CONFIG_ELF=y
29+
CONFIG_EXAMPLES_FDPICXIP=y
30+
CONFIG_EXAMPLES_HELLO=y
31+
CONFIG_EXECFUNCS_HAVE_SYMTAB=y
32+
CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y
33+
CONFIG_FDPIC=y
34+
CONFIG_FS_PROCFS=y
35+
CONFIG_FS_PROCFS_REGISTER=y
36+
CONFIG_FS_XIPFS=y
37+
CONFIG_FS_XIPFS_FAULT_INJECT=y
38+
CONFIG_HAVE_CXX=y
39+
CONFIG_INIT_ENTRYPOINT="nsh_main"
40+
CONFIG_INIT_STACKSIZE=16384
41+
CONFIG_LDPATH_INITIAL="/mnt/xipfs"
42+
CONFIG_LIBC_DLFCN=y
43+
CONFIG_LIBC_ELF_HAVE_SYMTAB=y
44+
CONFIG_LIBC_ENVPATH=y
45+
CONFIG_LIBC_EXECFUNCS=y
46+
CONFIG_MTD=y
47+
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
48+
CONFIG_NSH_BUILTIN_APPS=y
49+
CONFIG_NSH_READLINE=y
50+
CONFIG_RAM_SIZE=532480
51+
CONFIG_RAM_START=0x20000000
52+
CONFIG_READLINE_CMD_HISTORY=y
53+
CONFIG_RP23XX_FLASH_MTD=y
54+
CONFIG_RR_INTERVAL=200
55+
CONFIG_SCHED_HPWORK=y
56+
CONFIG_SCHED_WAITPID=y
57+
CONFIG_SIG_EVTHREAD=y
58+
CONFIG_START_DAY=9
59+
CONFIG_START_MONTH=2
60+
CONFIG_START_YEAR=2021
61+
CONFIG_SYSLOG_CONSOLE=y
62+
CONFIG_SYSTEM_NSH=y
63+
CONFIG_SYSTEM_XIPFS=y
64+
CONFIG_TESTING_FS_XIPFS=y
65+
CONFIG_TESTING_FS_XIPFS_MTD="/dev/rpflash"
66+
CONFIG_UART0_SERIAL_CONSOLE=y

0 commit comments

Comments
 (0)