Skip to content

Commit edfdb17

Browse files
boards/arm/qemu-armv7a: switch all nsh defconfigs to nxinit entrypoint
Switch every qemu-armv7a defconfig whose init entry point was nsh_main (6 configs: full, gdbstub, nsh, rpproxy, rpserver, smp) to nxinit (init_main), matching the esp32p4/esp32s3 boards' existing nxinit configs. nsh now runs as a "console sh" service started by init.rc instead of being the top-level init task. Per defconfig (regenerated with "make savedefconfig"): - CONFIG_INIT_ENTRYPOINT switched to "init_main" - CONFIG_INIT_STACKSIZE=8192 (nxinit init task running console-sh) - CONFIG_SYSTEM_NXINIT=y plus its Kconfig dependencies: CONFIG_EXPERIMENTAL, CONFIG_LIBC_EXECFUNCS, CONFIG_SCHED_CHILD_STATUS (which depends on CONFIG_SCHED_HAVE_PARENT) - CONFIG_SYSTEM_NSH_STACKSIZE=8192 (nsh is now a spawned service and needs its own stack instead of borrowing the init stack) - CONFIG_ETC_ROMFS=y / CONFIG_FS_ROMFS=y to ship init.rc via ROMFS Configs that already set some of these keep them unchanged. Add boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc (registers a "console sh" service guarded by CONFIG_SYSTEM_NSH; "on init" starts it) and ship it through ROMFS: the Make build via RCSRCS and CMake via nuttx_add_romfs(), both gated on CONFIG_ETC_ROMFS && CONFIG_SYSTEM_NXINIT so non-nxinit configs are unaffected. Omitting this ROMFS plumbing causes a link-time "undefined reference to romfs_img". Testing (isolated apache/master clone, arm-none-eabi, qemu-system-arm): qemu-armv7a:nsh boot: nsh> ps TID PID PPID ... COMMAND 3 3 0 ... init_main 4 4 3 ... sh Compile-only checks (exit 0, no errors): smp, rpproxy. Remaining configs validated via configure + olddefconfig + savedefconfig (Kconfig-valid), not individually built. Assisted-by: opencode-agent/claude-opus-4-8 Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
1 parent c052ad1 commit edfdb17

9 files changed

Lines changed: 97 additions & 8 deletions

File tree

‎boards/arm/qemu/qemu-armv7a/configs/full/defconfig‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ CONFIG_DRIVERS_VIDEO=y
4646
CONFIG_DRIVERS_VIRTIO_GPU=y
4747
CONFIG_DRIVERS_VIRTIO_INPUT=y
4848
CONFIG_DRIVERS_VIRTIO_MMIO=y
49+
CONFIG_ETC_ROMFS=y
4950
CONFIG_EVENT_FD=y
5051
CONFIG_EXAMPLES_FB=y
5152
CONFIG_EXAMPLES_HELLO=y
@@ -65,7 +66,8 @@ CONFIG_GRAPHICS_INPUT_TOOL=y
6566
CONFIG_GRAPHICS_LVGL=y
6667
CONFIG_HAVE_CXX=y
6768
CONFIG_IDLETHREAD_STACKSIZE=4096
68-
CONFIG_INIT_ENTRYPOINT="nsh_main"
69+
CONFIG_INIT_ENTRYPOINT="init_main"
70+
CONFIG_INIT_STACKSIZE=8192
6971
CONFIG_INPUT_MOUSE_WHEEL=y
7072
CONFIG_INTELHEX_BINARY=y
7173
CONFIG_INTERPRETERS_LUA=y
@@ -109,6 +111,8 @@ CONFIG_RAM_VSTART=0x40200000
109111
CONFIG_RAW_BINARY=y
110112
CONFIG_READLINE_CMD_HISTORY=y
111113
CONFIG_RR_INTERVAL=200
114+
CONFIG_SCHED_CHILD_STATUS=y
115+
CONFIG_SCHED_HAVE_PARENT=y
112116
CONFIG_SCHED_HPWORKPRIORITY=192
113117
CONFIG_SCHED_INSTRUMENTATION=y
114118
CONFIG_SCHED_INSTRUMENTATION_DUMP=y
@@ -128,8 +132,10 @@ CONFIG_SYSTEM_HEXED=y
128132
CONFIG_SYSTEM_HOSTNAME=y
129133
CONFIG_SYSTEM_NOTE=y
130134
CONFIG_SYSTEM_NSH=y
135+
CONFIG_SYSTEM_NSH_STACKSIZE=8192
131136
CONFIG_SYSTEM_NXCAMERA=y
132137
CONFIG_SYSTEM_NXCODEC=y
138+
CONFIG_SYSTEM_NXINIT=y
133139
CONFIG_SYSTEM_VI=y
134140
CONFIG_SYSTEM_YMODEM=y
135141
CONFIG_SYSTEM_ZMODEM=y

