Unfortunately my board is not running stable with 480MHz RAM clock, actually it is crashing quite often. Several other A20-OLinuXino customers wrote a comment below my blog post that their boards are also not stable with that memory speed. That is why I decided to dig deeper in the u-boot configuration. Why u-boot? Because u-boot initializes the memory subsystem of the board and all memory configuration of the board is there – memory speed (in MHz), CAS latency, bus width, etc… The file for A20-OLinuXino-MICRO is located in board/sunxi/dram_a20_olinuxino_m.c in u-boot-sunxi source. Two important options can be changed – clock and cas.
Memory clock – default is 384 MHz, can be a number that divides to 24 with remainder 0, e.g. 360, 384, 408, 432, 456, 480, 504, 528.
CAS latency – lower is better, default is 9, can be 9, 8, 7, 6.
My board is currently running with memory speed of 408 MHz and CAS Latency 6, stable for 10 days without any issues.
It seems like the integrated memory controller just cannot run reliably with higher memory speed, but lowering the CAS latency of the memory is just fine.
Another option that is good to be enabled for A20-OLinuXino is the FAST_MBUS, more info in the following 2 commits:
It is currently enabled by default for Cubieboard 2, Cubietruck and other Allwinner A20 based boards.
All you have to do is to edit the boards.cfg file in the u-boot-sunxi source and add FAST_MBUS options to the A20-OLinuXino-MICRO entry:
“Active arm armv7 sunxi – sunxi A20-OLinuXino_MICRO sun7i:A20_OLINUXINO_M,CONS_INDEX=1,STATUSLED=226,SPL,SUNXI_EMAC,FAST_MBUS”
Recompile and install the modified u-boot as shown in the preious blog post: https://alarma20.wordpress.com/2013/12/23/overclocking-memory-on-a20-olinuxino-micro/