You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nuttx.apache.org by Nimish Telang <ni...@telang.net.INVALID> on 2022/07/15 20:48:00 UTC

Is there a way to have NSH loaded as the init task from an sd card?

I’m trying to load nsh as the init task from an SD card on the SPRESENSE CXD5602 board (a FLAT build). Normally it just calls nsh_main from the user init function when INIT_ENTRYPOINT is defined.

I’m not able to determine which combination of symtab options, if any, I should use with the init filename option; when I have NSH create it there’s a symbol typing clash in the auto-generated symtab_apps.c

symtab_apps.c:282:11: error: conflicting type qualifiers for 'g_nsymbols'
  282 | const int CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME = sizeof(CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME) / sizeof(struct symtab_s);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
symtab_apps.c:37:14: note: previous declaration of 'g_nsymbols' with type 'void *'
   37 | extern void *g_nsymbols;

In effect, I’d like to be able to have the board boot up with NSH to do some configuration via a script, then have the NSH memory be clear for the executable.

Nimish





Re: Is there a way to have NSH loaded as the init task from an sd card?

Posted by Gregory Nutt <sp...@gmail.com>.
> I don't think NuttX supports booting directly to an init or other
> ENTRYPOINT in SD card. I will be surprised and happy to discover it is
> possible.

Yes it is possible it is included in the design.  Controlled by and 
CONFIG_INIT_FILE and CONFIG_INIT_FILEPATH ; the relevant start-up code 
is: 
https://github.com/apache/incubator-nuttx/blob/master/sched/init/nx_bringup.c#L295

That is the normal way NSH (or any init process) is started in the 
KERNEL build mode.

Nimish's problem has to do with symbol tables, not missing functionality.



Re: Is there a way to have NSH loaded as the init task from an sd card?

Posted by Alan Carvalho de Assis <ac...@gmail.com>.
Hi Nimish,

I don't think NuttX supports booting directly to an init or other
ENTRYPOINT in SD card. I will be surprised and happy to discover it is
possible.

But you can boot from Flash and use the initscript to mount the SDCard and
run an application from it. Maybe it will help you to achieve your goal.

BR,

Alan

On Friday, July 15, 2022, Nimish Telang <ni...@telang.net.invalid> wrote:

> I’m trying to load nsh as the init task from an SD card on the SPRESENSE
> CXD5602 board (a FLAT build). Normally it just calls nsh_main from the user
> init function when INIT_ENTRYPOINT is defined.
>
> I’m not able to determine which combination of symtab options, if any, I
> should use with the init filename option; when I have NSH create it there’s
> a symbol typing clash in the auto-generated symtab_apps.c
>
> symtab_apps.c:282:11: error: conflicting type qualifiers for 'g_nsymbols'
>   282 | const int CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME =
> sizeof(CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME) / sizeof(struct symtab_s);
>       |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> symtab_apps.c:37:14: note: previous declaration of 'g_nsymbols' with type
> 'void *'
>    37 | extern void *g_nsymbols;
>
> In effect, I’d like to be able to have the board boot up with NSH to do
> some configuration via a script, then have the NSH memory be clear for the
> executable.
>
> Nimish
>
>
>
>
>