AnsweredAssumed Answered

How to increase NAND speed? (iMX283 + MT29F16G08ABACAWP)

Question asked by René Eppink on Apr 14, 2017
Latest reply on Apr 18, 2017 by igorpadykov

Currently I'm working on an existing custom board with i.MX283 and Micron MT29F16G08ABACAWP NAND on which we want to replace the OS. We'll be using uboot-v2016.09.01 and Linux kernel 4.7.2.

 

We have the board up and running, but I noticed that NAND read/write speed is much slower than I would have expected. It seems both the i.MX283 and the NAND should be able to do much better. Results of mtd_speedtest:

[ 1145.439352] mtd_speedtest: testing eraseblock write speed
[ 1156.030525] mtd_speedtest: eraseblock write speed is 1838 KiB/s
[ 1156.036746] mtd_speedtest: testing eraseblock read speed
[ 1164.359215] mtd_speedtest: eraseblock read speed is 2339 KiB/s
[ 1164.437988] mtd_speedtest: testing page write speed
[ 1178.728050] mtd_speedtest: page write speed is 1362 KiB/s
[ 1178.733616] mtd_speedtest: testing page read speed
[ 1189.862425] mtd_speedtest: page read speed is 1749 KiB/s
[ 1190.142313] mtd_speedtest: testing 2 page write speed
[ 1203.127255] mtd_speedtest: 2 page write speed is 1499 KiB/s
[ 1203.132890] mtd_speedtest: testing 2 page read speed
[ 1213.684587] mtd_speedtest: 2 page read speed is 1844 KiB/s

I cross-checked this against the old OS and got the same results, meaning we at least have the same non-optimal performance. With the new OS and new application software we expect more intensive read/write so a speed increase could be very beneficial.

 

After further investigation I noticed that the GPMI clock in both u-boot and kernel is running at only 24MHz. Fragment of kernel debugfs:

cat /sys/kernel/debug/clk/clk_summary
   clock                         enable_cnt  prepare_cnt        rate   accuracy   phase
----------------------------------------------------------------------------------------
ref_xtal                                 5            5    24000000          0 0
    gpmi_sel                              0            0    24000000          0 0
       gpmi_div                           0            0    24000000          0 0
          gpmi                            0            0    24000000          0 0
    pll0                                  3            3   480000000          0 0
       ref_gpmi                           0            0   480000000          0 0

 

Unfortunately I'm a bit of a novice in Linux and u-Boot configuration and a Google search quest didn't bring me much, so I'm looking for some help. Before I start tinkering with a lot of different things I would like to ask if somebody could help me point in the right direction on how to accomplish a speed increase. We don't need top-notch performance, but if we could accomplish a speed increase with limited effort this would be great.

Outcomes