Hi,
I wanted to store a simple integer (the "serial number") by using Setting subsystem of nRF Connect SDK 1.8.0.
Settings is based on the internal flash of device (nRF5340).
If I run the Zephyr's settings sample as it is, it works.
When embedding that code in my application (only the part for storing a key-value pair without dedicated handlers), the function settings_save_one returns -2 (ENOENT).
Code is as follow.
void main(void) { int rc; uint32_t val; rc = settings_subsys_init(); if (rc) { LOG_ERR("error initializing settings subsys [%d]", rc); } else { rc = load_immediate_value("sn", &val, sizeof(val)); if (rc == -ENOENT) { val = 12345678; } else if (rc == 0) { printk("<sn> = %u\n", val); } else { LOG_ERR("error loading sn from settings [%d]", rc); } rc = settings_save_one("sn", (const void *)&val, sizeof(val)); if (rc) { LOG_ERR("error saving sn in settings [%d]", rc); } } ... }
Execution gives
"error saving sn in settings [-2]".
Might problem be related with umproper config settings ? This is the prj.conf I'm using
# Build # CONFIG_SIZE_OPTIMIZATIONS=y # Boot CONFIG_BOOT_BANNER=n CONFIG_BOOT_DELAY=0 # Disable features not needed CONFIG_HEAP_MEM_POOL_SIZE=2048 # Console CONFIG_CONSOLE=y # Logging options CONFIG_LOG=y CONFIG_LOG_MAX_LEVEL=4 CONFIG_LOG_DEFAULT_LEVEL=1 CONFIG_LOG_MODE_IMMEDIATE=y # Enable the UART driver CONFIG_SERIAL=y CONFIG_UART_ASYNC_API=y CONFIG_NRFX_UARTE0=y # Thread options CONFIG_TIMESLICING=n # Enable DK LED and Buttons library CONFIG_DK_LIBRARY=y # USB related configs CONFIG_USB_DEVICE_STACK=y CONFIG_USB_DEVICE_MANUFACTURER="COSMED Srl ITALIA" CONFIG_USB_DEVICE_PRODUCT="Cosmed MicroPro" CONFIG_USB_DEVICE_VID=0x1211 CONFIG_USB_DEVICE_PID=0x000B CONFIG_USB_DEVICE_SN="1234509876" CONFIG_USB_DRIVER_LOG_LEVEL_ERR=y CONFIG_USB_DEVICE_LOG_LEVEL_ERR=y CONFIG_USB_REQUEST_BUFFER_SIZE=1024 # Bluetooth LE options CONFIG_BT=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_DEVICE_NAME="Cosmed MicroPro" CONFIG_BT_DEVICE_APPEARANCE=833 CONFIG_BT_MAX_CONN=1 CONFIG_BT_MAX_PAIRED=1 CONFIG_BT_NUS=y CONFIG_BT_NUS_SECURITY_ENABLED=y CONFIG_BT_SETTINGS=y # Flash and Settings options CONFIG_FLASH=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_FLASH_MAP=y CONFIG_NVS=y CONFIG_SETTINGS=y CONFIG_SETTINGS_NVS=y CONFIG_SETTINGS_RUNTIME=y CONFIG_SETTINGS_NONE=y CONFIG_NORDIC_QSPI_NOR=y CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 # LittleFS CONFIG_FILE_SYSTEM=y CONFIG_FILE_SYSTEM_LITTLEFS=y # Stack tuning CONFIG_BT_RX_STACK_SIZE=2200 CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=n CONFIG_BT_HCI_TX_STACK_SIZE=1024 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_MPSL_SIGNAL_STACK_SIZE=1024 CONFIG_MAIN_STACK_SIZE=2048 CONFIG_IDLE_STACK_SIZE=320 CONFIG_ISR_STACK_SIZE=2048 CONFIG_BT_NUS_THREAD_STACK_SIZE=1024 CONFIG_BT_GATT_CACHING=n CONFIG_BT_CTLR_PRIVACY=n CONFIG_BT_CTLR_PHY_2M=n # Drivers and peripherals CONFIG_I2C=y CONFIG_WATCHDOG=n CONFIG_PINMUX=n CONFIG_SPI=n CONFIG_SENSOR=y # Power management CONFIG_PM_DEVICE=y CONFIG_PM=y # Interrupts CONFIG_DYNAMIC_INTERRUPTS=n