‎boards/arm/qemu/qemu-armv7a/configs/gdbstub/defconfig‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ CONFIG_DEBUG_SCHED_INFO=y
2626
CONFIG_DEBUG_SCHED_WARN=y
2727
CONFIG_DEBUG_SYMBOLS=y
2828
CONFIG_DEFAULT_TASK_STACKSIZE=4096
29+
CONFIG_ETC_ROMFS=y
2930
CONFIG_EXAMPLES_HELLO=y
3031
CONFIG_EXPERIMENTAL=y
3132
CONFIG_FLASH_SIZE=127926272
@@ -36,7 +37,8 @@ CONFIG_FS_ROMFS=y
3637
CONFIG_HAVE_CXX=y
3738
CONFIG_HAVE_CXXINITIALIZE=y
3839
CONFIG_IDLETHREAD_STACKSIZE=4096
39-
CONFIG_INIT_ENTRYPOINT="nsh_main"
40+
CONFIG_INIT_ENTRYPOINT="init_main"
41+
CONFIG_INIT_STACKSIZE=8192
4042
CONFIG_INTELHEX_BINARY=y
4143
CONFIG_LIBC_EXECFUNCS=y
4244
CONFIG_LIB_GDBSTUB=y
@@ -51,6 +53,8 @@ CONFIG_RAM_VSTART=0x40200000
5153
CONFIG_RAW_BINARY=y
5254
CONFIG_READLINE_CMD_HISTORY=y
5355
CONFIG_RR_INTERVAL=200
56+
CONFIG_SCHED_CHILD_STATUS=y
57+
CONFIG_SCHED_HAVE_PARENT=y
5458
CONFIG_SCHED_HPWORK=y
5559
CONFIG_SCHED_HPWORKPRIORITY=192
5660
CONFIG_SERIAL_GDBSTUB=y
@@ -61,6 +65,8 @@ CONFIG_START_MONTH=4
6165
CONFIG_START_YEAR=2023
6266
CONFIG_SYMTAB_ORDEREDBYNAME=y
6367
CONFIG_SYSTEM_NSH=y
68+
CONFIG_SYSTEM_NSH_STACKSIZE=8192
69+
CONFIG_SYSTEM_NXINIT=y
6470
CONFIG_SYSTEM_SYSTEM=y
6571
CONFIG_TESTING_GETPRIME=y
6672
CONFIG_TESTING_OSTEST=y

