pdn: Failed to configure CID 0, err, -1 after upgrading the SPI flash memory

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

Related