Difference between revisions of "APITestPage/zh"
Line 56: | Line 56: | ||
* The [https://github.com/friendlyarm/sd-fuse_rk3588/tree/master sd-fuse] is a helper script to make bootable SD card image. | * The [https://github.com/friendlyarm/sd-fuse_rk3588/tree/master sd-fuse] is a helper script to make bootable SD card image. | ||
====Build kernel linux-v5.10.y==== | ====Build kernel linux-v5.10.y==== | ||
− | + | Clone the repository to your local drive then build: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi5-v5.10.y_opt kernel-rockchip | git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi5-v5.10.y_opt kernel-rockchip | ||
Line 90: | Line 90: | ||
Please click on [[#Apply u-boot and the kernel]]<br> | Please click on [[#Apply u-boot and the kernel]]<br> | ||
====Compile u-boot v2017.09==== | ====Compile u-boot v2017.09==== | ||
− | + | Clone the repository to your local drive then build: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b nanopi6 | git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b nanopi6 | ||
Line 102: | Line 102: | ||
|- | |- | ||
| uboot.img | | uboot.img | ||
− | | rk3588_spl_loader_v1.08.111.bin ( | + | | rk3588_spl_loader_v1.08.111.bin (aka MiniLoaderAll.bin) |
|} | |} | ||
Apply u-boot: <br> | Apply u-boot: <br> | ||
Line 175: | Line 175: | ||
Note: "upgrade_tool" is a command-line tool provided by Rockchip for Linux operating systems (Linux_Upgrade_Tool). | Note: "upgrade_tool" is a command-line tool provided by Rockchip for Linux operating systems (Linux_Upgrade_Tool). | ||
===Compile Android=== | ===Compile Android=== | ||
− | ====Download | + | ====Download android source code from the netdrive==== |
Netdisk URL: [http://download.friendlyelec.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}} Click here]<br /> | Netdisk URL: [http://download.friendlyelec.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}} Click here]<br /> | ||
File location on netdisk:"07_Source codes/rk35xx-android12-xxxxxxx-YYYYMMDD.tgz" (YYYYMMDD represents the date of the package, and xxxxxxx represents the final commit-id)<br /> | File location on netdisk:"07_Source codes/rk35xx-android12-xxxxxxx-YYYYMMDD.tgz" (YYYYMMDD represents the date of the package, and xxxxxxx represents the final commit-id)<br /> |
Revision as of 14:15, 8 April 2023
1 Build u-boot and kernel
1.1 Kernel and u-boot versions
Operating System | Kernel Version | U-boot version | Cross-compiler | Partition type | Packaging Tool | Kernel branch | Kernel configuration | U-boot branch | U-boot configuration |
---|---|---|---|---|---|---|---|---|---|
buildroot | linux v5.10.y | u-boot v2017.09 |
11.3-aarch64 | GPT | sd-fuse | nanopi5-v5.10.y_opt | nanopi6_linux_defconfig | nanopi6-v2017.09 | rk3588_defconfig |
ubuntu-jammy-desktop-arm64 | |||||||||
ubuntu-jammy-minimal-arm64 | |||||||||
friendlycore-focal-arm64 | |||||||||
debian-bullseye-core-arm64 | |||||||||
debian-bullseye-desktop-arm64 | |||||||||
debian-bullseye-minimal-arm64 | |||||||||
debian-buster-desktop-arm64 | |||||||||
friendlywrt21 | nanopi6_linux_defconfig friendlywrt.config | ||||||||
friendlywrt21-docker | |||||||||
friendlywrt22 | |||||||||
friendlywrt22-docker |
- Kernel git repo:https://github.com/friendlyarm/kernel-rockchip
- U-boot git repo:https://github.com/friendlyarm/uboot-rockchip
- The cross-compile toolchain is located in the path: /opt/FriendlyARM/toolchain/. Using the toolchain is as simple as adding the toolchain’s bin directory in your PATH, such as:
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
- The sd-fuse is a helper script to make bootable SD card image.
1.2 Build kernel linux-v5.10.y
Clone the repository to your local drive then build:
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi5-v5.10.y_opt kernel-rockchip cd kernel-rockchip export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH touch .scmversion # Configuring the Kernel # Load default configuration make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6_linux_defconfig # Optionally, load configuration for FriendlyWrt # make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6_linux_defconfig friendlywrt.config # Optionally, if you want to change the default kernel config # make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig # Start building kernel make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi6-images -j$(nproc) # Start building kernel modules 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)
The generated files:
kernel.img | resource.img | |
The kernel modules are located in the out-modules directory |
Apply kernel:
Please click on #Apply u-boot and the kernel
1.3 Compile u-boot v2017.09
Clone the repository to your local drive then build:
git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b nanopi6 git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi6-v2017.09 export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH cd uboot-rockchip/ ./make.sh nanopi6
After the compilation, the following files will be generated:
uboot.img | rk3588_spl_loader_v1.08.111.bin (aka MiniLoaderAll.bin) |
Apply u-boot:
Please click on #Apply u-boot and the kernel
1.4 Apply u-boot and the kernel
1.4.1 Install to target board
Since the rk3588's OS uses GPT partitions by default, you can use the dd command to write the image file to the partition, the device nodes for SD card and eMMC are shown below:
- The SD/TF Card device node: /dev/mmcblk0
- The eMMC device node: /dev/mmcblk2
Use the 'parted' command to view the partition layout:
parted /dev/mmcblk2 print
Sample outputs:
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
as shown above, the resource partition is located at 4 and the kernel partition is located at 5. Use the dd command to write the resource.img and kernel.img files to these partitions, the commands are as follows:
dd if=resource.img of=/dev/mmcblk2p4 bs=1M dd if=kernel.img of=/dev/mmcblk2p5 bs=1M
If you want to update u-boot:
dd if=boot.img of=/dev/mmcblk2p1 bs=1M
To update new driver modules, copy the newly compiled driver modules to the appropriate directory under /lib/modules.
1.4.2 Packaging and creating an SD image
To create a new OS image file, you need to use the "sd-fuse" packaging tool.
"sd-fuse" is a collection of scripts that can be used to create bootable SD card images for FriendlyElec boards. Its main features include:
- Creation of root filesystem images from a directory
- Building of bootable SD card images
- Simple compilation of kernel, U-Boot, and third-party drivers
Please click on the following link to find out more:
Kernel version | Packaging Tool |
---|---|
linux v5.10.y | sd-fuse_rk3588 |
1.4.3 USB flashing
1.4.3.1 Linux
To flash U-Boot and kernel using the "upgrade_tool" tool, please use the following command:
sudo upgrade_tool ul MiniLoaderAll.bin sudo upgrade_tool di -p parameter.txt sudo upgrade_tool di uboot uboot.img sudo upgrade_tool di resource resource.img sudo upgrade_tool di kernel kernel.img sudo upgrade_tool RD
Note: "upgrade_tool" is a command-line tool provided by Rockchip for Linux operating systems (Linux_Upgrade_Tool).
2 Compile Android
2.1 Download android source code from the netdrive
Netdisk URL: Click here
File location on netdisk:"07_Source codes/rk35xx-android12-xxxxxxx-YYYYMMDD.tgz" (YYYYMMDD represents the date of the package, and xxxxxxx represents the final commit-id)
Unzip and fetch updates:
tar xzf '/path/to/netdisk/07_Source codes/rk35xx-android12-xxxxxxx-YYYYMMDD.tgz' cd rk35xx-android12 git pull
2.2 Compile Android Table
echo "ROCKCHIP_DEVICE_DIR := device/rockchip/rk3588/nanopi6" > .rockchip_device.mk # export INSTALL_GAPPS_FOR_TESTING=yes # include google apps . setenv.sh ./build.sh -FMu
2.3 Compile Android TV
echo "ROCKCHIP_DEVICE_DIR := device/rockchip/rk3588/nanopi6_box" > .rockchip_device.mk # export INSTALL_GAPPS_FOR_TESTING=yes # include google apps . setenv.sh ./build.sh -FMu
2.4 Installing Android
After the Android compilation is completed, the image file will be stored in the rockdev/Image-aosp_nanopi3 subdirectory of the Android source code directory.
2.4.1 USB Flashing
Use the rockchip tool to flash the following file: rockdev/Image-aosp_nanopi3/update.img
2.4.2 SD-to-eMMC Flash
Refer to the following steps:
1) Insert the SD card of the eflasher system into the host;
2) Copy the files in the rockdev/Image-aosp_nanopi3 directory to the android12 or androidtv directory in the FRIENDLYARM partition of the SD card:
sudo cp -af parameter.txt config.cfg MiniLoaderAll.bin uboot.img \ dtbo.img vbmeta.img boot.img recovery.img \ misc.img pcba_small_misc.img pcba_whole_misc.img \ baseparameter.img super.img /media/$USER/FriendlyARM/android12
3) Insert the SD card into {{{1}}} and re-flash;
2.5 Pack the new SD Image
git clone https://github.com/friendlyarm/sd-fuse_rk3588.git SDFUSE=$PWD/sd-fuse_rk3588 mkdir $SDFUSE/android12 cd /path/to/rk35xx-android12/rockdev/Image-aosp_nanopi3 cp -af parameter.txt config.cfg MiniLoaderAll.bin uboot.img \ dtbo.img vbmeta.img boot.img recovery.img \ misc.img pcba_small_misc.img pcba_whole_misc.img \ baseparameter.img super.img $SDFUSE/android12 cd $SDFUSE/ ./mk-sd-image.sh android12 tar xvzf /path/to/netdrive/03_Partition\ image\ files/emmc-flasher-images.tgz ./mk-emmc-image.sh android12
For more information, please refer to #Packaging and creating an SD image