Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
 
(111 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Buildroot for RK3399|English]]
 
  
==Buildroot简介==
+
{{BurnLinuxToExtDrive-Rockchip/zh|NanoPC-T4}}
{{RK3399 Buildroot Intro/zh}}
+
{{BurnLinuxToExtDrive-Rockchip|NanoPC-T4}}
 
+
==下载体验版固件==
+
访问[http://download.friendlyarm.com/nanopct4 此处的下载地址]下载:<br />
+
{| class="wikitable"
+
|-
+
  | colspan=2 | Image Files
+
|-
+
  | rk3399-sd-buildroot-linux-4.19-arm64-YYYYMMDD.img.zip
+
  | 从SD卡启动的固件
+
|-
+
  | rk3399-eflasher-buildroot-YYYYMMDD.img.zip
+
  | 用于烧写到eMMC运行
+
|}
+
解压后用 dd 或者 win32image 烧写到 SD 卡。
+
==帐户与密码==
+
用户名: root<br />
+
密码: rockchip<br />
+
<br />
+
密码可通过以下文件更改:
+
<syntaxhighlight lang="bash">
+
buildroot/configs/rockchip/network.config
+
</syntaxhighlight>
+
==获取项目源代码==
+
===安装 repo 工具===
+
首先需要安装 repo 工具:
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/repo -b rk-linux-sdk --depth 1
+
sudo cp repo/repo /usr/bin/
+
</syntaxhighlight>
+
===下载项目源代码===
+
有以下两种途径获取项目源代码,中国大陆用户建议使用方法1的途径下载:
+
====方法一:使用网盘里的repo压缩包====
+
网盘下载地址: [http://download.friendlyarm.com/{{#replace:{{#replace:{{BASEPAGENAME}}| |}}|/zh|}} 点击进入]<br />
+
文件位于网盘的以下路径:sources/buildroot-rk3399-YYYYMMDD.tar (YYYYMMDD表示打包的日期)<br />
+
从网盘中获取的 repo 压缩包在解压之后,需要执行一下以下命令做一次解包动作:
+
<syntaxhighlight lang="bash">
+
tar xvf /path/to/netdisk/sources/buildroot-rk3399-YYYYMMDD.tar
+
cd buildroot-rk3399
+
repo sync -l
+
</syntaxhighlight>
+
用此方法得到的源代码版本是repo打包时的版本,如果想拉取到官方最新的版本,可以去掉 -l 参数,执行一次 repo sync, 例如:
+
<syntaxhighlight lang="bash">
+
cd buildroot-rk3399
+
repo sync --no-clone-bundle
+
</syntaxhighlight>
+
====方法二:从github下载====
+
<syntaxhighlight lang="bash">
+
mkdir buildroot-rk3399
+
cd buildroot-rk3399
+
repo init -u https://github.com/friendlyarm/buildroot_manifests \
+
  -b rockchip-kernel4.19 -m rk3399.xml --repo-url=https://github.com/friendlyarm/repo \
+
  --no-clone-bundle
+
repo sync -c --no-clone-bundle
+
</syntaxhighlight>
+
====同步项目到最新版本====
+
<syntaxhighlight lang="bash">
+
cd buildroot-rk3399
+
repo sync -c --no-clone-bundle
+
</syntaxhighlight>
+
同步过程中,由于网络原因出现中断,可以使用下面脚本同步代码:
+
<syntaxhighlight lang="bash">
+
#! /bin/bash
+
repo sync -c --no-clone-bundle
+
while [ $? -ne 0 ];
+
do 
+
    repo sync -c --no-clone-bundle
+
done
+
</syntaxhighlight>
+
==如何编译==
+
===搭建编译环境===
+
在PC的Ubuntu系统下 (建议使用版本18.04-64bit),执下以下命令安装所需的软件:
+
<syntaxhighlight lang="bash">
+
wget -O - https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh | bash
+
</syntaxhighlight>
+
 
+
===在Docker容器里编译===
+
请使用此链接提供的Docker映象, 具体方法可阅读此链接中的README:<br />
+
https://github.com/friendlyarm/friendlyelec-ubuntu18-docker<br />
+
 
+
===查看帮助===
+
不带参数执行 build.sh,默认是打印帮助信息:
+
<syntaxhighlight lang="bash">
+
./build.sh
+
</syntaxhighlight>
+
显示的帮助信息如下 (以RK3399平台为例):
+
<syntaxhighlight lang="bash">
+
USAGE: ./build.sh <parameter>
+
 
+
# 选择目标的硬件平台:
+
  ./build.sh nanopc_t4.mk
+
  ./build.sh nanopi_m4.mk
+
  ./build.sh nanopi_neo4.mk
+
  ./build.sh nanopi_r4s.mk
+
  ./build.sh som-rk3399.mk
+
 
+
# 编译各个模块:
+
  ./build.sh all                -编译所有组件
+
  ./build.sh uboot              -单独编译uboot
+
  ./build.sh kernel            -单独编译kernel
+
  ./build.sh buildroot          -单独编译buildroot
+
  ./build.sh sd-img            -生成sd启动的镜像文件
+
  ./build.sh emmc-img          -生成用于安装到emmc的镜像文件 (镜像文件需要dd到sd卡,通过sd卡启动安装程序)
+
# 清理:
+
  ./build.sh cleanall
+
</syntaxhighlight>
+
 
+
===全自动方式编译===
+
初次编译,需要选择目标的硬件平台,以RK3399平台的R4S为例:
+
<syntaxhighlight lang="bash">
+
./build.sh nanopc_r4s.mk
+
</syntaxhighlight>
+
执行上述命令,会自动编译所有组件,其中包括u-boot, kernel 和 buildroot,并生成sd启动的烧写镜像文件。
+
 
+
===编译单独的模块===
+
====kernel====
+
<syntaxhighlight lang="bash">
+
./build.sh kernel
+
</syntaxhighlight>
+
====u-boot====
+
<syntaxhighlight lang="bash">
+
./build.sh uboot
+
</syntaxhighlight>
+
====buildroot====
+
<syntaxhighlight lang="bash">
+
./build.sh buildroot
+
</syntaxhighlight>
+
===生成sdcard固件===
+
<syntaxhighlight lang="bash">
+
sudo ./build.sh sd-img
+
</syntaxhighlight>
+
打包img成功后,终端会显示如下信息,可以参考下面的dd命令将img写入sd卡,注意/dev/sdX需要替换成真实的sd卡设备:<br />
+
<syntaxhighlight lang="bash">
+
Run the following for sdcard install:
+
    sudo dd if=out/Buildroot_20211213_NanoPi-R4S_arm64_sd.img bs=1M of=/dev/sdX
+
</syntaxhighlight>
+
===生成emmc (eflasher) 固件===
+
<syntaxhighlight lang="bash">
+
sudo ./build.sh emmc-img
+
</syntaxhighlight>
+
打包img成功后,终端会显示如下信息,可以参考下面的dd命令将img写入sd卡,注意/dev/sdX需要替换成真实的sd卡设备:<br />
+
<syntaxhighlight lang="bash">
+
Run the following for sdcard install:
+
    sudo dd if=out/Buildroot_20211213_NanoPi-R4S_arm64_eflasher.img bs=1M of=/dev/sdX
+
</syntaxhighlight>
+
用此sd卡启动eflasher系统,执行eflasher命令,将系统写入emmc,之后就可以拨掉sd卡,从emmc启动buildroot了。
+
 
+
==Buildroot定制与开发==
+
===目录结构===
+
<syntaxhighlight lang="bash">
+
├── buildroot-xxyyzz
+
│  ├── buildroot -> buildroot源代码
+
|  └── toolchain -> 交叉编译器,仅用于编译u-boot与kernel
+
│  ├── build.sh -> 编译脚本
+
│  ├── device/friendlyelec -> 用于适配友善电子开发板的相关文件
+
│  ├── kernel -> 内核
+
│  └── u-boot -> u-boot
+
│  └── app -> rockchip的app
+
│  └── external -> rockchip的buildroot软件包
+
│  └── rkbin -> rockchip的引导程序
+
│  └── scripts -> 打包img的相关脚本
+
</syntaxhighlight>
+
 
+
====更改Buildroot配置====
+
* 列出当前可用的配置
+
<syntaxhighlight lang="bash">
+
cd buildroot
+
make list-defconfigs
+
</syntaxhighlight>
+
适合FriendlyELEC RK3399的配置所下:<br />
+
friendlyelec_rk3399_defconfig          - Build for friendlyelec_rk3399<br />
+
* 使用menuconfig更改配置
+
<syntaxhighlight lang="bash">
+
make friendlyelec_rk3399_defconfig
+
make menuconfig
+
make savedefconfig
+
diff .defconfig configs/friendlyelec_rk3399_defconfig
+
cp .defconfig configs/friendlyelec_rk3399_defconfig
+
</syntaxhighlight>
+
* 重新编译
+
<syntaxhighlight lang="bash">
+
cd ../
+
./build.sh buildroot
+
</syntaxhighlight>
+
===预装文件到文件系统===
+
将文件放在 device/friendlyelec/rk3399/common-files,然后重新打包img:
+
<syntaxhighlight lang="bash">
+
sudo ./build.sh sd-img
+
sudo ./build.sh emmc-img
+
</syntaxhighlight>
+
===修改u-boot和kernel===
+
直接修改u-boot和kernel目录下的文件即可。
+
===使用sdk里的交叉编译器===
+
<syntaxhighlight lang="bash">
+
export PATH=$PWD/buildroot/output/rockchip_rk3399/host/bin/:$PATH
+
aarch64-buildroot-linux-gnu-g++ -v
+
</syntaxhighlight>
+
显示版本如下:<br />
+
gcc 版本 6.4.0 (Buildroot 2018.02-rc3-g4f000a0797)
+
===交叉编译Qt程序===
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/QtE-Demo.git
+
cd QtE-Demo
+
../buildroot/output/rockchip_rk3399/host/bin/qmake QtE-Demo.pro
+
make
+
</syntaxhighlight>
+
要实现开机自动运行你的Qt程序,可将QtE-Demo拷贝到开发板上,然后修改 /etc/init.d/下的S50launcher,将/usr/local/QLauncher/QLauncher &这一行改为QtE-Demo的文件路径即可。
+
==常见问题==
+
===如何获取用于USB Type-C烧写的文件?===
+
执行 build.sh emmc-img 之后,在 scripts/sd-fuse 下面会有一个 buildroot 目录,使用android_tools工具加载这个目录下的文件即可。
+
==报告bug==
+
欢迎发邮件到:techsupport@friendlyarm.com<br />
+
==更新日志==
+
===2021-12-23===
+
* 简化构建脚本, 并将buildroot更新至原厂新版本
+

Latest revision as of 09:58, 29 October 2024

1 安装系统到M.2或USB硬盘

可以通过使用TF卡启动eFlasher系统,将引导和系统分别安装到不同存储设备,但是由于CPU不支持直接从M.2和USB设备引导,所以虽然系统可以安装到M.2和USB设备,但是引导仍然需要安装到eMMC或者TF卡。
操作步骤如下:

  • 准备一张32G或以上容量的TF卡;
  • 访问此处的下载地址下载文件名为XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz的固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录);
  • 将固件写入TF卡,在NanoPC-T4上连接好存储设备,插入TF卡上电开机,接下来要在界面上操作,如果没有显示设备,可以使用VNC代替,请参考使用VNC操作eFlasher;
  • 在eFlasher界面上,首先选择要安装的OS,然后选择引导安装的目的地 (通常选eMMC),以及选择系统安装的目的地(可以选eMMC,M.2硬盘,USB存储设备等),如下图所示:

Eflasher-select-boot-and-system-device.png

  • 没有eMMC时可使用TF卡作为引导,方法是将另一个TF卡通过USB读卡器插入USB端口,然后选择USB设备作为引导安装目的地,从而实现从TF卡引导,但系统存放在M.2或USB硬盘的目的;
  • 烧写完成后,从NanoPC-T4弹出SD卡,引导在eMMC的情况下,NanoPC-T4会自动重启至你刚刚烧写的系统,如果引导安装在TF卡,则需要拨掉电源,插入TF引导卡再上电开机;
  • 更详细的安装指南请参考此处;

2 Installing the System to M.2 or USB Drive

You can use a TF card to boot the eFlasher system, allowing the boot and system to be installed on different storage devices. However, since the CPU doesn’t support booting directly from M.2 and USB devices, the system can be installed on M.2 and USB devices, but the boot must still be installed on eMMC or a TF card.
Steps are as follows:

  • Prepare a TF card with a capacity of 32GB or larger.
  • Visit [the download link here](http://download.friendlyelec.com/APITestPage) to download the firmware file named XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz (located in the “01_Official images/02_SD-to-eMMC images” directory).
  • Flash the firmware to the TF card, connect the storage device you intend to use on NanoPC-T4, insert the TF card and power on, we need to perform the operations in the eFlasher GUI. If your NanoPC-T4 does not have a display interface, you can use VNC; refer to Using VNC to Operate eFlasher.
  • In the eFlasher GUI, select the OS to install, and in the OS settings interface, choose the destination for boot installation (typically eMMC), then choose the destination for system installation (options include eMMC, M.2 hard drive, USB storage, etc.), as shown below:

Eflasher-select-boot-and-system-device.png

  • If no eMMC is available, the TF card can serve as the boot by inserting another TF card into the USB port via a USB card reader and selecting it as the boot destination, enabling booting from the TF card with the system stored on the M.2 or USB drive.
  • After flashing, eject the SD card from NanoPC-T4. If booting from eMMC, NanoPC-T4 will automatically restart into the newly flashed system. If boot installation is on a TF card, power off, insert the boot TF card, and power on again.
  • For a more detailed installation guide, please refer to this link.