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成功启动,日志里可以查看编译信息是否是最新的: