Skip to content

Commit 6caf831

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). nsh now runs as a "console sh" service started by init.rc instead of being the top-level init task. Each switched defconfig only gains the nxinit-essential keys (minimal delta): - CONFIG_INIT_ENTRYPOINT="init_main" - CONFIG_SYSTEM_NXINIT=y plus its Kconfig deps not already set: CONFIG_EXPERIMENTAL, CONFIG_LIBC_EXECFUNCS, CONFIG_SCHED_CHILD_STATUS (depends on CONFIG_SCHED_HAVE_PARENT) - CONFIG_ETC_ROMFS=y / CONFIG_FS_ROMFS=y to ship init.rc via ROMFS No stack-size overrides: INIT_STACKSIZE/SYSTEM_NSH_STACKSIZE keep their Kconfig defaults. Add boards/arm/qemu/qemu-armv7a/src/etc/init.d/init.rc, shipped via ROMFS in the Make build (RCSRCS) and CMake (nuttx_add_romfs()), gated on CONFIG_ETC_ROMFS && CONFIG_SYSTEM_NXINIT. Testing: qemu-armv7a:nsh (and smp with -smp 4) boot into nxinit with nsh spawned as its service (init task = init_main, sh = its child), confirmed via qemu-system-arm in an earlier run of this series. Note: current apache/master fails to build qemu-armv7a locally this round (missing arm_timer.h) independent of this change. Assisted-by: opencode-agent/claude-opus-4-8 Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
1 parent a3e386b commit 6caf831

9 files changed

Lines changed: 84 additions & 6 deletions

File tree

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

Lines changed: 5 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,7 @@ 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"
6970
CONFIG_INPUT_MOUSE_WHEEL=y
7071
CONFIG_INTELHEX_BINARY=y
7172
CONFIG_INTERPRETERS_LUA=y
@@ -109,6 +110,8 @@ CONFIG_RAM_VSTART=0x40200000
109110
CONFIG_RAW_BINARY=y
110111
CONFIG_READLINE_CMD_HISTORY=y
111112
CONFIG_RR_INTERVAL=200
113+
CONFIG_SCHED_CHILD_STATUS=y
114+
CONFIG_SCHED_HAVE_PARENT=y
112115
CONFIG_SCHED_HPWORKPRIORITY=192
113116
CONFIG_SCHED_INSTRUMENTATION=y
114117
CONFIG_SCHED_INSTRUMENTATION_DUMP=y
@@ -130,6 +133,7 @@ CONFIG_SYSTEM_NOTE=y
130133
CONFIG_SYSTEM_NSH=y
131134
CONFIG_SYSTEM_NXCAMERA=y
132135
CONFIG_SYSTEM_NXCODEC=y
136+
CONFIG_SYSTEM_NXINIT=y
133137
CONFIG_SYSTEM_VI=y
134138
CONFIG_SYSTEM_YMODEM=y
135139
CONFIG_SYSTEM_ZMODEM=y

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

