Hello,
I'm working with a custom am335x board, using kernel version 3.6.12, a MT29F1G08ABBDAH4-IT:D NAND memory, and JFFS2 partitions, and I'm currently trying to optimize the memory throughput.
Currently, this is my average write speed:
root@AM335x:/mnt/extra# dd if=/dev/urandom of=test bs=256k count=40 40+0 records in 40+0 records out 10485760 bytes (10.0MB) copied, 14.042668 seconds, 729.2KB/s
I had a worse results before, but I messed around with the GPMC timing settings and managed to improve them to the current level. :)
This is my current gpmc_timing configuration (values are in nanoseconds and GPMC_FCLK is 100MHz):
static struct gpmc_timings am335x_nand_timings = { .sync_clk = 0, .cs_on = 0, .cs_rd_off = 20, .cs_wr_off = 20, .adv_on = 0, .adv_rd_off = 20, .adv_wr_off = 20, .we_off = 10, .oe_off = 10, .access = 20, .rd_cycle = 20, .wr_cycle = 20, .wr_access = 20, .wr_data_mux_bus = 0, };
I know that the GPMC timing configuration depends on a set of rules that must be followed, and that multiple configurations may work (with better or worse performances). So, this is my question: is there a guide showing how to obtain the optimal configuration values?
Regards,
Guilherme