I would like to use nvs_read and nvs_write in aws_fota app to store a mode value inside, but it doesn't work. Any help?
I added the following lines to aws_fota prj.conf
<prj.conf>
CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_MPU_ALLOW_FLASH_WRITE=y
I added the following code to aws_fota maiin.c
#include <drivers/flash.h> #include <storage/flash_map.h> #include <fs/nvs.h> #define NVS_ID_MODE 1 int8_t init_nvs_sys() { u8_t rc; struct flash_pages_info info; /* define the nvs file system by settings with: * sector_size equal to the pagesize, * 3 sectors * starting at FLASH_AREA_OFFSET(storage) */ nvs_fs.offset = FLASH_AREA_OFFSET(storage); rc = flash_get_page_info_by_offs( device_get_binding(DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL), nvs_fs.offset, &info); if (rc) { printk("Unable to get page info"); return -1; } nvs_fs.sector_size = info.size; nvs_fs.sector_count = 3U; rc = nvs_init(&nvs_fs, DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL); if (rc) { printk("Flash Init failed\n"); return -1; } } void main(void) { int err; /***************/ /* Write and read params */ int ret; u8_t mode; ret = init_nvs_sys(); if (ret < 0) { printk("Error: init_nvs_sys\n"); } // Write mode mode = 0; if(nvs_write(&nvs_fs, NVS_ID_MODE, &mode, 1) < 0){ // This causes Error -22 printk("Error: nvs_write NVS_ID_MODE\n"); } mode = 2; // Read mode ret = nvs_read(&nvs_fs, NVS_ID_MODE, &mode, 1); printk( "nvs_read ret = %d, id = %d, mode = %u\n", ret, NVS_ID_MODE, mode); if (ret < 0) { printk("Error: nvs_read NVS_ID_MODE\n"); } . . .
I have inspected a while and it seems that this line in prj.conf causes the issue.
CONFIG_SETTING=y
Can you tell me how to solve this issue?