Hi all,
I've been working on improving NAND read speeds in u-boot for the TI8168evm board.
I'm currently investigating the time to read each word from the flash chip. I have this downs to about 180ns per cycle. That consists of CS0 going low for 60ns then being high for 120ns, and then repeating for every word to be read.
Theoretically the Micron NAND chip included on the EVM board can support a 50ns cycle, and I would expect to be able to get this down to about 70ns to 80ns.
I can't find any timing diagrams in the TRM that explain the time between CS assertions,
There is the CYCLE2CYCLE and CYCLE2CYCLEDELAY config parameters, but I have them both set to 0.
In section 9.2.4.12.1.6 - NAND Device General Chip-Select Timing Control Requirement
It states: "Because accesses to a NAND device can be interleaved with other chip-select accesses, there is no certainty that CS always stays low between two accesses to the same chip-select. Moreover, an CS deassertion time between the same chip-select NAND accesses is likely to be required as follows: the CS deassertion requires programming CYCLETIME and RDACCESSTIME according to the CS-to-data-valid critical timing."
Since I have no other GPMC devices connected, nor configured then I'm at a loss as to why the CS line gets de-asserted between each word access. As for "there is no certainty that CS always stays low..." I am never seeing it stay low.
The rest of that section talks about the prefetch engine, which I'm going to go and research now, and probably implement next week, however I am quite curious to see whether there is something I'm missing that means the CS line is de-asserted every time, and why it has to stay de-asserted for so long.
Any ideas would be welcomed.
Thanks,
Andy