mirror of
https://github.com/apache/nuttx.git
synced 2025-01-13 09:49:21 +08:00
configs/olimex-stm32_p407: Add logic to support initialization of the kernel module symbol table installed in the pass2/ directory during the application phase of the build. The kmodule configuration appears to be fully functional.
This commit is contained in:
parent
4becaea8e3
commit
a2428db499
5 changed files with 38 additions and 24 deletions
|
@ -333,12 +333,9 @@ must be is one of the following.
|
|||
kelf configuration, the logic in apps/example/module will wait on power
|
||||
up until the USB FLASH driver has been inserted and initialized.
|
||||
|
||||
STATUS: There is an issue that makes this configuration unusable at the
|
||||
present time: The symbol table is built by apps/examples/module/drivers/Makefile
|
||||
in user space. The problem with that is that the kernel module does reference
|
||||
internal kernel symbols which are not available in the user space build context.
|
||||
A mechanism is needed in the build system to build the symbol table in the
|
||||
context of the kernel. There is currently no way to do that.
|
||||
STATUS:
|
||||
2018-08-07: After some struggle, the configuration appears to be
|
||||
working correctly.
|
||||
|
||||
knsh:
|
||||
|
||||
|
|
|
@ -9,24 +9,10 @@ CONFIG_ARCH_IRQBUTTONS=y
|
|||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_ARMV7M_USEBASEPRI=y
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_BOARD_INITIALIZE=y
|
||||
CONFIG_BOARD_INITTHREAD=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=16717
|
||||
CONFIG_BUILD_PROTECTED=y
|
||||
CONFIG_DEBUG_ASSERTIONS=y
|
||||
CONFIG_DEBUG_BINFMT=y
|
||||
CONFIG_DEBUG_BINFMT_ERROR=y
|
||||
CONFIG_DEBUG_BINFMT_WARN=y
|
||||
CONFIG_DEBUG_CUSTOMOPT=y
|
||||
CONFIG_DEBUG_ERROR=y
|
||||
CONFIG_DEBUG_FEATURES=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_FS_ERROR=y
|
||||
CONFIG_DEBUG_FS_WARN=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEBUG_USB=y
|
||||
CONFIG_DEBUG_USB_ERROR=y
|
||||
CONFIG_DEBUG_USB_WARN=y
|
||||
CONFIG_DEBUG_WARN=y
|
||||
CONFIG_EXAMPLES_MODULE=y
|
||||
CONFIG_EXAMPLES_MODULE_DEVPATH="/dev/sda"
|
||||
CONFIG_EXAMPLES_MODULE_FSREMOVEABLE=y
|
||||
|
@ -34,7 +20,6 @@ CONFIG_FAT_LCNAMES=y
|
|||
CONFIG_FAT_LFN=y
|
||||
CONFIG_FS_FAT=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_HOST_WINDOWS=y
|
||||
CONFIG_INTELHEX_BINARY=y
|
||||
CONFIG_LIB_BOARDCTL=y
|
||||
CONFIG_MAX_TASKS=16
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#define HAVE_USBHOST 1
|
||||
#define HAVE_USBMONITOR 1
|
||||
#define HAVE_ELF 1
|
||||
#define HAVE_MODSYMS 1
|
||||
|
||||
/* Can't support MMC/SD features if mountpoints are disabled or if SDIO support
|
||||
* is not enabled.
|
||||
|
@ -131,6 +132,17 @@
|
|||
# undef HAVE_ELF
|
||||
#endif
|
||||
|
||||
/* Module symbol table */
|
||||
|
||||
#if !defined(CONFIG_EXAMPLES_MODULE) || defined(CONFIG_BUILD_FLAT)
|
||||
# undef HAVE_MODSYMS
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MODSYMS
|
||||
# define MODSYMS_NSYMBOLS_VAR g_mod_nexports
|
||||
# define MODSYMS_SYMTAB_ARRAY g_mod_exports
|
||||
#endif
|
||||
|
||||
/* Olimex-STM32-P407 GPIOs **************************************************/
|
||||
/* LEDs */
|
||||
|
||||
|
|
|
@ -54,6 +54,11 @@
|
|||
# include <nuttx/usb/usbmonitor.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MODULE
|
||||
# include "nuttx/symtab.h"
|
||||
# include "nuttx/lib/modlib.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_STM32_OTGFS
|
||||
# include "stm32_usbhost.h"
|
||||
#endif
|
||||
|
@ -61,6 +66,15 @@
|
|||
#include "stm32.h"
|
||||
#include "olimex-stm32-p407.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_MODSYMS
|
||||
extern const struct symtab_s MODSYMS_SYMTAB_ARRAY[];
|
||||
extern const int MODSYMS_NSYMBOLS_VAR;
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
@ -96,6 +110,12 @@ int stm32_bringup(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MODSYMS
|
||||
/* Install the module symbol table */
|
||||
|
||||
modlib_setsymtab(MODSYMS_SYMTAB_ARRAY, MODSYMS_NSYMBOLS_VAR);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ELF
|
||||
/* Initialize the ELF binary loader */
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
* Name: mod_dumploadinfo
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_DEBUG_INFO) && defined(CONFIG_DEBUG_BINFMT)
|
||||
#ifdef CONFIG_DEBUG_BINFMT_INFO
|
||||
static void mod_dumploadinfo(FAR struct mod_loadinfo_s *loadinfo)
|
||||
{
|
||||
int i;
|
||||
|
|
Loading…
Reference in a new issue