‎boards/arm/qemu/qemu-armv7a/configs/nsh/defconfig‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,22 @@ CONFIG_DEBUG_FEATURES=y
2626
CONFIG_DEBUG_FULLOPT=y
2727
CONFIG_DEBUG_SYMBOLS=y
2828
CONFIG_DEFAULT_TASK_STACKSIZE=4096
29+
CONFIG_ETC_ROMFS=y
2930
CONFIG_EXAMPLES_HELLO=y
3031
CONFIG_EXPERIMENTAL=y
3132
CONFIG_FLASH_SIZE=1048576
3233
CONFIG_FLASH_START=0
3334
CONFIG_FLASH_VSTART=0
3435
CONFIG_FS_HOSTFS=y
3536
CONFIG_FS_PROCFS=y
37+
CONFIG_FS_ROMFS=y
3638
CONFIG_FS_TMPFS=y
3739
CONFIG_HAVE_CXX=y
3840
CONFIG_HAVE_CXXINITIALIZE=y
3941
CONFIG_IDLETHREAD_STACKSIZE=4096
40-
CONFIG_INIT_ENTRYPOINT="nsh_main"
42+
CONFIG_INIT_ENTRYPOINT="init_main"
43+
CONFIG_INIT_STACKSIZE=8192
44+
CONFIG_LIBC_EXECFUNCS=y
4145
CONFIG_MODULE=y
4246
CONFIG_NSH_BUILTIN_APPS=y
4347
CONFIG_NSH_FILEIOSIZE=512
@@ -52,6 +56,7 @@ CONFIG_RAM_VSTART=0x40000000
5256
CONFIG_RAW_BINARY=y
5357
CONFIG_READLINE_CMD_HISTORY=y
5458
CONFIG_RR_INTERVAL=200
59+
CONFIG_SCHED_CHILD_STATUS=y
5560
CONFIG_SCHED_HAVE_PARENT=y
5661
CONFIG_SCHED_HPWORK=y
5762
CONFIG_SCHED_HPWORKPRIORITY=192
@@ -62,6 +67,8 @@ CONFIG_START_YEAR=2023
6267
CONFIG_SYMTAB_ORDEREDBYNAME=y
6368
CONFIG_SYSTEM_GPROF=y
6469
CONFIG_SYSTEM_NSH=y
70+
CONFIG_SYSTEM_NSH_STACKSIZE=8192
71+
CONFIG_SYSTEM_NXINIT=y
6572
CONFIG_SYSTEM_SYSTEM=y
6673
CONFIG_TESTING_GETPRIME=y
6774
CONFIG_TESTING_OSTEST=y

‎boards/arm/qemu/qemu-armv7a/configs/rpproxy/defconfig‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ CONFIG_DRIVERS_VHOST_RNG=y
4646
CONFIG_DRIVERS_VHOST_RPMSG=y
4747
CONFIG_DRIVERS_VIRTIO_MMIO=y
4848
CONFIG_DRIVERS_VIRTIO_SERIAL=y
49+
CONFIG_ETC_ROMFS=y
4950
CONFIG_EXAMPLES_HELLO=y
5051
CONFIG_EXAMPLES_RPMSGSOCKET=y
5152
CONFIG_EXPERIMENTAL=y
@@ -63,9 +64,10 @@ CONFIG_FS_ROMFS=y
6364
CONFIG_FS_RPMSGFS=y
6465
CONFIG_FS_TMPFS=y
6566
CONFIG_IDLETHREAD_STACKSIZE=4096
66-
CONFIG_INIT_ENTRYPOINT="nsh_main"
67-
CONFIG_INIT_STACKSIZE=4096
67+
CONFIG_INIT_ENTRYPOINT="init_main"
68+
CONFIG_INIT_STACKSIZE=8192
6869
CONFIG_INTELHEX_BINARY=y
70+
CONFIG_LIBC_EXECFUNCS=y
6971
CONFIG_LIBC_HOSTNAME="proxy"
7072
CONFIG_LIBC_LOCALE=y
7173
CONFIG_LIBC_LOCALTIME=y
@@ -94,6 +96,7 @@ CONFIG_RPTUN=y
9496
CONFIG_RPTUN_IVSHMEM=y
9597
CONFIG_RPTUN_IVSHMEM_NAME="0:server:s"
9698
CONFIG_SCHED_BACKTRACE=y
99+
CONFIG_SCHED_CHILD_STATUS=y
97100
CONFIG_SCHED_EVENTS=y
98101
CONFIG_SCHED_HAVE_PARENT=y
99102
CONFIG_SCHED_HPWORK=y
@@ -123,6 +126,8 @@ CONFIG_SYSLOG_TIMESTAMP=y
123126
CONFIG_SYSTEM_CUTERM=y
124127
CONFIG_SYSTEM_DUMPSTACK=y
125128
CONFIG_SYSTEM_NSH=y
129+
CONFIG_SYSTEM_NSH_STACKSIZE=8192
130+
CONFIG_SYSTEM_NXINIT=y
126131
CONFIG_UART1_BASE=0x9000000
127132
CONFIG_UART1_IRQ=33
128133
CONFIG_UART1_PL011=y