Lines changed: 5 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,7 @@ 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"
4041
CONFIG_INTELHEX_BINARY=y
4142
CONFIG_LIBC_EXECFUNCS=y
4243
CONFIG_LIB_GDBSTUB=y
@@ -51,6 +52,8 @@ CONFIG_RAM_VSTART=0x40200000
5152
CONFIG_RAW_BINARY=y
5253
CONFIG_READLINE_CMD_HISTORY=y
5354
CONFIG_RR_INTERVAL=200
55+
CONFIG_SCHED_CHILD_STATUS=y
56+
CONFIG_SCHED_HAVE_PARENT=y
5457
CONFIG_SCHED_HPWORK=y
5558
CONFIG_SCHED_HPWORKPRIORITY=192
5659
CONFIG_SERIAL_GDBSTUB=y
@@ -61,6 +64,7 @@ CONFIG_START_MONTH=4
6164
CONFIG_START_YEAR=2023
6265
CONFIG_SYMTAB_ORDEREDBYNAME=y
6366
CONFIG_SYSTEM_NSH=y
67+
CONFIG_SYSTEM_NXINIT=y
6468
CONFIG_SYSTEM_SYSTEM=y
6569
CONFIG_TESTING_GETPRIME=y
6670
CONFIG_TESTING_OSTEST=y

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,21 @@ 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_LIBC_EXECFUNCS=y
4144
CONFIG_MODULE=y
4245
CONFIG_NSH_BUILTIN_APPS=y
4346
CONFIG_NSH_FILEIOSIZE=512
@@ -52,6 +55,7 @@ CONFIG_RAM_VSTART=0x40000000
5255
CONFIG_RAW_BINARY=y
5356
CONFIG_READLINE_CMD_HISTORY=y
5457
CONFIG_RR_INTERVAL=200
58+
CONFIG_SCHED_CHILD_STATUS=y
5559
CONFIG_SCHED_HAVE_PARENT=y
5660
CONFIG_SCHED_HPWORK=y
5761
CONFIG_SCHED_HPWORKPRIORITY=192
@@ -62,6 +66,7 @@ CONFIG_START_YEAR=2023
6266
CONFIG_SYMTAB_ORDEREDBYNAME=y
6367
CONFIG_SYSTEM_GPROF=y
6468
CONFIG_SYSTEM_NSH=y
69+
CONFIG_SYSTEM_NXINIT=y
6570
CONFIG_SYSTEM_SYSTEM=y
6671
CONFIG_TESTING_GETPRIME=y
6772
CONFIG_TESTING_OSTEST=y

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

Lines changed: 5 additions & 1 deletion
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_ENTRYPOINT="init_main"
6768
CONFIG_INIT_STACKSIZE=4096
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,7 @@ CONFIG_SYSLOG_TIMESTAMP=y
123126
CONFIG_SYSTEM_CUTERM=y
124127
CONFIG_SYSTEM_DUMPSTACK=y
125128
CONFIG_SYSTEM_NSH=y
129+
CONFIG_SYSTEM_NXINIT=y
126130
CONFIG_UART1_BASE=0x9000000
127131
CONFIG_UART1_IRQ=33
128132
CONFIG_UART1_PL011=y

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

Lines changed: 5 additions & 1 deletion
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_ENTRYPOINT="init_main"
6970
CONFIG_INIT_STACKSIZE=4096
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,6 +126,7 @@ 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_NXINIT=y
126130
CONFIG_TTY_LAUNCH=y
127131
CONFIG_TTY_LAUNCH_STACKSIZE=2048
128132
CONFIG_TTY_SIGINT=y

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

Lines changed: 5 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,7 @@ 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"
3637
CONFIG_INTELHEX_BINARY=y
3738
CONFIG_LIBC_EXECFUNCS=y
3839
CONFIG_MM_KASAN=y
@@ -48,6 +49,8 @@ CONFIG_RAM_VSTART=0x40200000
4849
CONFIG_RAW_BINARY=y
4950
CONFIG_READLINE_CMD_HISTORY=y
5051
CONFIG_RR_INTERVAL=200
52+
CONFIG_SCHED_CHILD_STATUS=y
53+
CONFIG_SCHED_HAVE_PARENT=y
5154
CONFIG_SCHED_HPWORK=y
5255
CONFIG_SCHED_HPWORKPRIORITY=192
5356
CONFIG_SMP=y
@@ -57,6 +60,7 @@ CONFIG_START_MONTH=4
5760
CONFIG_START_YEAR=2023
5861
CONFIG_SYMTAB_ORDEREDBYNAME=y
5962
CONFIG_SYSTEM_NSH=y
63+
CONFIG_SYSTEM_NXINIT=y
6064
CONFIG_SYSTEM_SYSTEM=y
6165
CONFIG_TESTING_GETPRIME=y
6266
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)