Part Number: AM625-Q1
Other Parts Discussed in Thread: AM623, , AM620-Q1
Hello TI Support Team,
As you may be aware, there are recent supply chain shortages from NAND Flash memory suppliers.
As a consequence, our projects now require the flexibility to support multiple NAND Flash variants using the same software without recompiling static binaries for each chip.
Our current version of the SDK (sdk 10.00.00 ) is pre-built with static configurations and can not fulfil our current need. So first of all, we want to ask if there is a newer version of the sdk that can fulfill this feature.
Regarding our current SDK, we may need a patch to enable this feature. We are proposing a design that we want to discuss with you to detect the connected NAND chip at runtime using the ONFI Read Parameter Page (ECh) command.
Our Proposed Design Flow:
-
Initialize the NAND with conservative default configurations.
-
Issue a RESET (FFh) command as the first operation because it is required by some vendor constraints.
-
Issue the Read Parameter Page (ECh) command with a 00h address cycle.
- Parse a 256-byte paramaters copy and map its data to re-configure the NAND attributes at runtime based on these results.
- Write the registers with the true configurations.
- Use NAND normally as Read/Write commands.

- ROM Code Support: Does the current ROM code for our SoC has a built-in mechanism for "NAND Auto-detection" during the initial boot phase?
If Yes, Is it based on a similar design as we propose or is there a better approach?
If No, What is your suggestion on this topic ? as it will be a blocker for us.
- Proposed design: Do you see a flaw in the proposed design idea?
Is it safe to start the NAND with default configurations and then re-configure it at run-time? If yes, what can the default configurations be? especially the timing parameters. - GPMC Timing Parameters: We have observed the
.timingParamsstruct in thegGpmcAttrs[]array withinti_drivers_config.c. Will these parameters (e.g.,csRdOffTime,rdAccessTime,weOnTime) require unique values for each NAND chip used?
If the timings must change, what is the official TI recommended mapping between standard NAND timing characteristics mentioned in datasheets and the specific GPMC variables in the configuration array generated from syscfg tool? - ECh command: what is the correct implementation sequence for ECh command?
As a proof of concept we tried two sequences but both gave the same incorrect result (command return SUCCESS but data is wrong)
The 1st trial sequence:
- Send ECh command with Column address 0x00 and params.checkReadypin = FALSE
- Send Read Status command 70h
- Send Read Mode command 00h to enable data output mode
- Use API GPMC_nandReadData() to fetch the data
2nd trial sequence:
- Send ECh command with Column address 0x00 and params.checkReadypin = FALSE
- Wait for a delay (more than Read Page time)
- Use API GPMC_nandReadData() to fetch the data directly
We look forward to your guidance on whether this dynamic approach can be compatible with the GPMC driver architecture and boot sequence, and in providing an example for the code if the patch is needed.
Thanks in Advance,