‎boards/arm/qemu/qemu-armv7a/configs/rpserver/defconfig‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ CONFIG_DRIVERS_VIRTIO_MMIO=y
4848
CONFIG_DRIVERS_VIRTIO_RNG=y
4949
CONFIG_DRIVERS_VIRTIO_RPMSG=y
5050
CONFIG_DRIVERS_VIRTIO_SERIAL=y
51+
CONFIG_ETC_ROMFS=y
5152
CONFIG_EXAMPLES_HELLO=y
5253
CONFIG_EXAMPLES_RPMSGSOCKET=y
5354
CONFIG_EXPERIMENTAL=y
@@ -65,9 +66,10 @@ CONFIG_FS_RPMSGFS=y
6566
CONFIG_FS_RPMSGFS_SERVER=y
6667
CONFIG_FS_TMPFS=y
6768
CONFIG_IDLETHREAD_STACKSIZE=4096
68-
CONFIG_INIT_ENTRYPOINT="nsh_main"
69-
CONFIG_INIT_STACKSIZE=4096
69+
CONFIG_INIT_ENTRYPOINT="init_main"
70+
CONFIG_INIT_STACKSIZE=8192
7071
CONFIG_INTELHEX_BINARY=y
72+
CONFIG_LIBC_EXECFUNCS=y
7173
CONFIG_LIBC_HOSTNAME="server"
7274
CONFIG_LIBC_LOCALE=y
7375
CONFIG_LIBC_LOCALTIME=y
@@ -94,6 +96,7 @@ CONFIG_RPTUN=y
9496
CONFIG_RPTUN_IVSHMEM=y
9597
CONFIG_RPTUN_IVSHMEM_NAME="0:proxy:m"
9698
CONFIG_SCHED_BACKTRACE=y
99+
CONFIG_SCHED_CHILD_STATUS=y
97100
CONFIG_SCHED_EVENTS=y
98101
CONFIG_SCHED_HAVE_PARENT=y
99102
CONFIG_SCHED_HPWORK=y
@@ -123,7 +126,10 @@ CONFIG_SYSTEM_CUTERM=y
123126
CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE="/dev/ttyproxy"
124127
CONFIG_SYSTEM_DUMPSTACK=y
125128
CONFIG_SYSTEM_NSH=y
129+
CONFIG_SYSTEM_NSH_STACKSIZE=8192
130+
CONFIG_SYSTEM_NXINIT=y
126131
CONFIG_TTY_LAUNCH=y
132+
CONFIG_TTY_LAUNCH_ENTRYPOINT="nsh_main"
127133
CONFIG_TTY_LAUNCH_STACKSIZE=2048
128134
CONFIG_TTY_SIGINT=y
129135
CONFIG_UART1_BASE=0x9000000

