# # For a description of the syntax of this configuration file, # see the file kconfig-language.txt in the NuttX tools repository. # # These are library functions that may be overriden by architecture- # specific implementations. Not all architectures support implementations # for every library function. menu "Architecture-Specific Support" config ARCH_LOWPUTC bool "Low-level console output" default "y" ---help--- architecture supports low-level, boot time console output config ARCH_ROMGETC bool "Support for ROM string access" default n ---help--- In Harvard architectures, data accesses and instruction accesses occur on different buses, perhaps concurrently. All data accesses are performed on the data bus unless special machine instructions are used to read data from the instruction address space. Also, in the typical MCU, the available SRAM data memory is much smaller that the non-volatile FLASH instruction memory. So if the application requires many constant strings, the only practical solution may be to store those constant strings in FLASH memory where they can only be accessed using architecture-specific machine instructions. If ARCH_ROMGETC is defined, then the architecture logic must export the function up_romgetc(). up_romgetc() will simply read one byte of data from the instruction space. If ARCH_ROMGETC is selected, certain C stdio functions are effected: (1) All format strings in printf, fprintf, sprintf, etc. are assumed to lie in FLASH (string arguments for %s are still assumed to reside in SRAM). And (2), the string argument to puts and fputs is assumed to reside in FLASH. Clearly, these assumptions may have to modified for the particular needs of your environment. There is no "one-size-fits-all" solution for this problem. # Default settings for C library functions that may be replaced with # architecture-specific versions. config LIBC_ARCH_MEMCPY bool default n config LIBC_ARCH_MEMCMP bool default n config LIBC_ARCH_MEMMOVE bool default n config LIBC_ARCH_MEMSET bool default n config LIBC_ARCH_STRCHR bool default n config LIBC_ARCH_STRCMP bool default n config LIBC_ARCH_STRCPY bool default n config LIBC_ARCH_STRLCPY bool default n config LIBC_ARCH_STRNCPY bool default n config LIBC_ARCH_STRLEN bool default n config LIBC_ARCH_STRNLEN bool default n config LIBC_ARCH_ELF bool default n config LIBC_ARCH_ELF_64BIT bool default n depends on LIBC_ARCH_ELF config LIBM_ARCH_CEIL bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_FLOOR bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_NEARBYINT bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_RINT bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_ROUND bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_TRUNC bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_CEILF bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_FLOORF bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_NEARBYINTF bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_RINTF bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_ROUNDF bool default n depends on LIBM && ARCH_CORTEXM33 config LIBM_ARCH_TRUNCF bool default n depends on LIBM && ARCH_CORTEXM33 # One or more the of above may be selected by architecture specific logic if ARCH_ARM source libs/libc/machine/arm/Kconfig endif if ARCH_RISCV source libs/libc/machine/risc-v/Kconfig endif if ARCH_SIM source libs/libc/machine/sim/Kconfig endif if ARCH_X86 source libs/libc/machine/x86/Kconfig endif if ARCH_XTENSA source libs/libc/machine/xtensa/Kconfig endif endmenu # Architecture-Specific Support