> 文档中心 > RK3399快速上手 | 01- 开发环境搭建(固件烧写、编译工具链安装、kernel编译)

RK3399快速上手 | 01- 开发环境搭建(固件烧写、编译工具链安装、kernel编译)


一、RK3399

最近开始着手RK3399的开发,使用 Friendly SOM-RK3399 开发板

关于开发板更多资料,查看wiki:https://wiki.friendlyelec.com/wiki/index.php/SOM-RK3399/zh。

固件和工具下载地址:https://download.friendlyelec.com/SOM-RK3399。

RK3399使用双Cortex-A72+四Cortex-A53 大小核CPU结构,频率最高1.8GHz。

二、烧写固件到SD卡

使用 win32diskimager 软件烧写img镜像到sd卡:

SD卡插入开发板,启动即可。

三、使用USB烧写固件到eMMC

1. 进入烧写模式

Type-C线连接主机端的USB Host接口和开发板的Type-C接口,按住recovery按键或maskrom按键后重启系统,大约1秒后松开按键,进入烧写模式。

2. windows环境下烧写固件

安装驱动:

下载rk3399-typec-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.img.zip固件。

管理员身份打开烧写工具,会检测到待烧写设备:

配置文件默认在目录下就有,点执行开始下载(注意拔掉SD卡):

烧写完成:

开发板自动重启,界面如下:

3. Linux环境下烧写固件

Linux_Upgrade_Tool是Rockchip提供的Linux下的命令行工具,用于通过Type-C数据线来升级eMMC中的固件,同时还提供了如擦除eMMC、直接读/写eMMC等功能。

(1)安装upgrade_tool(1.49版本)

下载Linux_Upgrade_Tool_1.49.rar后解压即可获得upgrade_tool,然后复制并设置权限:

 sudo cp upgrade_tool /usr/local/sbin sudo chown root:root /usr/local/sbin/upgrade_tool sudo chmod 0755 /usr/local/sbin/upgrade_tool

(2)下载固件:根据自己的需要下载images-for-eflasher下的系统固件并解压,如Lubuntu的固件文件是lubuntu-desktop-images.tgz。

tar -zxf lubuntu-desktop-images.tgz

(3)启动板子并进入LOADER模式。

(4)运行以下命令即可烧写Linux系统并重启:

sudo upgrade_tool ul MiniLoaderAll.binsudo upgrade_tool di -p parameter.txtsudo upgrade_tool di -uboot uboot.imgsudo upgrade_tool di -trust trust.imgsudo upgrade_tool di -resource resource.imgsudo upgrade_tool di -kernel kernel.imgsudo upgrade_tool di -boot boot.imgsudo upgrade_tool di -rootfs rootfs.imgsudo upgrade_tool RD

四、安装编译工具链

编译工具链下载地址:https://releases.linaro.org/components/toolchain/binaries/。

选择最新版本:


选择64位架构编译器:

选择在64位主机上运行:

复制下载地址,下载:

wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

解压:

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

为了在命令行中更加方便的使用,将bin目录所在路径添加到环境变量中。

编辑用户文件:

vim ~/.bashrc

最后添加(注意路径):

export PATH=$PATH:/home/mculover666/rk3399/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

重启终端,即可生效。

四、编译uboot

1. uboot源码

uboot通常有三种:

  • uboot官方源码:u-boot/u-boot
  • 半导体厂商官方源码:rockchip-linux/u-boot
  • 开发板厂商官方源码:rockchip-toybrick/u-boot

① uboot官方源码是由uboot官方维护,支持非常全面的芯片,但对具体某款开发板支持情况一般;

② 半导体厂商基于uboot官方源码进行修改,对自家的芯片进行完善的支持,针对某款处理器支持情况较好;

③ 开发板厂商基于半导体厂商维护的uboot,对自家的开发板进行板级支持,针对某款开发板支持情况较好;

所以这里我们直接使用开发板厂商维护的uboot

2. uboot编译

源码下载:

git clone https://github.com/rockchip-toybrick/u-boot.git -b master

下载rkbin到uboot同级目录:

git clone https://github.com/rockchip-toybrick/rkbin -b master
cd u-boot

修改 make.sh 设置:

TOOLCHAIN_ARM32=../gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/binTOOLCHAIN_ARM64=../gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

编译:

./make.sh rk3399pro

编译成功:

五、编译内核源代码

参考教程:13.6 编译 FriendlyCore/FriendlyDesktop/Lubuntu/EFlasher的内核源代码

1. Linux内核源码

Linux内核源码同样也有三种:

  • linux内核源码:torvalds/linux
  • 半导体厂商官方linux内核源码:rockchip-linux/kernel
  • 开发板厂商官方linux内核源码:friendlyarm/kernel-rockchip

① linux kernel官方源码支持非常全面,但对具体某款开发板支持情况一般;

② 半导体厂商基于linux kernel官方源码进行修改,对自家的芯片进行完善的支持,针对某款处理器支持情况较好;

③ 开发板厂商基于半导体厂商维护的linux kernel,对自家的开发板进行板级支持,针对某款开发板支持情况较好;

所以这里我们直接使用开发板厂商维护的linux kernel

2. 编译前准备

sudo apt-get install libssl-dev liblz4-tool

3. 下载源码

git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-linux-v4.4.y kernel-rockchip

内核较大,下载时间长。

内容如下:

4. 编译源码

设置编译环境:

export ARCH=arm64export CROSS_COMPILE=aarch64-linux-gnu-

配置开发板:

make nanopi4_linux_defconfig

编译:

make nanopi4-images

编译完成后,会生成 kernel.img resource.img 这两个文件:

5. 测试编译出的镜像

将这两个新的镜像文件覆盖原来的固件,烧写到开发板中:


Linux成功启动,日志里可以查看编译信息是否是最新的: