當在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)被執行。