I have an evm for the C6748 and am benchmarking the read speed on the included NAND. I did so by modifying the sample code included with BIOS/PSP like so:
nandSample_io.c line 398:
{ Uint32 start = CLK_gethtime(); result = pDevOps->Blk_Read(handle, (Ptr)&nandRespInfo, readBuf, addr, sectorCount); if (result == IOM_PENDING) { SEM_pend(nandCbSem, SYS_FOREVER); LOG_printf(&trace, " NAND_SAMPLE: BLK read passed in %d ms & loop" " count is %d ", (int)((CLK_gethtime()-start)*CLK_cpuCyclesPerHtime()/300e3),loop); } else if (result != IOM_COMPLETED) { LOG_printf(&trace, " NAND_SAMPLE:Error returned from" " function Blk_Read while reading"); addr = 0; } else { SEM_pend(nandCbSem, SYS_FOREVER); LOG_printf(&trace, " NAND_SAMPLE: BLK read passed in %d ms & loop" " count is %d ", (int)((CLK_gethtime()-start)*CLK_cpuCyclesPerHtime()/300e3),loop); } }
I am using the .gel file included with the EVM and yet I am only getting times of about 21ms for 75kB (290ns/byte), rather than the 30ns per byte that the NAND part's datasheet says is possible.
Is my method of timestamping the code correct? Do I need to be doing something else to set up the NAND for faster access? Or is this just the best that BIOS/PSP can do with this part?