Hi,
I would like to carry the full modem update.
Based on nordic website I need at least 4MBytes of flash for doing a full modem update on the nRF9160:
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/nrf9160/http_update/full_modem_update/README.html
Currently i am using the Winbond W25Q64JV 8MBytes flash memory.
www.digikey.com/.../5803999
My Environment
Device: nRF9160
SDK vesion: v1.9.1
prj.conf
CONFIG_TRUSTED_EXECUTION_NONSECURE=y # General config CONFIG_REBOOT=y CONFIG_RING_BUFFER=y # LOGGNG CONFIG_LOG=y CONFIG_LOG_BUFFER_SIZE=2048 CONFIG_LOG2_MODE_DEFERRED=y CONFIG_CBPRINTF_FP_SUPPORT=y CONFIG_LOG_DEFAULT_LEVEL=4 # Console CONFIG_PRINTK=y CONFIG_UART_CONSOLE=n CONFIG_SHELL=y CONFIG_KERNEL_SHELL=y CONFIG_DEVICE_SHELL=y CONFIG_POSIX_CLOCK=y CONFIG_DATE_SHELL=y CONFIG_SHELL_STACK_SIZE=1024 CONFIG_SHELL_BACKEND_SERIAL=n CONFIG_SHELL_LOG_BACKEND=y CONFIG_SHELL_RTT_LOG_LEVEL_DBG=y CONFIG_SHELL_RTT_INIT_LOG_LEVEL_WRN=y CONFIG_THREAD_MONITOR=y CONFIG_INIT_STACKS=y CONFIG_BOOT_BANNER=n CONFIG_THREAD_NAME=y #enable RTT shell CONFIG_USE_SEGGER_RTT=y CONFIG_SHELL_BACKEND_RTT=y CONFIG_SEGGER_RTT_BUFFER_SIZE_DOWN=32 # UART CONFIG_UART_ASYNC_API=y # Modem library CONFIG_NRF_MODEM_LIB=y CONFIG_MODEM_INFO=y CONFIG_MODEM_KEY_MGMT=y CONFIG_DOWNLOAD_CLIENT=y CONFIG_NEWLIB_LIBC=y # LTE link control CONFIG_LTE_LINK_CONTROL=y CONFIG_LTE_NETWORK_MODE_LTE_M=y CONFIG_LTE_AUTO_INIT_AND_CONNECT=n CONFIG_LTE_LOCK_BANDS=y CONFIG_LTE_LOCK_BAND_MASK="0000000001000000000000000001" # Network CONFIG_NETWORKING=y CONFIG_NET_NATIVE=n CONFIG_NET_SOCKETS=y CONFIG_NET_SOCKETS_OFFLOAD=y # PDN library CONFIG_PDN=y CONFIG_PDN_SYS_INIT=y CONFIG_PDN_DEFAULTS_OVERRIDE=y CONFIG_PDN_DEFAULT_APN="my apn here" CONFIG_PDN_DEFAULT_FAM_IPV4=y CONFIG_PDN_DEFAULT_AUTH_CHAP=y CONFIG_PDN_DEFAULT_USERNAME="my username" CONFIG_PDN_DEFAULT_PASSWORD="my password" # Stacks and heaps CONFIG_HEAP_MEM_POOL_SIZE=16384 # for debug CONFIG_DEBUG_OPTIMIZATIONS=y CONFIG_DEBUG_THREAD_INFO=y CONFIG_OPENOCD_SUPPORT=y CONFIG_MAIN_STACK_SIZE=8192 CONFIG_PRIVILEGED_STACK_SIZE=1024 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096 # Flash CONFIG_SPI=y CONFIG_FLASH=y CONFIG_SPI_NOR=y # I2C CONFIG_I2C_NRFX=y CONFIG_I2C=y #IMU CONFIG_SENSOR=y CONFIG_ICM42605=y CONFIG_ICM42605_TRIGGER_NONE=y # json CONFIG_JSON_LIBRARY=y CONFIG_NEWLIB_LIBC=y CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y # for Zmod library CONFIG_FPU=y CONFIG_FPU_SHARING=y CONFIG_FP_HARDABI=y CONFIG_CPU_LOAD=y CONFIG_CPU_LOAD_LOG_INTERVAL=2000 CONFIG_CPU_LOAD_LOG_PERIODIC=y CONFIG_DATE_TIME=y CONFIG_APP_VERSION="v0.0.4" CONFIG_WARNING_BUZZER=n CONFIG_DEVELOP_MODE=n CONFIG_STAGING_FLG=n # appication fota update configuration CONFIG_FOTA_DOWNLOAD=y CONFIG_FOTA_SOCKET_RETRIES=5 CONFIG_DOWNLOAD_HOST="stg-domain.com" CONFIG_DOWNLOAD_FILE="https://stg-domain.com/app_update.bin" CONFIG_DOWNLOAD_HOST_PROD="prd-domain.com" CONFIG_DOWNLOAD_FILE_PROD="https://prd-domain.com/app_update.bin" #DFU CONFIG_DFU_TARGET=y # MCUBOOT CONFIG_BOOTLOADER_MCUBOOT=y CONFIG_MCUBOOT_IMG_MANAGER=y # Image manager CONFIG_IMG_MANAGER=y CONFIG_IMG_ERASE_PROGRESSIVELY=y # Download client CONFIG_DOWNLOAD_CLIENT_STACK_SIZE=4096 CONFIG_DOWNLOAD_CLIENT_BUF_SIZE=2048 CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZE_1024=y CONFIG_DOWNLOAD_CLIENT_RANGE_REQUESTS=n CONFIG_DOWNLOAD_CLIENT_LOG_LEVEL_DBG=y CONFIG_DOWNLOAD_CLIENT_LOG_HEADERS=y #modem delta update configuartion CONFIG_MODEM_DELTA_UPDATE_VERSION="mfw_nrf9160_1.3.2" CONFIG_DOWNLOAD_DELTA_MODEM_FILE="https://stg-domain.com/mfw_nrf9160_update_from_1.3.1_to_1.3.2.bin" CONFIG_DOWNLOAD_DELTA_MODEM_FILE_PROD="https://prd-domain.com/mfw_nrf9160_update_from_1.3.1_to_1.3.2.bin"
nrf9160_common.dts
/*
* Copyright (c) 2018-2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
/ {
model = "modelname";
compatible = "modelname";
/* These aliases are provided for compatibility with samples */
aliases {
led-pwm = &pwm0;
buzzer-pwm = &pwm1;
};
};
&adc {
status = "okay";
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
/* PWM0 is intended for LED(PWM Serial) control */
&pwm0 {
status = "okay";
ch0-pin = <12>;
};
/* PWM1 is intended for buzzer control */
&pwm1 {
status = "okay";
ch0-pin = <1>;
ch1-pin = <0>;
ch1-inverted;
};
&uart0 {
current-speed = <9600>;
compatible = "nordic,nrf-uarte";
status = "okay";
tx-pin = <15>;
rx-pin = <16>;
};
&i2c1 {
compatible = "nordic,nrf-twim";
status = "okay";
sda-pin = <4>;
scl-pin = <3>;
clock-frequency = <100000>;
};
&spi2 {
compatible = "nordic,nrf-spim";
status = "okay";
sck-pin = <8>;
mosi-pin = <10>;
miso-pin = <9>;
miso-pull-up;
cs-gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
icm42605@0 {
compatible = "invensense,icm42605";
label = "ICM-42605";
spi-max-frequency = <1000000>;
accel-hz = <100>;
gyro-hz = <100>;
accel-fs = <2>;
reg = <0>;
int-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
};
};
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
sck-pin = <27>;
mosi-pin = <28>;
miso-pin = <30>;
cs-gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
w25q64jv: w25q64jv@0 {
compatible = "jedec,spi-nor";
label = "w25q64jv";
size = <0x4000000>; // 32MBit
spi-max-frequency = <40000000>;
reg = <0>;
jedec-id = [ ef 40 17 ]; // 64MBit
wp-gpios = <&gpio0 29 0>;
hold-gpios = <&gpio0 26 0>;
};
};
&timer0 {
status = "okay";
};
&timer1 {
status = "okay";
};
&timer2 {
status = "okay";
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x10000>;
};
slot0_partition: partition@10000 {
label = "image-0";
};
slot0_ns_partition: partition@50000 {
label = "image-0-nonsecure";
};
slot1_partition: partition@80000 {
label = "image-1";
};
slot1_ns_partition: partition@c0000 {
label = "image-1-nonsecure";
};
scratch_partition: partition@f0000 {
label = "image-scratch";
reg = <0x000f0000 0xa000>;
};
storage_partition: partition@fa000 {
label = "storage";
reg = <0x000fa000 0x00006000>;
};
};
};
/ {
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
sram0_s: image_s@20000000 {
/* Secure image memory */
};
sram0_modem: image_modem@20016000 {
/* Modem (shared) memory */
};
sram0_ns: image_ns@20020000 {
/* Non-Secure image memory */
};
};
};
/* Include partition configuration file */
#include "nrf9160_partition_conf.dts"
nrf1960_partition_conf.dts
&slot0_partition {
reg = <0x00010000 0x40000>;
};
&slot0_ns_partition {
reg = <0x00050000 0x30000>;
};
&slot1_partition {
reg = <0x00080000 0x40000>;
};
&slot1_ns_partition {
reg = <0x000c0000 0x30000>;
};
&sram0_s {
reg = <0x20000000 DT_SIZE_K(88)>;
};
&sram0_modem {
reg = <0x20016000 DT_SIZE_K(40)>;
};
&sram0_ns {
reg = <0x20020000 DT_SIZE_K(128)>;
};
device_get_binding for w25q64jv flash memory
flash_dev = DEVICE_DT_GET(DT_NODELABEL(w25q64jv));
the above device binding information got from this ticket link
SPI flash driver w25q64jv was found successfully.
I am getting below error
RTT Error log
rtt:~$ Found SPI flash driver w25q64jv [00:02:30.951,354] <err> pdn: Failed to configure CID 0, err, -1 [00:02:30.951,385] <err> pdn: Failed to configure default CID, err -1
NOTE:
PDN error won't occur in other device with w25q32jv 4Mbytes flash memory.
It is occurring only in device with w25q64jv 8Mbytes flash memory.
am i missing anything in spi3 configuration of device tree?
Please guide to overcome this problem.
Best Regards
Praveen Deshmane