Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写

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 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第1张图片

一、安装编译依赖软件包

搭建用于编译 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 上:

Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第2张图片

5.1 通过 EFlasher 工具进行烧写

5.1.1 eFlasher 介绍

eFlasher (eMMC-flasher) 是 FriendlyElec 官方发布的工具,让用户能方便和轻松地将系统安装到板载的 eMMC 上运行,甚至可以抛开电脑,就能让你在多个系统中,选择并安装上你想要的系统。

eFlasher 同时为量产提供了灵活的设置选项,以方便工厂量产时安装定制系统。

eFlasher 为方便使用,提供了图形界面与命令行两个版本,为方便描述,这里为它们分别命名为: eflasher-gui 和 eflasher-console:

  1. eflasher-gui: 有图形界面的 eFlasher,推荐有 LCD 屏或者 HDMI 显示的用户使用,可以使用触摸屏操作,没有触摸屏时也可以使用鼠标操作;

  2. 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 卡;

Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第3张图片

如果电脑用的是 Linux 系统,你也可以用 dd 命令将解压后得到的 .img 文件直接写入 SD 卡完成启动卡的制作。

  • 第三步: 启动 eFlasher 工具

将制作好的 SD 卡插入开发板,长按 NanoPC-T4 上的 Power 键直到板上的 PWR 灯亮,系统会从 SD 卡启动,并自动启动 EFlasher 烧写工具。

方法1: 连接 LCD 或 HDMI 显示屏,在图形界面上操作 EFlasher,如果屏幕不支持触摸,则需要使用 USB 鼠标来操作;
Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第4张图片
Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第5张图片
Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第6张图片
方法2: 将开发板通过网线接入局域网,通过 ssh 登录开发板,然后输入命令 eflasher,根据命令行的提示进行操作;(注: ssh 登录的用户是 root,密码为 fa,开发板 IP 可查看路由器后台获得)
方法3: 通过调试串口登录到串口终端,在终端上输入命令 eflasher 来操作;
方法4: 连接一个 lcd2usb 配件到 NanoPC-T4 上,按配件上面的 K1 键可以选择要烧写的系统,然后按 K2 键确定烧写,烧写进度会在 lcd2usb 上显示。

烧写完成后,轻按 Power 键关机,从 NanoPC-T4 端弹出 SD 卡。长按 Power 开机,会从 eMMC 启动你刚刚烧写的系统。

以后烧写按照以下步骤即可:

  1. 将 EFlasher 启动 SD 卡 通过读卡器插入电脑,下面是读出之前使用的文件;

Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第7张图片
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD 卡 FRIENDLYARM 分区里的 android8 目录(idbloader.img 和 info.conf 保持);

  1. 将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,然后指定各分区的烧写文件路径,如下图所示:

Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第8张图片

这个表要自己根据 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,请耐心等待,烧写成功结束后将自动重启。

Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写_第9张图片

你可能感兴趣的:(NanoPC-T4)