07 Mar 2017: First revision EOMA68-RK3288 CPU Card PCB testing report

So, a combination of strange things from testing: firstly, that the RK3288 can in fact be successfully booted from USB, but that when doing so it is placed into a special mode that excludes the possibility of running more than one single process, and SMP mode is also prohibited. This took a number of days to work out. Secondly: it is possible to drop the clock rate of the Samsung 1600mhz DDR3L RAM right down to a clock rate of only 200mhz, but when doing so the board will not be able to read (boot) from external MicroSD - not when using u-boot, at least. Only when initialising the RAM speed to 300mhz or above does MicroSD boot proceed further. The exact reason yet is unclear.

However what does work is the (proprietary) rockchip 200mhz DDR3 initialisation binary, which has proven extremely useful but ultimately cannot be utilised (proprietary binaries). Part of the problem is that whilst most PCBs developed so far are 1.6mm FR4 (standard epoxy / fibreglass) and 6 layer, the EOMA68-RK3288 is only 1.2mm and is 8-layer. That reduces the distance between the layers from 10mil to only 6mil (6 1,000ths of an inch) which is absolutely tiny. It also changes the impedance of the DDR3 tracks from the Reference Design's (estimated) 90-100 ohms down to half that amount: around 50 ohms.

Now, thanks (again) to the input from #rockchip-linux paulk and ayaka kindly pointed me in the right direction: it's possible for these DDR3 RAM Controllers to change the impedance of their line-drivers and receivers. So that's the first thing that will be investigated tomorrow. Looking in u-boot-rockchip source it turns out that the impedance is actually hard-coded (!) to 40 ohms driving and 155 ohms termination. Normally the controller is asked to carry out auto-impedance matching: it seems that in the standard u-boot-rockchip source this has been disabled! That would be perfectly fine if the PCB being developed was anything remotely close to the stack of, for example, the Firefly, but it's most definitely not. At least however there is a way forward: something to continue trying, rather than give up on $USD 1500 worth of prototype hardware.

Update 2017mar12: found the following settings which could match the (almost 50 ohm) impedance of the EOMA68-RK3288 PCB, to be tested shortly:

    /* http://www.skhynix.com/product/filedata/fileDownload.do?seq=6790
       MR1: bits 9,6,2 = b001 = RZQ/4 = 60 ohms ODT
            bits 4,3   = b00  = CAS disabled
            bits 5,1   = b00  = RZQ/6 = 40 ohms output driver impedance
            bit  7     = 0    = write-leveling disabled
            bit  11    = 0    = TDQS disabled
            bit  12    = 0    = output disabling not enabled
            bit  10    reserved
            bit  8     reserved
       MR2: bits 10,9  = b01  = RZQ/4 = 60 ohms ODT
            bits 6,5,4 = b001 = CAS Write Latency 6
            bits 3,2,1 = b100 = partial array self-refresh 3/4 array