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?