Hi everyone,
I working on a projetc that i have to use the NVS lib to store several user data on external flash, but i need put FOTA capability in this firmware and when i´m included the needed configs on prj.conf and created the thread that process a connection with nRFClud, the drive of spi flash memory seems that don´t worked propertly. This issue occurs on my proprietrary board but don´t occurs on 9160DK despiste that i´ve use same parts used in DK, but with a diferent pinout in flash IC
here is my overlay:
arduino_spi: &spi3 {
compatible = "nordic,nrf-spim";
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0xb000 0x1000>;
interrupts = <0xb 0x1>;
max-frequency = <0x7a1200>;
easydma-maxcnt-bits = <0xd>;
status = "okay";
cs-gpios = <&arduino_header 0x10 0x1>, <&gpio0 0x1C 0x1>;
pinctrl-0 = <&spi3_default>;
pinctrl-1 = <&spi3_sleep>;
pinctrl-names = "default", "sleep";
mx25r64: mx25r6435f@1 {
compatible = "jedec,spi-nor";
status = "okay";
reg = <0x1>;
spi-max-frequency = <0x7a1200>;
jedec-id = [ C2 28 17 ];
sfdp-bfp = [ E5 20 F1 FF FF FF FF 03 44 EB 08 6B 08 3B 04 BB EE FF FF FF FF FF 00 FF FF FF 00 FF 0C 20 0F 52 10 D8 00 FF 23 72 F5 00 82 ED 04 CC 44 83 48 44 30 B0 30 B0 F7 C4 D5 5C 00 BE 29 FF F0 D0 FF FF ];
size = <0x4000000>;
has-dpd;
t-enter-dpd = <0x2710>;
t-exit-dpd = <0x88b8>;
wp-gpios = <&gpio0 26 0x1>;
reset-gpios = <&gpio0 29 0x1>;
mxicy,mx25r-power-mode = "high-performance";
};
};
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 11)>; //6 para ftdi // 11 para 52X
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 10)>; //5 para ftdi // 10 para 52X
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 11)>,
<NRF_PSEL(UART_RX, 0, 10)>;
low-power-enable;
};
};
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 30)>,
<NRF_PSEL(SPIM_MISO, 0, 27)>,
<NRF_PSEL(SPIM_MOSI, 0, 31)>;
nordic,drive-mode = <NRF_DRIVE_H0H1>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 30)>,
<NRF_PSEL(SPIM_MISO, 0, 27)>,
<NRF_PSEL(SPIM_MOSI, 0, 31)>;
low-power-enable;
};
};
};
&i2c2 {
status = "disabled";
};
&pwm0 {
status = "disabled";
};
&adc {
status = "disabled";
};
/* Enable the external flash device (required) */
&mx25r64 {
status = "okay";
};
/* Configure partition manager to use mx25r64 as the external flash device */
/ {
chosen {
nordic,pm-ext-flash = &mx25r64;
};
};
/* Enable high performance mode to increase write/erase performance */
&mx25r64 {
mxicy,mx25r-power-mode = "high-performance";
};
and here is my prj.conf:
#============================================================================ # BOOT OPTIONS #============================================================================ CONFIG_BOOT_BANNER=y # MCUBOOT CONFIG_BOOTLOADER_MCUBOOT=y CONFIG_IMG_MANAGER=y CONFIG_MCUBOOT_IMG_MANAGER=y CONFIG_STREAM_FLASH_ERASE=y #============================================================================ # LOGGING #============================================================================ CONFIG_LOG=y CONFIG_LOG_BACKEND_UART=y CONFIG_LOG_BACKEND_RTT=n CONFIG_USE_SEGGER_RTT=n CONFIG_LOG_MODE_DEFERRED=y CONFIG_LOG_BUFFER_SIZE=4096 CONFIG_PRINTK=y #============================================================================ # PRINTF / FPU #============================================================================ # Enable print float on console CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y CONFIG_FPU=y #============================================================================ # UART / AT COMMANDS #============================================================================ CONFIG_SERIAL=y CONFIG_UART_ASYNC_API=y CONFIG_AT_HOST_LIBRARY=n CONFIG_UART_INTERRUPT_DRIVEN=y # AT monitor CONFIG_AT_MONITOR_HEAP_SIZE=2048 CONFIG_AT_HOST_STACK_SIZE=2048 #============================================================================ # NEWLIB #============================================================================ CONFIG_NEWLIB_LIBC=y #============================================================================ # NETWORKING #============================================================================ CONFIG_NETWORKING=y CONFIG_NET_NATIVE=y ##Sob analise - pos FOTA, original = n. CONFIG_NET_SOCKETS_OFFLOAD=y CONFIG_NET_SOCKETS=y CONFIG_NET_SOCKETS_POSIX_NAMES=y #============================================================================ # MEMORY / STACKS #============================================================================ CONFIG_MAIN_STACK_SIZE=16384 CONFIG_HEAP_MEM_POOL_SIZE=24576 #CONFIG_HEAP_MEM_POOL_SIZE=8192 CONFIG_ISR_STACK_SIZE=8192 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192 #============================================================================ # MODEM LIBRARY / MODEM CONFIG #============================================================================ CONFIG_NRF_MODEM_LIB=y CONFIG_NRF_MODEM_LIB_TRACE=n CONFIG_EVENTS=y CONFIG_RESET_ON_FATAL_ERROR=y #============================================================================ # LTE LINK CONTROL / NETWORK #============================================================================ CONFIG_LTE_LINK_CONTROL=y CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT=y #============================================================================ # PSM CONFIG #============================================================================ CONFIG_LTE_PSM_REQ=y CONFIG_LTE_PSM_REQ_FORMAT_SECONDS=y CONFIG_LTE_PSM_REQ_RAT_SECONDS=0 CONFIG_LTE_PSM_REQ_RPTAU_SECONDS=14400 #============================================================================ # MQTT #============================================================================ CONFIG_MQTT_LIB=y CONFIG_MQTT_CLEAN_SESSION=y CONFIG_MQTT_KEEPALIVE=120 CONFIG_MQTT_MESSAGE_BUFFER_SIZE=4096 CONFIG_MQTT_PAYLOAD_BUFFER_SIZE=4096 CONFIG_MQTT_LOG_LEVEL_DBG=y #============================================================================ # FLASH / NVS #============================================================================ CONFIG_FLASH=y CONFIG_NVS=y CONFIG_FLASH_MAP=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_STREAM_FLASH=y CONFIG_MPU_ALLOW_FLASH_WRITE=y CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=n #============================================================================ # DATE / TIME #============================================================================ CONFIG_DATE_TIME=y CONFIG_DATE_TIME_AUTO_UPDATE=y CONFIG_DATE_TIME_NTP=y CONFIG_DATE_TIME_MODEM=n CONFIG_DATE_TIME_UPDATE_INTERVAL_SECONDS=86400 #============================================================================ # SPI #============================================================================ CONFIG_SPI=y CONFIG_SPI_NOR=y CONFIG_SPI_NOR_SFDP_DEVICETREE=y CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 CONFIG_SPI_COMPLETION_TIMEOUT_TOLERANCE=10000 #============================================================================ # TLS #============================================================================ CONFIG_MQTT_LIB_TLS=y CONFIG_MODEM_KEY_MGMT=y #============================================================================ # FTP #============================================================================ CONFIG_FTP_CLIENT=y #============================================================================ # NRF CLOUD E FOTA #============================================================================ CONFIG_NRF_CLOUD_MQTT=y # Habilita stack nRF Cloud MQTT CONFIG_NRF_CLOUD_FOTA=y # Habilita FOTA CONFIG_NRF_CLOUD_SEND_DEVICE_STATUS=y CONFIG_NRF_CLOUD_SEND_DEVICE_STATUS_NETWORK=y CONFIG_NRF_CLOUD_SEND_DEVICE_STATUS_SIM=y CONFIG_NRF_CLOUD_SEND_SERVICE_INFO_FOTA=y CONFIG_NRF_CLOUD_SEND_SERVICE_INFO_UI=y # nRF Cloud alert/log CONFIG_NRF_CLOUD_ALERT=y CONFIG_NRF_CLOUD_LOG_DIRECT=y CONFIG_NRF_CLOUD_LOG_OUTPUT_LEVEL=3 #============================================================================ # DOWNLOAD CLIENT #============================================================================ CONFIG_DOWNLOAD_CLIENT=y CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZE_1024=y CONFIG_DOWNLOAD_CLIENT_STACK_SIZE=4096 CONFIG_DOWNLOAD_CLIENT_BUF_SIZE=2300 CONFIG_DOWNLOAD_CLIENT_MAX_HOSTNAME_SIZE=128 #============================================================================ # LOCATION SERVICES #============================================================================ CONFIG_LOCATION=y CONFIG_LOCATION_METHOD_GNSS=y CONFIG_LOCATION_METHOD_CELLULAR=y CONFIG_NRF_CLOUD_AGNSS=y CONFIG_NRF_CLOUD_LOCATION=y CONFIG_MODEM_INFO=y CONFIG_MODEM_INFO_ADD_NETWORK=y CONFIG_NRF_CLOUD_PGPS=y CONFIG_NRF_CLOUD_PGPS_REPLACEMENT_THRESHOLD=4 CONFIG_NRF_CLOUD_PGPS_REQUEST_UPON_INIT=y CONFIG_LTE_LINK_CONTROL=y #============================================================================ # SETTINGS #============================================================================ CONFIG_SETTINGS=y CONFIG_SETTINGS_FCB=y CONFIG_FCB=y #============================================================================ # REDE - CONFIGS EXTRAS #============================================================================ CONFIG_NET_MGMT_EVENT_STACK_SIZE=2048 CONFIG_NET_CONNECTION_MANAGER_MONITOR_STACK_SIZE=1024 CONFIG_NET_IPV4=y CONFIG_NET_IPV6=y CONFIG_NET_IPV6_NBR_CACHE=n CONFIG_NET_IPV6_MLD=n CONFIG_NET_CONNECTION_MANAGER=y CONFIG_NRF_MODEM_LIB_ON_FAULT_APPLICATION_SPECIFIC=y CONFIG_NRF_MODEM_LIB_NET_IF=y CONFIG_NRF_MODEM_LIB_NET_IF_AUTO_DOWN=y CONFIG_NRF_MODEM_LIB_NET_IF_DOWN_DEFAULT_LTE_DISCONNECT=y
Finally, he is that i receive on log:
[00:00:00.252,716] <ESC>[1;31m<err> spi_nor: Device id 00 00 00 does not match config c2 28 17<ESC>[0m<CR><LF>
*** Booting nRF Connect SDK 3758bcbfa5cd ***<CR><LF>
[00:00:00.258,331] <ESC>[0m<inf> fs_nvs: 6 Sectors of 4096 bytes<ESC>[0m<CR><LF>
[00:00:00.258,331] <ESC>[0m<inf> fs_nvs: alloc wra: 0, e90<ESC>[0m<CR><LF>
[00:00:00.258,361] <ESC>[0m<inf> fs_nvs: data wra: 0, 518<ESC>[0m<CR><LF>
[00:00:00.258,392] <ESC>[1;31m<err> PluviDB_IoT: Flash ex device mx25r6435f@1 is not ready<LF>
<ESC>[0m<CR><LF>
[00:00:00.258,392] <ESC>[0m<inf> PluviDB_IoT: Initializing modem library.<ESC>[0m<CR><LF>
Inicializando a nRF Cloud teste A<CR><LF>
Inicializando First Boot nRF Cloud<CR><LF>
[00:00:00.544,403] <ESC>[0m<inf> PluviDB_IoT: match<LF>
<ESC>[0m<CR><LF>
[00:00:00.544,403] <ESC>[0m<inf> PluviDB_IoT: Connecting to LTE network.<ESC>[0m<CR><LF>
[00:00:00.835,540] <ESC>[0m<dbg> PluviDB_IoT: get_bat_voltage: VBAT: 3.696 V<ESC>[0m<CR><LF>
[00:00:00.844,512] <ESC>[1;31m<err> PluviDB_IoT: AT XMonitor full raw: %XMONITOR: 0<CR><LF>
OK<CR><LF>
.<CR><LF>
Note the first line. This only occurs on my proprietary board.
Some help are welcome.