当在menuconfig配置Application Configuration --->NSH Library --->[*] Have architecture-specific initialization时,在apps\nshlib目录下的Kconfig有如下内容
从图中可以看到 select LIB_BOARDCTL,在nuttx\.config中有一下生成
说明CONFIG_LIB_BOARDCTL被定义了,在nuttx\configs\boardctl.c文件的boardctl()函数调用了board_app_initialize(arg)这个函数,所以stm32f407\src\stm32_boot.c文件中的
board_app_initialize(arg)函数才会被执行。在apps\system\nsh\nsh_main.c中有
nuttx\configs\boardctl.c中的boardctl()函数的执行如下
依然没看见board_app_initialize(arg)被执行。但是在apps\system\nsh\nsh_main.c中有
在nsh_initialize()中有
可以看到boardctl()的传入参数为BOARDIOC_INIT因此board_app_initialize(arg)可以被执行了,但是在其定义区域是不活动的(?)。但是在nuttx\include\nuttx\config.h中定义了CONFIG_NSH_ARCHINIT,并且在nuttx\.config也有如下定义
因此board_app_initialize(arg)被执行。