‎boards/arm/qemu/qemu-armv7a/configs/smp/defconfig‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ CONFIG_DEBUG_FEATURES=y
2222
CONFIG_DEBUG_FULLOPT=y
2323
CONFIG_DEBUG_SYMBOLS=y
2424
CONFIG_DEFAULT_TASK_STACKSIZE=4096
25+
CONFIG_ETC_ROMFS=y
2526
CONFIG_EXAMPLES_HELLO=y
2627
CONFIG_EXPERIMENTAL=y
2728
CONFIG_FLASH_SIZE=127926272
@@ -32,7 +33,8 @@ CONFIG_FS_ROMFS=y
3233
CONFIG_HAVE_CXX=y
3334
CONFIG_HAVE_CXXINITIALIZE=y
3435
CONFIG_IDLETHREAD_STACKSIZE=4096
35-
CONFIG_INIT_ENTRYPOINT="nsh_main"
36+
CONFIG_INIT_ENTRYPOINT="init_main"
37+
CONFIG_INIT_STACKSIZE=8192
3638
CONFIG_INTELHEX_BINARY=y
3739
CONFIG_LIBC_EXECFUNCS=y
3840
CONFIG_MM_KASAN=y
@@ -48,6 +50,8 @@ CONFIG_RAM_VSTART=0x40200000
4850
CONFIG_RAW_BINARY=y
4951
CONFIG_READLINE_CMD_HISTORY=y
5052
CONFIG_RR_INTERVAL=200
53+
CONFIG_SCHED_CHILD_STATUS=y
54+
CONFIG_SCHED_HAVE_PARENT=y
5155
CONFIG_SCHED_HPWORK=y
5256
CONFIG_SCHED_HPWORKPRIORITY=192
5357
CONFIG_SMP=y
@@ -57,6 +61,8 @@ CONFIG_START_MONTH=4
5761
CONFIG_START_YEAR=2023
5862
CONFIG_SYMTAB_ORDEREDBYNAME=y
5963
CONFIG_SYSTEM_NSH=y
64+
CONFIG_SYSTEM_NSH_STACKSIZE=8192
65+
CONFIG_SYSTEM_NXINIT=y
6066
CONFIG_SYSTEM_SYSTEM=y
6167
CONFIG_TESTING_GETPRIME=y
6268
CONFIG_TESTING_KASAN=y

‎boards/arm/qemu/qemu-armv7a/src/CMakeLists.txt‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,17 @@ if(CONFIG_LIBC_FDT)
2727
endif()
2828

2929
target_sources(board PRIVATE ${SRCS})
30+
31+
if(CONFIG_ETC_ROMFS AND CONFIG_SYSTEM_NXINIT)
32+
nuttx_add_romfs(
33+
NAME
34+
etc
35+
MOUNTPOINT
36+
etc
37+
RCSRCS
38+
etc/init.d/init.rc
39+
PATH
40+
${CMAKE_CURRENT_BINARY_DIR}/etc)
41+
42+
target_link_libraries(board PRIVATE romfs_etc)
43+
endif()

‎boards/arm/qemu/qemu-armv7a/src/Makefile‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ include $(TOPDIR)/Make.defs
2424

2525
CSRCS = qemu_boardinit.c qemu_bringup.c
2626

27+
ifeq ($(CONFIG_ETC_ROMFS),y)
28+
ifeq ($(CONFIG_SYSTEM_NXINIT),y)
29+
RCSRCS += etc/init.d/init.rc
30+
endif
31+
endif
32+
2733
ifeq ($(CONFIG_LIBC_FDT),y)
2834
CFLAGS += ${INCDIR_PREFIX}$(TOPDIR)$(DELIM)libs$(DELIM)libc$(DELIM)fdt$(DELIM)dtc$(DELIM)libfdt
2935
endif
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/****************************************************************************
2+
* boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*
6+
* Licensed to the Apache Software Foundation (ASF) under one or more
7+
* contributor license agreements. See the NOTICE file distributed with
8+
* this work for additional information regarding copyright ownership. The
9+
* ASF licenses this file to you under the Apache License, Version 2.0 (the
10+
* "License"); you may not use this file except in compliance with the
11+
* License. You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18+
* License for the specific language governing permissions and limitations
19+
* under the License.
20+
*
21+
****************************************************************************/
22+
23+
#include <nuttx/config.h>
24+
25+
#ifdef CONFIG_SYSTEM_NSH
26+
service console sh
27+
restart_period 1000
28+
#endif
29+
30+
on init
31+
#ifdef CONFIG_SYSTEM_NSH
32+
start console
33+
#endif

0 commit comments

Comments
 (0)