Firefly RK3399 Development Platform

This board is a development platform for the Rockchip RK3399 six-core server-class 64-bit ARM CPU. Unlike the SBC-AM57x, this chip does not include any dedicated DSP hardware as such, but it has an additional 4 cores of ARM hardware instead. Hopefully its Linux support is a little more fully baked - at least to the point where we can set up a reliable built process and drivers. Once I have the documentation further along, I'll update this section to include a little about it's viability.

The most important aspects of this board is the fact that this board has a considerably lower price point than the SBC-AM57x and include 8(!) channels of I2S audio outputs straight out of the box. 

Unfortunately, none of the USB ports are available through the pin headers, so this board will maintain the original 'b design of having all of the modular interfaces on the panel and all of the computer interfaces on the rear. 


Building rkflashtools

rkflashtools is a command line interface that will allow us to flash the emmc with a pre-built Ubuntu image. The Firefly wiki has a fair level of documentation for flashing the emmc from a Linux or Windows host, but nothing about OS X. Since I'm on OS X, this document will explain that process. Otherwise, check out their wiki

Begin by installing dependencies using homebrew and checking out the source code from github.

$ brew install libusb
$ git clone https://github.com/crewrktablets/rkflashtools.git
$ cd rkflashtools


At this point you will need to edit the Makefile. While there are supposed to be ways to add include and lib paths from the command line, they don't seem to be working in my case. Add the -I and -L parameters and their values as below.

Makefile
all: rkflashtool

rkflashtool: rkflashtool.c
	gcc -I /usr/local/Cellar/libusb/1.0.21/include -L /usr/local/Cellar/libusb/1.0.21/lib -o rkflashtool rkflashtool.c -lusb-1.0 -O2 -W -Wall -s

param:
	sudo ./rkflashtool r 0x0000 0x2000 > /tmp/parm



Then build...

$ make


Assuming it works, you can test it just to make sure it'll run.

$ ./rkflashtool 

rkflashtool: info: rkflashtool v3.3
rkflashtool: fatal: usage:
    rkflashtool b                       reboot device
    rkflashtool m offset size >file     read 0x80 bytes DRAM
    rkflashtool i offset blocks >file   read IDB flash
    rkflashtool r offset size >file     read flash
    rkflashtool w offset size <file     write flash
    rkflashtool p >file                 fetch parameters

    offset and size are in units of 512 bytes