Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
 
(93 intermediate revisions by the same user not shown)
Line 1: Line 1:
===Linux系统编译===
 
====各个OS对应的内核与u-boot版本====
 
{| class="wikitable"
 
|-
 
! 操作系统
 
! 内核版本
 
! uboot版本
 
! 交叉编译器
 
! 分区类型
 
! 构建脚本
 
! 内核代码分支
 
! 内核配置
 
! uboot代码分支
 
! uboot配置
 
|-
 
| lubuntu
 
| rowspan="4" | linux v4.4.y
 
| rowspan="4" | u-boot v2014.10
 
| rowspan="4" | 6.4-aarch64<br />
 
| rowspan="4" | [https://github.com/friendlyarm/sd-fuse_rk3399/blob/master/prebuilt/parameter.template MBR]
 
| rowspan="4" | [https://github.com/friendlyarm/sd-fuse_rk3399/tree/master sd-fuse]
 
| rowspan="4" | [https://github.com/friendlyarm/kernel-rockchip/tree/nanopi4-linux-v4.4.y nanopi4-linux-v4.4.y]
 
| rowspan="4" | nanopi4_linux_defconfig
 
| rowspan="4" | [https://github.com/friendlyarm/uboot-rockchip/tree/nanopi4-v2014.10_oreo nanopi4-v2014.10_oreo]
 
| rowspan="4" | rk3399_defconfig
 
|-
 
| friendlycore-arm64
 
|-
 
| friendlydesktop-arm64
 
|-
 
| eflasher
 
|-
 
| buildroot
 
| rowspan="8" | linux v4.19.y
 
| rowspan="8" | u-boot <br />v2017.09
 
| rowspan="8" | 11.3-aarch64
 
| rowspan="8" | [https://github.com/friendlyarm/sd-fuse_rk3399/blob/kernel-4.19/prebuilt/parameter.template GPT]
 
| rowspan="8" | [https://github.com/friendlyarm/sd-fuse_rk3399/tree/kernel-4.19 sd-fuse]
 
| rowspan="8" | [https://github.com/friendlyarm/kernel-rockchip/tree/nanopi4-v4.19.y nanopi4-v4.19.y]
 
| rowspan="7" | nanopi4_linux_defconfig
 
| rowspan="8" | [https://github.com/friendlyarm/uboot-rockchip/tree/nanopi4-v2017.09 nanopi4-v2017.09]
 
| rowspan="8" | rk3399_defconfig
 
|-
 
| debian-buster-desktop-arm64
 
|-
 
| debian-bullseye-core-arm64
 
|-
 
| debian-bullseye-desktop-arm64
 
|-
 
| debian-bullseye-minimal-arm64
 
|-
 
| friendlycore-focal-arm64
 
|-
 
| friendlycore-lite-focal-kernel4-arm64
 
|-
 
| friendlywrt21-kernel4
 
| nanopi4_linux_defconfig<br /> friendlywrt.config
 
|-
 
| friendlycore-lite-focal-kernel5-arm64
 
| rowspan="5" | linux v5.15.y
 
| rowspan="5" | u-boot <br />v2017.09
 
| rowspan="5" | 11.3-aarch64
 
| rowspan="5" | [https://github.com/friendlyarm/sd-fuse_rk3399/blob/kernel-5.15.y/prebuilt/parameter.template GPT]
 
| rowspan="5" | [https://github.com/friendlyarm/sd-fuse_rk3399/tree/kernel-5.15.y<br /> sd-fuse]
 
| rowspan="5" | [https://github.com/friendlyarm/kernel-rockchip/tree/nanopi-r2-v5.15.y nanopi-r2-v5.15.y]
 
| nanopi4_linux_defconfig
 
| rowspan="5" | [https://github.com/friendlyarm/uboot-rockchip/tree/nanopi4-v2017.09<br /> nanopi4-v2017.09]
 
| rowspan="5" | rk3399_defconfig
 
|-
 
| friendlywrt21
 
| rowspan="4" | nanopi4_linux_defconfig<br /> friendlywrt.config
 
|-
 
| friendlywrt21-docker
 
|-
 
| friendlywrt22
 
|-
 
| friendlywrt22-docker
 
|}
 
* 内核源代码仓库地址:https://github.com/friendlyarm/kernel-rockchip
 
* u-boot源代码仓库地址:https://github.com/friendlyarm/uboot-rockchip
 
* 交叉编译工具链存放在如下路径: /opt/FriendlyARM/toolchain/,使用前需导出到PATH环境变量,例如需要使用11.3-aarch64版本的编译器,使用如下命令:
 
<syntaxhighlight lang="bash">
 
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
 
</syntaxhighlight>
 
* sd-fuse构建脚本可以用于快速编译kernel和uboot、重新打包sd卡固件与卡刷固件等
 
* 点击表格中的MBR与GPT可查看各系统的分区布局(配置文件)
 
  
====编译内核linux-v4.4.y====
+
{{RockchipUnbrick|NanoPC-T4}}
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| lubuntu
+
| eflasher
+
| friendlydesktop-arm64
+
| friendlycore-arm64
+
|}
+
下载源代码并编译:
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi4-linux-v4.4.y kernel-rockchip
+
cd kernel-rockchip
+
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
+
touch .scmversion
+
# 编译内核
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig
+
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig  # 启动配置界面
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4-images -j$(nproc)
+
# 编译驱动模块
+
mkdir -p out-modules
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules_install
+
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
+
rm -rf $PWD/out-modules/lib/modules/${KERNEL_VER}/kernel/drivers/gpu/arm/mali400/
+
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
+
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
+
</syntaxhighlight>
+
编译完会生成如下文件:
+
{| class="wikitable"
+
|-
+
| kernel.img
+
| resource.img
+
| 驱动模块位于out-modules目录
+
|}
+
安装内核: <br>
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
 
+
====编译u-boot v2014.10====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| lubuntu
+
| eflasher
+
| friendlydesktop-arm64
+
| friendlycore-arm64
+
|}
+
下载源代码并编译:
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi4-v2014.10_oreo
+
cd uboot-rockchip
+
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
+
make CROSS_COMPILE=aarch64-linux- rk3399_defconfig
+
make CROSS_COMPILE=aarch64-linux-
+
</syntaxhighlight>
+
编译完成后会生成如下文件:
+
{| class="wikitable"
+
|-
+
| uboot.img
+
| trust.img
+
| rk3399_loader_v1.22.119.bin (打包时改名为MiniLoaderAll.bin)
+
|}
+
安装u-boot: <br />
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
 
+
====编译内核linux-v4.19.y====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| debian-buster-desktop-arm64
+
| debian-bullseye-core-arm64
+
| debian-bullseye-desktop-arm64
+
| debian-bullseye-minimal-arm64
+
|-
+
| friendlycore-focal-arm64
+
| friendlycore-lite-focal-kernel4-arm64
+
| friendlywrt21-kernel4
+
| buildroot
+
|}
+
下载源代码并编译:
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi4-v4.19.y kernel-rockchip
+
cd kernel-rockchip
+
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
touch .scmversion
+
# 编译内核
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig
+
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig  # 启动配置界面
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4-images -j$(nproc)
+
# 编译驱动模块
+
mkdir -p out-modules
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules_install
+
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
+
rm -rf $PWD/out-modules/lib/modules/${KERNEL_VER}/kernel/drivers/gpu/arm/mali400/
+
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
+
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
+
</syntaxhighlight>
+
编译完会生成如下文件:
+
{| class="wikitable"
+
|-
+
| kernel.img
+
| resource.img
+
| 驱动模块位于out-modules目录
+
|}
+
安装内核: <br>
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
====编译内核linux-v5.15.y====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| friendlywrt21
+
| friendlywrt21-docker
+
| friendlywrt22
+
| friendlywrt22-docker
+
| friendlycore-lite-focal-kernel5-arm64
+
|}
+
下载源代码并编译:
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi-r2-v5.15.y kernel-rockchip
+
cd kernel-rockchip
+
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
touch .scmversion
+
# 编译内核
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi4_linux_defconfig
+
# make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig  # 启动配置界面
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 -j$(nproc)
+
# 编译驱动模块
+
mkdir -p out-modules && rm -rf out-modules/*
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules_install
+
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
+
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
+
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
+
</syntaxhighlight>
+
打包kernel.img与resource.img:
+
<syntaxhighlight lang="bash">
+
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/tools/mkkrnlimg && chmod 755 mkkrnlimg
+
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/tools/resource_tool && chmod 755 resource_tool
+
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/prebuilt/boot/logo.bmp
+
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/prebuilt/boot/logo_kernel.bmp
+
./mkkrnlimg arch/arm64/boot/Image kernel.img
+
mkdir kernel-dtbs
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dtb kernel-dtbs/rk3399-nanopi4-rev09.dtb
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dtb kernel-dtbs/rk3399-nanopi4-rev0a.dtb
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4se.dtb kernel-dtbs/rk3399-nanopi4-rev0b.dtb
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dtb kernel-dtbs/rk3399-nanopi4-rev00.dtb
+
./resource_tool --dtbname kernel-dtbs/*.dtb logo.bmp logo_kernel.bmp
+
</syntaxhighlight>
+
完成后会得到如下文件:
+
{| class="wikitable"
+
|-
+
| kernel.img
+
| resource.img
+
| 驱动模块位于out-modules目录
+
|}
+
安装内核: <br>
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
====编译u-boot v2017.09====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| debian-buster-desktop-arm64
+
| debian-bullseye-core-arm64
+
| debian-bullseye-desktop-arm64
+
| debian-bullseye-minimal-arm64
+
|-
+
| friendlycore-focal-arm64
+
| friendlycore-lite-focal-kernel4-arm64
+
| friendlywrt21-kernel4
+
| buildroot
+
|}
+
下载源代码并编译:
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b friendlyelec
+
git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi4-v2017.09
+
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
cd uboot-rockchip/
+
./make.sh nanopi4
+
</syntaxhighlight>
+
编译完成后会生成如下文件:
+
{| class="wikitable"
+
|-
+
| uboot.img
+
| trust.img
+
| rk3399_loader_v1.24.126.bin (打包时改名为MiniLoaderAll.bin)
+
|}
+
安装u-boot: <br />
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
 
+
====下载uboot与内核到目标板====
+
=====下载至已安装的系统=====
+
======MBR分区======
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| lubuntu
+
| eflasher
+
| friendlydesktop-arm64
+
| friendlycore-arm64
+
|}
+
目前只有linux v4.4内核使用mbr分区,需要参考此链接的[https://github.com/friendlyarm/sd-fuse_rk3399/blob/kernel-4.19/prebuilt/parameter.template partmap文件],计算各分区的偏移地址,用dd命令进行写入,例如parameter.template文件内容中"0x00014000@0x00014000(kernel)"表示kernel.img的位置位于0x00014000,转换成10进制就是81920, 所以dd命令如下:
+
<syntaxhighlight lang="bash">
+
dd if=kernel.img of=/dev/mmcblk0 seek=81920
+
</syntaxhighlight>
+
 
+
======GPT分区======
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| debian-buster-desktop-arm64
+
| debian-bullseye-core-arm64
+
| debian-bullseye-desktop-arm64
+
| debian-bullseye-minimal-arm64
+
|-
+
| friendlycore-focal-arm64
+
| friendlycore-lite-focal-kernel4-arm64
+
| friendlywrt21-kernel4
+
| buildroot
+
|-
+
| friendlywrt21
+
| friendlywrt21-docker
+
| friendlywrt22
+
| friendlywrt22-docker
+
|}
+
linux v4.19内核和linux v5.15内核的系统默认使用GPT分区, 更新GPT分区比较简单,直接dd image文件至相应的分区即可(注意image的大小不要越界),在操作时需要注意存储设备的节点:
+
* SD/TF Card设备节点为 /dev/mmcblk0 <br />
+
* eMMC设备节点为 /dev/mmcblk2 <br />
+
下面将演示如何将内核更新到eMMC:<br />
+
使用parted命令查看分区布局:
+
<syntaxhighlight lang="bash">
+
parted /dev/mmcblk2 print
+
</syntaxhighlight>
+
得到如下输出:
+
<syntaxhighlight lang="bash">
+
Model: MMC A3A551 (sd/mmc)
+
Disk /dev/mmcblk2: 31.0GB
+
Sector size (logical/physical): 512B/512B
+
Partition Table: gpt
+
Disk Flags:
+
 
+
Number  Start  End    Size    File system  Name      Flags
+
1      8389kB  12.6MB  4194kB              uboot
+
2      12.6MB  16.8MB  4194kB              misc
+
3      16.8MB  21.0MB  4194kB              dtbo
+
4      21.0MB  37.7MB  16.8MB              resource
+
5      37.7MB  79.7MB  41.9MB              kernel
+
6      79.7MB  113MB  33.6MB              boot
+
7      113MB  147MB  33.6MB              recovery
+
8      147MB  31.0GB  30.9GB  ext4        rootfs
+
</syntaxhighlight>
+
可以看到resource分区位置为4, kernel分区位置为5,用dd命令分别写入resource.img与kernel.img到这两个分区即可, 命令如下:
+
<syntaxhighlight lang="bash">
+
dd if=resource.img of=/dev/mmcblk2p4 bs=1M
+
dd if=kernel.img of=/dev/mmcblk2p5 bs=1M
+
</syntaxhighlight>
+
如果要更新uboot,则命令为:
+
<syntaxhighlight lang="bash">
+
dd if=boot.img of=/dev/mmcblk2p1 bs=1M
+
</syntaxhighlight>
+
如果要更新内核驱动模块,将新驱动模块目录上传并替换以下目录下的文件即可:/lib/modules。
+
 
+
=====打包新的SD卡启动固件或者SD-to-eMMC卡刷固件=====
+
sd-fuse 提供一些工具和脚本, 用于制作SD卡固件, 具体用途如下:<br />
+
* 制作分区镜像文件, 例如将rootfs目录打包成rootfs.img<br />
+
* 将多个分区镜像文件打包成可直接写SD卡的单一镜像文件<br />
+
* 简化内核和uboot的编译, 一键编译内核、第三方驱动, 并更新rootfs.img中的内核模块<br />
+
请根据所用的内核版本点击对应的链接了解详细的使用方法:
+
{| class="wikitable"
+
|-
+
! 内核版本
+
! 构建脚本
+
|-
+
| linux v4.4.y
+
| [https://github.com/friendlyarm/sd-fuse_rk3399/tree/master sd-fuse]
+
|-
+
| linux v4.19.y
+
| [https://github.com/friendlyarm/sd-fuse_rk3399/tree/kernel-4.19<br /> sd-fuse]
+
|-
+
| linux v5.15.y
+
| [https://github.com/friendlyarm/sd-fuse_rk3399/tree/kernel-5.15.y<br /> sd-fuse]
+
|}
+
=====线刷=====
+
不擦除flash的情况下只刷入编译生成的文件即可,需要注意的是uboot编译生成的rk3399_loader需要改名为MiniLoaderAll.bin,如下命令演示刷入uboot与内核,需要先加载parameter.txt,再刷入其他文件:
+
<syntaxhighlight lang="bash">
+
sudo upgrade_tool ul MiniLoaderAll.bin
+
sudo upgrade_tool di -p parameter.txt
+
sudo upgrade_tool di uboot uboot.img
+
sudo upgrade_tool di trust trust.img
+
sudo upgrade_tool di resource resource.img
+
sudo upgrade_tool di kernel kernel.img
+
sudo upgrade_tool RD
+
</syntaxhighlight>
+
注:upgrade_tool是Rockchip提供的Linux下的命令行工具(Linux_Upgrade_Tool)
+
 
+
===Android系统编译===
+
====编译Android10====
+
=====下载Android10源代码=====
+
有以下两种途径获取 Android10 的源代码,都需要联网:
+
* '''使用网盘里的git repo压缩包'''
+
网盘下载地址: [http://download.friendlyelec.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}} 点击进入]<br />
+
文件位于网盘的以下路径:07_源代码/rk3399-android-10.git-YYYYMMDD.tar.xz (YYYYMMDD表示打包的日期)<br />
+
从网盘中获取的压缩包在解压之后,需要执行一下 sync.sh 脚本,会从gitlab上拉取最新的代码:
+
<syntaxhighlight lang="bash">
+
tar xf /path/to/netdisk/07_源代码/rk3399-android-10.git-YYYYMMDD.tar.xz
+
cd rk3399-android-10
+
./sync.sh
+
</syntaxhighlight>
+
注意: 如果遇到“error: unknown option `recurse-submodules'”,请升级git至v2.0.0或以上版本。
+
* '''直接克隆git仓库'''
+
{{{1}}} 源代码托管在 gitlab 上,使用以下命令进行下载:
+
<syntaxhighlight lang="bash">
+
git clone --recursive https://gitlab.com/friendlyelec/rk3399-android-10.git -b main
+
</syntaxhighlight>
+
 
+
=====编译并生成Image文件=====
+
编译Android 10建议使用普通用户登录,运行以下命令编译:
+
<syntaxhighlight lang="bash">
+
cd rk3399-android-10
+
./build-nanopc-t4.sh -F -M
+
</syntaxhighlight>
+
如果需要包含google apps,需要设置一个环境变量再编译,如下所示:
+
<syntaxhighlight lang="bash">
+
cd rk3399-android-10
+
export INSTALL_GAPPS_FOR_TESTING=yes
+
./build-nanopc-t4.sh -F -M
+
</syntaxhighlight>
+
 
+
=====编译OTA Packages=====
+
如果需要A/B (Seamless) System Updates的支持,需要先进行以下定制:<br />
+
a) 搭建自己的更新服务器<br />
+
b) 定制packages/apps/Updater使其适配自己的更新服务<br />
+
定制完成后,使用快速编译脚本参数-O或--ota可编译OTA Packages,如下所示:
+
<syntaxhighlight lang="bash">
+
cd rk3399-android-10
+
./build-nanopc-t4.sh -F -O -M
+
</syntaxhighlight>
+
编译成功完成后,OTA更新相关的包位于目录 rockdev/otapackage/ ,请保留此目录。<br />
+
当完成了某些修改后使用参数-O 再次编译将会生成ota-update-XXXXXXXX.zip,这是增量更新包。<br />
+
OTA Packages依赖BUILD_NUMBER, 只有它有变化才会生成增量更新包,缺省的生成规则请查看build-nanopc-t4.sh。<br />
+
修改 device/rockchip/rk3399/nanopc-t4/BoardConfig.mk 中 <br />
+
<syntaxhighlight lang="bash">
+
BOARD_USES_AB_IMAGE := false
+
</syntaxhighlight>
+
可禁用 A/B 特性,然后重新编译(包括u-boot和android)。<br />
+
=====更新系统为自已编译的Image=====
+
编译完成后,image文件会存放在Android10源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 {{{1}}}上: <br />
+
1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区; <br />
+
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的 android10 目录; <br />
+
3) 将SD卡插入{{{1}}},重新烧写Andorid系统即可; <br />
+
也可参考这个github仓库的方法来更新:[https://github.com/friendlyarm/sd-fuse_rk3399 sd-fuse_rk3399]<br />
+
烧写Android 10时EFlasher 需要 v1.3 或以上版本,通过Type-C烧写时请使用rockchip提供的工具AndroidTool v2.71 或Linux_Upgrade_Tool v1.49 。
+
 
+
====编译Android8.1====
+
=====下载Android8.1源代码=====
+
有以下两种途径获取 Android8.1 的源代码,都需要联网:
+
* '''使用网盘里的git repo压缩包'''
+
网盘下载地址: [http://download.friendlyelec.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}} 点击进入]<br />
+
文件位于网盘的以下路径:sources/rk3399-android-8.1.git-YYYYMMDD.tgz (YYYYMMDD表示打包的日期)<br />
+
从网盘中获取的压缩包在解压之后,需要执行一下 sync.sh 脚本,会从gitlab上拉取最新的代码:
+
<syntaxhighlight lang="bash">
+
tar xvzf /path/to/netdisk/sources/rk3399-android-8.1.git-YYYYMMDD.tgz
+
cd rk3399-android-8.1
+
./sync.sh
+
</syntaxhighlight>
+
* '''直接克隆git仓库'''
+
{{{1}}} 源代码托管在 gitlab 上,使用以下命令进行下载:
+
<syntaxhighlight lang="bash">
+
git clone https://gitlab.com/friendlyelec/rk3399-android-8.1 --depth 1 -b master
+
</syntaxhighlight>
+
 
+
=====编译并生成Image文件=====
+
使用以下命令编译:
+
<syntaxhighlight lang="bash">
+
cd rk3399-android-8.1
+
./build-nanopc-t4.sh -F -M
+
</syntaxhighlight>
+
 
+
=====更新系统为自已编译的Image=====
+
编译完成后,image文件会存放在Android8.1源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 {{{1}}}上: <br />
+
1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区; <br />
+
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的 android8 目录; <br />
+
3) 将SD卡插入{{{1}}},重新烧写Andorid系统即可; <br />
+
也可参考这个github仓库的方法来更新:[https://github.com/friendlyarm/sd-fuse_rk3399 sd-fuse_rk3399]<br />
+
 
+
====编译Android7源代码====
+
=====下载Android7源代码=====
+
有以下两种途径获取 Android7 的源代码,都需要联网:
+
* '''使用网盘里的git repo压缩包'''
+
网盘下载地址: [http://download.friendlyelec.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}}  点击进入]<br />
+
文件位于网盘的以下路径:sources/rk3399-android-7.git-YYYYMMDD.tgz (YYYYMMDD表示打包的日期)<br />
+
从网盘中获取的 repo 压缩包在解压之后,需要执行一下 sync.sh 脚本,会从gitlab上拉取最新的代码:
+
<syntaxhighlight lang="bash">
+
tar xvzf /path/to/netdisk/sources/rk3399-android-7.git-20181228.tgz
+
cd rk3399-nougat
+
./sync.sh
+
</syntaxhighlight>
+
* '''直接克隆git仓库'''
+
{{{1}}} 源代码托管在 gitlab 上,使用以下命令进行下载:
+
<syntaxhighlight lang="bash">
+
git clone https://gitlab.com/friendlyelec/rk3399-nougat --depth 1 -b nanopc-t4-nougat
+
</syntaxhighlight>
+
 
+
=====编译并生成Image文件=====
+
使用以下命令编译:
+
<syntaxhighlight lang="bash">
+
cd rk3399-nougat
+
./build-nanopc-t4.sh -F -M
+
</syntaxhighlight>
+
 
+
=====更新系统为自已编译的Image=====
+
编译完成后,image文件会存放在Android7源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 {{{1}}}上: <br />
+
1) 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区; <br />
+
2) 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 FRIENDLYARM 分区里的  nougat 目录; <br />
+
3) 将SD卡插入{{{1}}},重新烧写Andorid系统即可; <br />
+
也可参考这个github仓库的方法来更新:[https://github.com/friendlyarm/sd-fuse_rk3399 sd-fuse_rk3399]<br />
+

Latest revision as of 09:23, 4 June 2024

1 Unbricking Method

If the ROM is not installed correctly, causing the development board to become bricked, and you might not have the opportunity to reinstall the ROM via an SD card, you need to enter Maskrom mode to unbrick it by erasing the storage device.

1.1 Windows Users

1.1.1 Download Required Files

  • Get the necessary tools: Visit here, find RKDevTool_v3.19_for_window.zip and DriverAssitant_v5.12.zip in the 05_Tools directory, and download them to your local machine.
  • Install Rockchip USB driver and RKDevTool: Extract DriverAssitant_v5.12.zip to install the Rockchip USB driver, and extract RKDevTool_v3.19_for_window.zip to obtain the Rockchip flashing tool RKDevTool.
  • Get the loader: Visit here, enter the tools directory corresponding to your CPU model, and download MiniLoaderAll.bin.

1.1.2 Enter Maskrom Mode to Erase the Storage Device

  • Connect NanoPC-T4 to your computer using a USB data cable.
  • Start RKDevTool on your computer.
  • Disconnect the power from NanoPC-T4, hold down the MASK button, connect the power, and release the button when you see Found One MASKROM Device displayed at the bottom of the interface, as shown below:

Rkdevtool found one maskrom device.png

  • Click the Advanced Function tab in the RKDevTool interface.
  • In the Boot text box, select MiniLoaderAll.bin, then click the Download button.
  • Select EMMC, click Switch Storage, then click the EraseAll button to erase the eMMC.

Rkdevtool erase emmc.png

  • At this point, NanoPC-T4 is restored to its initial state and can be normally booted via SD card or eMMC.

1.2 Linux/Mac Users

1.2.1 Download the Required Files

  • Get the necessary tools: Visit here and find upgrade_tool_v2.30_for_linux.tgz (or for Mac users, select upgrade_tool_v2.25_for_mac.tgz) in the 05_Tools directory and download it locally.
  • Get the loader: Visit here, enter the tools directory corresponding to your CPU model, and download MiniLoaderAll.bin.

1.2.2 Installation for upgrade_tool

The following commands are for Linux, with only slight differences in file and directory names for Mac users:

tar xzf upgrade_tool_v2.30_for_linux.tgz
cd upgrade_tool_v2.30_for_linux
sudo cp upgrade_tool /usr/local/sbin/
sudo chmod 755 /usr/local/sbin/upgrade_tool

1.2.3 Enter Maskrom Mode to Erase the Storage Device

  • Connect NanoPC-T4 to the computer using a USB data cable.
  • Disconnect the power from NanoPC-T4, hold down the MASK button, connect the power, and release the button after 4 seconds.
  • Check the connection with the following command:
upgrade_tool LD

A result similar to "DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=13 Mode=Maskrom SerialNo=" indicates that the device has been detected.

  • Erase the eMMC with the following command:
upgrade_tool EF MiniLoaderAll.bin
  • At this point, NanoPC-T4 has been restored to its initial state and can boot the system normally via SD card or eMMC.