This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMSIDK574:AM5749 custom board u-boot problem

Part Number: TMDSIDK574

Hello.

I have a custom board based on TMDSIDK574 (AM5749).

There is a problem that the u-boot is stopped while it is in progress. I am asking for help to solve this problem.

The circuit diagram and related materials are attached.

-  schematic

3465.ti cpu-am5749abzxea-20201229(fi.pdf5531.ti cpu-am5749abzxea-base-0201-a5.pdf

- pinmux changes

5140.TIAM57x-pinmux-config.xlsx

- custom board boot log message

4035.am57_jmt-COM9-115200-8N1-2021-10-29_1728.log

- emif tool custom board file

7571.EMIF_RegisterConfig-JMTECH - 1866.xlsm

- custom board eeprom skip

From d8a87913088b840921c52b5b0896c577acd3b0be Mon Sep 17 00:00:00 2001
From: wjchoi <red_ice@naver.com>
Date: 수, 16 6월 2021 16:27:34 +0900
Subject: [PATCH] not eeprom support

---
 board/ti/common/board_detect.c |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
index e150d23..8845aba 100644
--- a/board/ti/common/board_detect.c
+++ b/board/ti/common/board_detect.c
@@ -174,6 +174,9 @@
 
 int __maybe_unused ti_i2c_eeprom_am_set(const char *name, const char *rev)
 {
+#if 1 // wj@dev210506 - eeprom board info setting
+	return 0;
+#else
 	struct ti_common_eeprom *ep;
 
 	if (!name || !rev)
@@ -194,10 +197,36 @@
 
 already_set:
 	return 0;
+#endif
 }
 
 int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
 {
+#if 1 // wj@dev210506 - eeprom board info setting
+	struct ti_common_eeprom *ep;
+
+	ep = TI_EEPROM_DATA;
+#ifndef CONFIG_SPL_BUILD
+	if (ep->header == TI_EEPROM_HEADER_MAGIC)
+		return 0; /* EEPROM has already been read */
+#endif
+
+	/* Initialize with a known bad marker for i2c fails.. */
+	ep->header = TI_DEAD_EEPROM_MAGIC;
+	ep->name[0] = 0x0;
+	ep->version[0] = 0x0;
+	ep->serial[0] = 0x0;
+	ep->config[0] = 0x0;
+
+	ep->header = TI_EEPROM_HEADER_MAGIC;
+	strlcpy(ep->name, "AM574IDK", TI_EEPROM_HDR_NAME_LEN + 1);
+	ti_eeprom_string_cleanup(ep->name);
+	strlcpy(ep->version, "1.3D", TI_EEPROM_HDR_REV_LEN + 1);
+	ti_eeprom_string_cleanup(ep->version);
+	strlcpy(ep->serial, "23204P770087", TI_EEPROM_HDR_SERIAL_LEN + 1);
+	ti_eeprom_string_cleanup(ep->serial);	
+	return 0;
+#else
 	int rc;
 	struct ti_am_eeprom am_ep;
 	struct ti_common_eeprom *ep;
@@ -240,6 +269,7 @@
 	       TI_EEPROM_HDR_NO_OF_MAC_ADDR * TI_EEPROM_HDR_ETH_ALEN);
 
 	return 0;
+#endif
 }
 
 int __maybe_unused ti_emmc_boardid_get(void)
@@ -557,11 +587,15 @@
 
 bool __maybe_unused board_ti_is(char *name_tag)
 {
+#if 1 // wj@dev210506 - eeprom board info setting
+	return !strcmp("AM574IDK", name_tag);
+#else
 	struct ti_common_eeprom *ep = TI_EEPROM_DATA;
 
 	if (ep->header == TI_DEAD_EEPROM_MAGIC)
 		return false;
 	return !strncmp(ep->name, name_tag, TI_EEPROM_HDR_NAME_LEN);
+#endif
 }
 
 bool __maybe_unused board_ti_rev_is(char *rev_tag, int cmp_len)

--
Gitblit v1.8.0

Symptoms of the current custom board


1. WARM RESET does not work normally.
- After inputting CPU RESETn in WARM RESET S/W, RESET OUT from CPU is normal.
- WARMRESETdp input of RESET OUT has been confirmed - PMIC RESSET_OUT does not work. (Condition is that BOOT1 is VRTC, Pullup, GPIO7 High) are all satisfied.
- PMIC VIO_IN 3.3 input has been confirmed, there is no 32KGO signal.
- 16.384MHz OSC Load Capacito has 27pF, but OSC is 18p. Unable to determine if it is normal 32KGO was checked, but there is no signal. (TMDSIDK574 also confirms no signal)
- An attempt was made to check the PMIC Power Good signal, but the location was not confirmed.
- When WARM RESET SW is pressed, RESETn operates in CPU, and this pin operates nRESETWARM of PMIC.
If BOOT1 is VRTC_OUT and GPIO 7 is VDD3.3, PMIC_RESET_OUTn should drop to Low, but it is not operating. (The operation was confirmed with TMDSIDK574.)

2. PMIC ON custom board booting without Power On button

3. Stopped during u-boot. The stopping point is changed according to the progress of time
- DDR Speed ​​change (ddr_dpll_params_2664mhz -> 2128mhz) Probability increases until u-boot load progresses. Message output stopped
- u-boot last message
DELETE CANDIDATE: "optargs"
hdelete: DELETE key "optargs"
DELETE ERROR ################################
- Apply EMIF TOOL custom settings

  • Hi,

    As a first debug step, can you try disabling ECC in the tool / register settings and see if the issue persists? I'd recommend trying to debug with ECC disabled and then adding ECC back once basic read / write functionality appears stable. 

    Additionally, can you try adding a while(1) (or other breakpoint) after the DDR initialization completes and connecting via JTAG to manually read / write to the DDR memory region and verify basic read / write functionality?

    Regards,

    Kevin