RK3399广告机瞎折腾

前言

咸鱼上买的rk3399 板子,据卖家说是广告机上拆的,200多不过相对于400+的RK3399开发版来说算得上白菜价了,自带4G+16G三星EMMC5.1 flash 还有四组GPIO 和I2C(SDA_2,SCL_2),加上瑞芯微RK3399开源datasheet,自己移植u-boot和Linux mainline 内核跑起来应该问题不大,

后续驱动问题可以便学习驱动开发边补哈哈哈

板子本体

img

部件名称 芯片型号 备注说明
CPU RK3399 Dual-core Cortex-A72 up to 1.8GHz;Quad-core Cortex-A53 up to 1.4GHz;Mali-T864 GPU
RAM K4B8G16 Dual-channel DDR3 1GB * 4
Flash SanDisk SDINBDG4-16G eMMC 5.1
PMU RK808D
Ethernet RTL8211E 10/100/1000 Base-T
WIFI+BT AP6255 WIFI IEEE802.11 a/b/g/n/ac;BT4.2
SATA 3.0 JMS578
USB 2.0 FE1.1s TYPE A Mount Socket * 2 & 4-Pin Connector Socket * 5
USB 3.0 VL817-Q7 TYPE A Mount Socket * 2
UART SP3232EEN
HDMI 2.0+LVDS 358775G + ALC5640
Audio PA NS4258 5W * 2

rockchip启动过程

img

我们选择左边那一条启动路径(不知道为啥右边那条会跑飞)

编译Rockchip维护的U-boot

安装交叉编译器

sudo apt-get install gcc-aarch64-linux-gnu gcc-arm-none-eabi -y

安装辅助工具

sudo apt install -y build-essential libncurses5-dev git make

首先clone两个仓库

git clone https://github.com/rockchip-linux/u-boot.git
git clone https://github.com/rockchip-linux/rkbin.git

得到

rk3399_loader_v1.24.126.bin
trust.img
uboot.img

三个文件

制作idbloader.img

# 找到rkbin带的ddr初始化文件,用u-boot里面的mkimage制作idbloader.img
tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader.img
# 再往后写miniloader
cat ../rkbin/bin/rk33/rk3399_miniloader_v1.26.bin >> idbloader.img

使用rkdeveloptool刷入emmc或者dd到SD卡装进主板即可进入u-boot

然后用rkdeveloptool初始化ddr

root@ubuntu:/home/silime# rkdeveloptool ld
not found any devices!
# 短接复位后,进入MAskroom
root@ubuntu:/home/silime# rkdeveloptool ld
DevNo=1	Vid=0x2207,Pid=0x330c,LocationID=302	Maskrom
root@ubuntu:/home/silime# rkdeveloptool db /tmp/rk3399_loader_v1.24.126.bin 
Downloading bootloader succeeded.

然后rkdeveloptool wl <偏移> <文件名>就可以刷文件了

rkdeveloptool wl 0x40 idbloader.img

img

进入u-boot

编译kernel

首先把linux主线kernel拉下来

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

得到如下文件

arch/arm64/boot/dts/rockchip/rk3399***.dtb
arch/arm64/boot/Image

制作rootfs

略。。。

img

刷进去,没什么意外,板子复位就直接跑进系统了,这个rk3399真的牛逼,爆快,4s进登录框