Squashed commit of the following:
Author: Xiang Xiao <xiaoxiang@xiaomi.com> arch/arm/src/armv7-m: Implement SYSTICK timer driver Author: anchao <anchao@pinecone.net> configs/sim/loadable: Add loadable demo for arch sim sched/init: Restore previously reverted option to mount block device for INIT_FILEPATH case configs/stm3240g-eval/knxwm: Fix build breakage. Author: Gregory Nutt <gnutt@nuttx.org> configs: With recent changes to apps/ all configurations that build applications as modules must now also select CONFIG_APPS_LOADABLE. Author: anchao <anchao@pinecone.net> configs/sim/loadable: Add loadable demo for arch sim Kconfig and tools/Makefile.unix and : add dynamic application loadable support
This commit is contained in:
parent
22a44465e4
commit
95163b2c59
10
Kconfig
10
Kconfig
@ -161,6 +161,16 @@ config APPS_DIR
|
||||
example, to include makefile fragments (e.g., .config or Make.defs)
|
||||
or to set up include file paths.
|
||||
|
||||
config BUILD_LOADABLE
|
||||
bool "NuttX application loadable build"
|
||||
default n if !BUILD_KERNEL
|
||||
default y if BUILD_KERNEL
|
||||
---help---
|
||||
Automatically selected if KERNEL build is selected.
|
||||
This selection only effects the behavior of the 'make export'
|
||||
target and currently has no effect unless you wish to build
|
||||
loadable applications in a FLAT build.
|
||||
|
||||
choice
|
||||
prompt "Memory organization"
|
||||
default BUILD_FLAT
|
||||
|
@ -22,6 +22,7 @@ CONFIG_BINFMT_EXEPATH=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BOARDCTL_USBDEVCTRL=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=12061
|
||||
CONFIG_BUILD_LOADABLE=y
|
||||
CONFIG_BUILD_PROTECTED=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CODECS_HASH_MD5=y
|
||||
|
@ -21,6 +21,7 @@ CONFIG_BINFMT_EXEPATH=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BOARDCTL_USBDEVCTRL=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=12061
|
||||
CONFIG_BUILD_LOADABLE=y
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CODECS_HASH_MD5=y
|
||||
|
@ -561,6 +561,12 @@ ipforward
|
||||
Additional required settings will also be selected when you manually
|
||||
select the above via 'make menuconfig'.
|
||||
|
||||
loadable
|
||||
|
||||
This configuration provides an example of loadable apps. It cannot used
|
||||
with any Windows configuration, however, because Windows does not use
|
||||
the ELF format.
|
||||
|
||||
minibasic
|
||||
|
||||
This configuration was used to test the Mini Basic port at
|
||||
|
@ -1,4 +1,3 @@
|
||||
CONFIG_APPS_LOADABLE=y
|
||||
CONFIG_ARCH="sim"
|
||||
CONFIG_ARCH_BOARD="sim"
|
||||
CONFIG_ARCH_BOARD_SIM=y
|
||||
@ -6,26 +5,31 @@ CONFIG_ARCH_SIM=y
|
||||
CONFIG_BINFMT_EXEPATH=y
|
||||
CONFIG_BOARDCTL_APP_SYMTAB=y
|
||||
CONFIG_BOARDCTL_POWEROFF=y
|
||||
CONFIG_BOARD_INITIALIZE=y
|
||||
CONFIG_BUILD_LOADABLE=y
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_CLOCK_MONOTONIC=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_ELF=y
|
||||
CONFIG_EXAMPLES_HELLO=y
|
||||
CONFIG_EXAMPLES_HELLO=m
|
||||
CONFIG_EXAMPLES_HELLO_STACKSIZE=8192
|
||||
CONFIG_EXECFUNCS_HAVE_SYMTAB=y
|
||||
CONFIG_FS_HOSTFS=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=4096
|
||||
CONFIG_INIT_FILEPATH=y
|
||||
CONFIG_INIT_MOUNT=y
|
||||
CONFIG_INIT_MOUNT_DATA="fs=../apps/exe/system"
|
||||
CONFIG_INIT_MOUNT_FLAGS=0x1
|
||||
CONFIG_INIT_MOUNT_FSTYPE="hostfs"
|
||||
CONFIG_INIT_MOUNT_SOURCE=""
|
||||
CONFIG_INIT_MOUNT_TARGET="/system"
|
||||
CONFIG_LIBC_EXECFUNCS=y
|
||||
CONFIG_MEMSET_OPTSPEED=y
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_FILE_APPS=y
|
||||
CONFIG_NSH_LINELEN=128
|
||||
CONFIG_NSH_READLINE=y
|
||||
CONFIG_PATH_INITIAL="/system/bin"
|
||||
@ -40,7 +44,7 @@ CONFIG_SIM_M32=y
|
||||
CONFIG_SIM_WALLTIME=y
|
||||
CONFIG_START_MONTH=6
|
||||
CONFIG_START_YEAR=2008
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_SYSTEM_NSH=m
|
||||
CONFIG_TIME_EXTENDED=y
|
||||
CONFIG_USERMAIN_STACKSIZE=4096
|
||||
CONFIG_USER_INITPATH="/system/bin/nsh"
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <sys/mount.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/binfmt/elf.h>
|
||||
#include <nuttx/board.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
|
@ -77,7 +77,7 @@ ifneq ($(CONFIG_DEBUG_NOOPT),y)
|
||||
endif
|
||||
|
||||
ARCHCFLAGS = -fno-builtin
|
||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
|
||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti -fpermissive
|
||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
|
||||
ARCHWARNINGSXX = -Wall -Wshadow -Wundef
|
||||
ARCHDEFINES =
|
||||
|
@ -363,6 +363,40 @@ config INIT_NEXPORTS
|
||||
Any kernel mode symbols tables would not be usable for resolving
|
||||
symbols in user mode executables.
|
||||
|
||||
menuconfig INIT_MOUNT
|
||||
bool "Auto-mount init file system"
|
||||
default n
|
||||
depends on !DISABLE_MOUNTPOINT
|
||||
---help---
|
||||
In order to use the the initial startup program when CONFIG_INIT_FILEPATH
|
||||
is provided, it is necessary to mount the initial file system that
|
||||
provides init program. Normally this mount is done in the board-specific
|
||||
initialization logic. However, if the mount is very simple, it can be
|
||||
performed by the OS bring-up logic itself by selecting this option.
|
||||
|
||||
if INIT_MOUNT
|
||||
|
||||
config INIT_MOUNT_SOURCE
|
||||
string "The block device to mount"
|
||||
default "/dev/ram0"
|
||||
|
||||
config INIT_MOUNT_TARGET
|
||||
string "Path to the mounted file system"
|
||||
default "/bin"
|
||||
|
||||
config INIT_MOUNT_FSTYPE
|
||||
string "The file system type to mount"
|
||||
default "romfs"
|
||||
|
||||
config INIT_MOUNT_FLAGS
|
||||
hex "Flags passed to mount"
|
||||
default 0
|
||||
|
||||
config INIT_MOUNT_DATA
|
||||
string "Additional data passed to mount"
|
||||
default ""
|
||||
|
||||
endif # INIT_MOUNT
|
||||
endif # INIT_FILEPATH
|
||||
|
||||
config RR_INTERVAL
|
||||
|
@ -45,7 +45,9 @@
|
||||
|
||||
#include <sched.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <debug.h>
|
||||
#include <sys/mount.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
@ -98,10 +100,6 @@
|
||||
* program.
|
||||
*/
|
||||
|
||||
# ifndef CONFIG_BOARD_INITIALIZE
|
||||
# warning You probably need CONFIG_BOARD_INITIALIZE to mount the file system
|
||||
# endif
|
||||
|
||||
# ifndef CONFIG_USER_INITPATH
|
||||
/* Path to the initialization program must have been provided */
|
||||
|
||||
@ -287,6 +285,16 @@ static inline void os_do_appstart(void)
|
||||
board_initialize();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_INIT_MOUNT
|
||||
/* Mount the file system containing the init program. */
|
||||
|
||||
ret = mount(CONFIG_INIT_MOUNT_SOURCE, CONFIG_INIT_MOUNT_TARGET,
|
||||
CONFIG_INIT_MOUNT_FSTYPE, CONFIG_INIT_MOUNT_FLAGS,
|
||||
CONFIG_INIT_MOUNT_DATA);
|
||||
DEBUGASSERT(ret >= 0);
|
||||
UNUSED(ret);
|
||||
#endif
|
||||
|
||||
/* Start the application initialization program from a program in a
|
||||
* mounted file system. Presumably the file system was mounted as part
|
||||
* of the board_initialize() operation.
|
||||
@ -297,6 +305,7 @@ static inline void os_do_appstart(void)
|
||||
ret = exec(CONFIG_USER_INITPATH, NULL, CONFIG_INIT_SYMTAB,
|
||||
CONFIG_INIT_NEXPORTS);
|
||||
ASSERT(ret >= 0);
|
||||
UNUSED(ret);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_INIT_NONE)
|
||||
|
@ -86,7 +86,7 @@
|
||||
#undef get_errno
|
||||
#undef set_errno
|
||||
|
||||
#include <nuttx/errno.h>
|
||||
#include <errno.h>
|
||||
#include <nuttx/clock.h>
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -166,10 +166,10 @@ MKEXPORT_ARGS = -w$(WINTOOL) -t "$(TOPDIR)"
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
MKEXPORT_ARGS += -u
|
||||
else
|
||||
ifeq ($(CONFIG_BUILD_KERNEL),y)
|
||||
else ifeq ($(CONFIG_BUILD_KERNEL),y)
|
||||
MKEXPORT_ARGS += -u
|
||||
else ifeq ($(CONFIG_BUILD_LOADABLE),y)
|
||||
MKEXPORT_ARGS += -u
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(V),2)
|
||||
|
@ -158,11 +158,11 @@ MKEXPORT = tools\mkexport.bat
|
||||
MKEXPORT_ARGS = -w$(WINTOOL) -t "$(TOPDIR)"
|
||||
|
||||
ifeq ($(CONFIG_BUILD_PROTECTED),y)
|
||||
MKEXPORT_ARGS = -u
|
||||
else
|
||||
ifeq ($(CONFIG_BUILD_KERNEL),y)
|
||||
MKEXPORT_ARGS = -u
|
||||
endif
|
||||
MKEXPORT_ARGS += -u
|
||||
else ifeq ($(CONFIG_BUILD_KERNEL),y)
|
||||
MKEXPORT_ARGS += -u
|
||||
else ifeq ($(CONFIG_BUILD_LOADABLE),y)
|
||||
MKEXPORT_ARGS += -u
|
||||
endif
|
||||
|
||||
ifeq ($(V),2)
|
||||
|
Loading…
Reference in New Issue
Block a user