NanoPC-T4 不仅是世界上最小的全功能接口 RK3399 一体化主板, 而且是一款完全开源的高性能计算平台。它的尺寸只有 100x64mm,标配4GB LPDDR3 内存和 16GB 闪存, 板载2.4G & 5G 双频 WiFi 模组, 带有标准完整的 M.2 PCIe 接口, 可直接安装使用 NVME SSD 高速固态硬盘。
NanoPC-T4 还带有 MIPI-CSI 双摄像头接口, MIPI-DSI 和 eDP 双显示接口, HDMI 2.0 视频输出口,并具备 Type-C/DP,USB 3.0, USB2.0,MicroSD, 千兆以太网口,3.5mm 音频输出口,红外接收等常见标准接口,以及AD输入,调试串口,40Pin 树莓派兼容扩展口。
RK3399 内置新一代高端图像处理器Mali-T860, 具有超强的 3D 处理和超高清 H.265/H.264 视频解析能力,并可支持双路摄像头同时输入,双 ISP 像素处理能力高达 800MPix/s。
一、安装编译依赖软件包
搭建用于编译 Android 的环境,建议使用 64 位的 Ubuntu 16.04,需要安装如下软件包:
sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
sudo apt-get install flex curl libncurses5-dev libssl-dev zlib1g-dev gawk minicom
sudo apt-get install openjdk-8-jdk
sudo apt-get install exfat-fuse exfat-utils device-tree-compiler liblz4-tool
二、安装交叉编译器
安装 aarch64-linux-gcc 6.4,该编译器可用来编译 Linux 内核和 u-boot 的,用以下命令下载并安装:
git clone https://github.com/friendlyarm/prebuilts.git -b master --depth 1
cd prebuilts/gcc-x64
cat toolchain-6.4-aarch64.tar.gz* | sudo tar xz -C /
国内从 github clone 速度很慢,可以从 gitee clone。
git clone https://gitee.com/friendlyelec/prebuilts.git -b master --depth 1
然后将编译器的路径加入到 PATH 中,用 vi/vim 编辑 ~/.bashrc。
vim ~/.bashrc
在末尾加入以下内容:
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH
export GCC_COLORS=auto
执行一下 ~/.bashrc 脚本让设置立即在当前 shell 窗口中生效。
. ~/.bashrc
安装完成后,用以下命令可以验证是否安装成功。
aarch64-linux-gcc -v
安装成功输出如下:
Using built-in specs.
COLLECT_GCC=aarch64-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/6.4-aarch64/libexec/gcc/aarch64-cortexa53-linux-gnu/6.4.0/lto-wrapper
Target: aarch64-cortexa53-linux-gnu
Configured with: /work/toolchain/build/aarch64-cortexa53-linux-gnu/build/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=aarch64-cortexa53-linux-gnu --prefix=/opt/FriendlyARM/toolchain/6.4-aarch64 --with-sysroot=/opt/FriendlyARM/toolchain/6.4-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-languages=c,c++ --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --with-cpu=cortex-a53 --with-pkgversion=ctng-1.23.0-150g-FA --with-bugurl=http://www.friendlyarm.com/ --enable-objc-gc --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --disable-libmpx --with-gmp=/work/toolchain/build/aarch64-cortexa53-linux-gnu/buildtools --with-mpfr=/work/toolchain/build/aarch64-cortexa53-linux-gnu/buildtools --with-mpc=/work/toolchain/build/aarch64-cortexa53-linux-gnu/buildtools --with-isl=/work/toolchain/build/aarch64-cortexa53-linux-gnu/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --disable-libstdcxx-pch --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gold --with-libintl-prefix=/work/toolchain/build/aarch64-cortexa53-linux-gnu/buildtools --disable-multilib --with-local-prefix=/opt/FriendlyARM/toolchain/6.4-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-long-long --enable-checking=release
Thread model: posix
gcc version 6.4.0 (ctng-1.23.0-150g-FA)
三、Clone Android 8.1 源代码
FriendlyARM 将整个系统代码 Push 到了 GitLab,我们需要 Clone 整个仓库。
git clone https://gitlab.com/friendlyelec/rk3399-android-8.1 --depth 1 -b master
四、编译并生成 Image 文件
这里千万注意,源码 Clone 以后,千万不要习惯性使用和 AOSP 编译一样的动作去做。而是使用厂家提供好的 sh 运行。
cd rk3399-android-8.1
./build-nanopc-t4.sh -F -M
后面的 -F 参数代表了生成所有的镜像,比如 system.img、recovery.img…
-M 参数代表编译 rockdev image。烧写的时候会使用,其实就是把所有镜像都放到了 rockdev 目录下。
rk3399-android-8.1 目录下的 build-nanopc-t4.sh 是一个软链接。链接到了 device/rockchip/rk3399/build-nanopc-t4.sh。
lrwxrwxrwx 1 snake snake 41 Jul 3 23:44 build-nanopc-t4.sh -> device/rockchip/rk3399/build-nanopc-t4.sh
下面是编译可以跟的所有参数,我们看一下它的源码。一目了然注释的很清楚了。
build-nanopc-t4.sh
function usage()
{
echo "Usage: $0 [ARGS]"
echo
echo "Options:"
echo " -a build Android"
echo " -B build U-Boot"
echo " -K build Linux kernel"
echo " -W build Wi-Fi drivers (.ko)"
echo
echo " -F, --all build all (U-Boot, kernel, wifi, Android)"
echo " -M make rockdev image"
echo " -u generate update.img"
echo
echo " -h show this help message and exit"
exit 1
}
我编译了大约 3 个多小时完成了,期间由于前面用了 AOSP 编译方法,编译没有成功,最后 make clean,再次运行 build-nanopc-t4.sh 编译通过了。
五、烧写 Image
编译完成后,image 文件会存放在 rk3399-android-8.1 目录的 rockdev/Image-nanopc_t4 子目录下,参考以下步骤更新到 NanoPC-T4 上:
5.1 通过 EFlasher 工具进行烧写
5.1.1 eFlasher 介绍
eFlasher (eMMC-flasher) 是 FriendlyElec 官方发布的工具,让用户能方便和轻松地将系统安装到板载的 eMMC 上运行,甚至可以抛开电脑,就能让你在多个系统中,选择并安装上你想要的系统。
eFlasher 同时为量产提供了灵活的设置选项,以方便工厂量产时安装定制系统。
eFlasher 为方便使用,提供了图形界面与命令行两个版本,为方便描述,这里为它们分别命名为: eflasher-gui 和 eflasher-console:
eflasher-gui: 有图形界面的 eFlasher,推荐有 LCD 屏或者 HDMI 显示的用户使用,可以使用触摸屏操作,没有触摸屏时也可以使用鼠标操作;
eflasher-console: 命令行版本的 eFlasher,可在串口终端或者 ssh 命令行上使用;
5.1.2 eFlasher 的使用
第一步: 下载 Win32DiskImager 和 rk3399-eflasher-android8-20200623.img.zip
在 Windows 下制作 SD 卡,还需要下载 Windows 下的烧写工具: win32diskimager.rar,解压后直接运行 Win32DiskImager.exe。
第二步: 用 eFlasher 固件制作 SD 启动卡
在 Windows 下插入 SDHC 卡(限 4G 及以上的卡),以管理员身份运行 Win32DiskImager,选择 Image File 载入固件(rk3399-eflasher-android8-20200623.img.zip),选择你的 SD 卡盘符,点 Write 即开始写 Image 到 SD 卡;
如果电脑用的是 Linux 系统,你也可以用 dd 命令将解压后得到的 .img 文件直接写入 SD 卡完成启动卡的制作。
第三步: 启动 eFlasher 工具
将制作好的 SD 卡插入开发板,长按 NanoPC-T4 上的 Power 键直到板上的 PWR 灯亮,系统会从 SD 卡启动,并自动启动 EFlasher 烧写工具。
方法1: 连接 LCD 或 HDMI 显示屏,在图形界面上操作 EFlasher,如果屏幕不支持触摸,则需要使用 USB 鼠标来操作;
方法2: 将开发板通过网线接入局域网,通过 ssh 登录开发板,然后输入命令 eflasher,根据命令行的提示进行操作;(注: ssh 登录的用户是 root,密码为 fa,开发板 IP 可查看路由器后台获得)
方法3: 通过调试串口登录到串口终端,在终端上输入命令 eflasher 来操作;
方法4: 连接一个 lcd2usb 配件到 NanoPC-T4 上,按配件上面的 K1 键可以选择要烧写的系统,然后按 K2 键确定烧写,烧写进度会在 lcd2usb 上显示。
烧写完成后,轻按 Power 键关机,从 NanoPC-T4 端弹出 SD 卡。长按 Power 开机,会从 eMMC 启动你刚刚烧写的系统。
以后烧写按照以下步骤即可:
将 EFlasher 启动 SD 卡 通过读卡器插入电脑,下面是读出之前使用的文件;
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD 卡 FRIENDLYARM 分区里的 android8 目录(idbloader.img 和 info.conf 保持);
将SD 卡插入 NanoPC-T4,重新烧写 Android 系统即可。
5.2 通过 Rockchip 提供的工具进行烧写
通过 USB Type-C 数据线,在 Windows 下用 Rockchip 提供的工具进行烧写。
详细操作步骤如下:
初次使用时,请先下载 DriverAssitant_v4.5.zip,解压后安装 USB 驱动;
下载 AndroidTool_Release_v2.71.zip 并解压,以管理员身份运行 AndroidTool.exe。
可根据 Android 开发工具手册.pdf,导入分区配置即固件中的 parameter.txt,然后指定各分区的烧写文件路径,如下图所示:
这个表要自己根据 img 路径去填,每一项的地址和名字都要保证正确,不然打开工具会提示错误信息的。
连接好电源及显示设备,连接 Type-C 数据线到 PC,按住 Recovery 键再长按 1.5 s 以上 Power 键开机,AndroidTool 会显示“发现一个 LOADER 设备”。
a) 如果 eMMC 没有烧写过系统或 eMMC 的系统被擦除或损坏则会显示为 MASKROM 设备;
b) 也可以按住 BOOT 键再长按 Power 键开机,同时持续按住 BOOT 键 5 秒以上强制进入 MASKROM 模式;
c) 如果显示“没有发现设备”,请先检查是否已成功安装驱动,检查 Type-C 数据线然后按上述方法重新开机,或按住 Recovery 键再按 Reset 键;
d) 另外,如果已成功启动系统,可通过串口、adb 或 ssh 等方式在板子上运行 reboot loader 重启板子并进入 LOADER 模式。
点击 即可下载固件到 eMMC,请耐心等待,烧写成功结束后将自动重启。