Hello,
This follows up the earlier thread (June is out of office): https://community.nxp.com/t5/QorIQ/LS1046A-custom-board-cold-boot-fails-from-eMMC-SD-and-QSPI/m-p/24...
Summary
Native cold boot from SD stalls with HRESET_B LOW. Debugger-assisted boot (CodeWarrior rcw.apply()) reaches U-Boot with the same RCW, PBI and card. During the native stall, the PBL starts SD_CLK at about 195 kHz and sends command frames. DAT0 never toggles. The clock then stops, restarts briefly at about 24 kHz, and the bus goes idle. We would like help interpreting this against RM Table 4-8 "RCW State Timing".
Setup (board 2, no reset rework)
0810000d 0a000000 00000000 00000000
00000000 00f00012 60040000 c1000000
00000000 00000000 00000000 0001c83e
00004504 24001102 00000096 00000001
Native cold-boot observations (no debugger connected)
Times are approximate. t = 0 is the ASLEEP falling edge, which coincided with PORESET_B rising in a separate capture.
CCS access during the stall
ccs::config_chain {ls1043a dap sap2} is accepted. ccs::display_mem 2 0x01ee0000 4 0 1 returns "Scan timeout".
Debugger-assisted boot (works)
set_source(0x40) and set_data({13: 0x00004504}) (the same value as on the card), then apply(). RCWSR then matches the card. U-Boot reports CPU 1300, platform 400, DDR 1600, FMan 500 MHz. SD initialisation and FIP loading succeed.
Questions
Hello,
The waveform indicates the device never completed the RCW/PLL transition. It is not yet in the normal PBI/eSDHC operating phase.
For RCW loading:
SD_CLK = SYSCLK / 512100 MHz / 512 = 195.3125 kHzAfter RCW loading and PLL lock:
HRESET_B should deassert.SD_CLK = platform clock / 80.Therefore:
~195 kHz → stop → ~24 kHz burst → idle
does not represent the documented later-state transition. The 24 kHz value is approximately 100 MHz / 4096; treat it as a reset/default-divider or restart artifact, not proof that PBL reached PBI loading. The clock alone cannot distinguish an SD identification timeout from an eSDHC reset.
The expected SD-identification flow is broadly:
CMD0
CMD8
CMD55 + ACMD41 repeated until the card is ready
CMD2
CMD3
CMD7
then block reads for RCW/PBI data
CMD1 is normally the eMMC initialization command, not the SD-card equivalent.
The exact LS1043A ROM retry count and per-command timeout are not specified in the accessible NXP support material; they should not be inferred from the waveform. NXP documentation instead describes the terminal behavior: if the selected SD source is unavailable, the SoC does not fall back to another source; it asserts RESET_REQ_B and halts.
Thus, if the card is completely absent, RESET_REQ_B should eventually assert. There is no documented fixed “assert after exactly N ms” value to use as a pass/fail limit. If it remains high while HRESET_B remains low, the device may still be before the terminal PBL error path—or the board may be masking/interfering with RESET_REQ_B.
Yes, this is expected while HRESET_B is still asserted. The same reset signature—PORESET_B released, HRESET_B low, RESET_REQ_B high, and the processor inaccessible through the debug path—is associated with an early reset/boot condition.
Before SAP2 becomes accessible, there is no dependable CCSR register that reports PBL progress. Use:
PORESET_BHRESET_BRESET_REQ_BASLEEPCLK_OUT, if configuredOnce debug access is established by using RCW override/safe-RCW or by isolating RESET_REQ_B, inspect:
RSTCRRSTRQSRRSTRQPBLSRRSTRQMRNXP specifically recommends these reset registers when RESET_REQ_B access is possible.
Yes. A slow or poorly shaped PORESET_B release can violate the reset-initialization timing and cause incorrect strap, clock, or PLL sampling. With a 100 MHz SYSCLK, the stated limit of one SYSCLK is approximately 10 ns. Verify the actual voltage crossing and rise time directly at the LS1043A pin, not only at the reset-generator output.
Also verify that RESET_REQ_B is not feeding back into PORESET_B; NXP recommends an isolation option during bring-up because boot failures can otherwise create a reset loop that prevents JTAG access.
0x9F is the hard-coded-RCW/debug discriminator. With a valid clock and reset sequence, it should remove dependence on reading the RCW from the SD card. Therefore, if HRESET_B still never rises with no card installed, the fault is probably earlier than SD-card identification:
In other words, the 0x9F result argues against “missing card” as the primary cause. First prove that HRESET_B rises with 0x9F and a clean reset/clock setup; then return to SD RCW loading.
Regards