Error 3 on ddr_init when uboot booting

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Error 3 on ddr_init when uboot booting

1,248 Views
SandalWood
Contributor III

 

We designed our custom board based on S32G274A, and the board SDRAM size is 512MB.

So we change the memory size to 0x20000000H in arch/arm/dts/fsl-s32g274a.dtsi in uboot base on bsp31.0_5.4_cd-2020.04.

 

 

diff --git a/arch/arm/dts/fsl-s32g274a.dtsi b/arch/arm/dts/fsl-s32g274a.dtsi
index 0318680155..7a326f4799 100644
--- a/arch/arm/dts/fsl-s32g274a.dtsi
+++ b/arch/arm/dts/fsl-s32g274a.dtsi
@@ -14,16 +14,25 @@
compatible = "fsl,s32g274-simu", "fsl,s32g274", "fsl,s32gen1",
"arm,vexpress,v2p-aarch64", "arm,vexpress";

+#if 0
memory@80000000 {
device_type = "memory";
reg = <0 0x80000000 0 0x80000000>;
};

+
memory@880000000 {
device_type = "memory";
reg = <0x8 0x80000000 0 0x80000000>;
};
+#else
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0 0x80000000 0 0x20000000>;
+ };

+#endif
sram@34000000 {
device_type = "memory";
reg = <0 0x34000000 0 0x800000>;

 

 

 

 

 

But when the uboot starts, we will prompt this err information:

 

 

U-Boot 2020.04-dirty (Dec 06 2022 - 18:30:16 +0800)

CPU: NXP S32G274A rev. 2.1.0
Reset cause: Power-On Reset
Model: NXP S32G2XX
Board: NXP S32G274A-RDB
DRAM: Error 3 on ddr_init
initcall sequence 0000000034104548 failed at call 00000000340a2c58 (err=3)
### ERROR ### Please RESET the board ###

 

 

 

 

 

So we made the following changes and add debugging information in uboot source code.The patch is here:

 

 

diff --git a/arch/arm/dts/fsl-s32g274a.dtsi b/arch/arm/dts/fsl-s32g274a.dtsi
index 0318680155..7a326f4799 100644
--- a/arch/arm/dts/fsl-s32g274a.dtsi
+++ b/arch/arm/dts/fsl-s32g274a.dtsi
@@ -14,16 +14,25 @@
 	compatible = "fsl,s32g274-simu", "fsl,s32g274", "fsl,s32gen1",
 				 "arm,vexpress,v2p-aarch64", "arm,vexpress";
 
+#if 0
 	memory@80000000 {
 		device_type = "memory";
 		reg = <0 0x80000000 0 0x80000000>;
 	};
 
+
 	memory@880000000 {
 		device_type = "memory";
 		reg = <0x8 0x80000000 0 0x80000000>;
 	};
+#else
+
+    memory@80000000 {
+        device_type = "memory";
+        reg = <0 0x80000000 0 0x20000000>;
+    };
 
+#endif
 	sram@34000000 {
 		device_type = "memory";
 		reg = <0 0x34000000 0 0x800000>;
diff --git a/board/freescale/s32-gen1/ddr_init.c b/board/freescale/s32-gen1/ddr_init.c
index 3eedf50866..9e0301946c 100644
--- a/board/freescale/s32-gen1/ddr_init.c
+++ b/board/freescale/s32-gen1/ddr_init.c
@@ -47,22 +47,26 @@ u32 ddr_init(void)
 	for (i = 0; i < ddrss_config_size; i++) {
 		/* Init DDR controller based on selected parameter values */
 		ret = ddrc_init_cfg(&configs[i]);
+		printf("[DEBUG1]i=%d , ret = %d\n",i,ret);
 		if (ret != NO_ERR)
 			return ret;
 
 		/* Setup AXI ports parity */
 		ret = set_axi_parity();
+printf("[DEBUG2]i=%d , ret = %d\n",i,ret);
 		if (ret != NO_ERR)
 			return ret;
 
 		/* Init PHY module */
 		ret = execute_training(&configs[i]);
+printf("[DEBUG3]i=%d , ret = %d\n",i,ret);
 		if (ret != NO_ERR)
 			return ret;
 
 		/* Execute post training setup */
 		ret = post_train_setup((u8)(STORE_CSR_MASK |
 						 INIT_MEM_MASK));
+printf("[DEBUG4]i=%d , ret = %d\n",i,ret);
 		if (ret != NO_ERR)
 			return ret;
 	}
@@ -84,11 +88,16 @@ static u32 execute_training(const struct ddrss_config *config)
 	u32 ret = NO_ERR;
 	/* Apply DQ swapping settings */
 	ret = load_dq_cfg(config->dq_swap_size, config->dq_swap);
+ 
+ printf("[execute_training DEBUG 1 ] ret = %d\n",ret);
+ 
 	if (ret != NO_ERR)
 		return ret;
 
 	/* Initialize phy module */
 	ret = load_register_cfg_16(config->phy_size, config->phy);
+  printf("[execute_training DEBUG 2 ] ret = %d\n",ret);
+  
 	if (ret != NO_ERR)
 		return ret;
 
@@ -96,6 +105,8 @@ static u32 execute_training(const struct ddrss_config *config)
 	writel(UNLOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 	ret = load_phy_image(IMEM_START_ADDR, config->imem_1d_size,
 			     config->imem_1d);
+printf("[execute_training DEBUG 3 ] ret = %d\n",ret);
+                                  
 	if (ret != NO_ERR)
 		return ret;
 	writel(LOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
@@ -104,6 +115,8 @@ static u32 execute_training(const struct ddrss_config *config)
 	writel(UNLOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 	ret = load_phy_image(DMEM_START_ADDR, config->dmem_1d_size,
 			     config->dmem_1d);
+printf("[execute_training DEBUG 4 ] ret = %d\n",ret);
+
 	if (ret != NO_ERR)
 		return ret;
 	writel(LOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
@@ -117,6 +130,7 @@ static u32 execute_training(const struct ddrss_config *config)
 	writel(APBONLY_MICRORESET_CLR_MASK, APBONLY_MICRORESET);
 
 	ret = wait_firmware_execution();
+ printf("[execute_training DEBUG 5 ] ret = %d\n",ret);
 	writel(UNLOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 	if (ret != NO_ERR)
 		return ret;
@@ -130,6 +144,7 @@ static u32 execute_training(const struct ddrss_config *config)
 		writel(UNLOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 		ret = load_phy_image(IMEM_START_ADDR, config->imem_2d_size,
 				     config->imem_2d);
+printf("[execute_training DEBUG 6 ] ret = %d\n",ret);                                               
 		if (ret != NO_ERR)
 			return ret;
 		writel(LOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
@@ -138,6 +153,7 @@ static u32 execute_training(const struct ddrss_config *config)
 		writel(UNLOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 		ret = load_phy_image(DMEM_START_ADDR, config->dmem_2d_size,
 				     config->dmem_2d);
+printf("[execute_training DEBUG 7 ] ret = %d\n",ret);                                               
 		if (ret != NO_ERR)
 			return ret;
 		writel(LOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
@@ -151,6 +167,7 @@ static u32 execute_training(const struct ddrss_config *config)
 		writel(APBONLY_MICRORESET_CLR_MASK, APBONLY_MICRORESET);
 
 		ret = wait_firmware_execution();
+printf("[execute_training DEBUG 8 ] ret = %d\n",ret);   
 		if (ret != NO_ERR)
 			return ret;
 	}
@@ -158,6 +175,8 @@ static u32 execute_training(const struct ddrss_config *config)
 	writel(UNLOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 	/*  Load pie image after training has executed */
 	ret = load_register_cfg_16(config->pie_size, config->pie);
+printf("[execute_training DEBUG 9 ] ret = %d\n",ret); 
+ 
 	writel(LOCK_CSR_ACCESS, MICROCONT_MUX_SEL);
 	return ret;
 }
diff --git a/board/freescale/s32-gen1/ddr_utils.c b/board/freescale/s32-gen1/ddr_utils.c
index a658f80999..98db8317a8 100644
--- a/board/freescale/s32-gen1/ddr_utils.c
+++ b/board/freescale/s32-gen1/ddr_utils.c
@@ -340,7 +340,8 @@ u32 wait_firmware_execution(void)
 
 	while ((mail != TRAINING_OK_MSG) && (ret == NO_ERR)) {
 		ret = get_mail(&mail);
-
+  
+    printf("[wait_firmware_execution DEBUG]ret=%d, mail=%d \n",ret, mail);
 		/* 0x07 means OK, 0xFF means failure */
 		if (mail == TRAINING_FAILED_MSG) {
 			/* Training stage failed */
@@ -378,15 +379,21 @@ static u32 get_mail(u32 *mail)
 	u32 timeout = DEFAULT_TIMEOUT;
 	u32 tmp32 = readl(DDR_PHYA_APBONLY_UCTSHADOWREGS);
 
+    printf("[get_mail DEBUG 1 ]tmp32=%08X \n",tmp32);
+
 	while ((--timeout != 0u) && ((tmp32 & UCT_WRITE_PROT_SHADOW_MASK) !=
 				     UCT_WRITE_PROT_SHADOW_ACK))
 		tmp32 = readl(DDR_PHYA_APBONLY_UCTSHADOWREGS);
 
+
+  printf("[get_mail DEBUG 2 ]tmp32=%08X ,timeout=%X\n",tmp32, timeout);
 	if (timeout == 0u)
 		return TIMEOUT_ERR;
 
 	*mail = readl(DDR_PHYA_APBONLY_UCTWRITEONLYSHADOW);
-
+ 
+  printf("[get_mail DEBUG 3 ]*mail=%X\n",*mail);
+  
 	/* ACK */
 	return ack_mail();
 }
diff --git a/include/common.h b/include/common.h
index 8ffcdae54c..c73c36e4d6 100644
--- a/include/common.h
+++ b/include/common.h
@@ -48,4 +48,15 @@
 # include <env_internal.h>
 #endif
 
+
+
+
+#define DEBUG   
+
+#ifdef DEBUG
+#define _DEBUG	1
+#else
+#define _DEBUG	0
+#endif
+
 #endif	/* __COMMON_H_ */

 

 

 

 

 

After that ,uboot log is here:

 

 

U-Boot 2020.04-dirty (Dec 06 2022 - 19:05:11 +0800)


CPU: NXP S32G274A rev. 2.1.0
Reset cause: Power-On Reset
Model: NXP S32G2XX
Board:  NXP S32G274A-RDB
DRAM:  initcall: 00000000340a2e88
[DEBUG1]i=0 , ret = 0
[DEBUG2]i=0 , ret = 0
[execute_training DEBUG 1 ] ret = 0
[execute_training DEBUG 2 ] ret = 0
[execute_training DEBUG 3 ] ret = 0
[execute_training DEBUG 4 ] ret = 0
[get_mail DEBUG 1 ]tmp32=00000003
[get_mail DEBUG 2 ]tmp32=00000002 ,timeout=F3C7F
[get_mail DEBUG 3 ]*mail=FF
[wait_firmware_execution DEBUG]ret=0, mail=255
[execute_training DEBUG 5 ] ret = 3
[DEBUG3]i=0 , ret = 3
Error 3 on ddr_init
initcall sequence 000000003410a598 failed at call 00000000340a2e88 (err=3)
### ERROR ### Please RESET the board ###

 

 

 

SandalHao_1-1670326011575.png

SandalHao_1-1670326297430.png

 

From the comment information, we can see that the error return value 3 is due to the register DDR_PHYA_APBONLY_UCTWRITEONLYSHADOW's value is 0xFF.

So I want to ask NXP experts, what might be the cause?How do I do?

0 Kudos
Reply
4 Replies

766 Views
shanlan123
Contributor II
Hi SandalWood
have you solve this problem? we have a self designed board with 512MB ddr, but it will be kernel panic when I operation with big file (like cp)
0 Kudos
Reply

1,235 Views
Daniel-Aguirre
NXP TechSupport
NXP TechSupport

Hi,

Prior to this implementation, have you verified that your PHY is inside the specifications needed by your memory?

This interface is delicate, NXP provides a tool that lets you verify the HW implementation to see if the PHY complies with that the memory expects. The "AN12848: S32G2/R45 DDR Initialization and Calibrations" describes this procedure and details on some key steps on the SDRAM implementation.

Please, first let us know if your platform complies with the PHY required by your memory technology.

0 Kudos
Reply

1,231 Views
SandalWood
Contributor III

Sorry,I checked the hardware schematic diagram,the actual DDR chip is MT53E256M32D2DS and only one connect to S32G274A.

My DDR datasheet is here https://media-www.micron.com/-/media/client/global/documents/products/data-sheet/dram/mobile-dram/lo...

SandalWood_2-1670396015050.png

 

In S32DS, the DDR configured parameters are as follows,

SandalWood_0-1670395873706.png

 

But the verification fails.

SandalWood_1-1670395951931.png

 

The specific log is as follows:

####################结果:phy_init ######运行 1 #########################################################
Microsoft Windows [�汾 10.0.19044.1706]
(c) Microsoft Corporation����������Ȩ����

E:\NXP\S32DS.3.4\eclipse>E:\NXP\S32DS.3.4\S32DS\build_tools\msys32\mingw32\bin\python2 E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\scripts\s.py  -l DEBUG -parentPID 6832 "C:/Users/Administrator/AppData/Local/Temp/mem_validation/connect.json" "C:/Users/Administrator/AppData/Local/Temp/mem_validation/test.json" "C:/Users/Administrator/AppData/Local/Temp/mem_validation/phy.json"
DEBUG:test:Initializing test
INFO:test:Using binary E:/NXP/S32DS.3.4/eclipse/mcu_data/processors/S32G274A_Rev2/PlatformSDK_S32XX_2022_03/scripts/ddrv/binaries/S32G2_M7_A53.bin
DEBUG:backend:Executing: set remotetimeout 60000
DEBUG:backend:Executing: set debug remote 0
DEBUG:backend:Executing: set interactive-mode off
DEBUG:backend:Executing: set pagination off
DEBUG:backend:Executing: set print repeats 0
DEBUG:backend:Executing: disconnect
DEBUG:utils.serial_lib:App path E:/NXP/S32DS.3.4/eclipse/mcu_data/processors/S32G274A_Rev2/PlatformSDK_S32XX_2022_03/scripts/ddrv/binaries/S32G2_M7_A53.bin
DEBUG:utils.serial_lib:HEADER :
['0xd8', '0x0', '0x0', '0x60', '0x0', '0x0', '0x30', '0x34', '0x0', '0x0', '0x30', '0x34', '0x50', '0x2e', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
DEBUG:utils.serial_lib:establishing bootrom connection
DEBUG:utils.serial_lib:Communication with the board failed. Restarting the device..
DEBUG:utils.serial_lib:establishing master connection
DEBUG:utils.serial_lib:establishing bootrom connection
INFO:utils.serial_lib:Writing firmware.
DEBUG:utils.serial_lib:11856
DEBUG:utils.serial_lib:1 / 3
DEBUG:utils.serial_lib:2 / 3
DEBUG:utils.serial_lib:3 / 3
INFO:utils.serial_lib:Writing firmware completed.
DEBUG:utils.serial_lib:establishing master connection
DEBUG:utils.serial_lib:Requested ACK
DEBUG:utils.serial_lib:Received ACK
DEBUG:gdbcommands.commands:----------------------------------
DEBUG:gdbcommands.commands:C:\Users\Administrator\AppData\Local\Temp\mem_validation\phy.json
INFO:gdbcommands.commands:Preparing DDR training data
DEBUG:utils.serial_lib:Read value FEDC8855
DEBUG:backend:[ SerialLib ] Writing file to memory
DEBUG:backend:> From File: E:/NXP/S32DS.3.4/eclipse/mcu_data/processors/S32G274A_Rev2/PlatformSDK_S32XX_2022_03/scripts/ddrv/binaries/phy/g2_phy.bin
DEBUG:backend:> To address: 0x34000000
DEBUG:backend:[ SerialLib ] Writing file to memory
DEBUG:backend:> From File: C:\Users\Administrator\AppData\Local\Temp\mem_validation\dcd.bin
DEBUG:backend:> To address: 0x34000260
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.function
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.result_status
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_logged_items
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.log_addr
DEBUG:backend:> Value: 876675072
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.log_types
DEBUG:backend:> Value: 1023
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.log_upper_addr_limit
DEBUG:backend:> Value: 876744704
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.swap_enable
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.ccsr_phy1_addr
DEBUG:backend:> Value: 1077411840
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.ccsr_phy2_addr
DEBUG:backend:> Value: 23068672
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.reg_map_compression_ver
DEBUG:backend:> Value: 3
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.imem_fw_source_1d
DEBUG:backend:> Value: 872759296
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.imem_fw_destination_1d
DEBUG:backend:> Value: 327680
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.imem_fw_size_1d
DEBUG:backend:> Value: 32428
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dmem_fw_source_1d
DEBUG:backend:> Value: 872792320
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dmem_fw_destination_1d
DEBUG:backend:> Value: 344064
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dmem_fw_size_1d
DEBUG:backend:> Value: 1660
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.imem_fw_source_2d
DEBUG:backend:> Value: 872796160
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.imem_fw_destination_2d
DEBUG:backend:> Value: 327680
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.imem_fw_size_2d
DEBUG:backend:> Value: 25504
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dmem_fw_source_2d
DEBUG:backend:> Value: 872824832
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dmem_fw_destination_2d
DEBUG:backend:> Value: 344064
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dmem_fw_size_2d
DEBUG:backend:> Value: 1404
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.train_2d
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.ctrl_id
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dram_type
DEBUG:backend:> Value: 2
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dimm_type
DEBUG:backend:> Value: 4
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.frequency
DEBUG:backend:> Value: 1600
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.hard_macro_ver
DEBUG:backend:> Value: 4
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_dbyte
DEBUG:backend:> Value: 4
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_active_dbyte_dfi0
DEBUG:backend:> Value: 2
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_anib
DEBUG:backend:> Value: 10
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_rank_dfi0
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_rank_dfi1
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_pstates
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.pll_bypass
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dfi_freq_ratio
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.read_dbi_enable
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dfi1_exists
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dram_data_width
DEBUG:backend:> Value: 16
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dram_byte_swap
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.ext_cal_res_val
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.tx_slew_rise_dq
DEBUG:backend:> Value: 15
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.tx_slew_fall_dq
DEBUG:backend:> Value: 15
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.tx_slew_rise_ac
DEBUG:backend:> Value: 15
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.tx_slew_fall_ac
DEBUG:backend:> Value: 15
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.odt_impedance
DEBUG:backend:> Value: 60
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.tx_impedance
DEBUG:backend:> Value: 40
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.atx_impedance
DEBUG:backend:> Value: 40
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mem_alert_en
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mem_alert_pu_imp
DEBUG:backend:> Value: 5
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mem_alert_vref_level
DEBUG:backend:> Value: 41
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mem_alert_sync_bypass
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.cal_interval
DEBUG:backend:> Value: 9
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.cal_once
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dis_dyn_adr_tri
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.is2t_timing
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.d4rx_preamble_length
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.d4tx_preamble_length
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.decision_feedback_eq
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.phy_odt_impedance
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.phy_drv_impedance
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.msg_misc
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.hdt_ctrl
DEBUG:backend:> Value: 255
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.cs_present
DEBUG:backend:> Value: 3
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.cs_present_d0
DEBUG:backend:> Value: 3
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.cs_present_d1
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.phy_vref
DEBUG:backend:> Value: 24
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.dfi_mrl_margin
DEBUG:backend:> Value: 3
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.addr_mirror
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.wr_odt_pat_rank0
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.wr_odt_pat_rank1
DEBUG:backend:> Value: 2
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.wr_odt_pat_rank2
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.wr_odt_pat_rank3
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rd_odt_pat_rank0
DEBUG:backend:> Value: 32
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rd_odt_pat_rank1
DEBUG:backend:> Value: 16
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rd_odt_pat_rank2
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rd_odt_pat_rank3
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.d4_misc
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.disabled_dbyte
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.sequence_ctrl
DEBUG:backend:> Value: 4895
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.sequence_ctrl_2d
DEBUG:backend:> Value: 97
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park0
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park1
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park2
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park3
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park4
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park5
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park6
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rtt_nom_wr_park7
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.share_2d_vref_result
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.delay_weight_2d
DEBUG:backend:> Value: 128
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.voltage_weight_2d
DEBUG:backend:> Value: 32
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr0
DEBUG:backend:> Value: 12292
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr1
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr2
DEBUG:backend:> Value: 48
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr3
DEBUG:backend:> Value: 1088
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr4
DEBUG:backend:> Value: 4608
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr5
DEBUG:backend:> Value: 5696
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.mr6
DEBUG:backend:> Value: 4096
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.atx_delay
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.atx_delay_en
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.rx2d_train_opt
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.tx2d_train_opt
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.train_opt_en
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.train_count_1d
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.train_count_2d
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_imem_fw_source
DEBUG:backend:> Value: 873095168
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_imem_fw_destination
DEBUG:backend:> Value: 327680
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_imem_fw_size
DEBUG:backend:> Value: 22496
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_dmem_fw_source
DEBUG:backend:> Value: 873117664
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_dmem_fw_destination
DEBUG:backend:> Value: 344576
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_dmem_fw_size
DEBUG:backend:> Value: 6900
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_test
DEBUG:backend:> Value: 5
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_subtest
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_out_addr_hi
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_out_addr_lo
DEBUG:backend:> Value: 873124824
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_cs
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_r_count
DEBUG:backend:> Value: 32
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_l_count
DEBUG:backend:> Value: 16
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_x_count
DEBUG:backend:> Value: 32
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_seed
DEBUG:backend:> Value: 65535
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_prbs
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_byte
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_lane
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.diag_test_addr
DEBUG:backend:> Value: 4096
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_use_broadcast_mr
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_ca_terminating_rank_ch_a
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_ca_terminating_rank_ch_b
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr1
DEBUG:backend:> Value: 84
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr2
DEBUG:backend:> Value: 45
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr3
DEBUG:backend:> Value: 51
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr4
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr11
DEBUG:backend:> Value: 102
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr12
DEBUG:backend:> Value: 77
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr13
DEBUG:backend:> Value: 8
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr14
DEBUG:backend:> Value: 79
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr16
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr17
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr22
DEBUG:backend:> Value: 4
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_mr24
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_wdqsext
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_lp4x_mode
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_misc
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lp4_ca_train_opt_en
DEBUG:backend:> Value: 1
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.log_io_addr
DEBUG:backend:> Value: 876748800
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.log_io_upper_addr_limit
DEBUG:backend:> Value: 877797376
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.num_logged_io_items
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lane_0_dq_map
DEBUG:backend:> Value: 1985229328
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lane_1_dq_map
DEBUG:backend:> Value: 1985229328
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lane_2_dq_map
DEBUG:backend:> Value: 1985229328
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.lane_3_dq_map
DEBUG:backend:> Value: 1985229328
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: g_params.static_refresh_rate
DEBUG:backend:> Value: 0
DEBUG:backend:[ SerialLib ] Writing file to memory
DEBUG:backend:> From File: E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\binaries\firmware\lpddr4_pmu_train_dmem.bin
DEBUG:backend:> To address: 0x3405c100
DEBUG:backend:[ SerialLib ] Writing file to memory
DEBUG:backend:> From File: E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\binaries\firmware\lpddr4_pmu_train_imem.bin
DEBUG:backend:> To address: 0x34054000
DEBUG:backend:[ SerialLib ] Writing file to memory
DEBUG:backend:> From File: E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\binaries\firmware\lpddr4_2d_pmu_train_dmem.bin
DEBUG:backend:> To address: 0x34064000
DEBUG:backend:[ SerialLib ] Writing file to memory
DEBUG:backend:> From File: E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\binaries\firmware\lpddr4_2d_pmu_train_imem.bin
DEBUG:backend:> To address: 0x3405d000
DEBUG:backend:[ SerialLib ] Writing symbol
DEBUG:backend:> Symbol: TEST_OUT.appState
DEBUG:backend:> Value: 2857740885
INFO:gdbcommands.commands:Completed DDR data preparation
INFO:gdbcommands.commands:Running DDR training
DEBUG:utils.serial_lib:Read value AA55AA55
DEBUG:backend:[ SerialLib ] Reading symbol
DEBUG:backend:> Symbol: g_params.num_logged_items
DEBUG:utils.serial_lib:Read value 00000001
DEBUG:backend:[ SerialLib ] Reading memory
DEBUG:backend:> From address: 0x34410000
DEBUG:backend:> Size: 0x800
DEBUG:backend:> Access size: 1
DEBUG:utils.serial_lib:Read value FF000000000000000000000000000000000000000000000000
DEBUG:backend:[ SerialLib ] Reading memory
DEBUG:backend:> From address: 0x34410800
DEBUG:backend:> Size: 0x800
DEBUG:backend:> Access size: 1
DEBUG:utils.serial_lib:Read value 00000000000000000000000000000000000000000000000000
DEBUG:utils.serial_lib:waiting for one of the states : ['APP_WAIT_FOR_INPUT'] received : APP_CONFIG_RECEIVED
DEBUG:utils.serial_lib:Read value FEDC8855
DEBUG:backend:[ SerialLib ] Reading symbol
DEBUG:backend:> Symbol: g_params.result_status
DEBUG:utils.serial_lib:Read value 00000003
INFO:gdbcommands.commands:Training finished with code : 3
INFO:gdbcommands.commands:Collecting logs
DEBUG:backend:[ SerialLib ] Reading symbol
DEBUG:backend:> Symbol: g_params.num_logged_items
DEBUG:utils.serial_lib:Read value 00000001
DEBUG:backend:[ SerialLib ] Reading memory
DEBUG:backend:> From address: 0x34410000
DEBUG:backend:> Size: 0x800
DEBUG:backend:> Access size: 1
DEBUG:utils.serial_lib:Read value FF000000000000000000000000000000000000000000000000
DEBUG:backend:[ SerialLib ] Reading memory
DEBUG:backend:> From address: 0x34410800
DEBUG:backend:> Size: 0x800
DEBUG:backend:> Access size: 1
DEBUG:utils.serial_lib:Read value 00000000000000000000000000000000000000000000000000
Firmware has failed (firmware completed)

ERROR:test:Traceback (most recent call last):
  File "E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\scripts/test.py", line 100, in run
    self.prepare_app()
  File "E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\scripts/test.py", line 147, in prepare_app
    phy.execute_operation(CwPhy.OP_FULL_INIT)
  File "E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\scripts/gdbcommands/commands.py", line 961, in execute_operation
    self.__execute_algorithm()
  File "E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\scripts/gdbcommands/commands.py", line 843, in __execute_algorithm
    self.display_error_message(result_status)
  File "E:\NXP\S32DS.3.4\eclipse\mcu_data\processors\S32G274A_Rev2\PlatformSDK_S32XX_2022_03\scripts\ddrv\scripts/gdbcommands/commands.py", line 1385, in display_error_message
    raise PhyTrainingException(self.get_error_message(result_status))
PhyTrainingException: DDR PHY: 1D training failed

****DONE****
DEBUG:backend:Executing: quit

 

0 Kudos
Reply

1,219 Views
Daniel-Aguirre
NXP TechSupport
NXP TechSupport

Hi,

As you are mentioning, it seems the problem is related to the HW implementation (or PHY).

Have you verified that you can pass this verification with different settings related to your specific design? Mainly the impedance and drive strength (seeing at first sight that memory configuration is as needed).

If the verification cannot be passed, we cannot confirm nor deny that your implementation has a problem with SW.

0 Kudos
Reply