Difference between revisions of "NanoPi R3S/zh"
(→NanoPi R3S资源特性) |
(updated by API) |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
* NanoPi R3S(以下简称R3S)是友善电子团队最新推出的一款实现满速率双千兆的、完全开源的开发板。 | * NanoPi R3S(以下简称R3S)是友善电子团队最新推出的一款实现满速率双千兆的、完全开源的开发板。 | ||
* NanoPi R3S 使用RK3566 CPU,有两个千兆网络,2G LPDDR4X内存,可选板载32G eMMC,友善电子团队为NanoPi R3S专门移植了OpenWrt系统,支持Docker CE, 完全开源,用于企业物联网二次开发,个人定制NAS等。 | * NanoPi R3S 使用RK3566 CPU,有两个千兆网络,2G LPDDR4X内存,可选板载32G eMMC,友善电子团队为NanoPi R3S专门移植了OpenWrt系统,支持Docker CE, 完全开源,用于企业物联网二次开发,个人定制NAS等。 | ||
+ | * NanoPi R3S 可选配安装一体化CNC氧化铝外壳,以及2寸的LCD屏幕用于状态监看。 | ||
==NanoPi R3S资源特性== | ==NanoPi R3S资源特性== | ||
Line 24: | Line 25: | ||
* RTC:板载低功耗RTC,支持外接RTC电池 | * RTC:板载低功耗RTC,支持外接RTC电池 | ||
* 按键: 一个用户自定义按键,一个用于USB线刷系统的MASK按键 | * 按键: 一个用户自定义按键,一个用于USB线刷系统的MASK按键 | ||
+ | * 一个30Pin MIPI-DSI FPC接口 | ||
* PCB尺寸: 57 x 57mm | * PCB尺寸: 57 x 57mm | ||
* 供电: USB-C 5V/2A | * 供电: USB-C 5V/2A | ||
Line 32: | Line 34: | ||
===接口布局=== | ===接口布局=== | ||
[[File:NanoPi R3S-layout.jpg |frameless|550px|NanoPi R3S接口布局]] | [[File:NanoPi R3S-layout.jpg |frameless|550px|NanoPi R3S接口布局]] | ||
+ | * '''MIPI-DSI''' | ||
+ | :: 0.5mm FPC Connector | ||
+ | ::{| class="wikitable" | ||
+ | |- | ||
+ | |'''Pin#''' || '''Signal''' || '''Description ''' | ||
+ | |- | ||
+ | |1,2,3 || VCC5V0_SYS || 5V Power ouput | ||
+ | |- | ||
+ | |4,7,9,11,15,18,21,24,27,30||GND || Power and Signal Ground | ||
+ | |- | ||
+ | |5 || I2C2_SDA_M0 || 3.3V, I2C Data, has been pulled up to 3.3V with 2.2K on R3S | ||
+ | |- | ||
+ | |6 || I2C2_SCL_M0 || 3.3V, I2C Clock, has been pulled up to 3.3V with 2.2K on R3S | ||
+ | |- | ||
+ | |8 || GPIO0_C6 || 3.3V, GPIO | ||
+ | |- | ||
+ | |10 || GPIO0_C3 or PWM4 || 3.3V, GPIO/PWM | ||
+ | |- | ||
+ | |12 || GPIO0_C4 || 3.3V, GPIO | ||
+ | |- | ||
+ | |13 || /NC || No Connection | ||
+ | |- | ||
+ | |14 || GPIO0_C5 || 3.3V, GPIO | ||
+ | |- | ||
+ | |16 || MIPI_DSI_TX1_D3N || MIPI TX Lane3 ouput N | ||
+ | |- | ||
+ | |17 || MIPI_DSI_TX1_D3P || MIPI TX Lane3 ouput P | ||
+ | |- | ||
+ | |19 || MIPI_DSI_TX1_D2N || MIPI TX Lane2 ouput N | ||
+ | |- | ||
+ | |20 || MIPI_DSI_TX1_D2P || MIPI TX Lane2 ouput P | ||
+ | |- | ||
+ | |22 || MIPI_DSI_TX1_D1N || MIPI TX Lane1 ouput N | ||
+ | |- | ||
+ | |23 || MIPI_DSI_TX1_D1P || MIPI TX Lane1 ouput P | ||
+ | |- | ||
+ | |25 || MIPI_DSI_TX1_D0N || MIPI TX Lane0 ouput N | ||
+ | |- | ||
+ | |26 || MIPI_DSI_TX1_D0P || MIPI TX Lane0 ouput P | ||
+ | |- | ||
+ | |28 || MIPI_DSI_TX1_CLKN || MIPI TX Clock ouput N | ||
+ | |- | ||
+ | |29 || MIPI_DSI_TX1_CLKP || MIPI TX Clock ouput P | ||
+ | |} | ||
+ | |||
+ | * '''调试串口''' | ||
+ | :: 3.3V level signals, 1500000bps | ||
+ | ::{| class="wikitable" | ||
+ | |- | ||
+ | |'''Pin#''' ||'''Assignment''' || '''Description ''' | ||
+ | |- | ||
+ | |1 || GND || 0V | ||
+ | |- | ||
+ | |2 || UART2_TX_M0_DEBUG || output | ||
+ | |- | ||
+ | |3 || UART2_RX_M0_DEBUG || intput | ||
+ | |} | ||
+ | |||
+ | *'''USB3.0 A口''' | ||
+ | :: USB3.0 A口具有2A过流保护。 | ||
+ | |||
+ | *'''RTC''' | ||
+ | ::RTC backup current is 0.25μA TYP (VDD =3.0V, TA =25℃). | ||
+ | ::Connector P/N: Molex 53398-0271 | ||
==快速入门== | ==快速入门== | ||
Line 44: | Line 110: | ||
===经测试可选用的TF卡=== | ===经测试可选用的TF卡=== | ||
请参考: [[Template:TFCardsWeTested/zh|TF Cards We Tested]] | 请参考: [[Template:TFCardsWeTested/zh|TF Cards We Tested]] | ||
− | |||
{{1500000SerialPortDebugSetting/zh}} | {{1500000SerialPortDebugSetting/zh}} | ||
===安装系统=== | ===安装系统=== | ||
{{Downloads-RK3566/zh|NanoPi-R3S}} | {{Downloads-RK3566/zh|NanoPi-R3S}} | ||
{{BurnLinuxToSD-Rockchip/zh|NanoPi-R3S}} | {{BurnLinuxToSD-Rockchip/zh|NanoPi-R3S}} | ||
+ | {{BurnLinuxToEMMC-Rockchip/zh|NanoPi-R3S}} | ||
+ | {{BurnLinuxToExtDrive-Rockchip/zh|NanoPi-R3S}} | ||
{{FriendlyWrt21/zh|NanoPi-R3S}} | {{FriendlyWrt21/zh|NanoPi-R3S}} | ||
{{OfficialDebianCore/zh|NanoPi-R3S}} | {{OfficialDebianCore/zh|NanoPi-R3S}} | ||
Line 58: | Line 125: | ||
{{RockchipMiscCustome/zh|RK3566}} | {{RockchipMiscCustome/zh|RK3566}} | ||
{{RockchipCommonLinuxTips/zh|RK3566}} | {{RockchipCommonLinuxTips/zh|RK3566}} | ||
+ | {{RockchipUnbrick/zh|NanoPi-R3S}} | ||
==性能测试方法== | ==性能测试方法== | ||
===测试网口速率=== | ===测试网口速率=== | ||
Line 77: | Line 145: | ||
iperf3 -c 192.168.2.1 -i 2 -t 30 -P4 -R | iperf3 -c 192.168.2.1 -i 2 -t 30 -P4 -R | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
==资源链接== | ==资源链接== | ||
===原理图和数据手册=== | ===原理图和数据手册=== | ||
* 原理图 | * 原理图 | ||
− | ** | + | ** [https://wiki.friendlyelec.com/wiki/images/a/a3/NanoPi_R3S_2406_SCH.PDF NanoPi_R3S_2406_SCH.PDF] |
* PCB尺寸图 | * PCB尺寸图 | ||
− | ** | + | ** [https://wiki.friendlyelec.com/wiki/images/a/a3/NanoPi_R3S_2D_CAD_DXF.zip NanoPi_R3S_2D_CAD_DXF.zip] |
* 芯片规格书 | * 芯片规格书 | ||
− | ** | + | ** [https://wiki.friendlyelec.com/wiki/images/8/89/Rockchip_RK3566_Datasheet_V1.2-20220930.pdf Rockchip_RK3566_Datasheet_V1.2-20220930.pdf] |
==更新日志== | ==更新日志== | ||
{{RK3566-UpdateLog/zh|NanoPi-R3S}} | {{RK3566-UpdateLog/zh|NanoPi-R3S}} |
Latest revision as of 11:03, 29 October 2024
Contents
- 1 介绍
- 2 NanoPi R3S资源特性
- 3 接口布局和尺寸
- 4 快速入门
- 5 FriendlyWrt的使用
- 5.1 FriendlyWrt简介
- 5.2 首次开机的初始化
- 5.3 帐户与密码
- 5.4 登录FriendlyWrt
- 5.5 建议的安全性设置
- 5.6 更改LAN口的IP地址
- 5.7 安全的关机操作
- 5.8 恢复出厂设置
- 5.9 安装软件包
- 5.10 FriendlyWrt的一些常见问题
- 5.11 禁用IPv6
- 5.12 配置用户按键的功能
- 5.13 配置移远EC20(4G模块)拨号上网
- 5.14 使用USB2LCD查看IP和温度
- 5.15 如何使用USB WiFi
- 5.16 玩转Docker应用
- 5.17 挂载smbfs共享资源
- 5.18 使用sdk编译软件包
- 5.19 使用 GitHub Actions 编译 FriendlyWrt
- 6 Debian Core的使用
- 7 如何编译系统
- 8 板载资源的使用
- 9 备份文件系统并创建SD映像(将系统及应用复制到另一块开发板)
- 10 Linux操作系统的常见操作
- 11 救砖办法
- 12 性能测试方法
- 13 资源链接
- 14 更新日志
1 介绍
- NanoPi R3S(以下简称R3S)是友善电子团队最新推出的一款实现满速率双千兆的、完全开源的开发板。
- NanoPi R3S 使用RK3566 CPU,有两个千兆网络,2G LPDDR4X内存,可选板载32G eMMC,友善电子团队为NanoPi R3S专门移植了OpenWrt系统,支持Docker CE, 完全开源,用于企业物联网二次开发,个人定制NAS等。
- NanoPi R3S 可选配安装一体化CNC氧化铝外壳,以及2寸的LCD屏幕用于状态监看。
2 NanoPi R3S资源特性
- CPU: Rockchip RK3566, Quad-core Cortex-A55
- RAM: 2GB LPDDR4X
- 网络: 一个原生千兆以太网,与一个通过PCIe扩展的千兆以太网
- USB口: 一个USB3.0 A口,支持5Gbps
- 存储:32GB eMMC
- 一个MicroSD接口,支持启动系统
- 调试串口: 3.3V TTL电平,1500000bps,3 Pin 2.54mm间距排针
- LED: LED x 3
- RTC:板载低功耗RTC,支持外接RTC电池
- 按键: 一个用户自定义按键,一个用于USB线刷系统的MASK按键
- 一个30Pin MIPI-DSI FPC接口
- PCB尺寸: 57 x 57mm
- 供电: USB-C 5V/2A
- 工作温度: 0℃ to 80℃
- OS/Software: U-boot,Ubuntu-Core,Debian-Core,OpenMediaVault, OpenWrt
3 接口布局和尺寸
3.1 接口布局
- MIPI-DSI
- 0.5mm FPC Connector
Pin# Signal Description 1,2,3 VCC5V0_SYS 5V Power ouput 4,7,9,11,15,18,21,24,27,30 GND Power and Signal Ground 5 I2C2_SDA_M0 3.3V, I2C Data, has been pulled up to 3.3V with 2.2K on R3S 6 I2C2_SCL_M0 3.3V, I2C Clock, has been pulled up to 3.3V with 2.2K on R3S 8 GPIO0_C6 3.3V, GPIO 10 GPIO0_C3 or PWM4 3.3V, GPIO/PWM 12 GPIO0_C4 3.3V, GPIO 13 /NC No Connection 14 GPIO0_C5 3.3V, GPIO 16 MIPI_DSI_TX1_D3N MIPI TX Lane3 ouput N 17 MIPI_DSI_TX1_D3P MIPI TX Lane3 ouput P 19 MIPI_DSI_TX1_D2N MIPI TX Lane2 ouput N 20 MIPI_DSI_TX1_D2P MIPI TX Lane2 ouput P 22 MIPI_DSI_TX1_D1N MIPI TX Lane1 ouput N 23 MIPI_DSI_TX1_D1P MIPI TX Lane1 ouput P 25 MIPI_DSI_TX1_D0N MIPI TX Lane0 ouput N 26 MIPI_DSI_TX1_D0P MIPI TX Lane0 ouput P 28 MIPI_DSI_TX1_CLKN MIPI TX Clock ouput N 29 MIPI_DSI_TX1_CLKP MIPI TX Clock ouput P
- 调试串口
- 3.3V level signals, 1500000bps
Pin# Assignment Description 1 GND 0V 2 UART2_TX_M0_DEBUG output 3 UART2_RX_M0_DEBUG intput
- USB3.0 A口
- USB3.0 A口具有2A过流保护。
- RTC
- RTC backup current is 0.25μA TYP (VDD =3.0V, TA =25℃).
- Connector P/N: Molex 53398-0271
4 快速入门
4.1 准备工作
要开启你的NanoPi R3S新玩具,请先准备好以下硬件
- NanoPi R3S主板
- MicroSD卡/TF卡: Class10或以上的 8GB SDHC卡
- 一个TYPE-C接口的外接电源,要求输出为5V/3A(可使用同规格的手机充电器)
- 如果需要开发与编译,则需要一台可以联网的电脑,推荐安装Ubuntu 20.04 64位系统,并使用下面的脚本初始化开发环境, 也可以使用Docker容器:
4.2 经测试可选用的TF卡
请参考: TF Cards We Tested
4.3 调试串口参数配置
使用以下串口参数:
波特率 | 1500000 |
数据位 | 8 |
奇偶校验 | None |
停止位 | 1 |
流控制 | None |
4.4 安装系统
4.4.1 下载固件
4.4.1.1 官方固件
访问此处的下载地址下载固件文件 (位于网盘的"01_系统固件"目录):
下表列出了所有官方固件,文件名中的XYZ代表文件的不同用途,其含义如下:
- sd: 安装系统到TF卡时使用
- eflasher: 需要通过TF卡烧写系统到eMMC时使用
- usb: USB线刷时使用
图标 | 文件名 | 版本 | 描述 | 内核版本 |
---|---|---|---|---|
rk3566-XYZ-debian-bookworm-core-6.1-arm64-YYYYMMDD.img.gz | bookworm | Debian12 精简版固件,没有桌面, 仅命令行 | 6.1.y | |
rk3566-XYZ-ubuntu-noble-core-6.1-arm64-YYYYMMDD.img.zip | noble | 精简版64位Ubuntu系统固件,基于Ubuntu core 24.04构建 | 6.1.y | |
rk3566-XYZ-openmediavault-6.1-YYYYMMDD.img.gz | Shaitan | OpenMediaVault NAS系统,基于Debian12构建 | 6.1.y | |
rk3566-XYZ-proxmox-6.1-YYYYMMDD.img.gz | 8.2.7 | Proxmox VE 系统 (预览版),基于Debian12构建 | 6.1.y | |
rk3566-XYZ-friendlywrt-21.02-YYYYMMDD.img.gz | 21.02 | FriendlyWrt, 基于OpenWrt 21.02 | 6.1.y | |
rk3566-XYZ-friendlywrt-21.02-docker-YYYYMMDD.img.gz | 21.02 | 预装了Docker的FriendlyWrt, 基于OpenWrt 21.02 | 6.1.y | |
rk3566-XYZ-friendlywrt-23.05-YYYYMMDD.img.gz | 23.05 | FriendlyWrt, 基于OpenWrt 23.05 | 6.1.y | |
rk3566-XYZ-friendlywrt-23.05-docker-YYYYMMDD.img.gz | 23.05 | 预装了Docker的FriendlyWrt, 基于OpenWrt 23.05 | 6.1.y | |
Other Image | ||||
Github Actions - FriendlyWrt云编译版本 | 21.02,23.05 | FriendlyWrt | 6.1.y | |
rk3566-XYZ-multiple-os-YYYYMMDD-25g.img.gz | - | 内含了多个操作系统的eMMC烧写文件,方便测试各个OS,此固件不会开机自动烧写,需要手动选择要烧写的OS |
4.4.1.2 工具软件(可选)
访问 此处的下载链接 下载所需要的工具软件 (位于网盘的"05_工具软件"目录).
文件名 | 描述 |
---|---|
win32diskimager.rar | 用于将映象文件写入SD卡 |
SD Card Formatter | 用于清空SD卡中的引导数据 |
RKDevTool_Release_v2.84.zip | 瑞芯微的刷机工具,USB线刷系统时需要使用此工具 |
4.4.2 通过TF卡运行系统
操作步骤如下:
- 准备一张8G或以上容量的TF卡;
- 访问此处的下载地址下载需要的固件(位于"01_系统固件/01_SD卡固件"目录);
- 下载烧写工具 win32diskimager (位于"05_工具软件"目录),或者选用你喜爱的工具;
- 解压 .gz 格式的压缩文件得到 .img 格式的镜像文件;
- 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的固件文件,点击 Write 按钮烧写到SD卡;
- 将SD卡从电脑端弹出,插入NanoPi-R3S的microSD卡槽;
- 连接NanoPi-R3S的电源,系统会从TF卡启动, 某些型号可能需要按下Power键才会启动;
4.4.3 烧写系统到eMMC
4.4.3.1 方法1: 用TF启动卡进行自动烧写
此方法是通过SD卡启动一个小型的Linux系统, 借助名为EFlasher的工具来烧写固件到eMMC。
如果有连接HDMI显示器, 可通过图形界面观察烧写进度, 也可以通过板载LED灯来掌握烧写进度:
进度 |
SYS灯 (红灯) |
LAN灯(绿灯) |
WAN灯(绿灯) |
---|---|---|---|
上电开机 |
长亮 |
灭 |
灭 |
系统启动 |
慢闪 |
灭 |
灭 |
正在烧写 |
快闪 |
灭 |
灭 |
烧写完成 |
慢闪 |
长亮 |
长亮 |
默认情况下烧写是上电自动开始的,所以要注意备份eMMC里的数据,如果不想自动,可以使用文件名含"multiple-os"字样的固件,在界面上手动选择要烧写的系统。
4.4.3.1.1 烧写官方固件到eMMC
详细操作步骤如下:
- 准备一张8G或以上容量的SDHC卡;
- 访问此处的下载地址下载需要的固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录)和烧写工具win32diskimager(位于"05_工具软件"目录);
- 解压 .gz 格式的压缩文件得到 .img 格式的镜像文件;
- 在Windows下以管理员身份运行 win32diskimager,在界面上选择你的SD卡盘符,选择解压后的固件文件,点击 Write 按钮烧写到SD卡;
- 将SD卡从电脑端弹出,插入NanoPi-R3S的microSD卡槽;
- 连接NanoPi-R3S的电源,系统会从SD卡启动,并自动启动 EFlasher 烧写工具将系统安装到 eMMC;
- 烧写完成后,从NanoPi-R3S弹出SD卡,NanoPi-R3S会自动重启并从eMMC启动你刚刚烧写的系统;
4.4.3.1.2 烧写第三方固件(镜像文件)到eMMC
1) 从网盘上下载文件名带 eflasher 字样的任意固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录), 解压后烧进TF卡;
2) 重新拨插一次TF卡, PC上会出现一个名为FriendlyARM的盘符(Linux下是FriendlyARM目录), 将 .raw 或者 .gz 结尾的固件复制进去 (注:如果你的文件为 .img 格式那么请改名为 .raw 格式);
3) 编辑TF卡上的 eflasher.conf 配置文件, 修改 autoStart= 后面的值指定为你的固件文件名, 例如:
autoStart=openwrt-rockchip-armv8_nanopi-ext4-sysupgrade.img.gz
除了第三方固件,亦支持文件名带 "-sd-" 字样的官方固件文件, 例如: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz
4) 安全弹出TF卡, 将TF卡放在NanoPi-R3S上上电启动, 会自动烧写你的固件, 通过板载 LED 灯来了解安装进度;
4.4.3.2 方法2: 在网页上烧写
使用烧写了FriendlyWrt固件的TF卡启动NanoPi-R3S, 登录FriendlyWrt页面, 在网页菜单上点击 "系统" -> "eMMC刷机助手" 进入eMMC刷机助手界面, 点击界面上的 "选择文件" 按钮, 选择你要刷写的文件 (官方固件选用文件名有"-sd-"的文件), 亦可选择第三方固件, 文件支持 .gz 格式的压缩文件, 或者以 .img 作为扩展名的raw格式。
选择文件后, 点击 “上传并烧写” 按钮, 开始上传并烧写, 如下图所示:
烧写完成后,请弹出SD卡,设备会自动重启, 并从eMMC引导新系统,可留意指示灯的状态, 在系统状态灯闪烁,同时网卡状态灯亮起时,表示系统启动完成, 如果eMMC安装的系统是 FriendlyWrt, 则可以通过点击“进入首页”进入FriendlyWrt管理页面。
官方固件需要选用文件名带 "-sd-" 字样的镜像文件, 例如: rk3NNN-sd-friendlywrt-21.02-YYYYMMDD.img.gz, 压缩文件只支持gz格式, 如果文件太大, 可以先压缩成gz格式再上传。
4.4.3.3 方法3: 通过USB烧写
4.4.3.3.1 USB烧写步骤1: 安装USB驱动和工具
从网盘的tools目录下载瑞芯微的USB驱动: DriverAssitant_v5.12.zip, 解压后安装;
在相同目录下, 下载瑞芯微开发工具: RKDevTool_Release_v2.84.zip, 解压后备用;
4.4.3.3.2 USB烧写步骤2: 将NanoPi-R3S与电脑连接, 并进入刷机模式
按住Mask按键不放, 用USB C数据线, 将NanoPi-R3S与电脑进行连接, 连接到NanoPi-R3S的USB C接口, 保持按住Mask键, 状态灯亮起3秒后即可松开;
4.4.3.3.3 USB烧写步骤3: 开始烧写
固件格式一般有两种格式, 一种是单个的image文件, 通常第三方固件会使用这种打包方式, 另一种是多个分区镜像, FriendlyELEC的固件采用这种方式, 下面分别对这两种格式的固件进行说明:
- 选项1: 烧写打包成单个image文件的固件
在电脑上双击 RKDevTool_Release_v2.84 目录下的 RKDevTool.exe 启动瑞芯微开发工具, 与电脑连接正常的情况下, 瑞芯微开发工具界面上会显示 "发现一个Maskrom设备";
在瑞芯微开发工具界面上, 点击 “升级固件”, 再点击 “固件” 按钮, 选择你要烧写的image文件, 点击 “升级” 然后等待烧写完成即可, 完成后设备会自动重启, 并从eMMC启动你刚刚安装的系统;
- 选项2: 烧写由多个分区镜像组成的固件
根据需要到网盘上下载对应的压缩包(位于"01_系统固件/03_USB线刷固件(USB-to-eMMC)"目录), 在电脑上解压:
解压后, 可以看到固件目录下已内置了瑞芯微开发工具和预设好的配置文件, 双击 RKDevTool.exe 启动瑞芯微开发工具, 界面上会显示 "发现一个Maskrom设备", 点击界面上的“执行”按钮, 稍等片刻即可完成烧写, 完成后设备会自动重启, 并从eMMC启动你安装的系统;
4.4.4 安装系统到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卡,在NanoPi-R3S上连接好存储设备,插入TF卡上电开机,接下来要在界面上操作,如果没有显示设备,可以使用VNC代替,请参考使用VNC操作eFlasher;
- 在eFlasher界面上,首先选择要安装的OS,然后选择引导安装的目的地 (通常选eMMC),以及选择系统安装的目的地(可以选eMMC,M.2硬盘,USB存储设备等),如下图所示:
- 没有eMMC时可使用TF卡作为引导,方法是将另一个TF卡通过USB读卡器插入USB端口,然后选择USB设备作为引导安装目的地,从而实现从TF卡引导,但系统存放在M.2或USB硬盘的目的;
- 烧写完成后,从NanoPi-R3S弹出SD卡,引导在eMMC的情况下,NanoPi-R3S会自动重启至你刚刚烧写的系统,如果引导安装在TF卡,则需要拨掉电源,插入TF引导卡再上电开机;
- 更详细的安装指南请参考此处;
5 FriendlyWrt的使用
5.1 FriendlyWrt简介
FriendlyWrt是友善电子基于OpenWrt定制的系统,完全开源,用于企业物联网二次开发,个人定制NAS等。
5.2 首次开机的初始化
首次上电开机,系统需要做以下一些初始化工作:
1)扩展根文件系统
2)初始化设置(会执行/root/setup.sh)
所以第一次开机需要等待片刻(约2~3分钟),再对FriendlyWrt进行设置,可以在openwrt网页上进入ttyd终端,当提示符显示为 root@FriendlyWrt 表示系统已经初始化完成。
root@FriendlyWrt
5.3 帐户与密码
默认的密码是password(某些版本是空密码),请设置或更改一个较安全的密码用于web登录与ssh登录,建议在将NanoPi-R3S连接到互联网之前完成此设置。
5.4 登录FriendlyWrt
将电脑连接到 NanoPi-R3S 的LAN口,如果电脑没有网口,可将无线AP的LAN口与NanoPi-R3S的LAN口相连接,电脑再通过WiFi连接到无线AP,在电脑浏览器上输入以下网址即可进入FriendlyWrt管理页面:
- http://friendlywrt/
- http://192.168.2.1/
- http://[fd00:ab:cd::1]
以上是NanoPi-R3S的LAN口地址,WAN口会从你的主路由器动态获取IP地址。
5.5 建议的安全性设置
以下设置事项非常建议在将 NanoPi-R3S 接入互联网之前完成,因为在空密码或弱密码的状态下将NanoPi-R3S接入互联网,极易受到网络攻击。
- 设置一个安全的密码
进入 系统->管理权 界面设置密码。
- 禁止从wan访问ssh,更换端口
进入 系统->管理权->SSH访问,将接口限制为 lan,将端口设置为其他非常用端口,例如 23333。
- 检查防火墙设置
根据实际情况调整设置
5.6 更改LAN口的IP地址
1) 菜单栏导航到:"网络" -> "接口", 点击“LAN”右边的“编辑”按钮;
2) 在“常规设置”页面上找到“IPv4 地址”, 输入新的IP地址 (例如192.168.11.1), 然后点击“保存”, 再点击“保存并应用”;
3) 在弹出的“连接更改“询问界面上, 选择"Apply and revert on connectivity loss";
4) 稍等片刻, 在电脑的浏览器上输入新的地址登录 FriendlyWrt;
5.7 安全的关机操作
进入"服务"->"终端",输入poweroff命令敲回车,待led灯熄灭,再拔开电源。
5.8 恢复出厂设置
进入"系统"->"备份/升级",点击“执行重置“按钮,在弹出的询问界面上点击“确定”,设备会重启并擦除data分区, 所有的设置和数据都会被清除, 并恢复至出厂时的状态。
恢复出厂设置也可以通过命令行来操作, 进入“服务”-》“终端”界面, 输入如下命令:
firstboot && reboot
5.9 安装软件包
5.9.1 设置第三方软件源
进入菜单”系统“-》”软件包“, 在界面上点击”okpg配置“按钮, 在新弹出的界面上, 更改/etc/opkg/distfeeds.conf的文件内容即可,
比如要切换至国内腾讯源, 可以替换成如下内容, 然后点击 “保存” 按钮:
src/gz openwrt_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/base src/gz openwrt_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/luci src/gz openwrt_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/packages src/gz openwrt_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/routing src/gz openwrt_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/23.05.4/packages/aarch64_cortex-a53/telephony src/gz friendlywrt_packages file://opt/packages
- 注意, friendlywrt_packages需要保留, 否则会缺少一些系统依赖;
- 如果你使用的是 friendlywrt 21.02 的固件, 则将上面的 23.05.4 替换成 21.02.5;
- CPU架构可选择 aarch64_cortex-a53和aarch64_generic这两种;
- 通过命令行切换国内源:
sed -i -e 's/downloads.openwrt.org/mirrors.cloud.tencent.com/g' /etc/opkg/distfeeds.conf opkg update
5.9.2 在线安装软件包
回到”软件包“界面, 点击 “更新列表” 更新软件包信息, 更新完成后, 就可以在“筛选器”一栏中输入软件包的关键字, 搜索软件包安装了。
5.9.3 安装离线ipk软件包
在”软件包“界面上点击“上传软件包“, 定位你本地的ipk文件, 上传并安装即可。
5.10 FriendlyWrt的一些常见问题
- 无法拨号上网
- 进入“网络“->“防火墙“,将 “WAN区域“ 的“入站数据“,“出站数据“与“转发“均设置为 “接受”;
- 如仍无法上网,可尝试关闭IPV6;
- 拨号成功,但没有外网流量
- 进入"服务"->"终端",输入fw4 reload尝试重新加载一次防火墙设置;
- 无法开机,LED灯不亮
- 尝试更换电源适配器和电缆,推荐使用 5V/2A 以上规格的电源供应;
- 注意,部分Type-C接口的快速充电器会有延迟,可能需要几秒钟才开始提供电量;
- 做二级路由时,电脑无法连接互联网
- 如果你的主网络是IPv4,而NanoPi-R3S工作在IPv6,电脑有可能无法连接互联网,建议关闭IPv6 (本WiKi后面有介绍方法),或将主路由切换到IPv6;
- 如果你有问题,或有更好的建议,欢迎发送邮件到 techsupport@friendlyarm.com;
5.11 禁用IPv6
要关掉 IPv6,可在ssh终端输入如下命令:
. /root/setup.sh disable_ipv6 reboot
待NanoPi-R3S重启完毕,电脑也需要重新插拨一下网线(或重启网络端口)以便重新获得IP地址。
5.12 配置用户按键的功能
默认情况下, 用户按键配置成用于重启设备(软重启), 如下所示:
echo 'BTN_1 1 /sbin/reboot' >> /etc/triggerhappy/triggers.d/example.conf
你可以通过更改上面的配置文件改变它的行为.
5.13 配置移远EC20(4G模块)拨号上网
- 进入“网络“->“接口“;
- 点击 “WAN6“ 后面的 “删除“, 点击 "保存及应用";
- 点击 “WAN“ 后面的 “编辑“,在 “设备“ 下拉选单中选择 "以太网适配器:wwan0",在“协议”下拉选单中选择“QMI蜂窝”,然后点击“切换协议“;
- 在“调制解调器设备“下拉选单中选择”/dev/cdc-wdm0“,如果是中国联通,在“APN“中填入3gnet,如果是中国移动则填入cmnet,填写完成后,如下图所示:
- 点击“保存”关闭界面,最后点击下方的“保存并应用",FriendlyWrt后台会进行拨号上网,拨号成功的状态如下所示:
- 连接到Lan的设备将可以连接互联网,如有WiFi模块,可进入“无线”界面开启无线AP功能,通过无线接入的设备亦可连接到互联网。
5.14 使用USB2LCD查看IP和温度
在终端输入如下命令设置lcd2usb服务开机自动启动:
. /root/setup.sh init_lcd2usb poweroff
将USB2LCD模块Plug到 NanoPi-R3S 的USB接口再开机,IP地址和CPU温度将显示在LCD上:
5.15 如何使用USB WiFi
5.15.1 如何在终端使用命令查询USB无线网卡型号
(1) 点击“服务>ttyd”进入FriendlyWrt的命令行界面
(2) 在开发板没有插入任何USB设备时输入以下命令以查看挂在USB主线上的现有设备
lsusb
(3) 插入USB WiFi,再次输入以下命令
lsusb
可以看到多出一个设备,ID为0BDA:C811
(4) 以“0BDA:C811”或“VID_0BDA&PID_C811”作为关键词在搜索引擎上搜索,搜索结果显示VID_0BDA&PID_C811的对应WIFI芯片为Realtek 8811CU
5.15.2 如何使用USB WiFi作为AP
(1) 把USB WiFi插入NanoPi-R3S的USB端口,推荐使用以下列表中支持AP模式的WiFi芯片模块:
注:符合以上WiFi芯片型号并符合以上VID&PID信息的USB无线网卡都可以使用,支持的型号不局限于某个品牌某个型号
(2) 插入USB WiFi后,点击上方菜单栏的“系统>重启”,点击“执行重启”按钮重启NanoPi-R3S
(3) 点击“网络>无线”进入配置无线WiFi界面
(4) 点击“编辑”按钮可编辑WiFi设置
(5) 在“接口配置”中可设置WiFi 模式和SSID等,然后点击到“无线安全”项可修改加密方式和WiFi密码,默认密码为password,设置完成后点击“保存”
(4) 配置完成后使用手机端或电脑端搜索对应SSID的WiFi即可
5.15.3 常见的USB WiFi问题及应对方法
1) 建议在关机状态下插入usb wifi, 再上电开机,FriendlyWrt会自动生成配置文件 /etc/config/wireless,如果没有生成,通过 ifconfig -a 看看有没有 wlan0,如果没有 wlan0,通常是没有驱动。
2) 如果 ifconfig -a 能看到 wlan0,但是热点没有正常工作,可以尝试更改 频道 和 国家代号,不合适的国家代号也会导致 WiFi 不工作。
3) 某些USB WiFi(例如MTK MT7662)默认工作在CD-ROM模式,需要经过usb_modeswitch来进行切换,可以尝试自行添加 usb_modeswitch 配置到以下目录:/etc/usb_modeswitch.d 。
5.15.4 更改系统默认的WiFi热点配置
FriendlyWrt默认会为USB WiFi设置国家、热点名称等参数,目的是尽量的做到即插即用,但这不能保证所有的模块都能兼容此设置,你可以通过修改以下文件,来更改这些行为:
/lib/wifi/mac80211.sh
5.16 玩转Docker应用
5.16.1 Docker使用:安装JellyFin影音服务器
请参考: How to setup JellyFin media system on NanoPi-R2S/zh
5.16.2 Docker使用:安装个人网盘nextcloud
mkdir /nextcloud -p docker run -d -p 8888:80 --name nextcloud -v /nextcloud/:/var/www/html/ --restart=always --privileged=true arm64v8/nextcloud
安装完成后,使用8888端口进行访问。
5.16.3 使用外接硬盘来扩展Docker可用空间
- 先停止docker服务:
/etc/init.d/dockerd stop
- 把原来的/opt目录改个名, 建一个空的/opt目录:
mv /opt /opt-old && mkdir /opt
- 参考章节“8 初始化NVME固态硬盘和USB移动硬盘”, 将你的硬盘格式化为ext4, 然后挂载至 /opt 目录:
- 输入命令 "mount | grep /opt" 确实一下硬盘被正常挂载到 /opt 下:
root@FriendlyWrt:~# mount | grep /opt /dev/nvme0n1p1 on /opt type ext4 (rw,relatime) root@FriendlyWrt:~#
- 把原来 /opt 目录下的文件复制到新的 /opt 目录:
cp -af /opt-old/* /opt/ && rm -rf /opt-old
- 操作完后, 重启
reboot
- 重启后, 进入"Docker"->"概览"页面, 查看"Docker根目录"这一行的信息, 可以确认Docke空间已扩容:
5.16.4 Docker的常见问题与解决办法
5.16.4.1 无法访问Docker提供的网络服务
解决办法:
- 进入 "防火墙" 的设置,把 "转发" 设置成 "接受";
- 关闭 ”软件流量分载“;
5.17 挂载smbfs共享资源
mount -t cifs //192.168.1.10/shared /movie -o username=xxx,password=yyy,file_mode=0644
5.18 使用sdk编译软件包
5.18.1 安装编译环境
在64位的Ubuntu (版本18.04+)下载并运行如下脚本: How to setup the Compiling Environment on Ubuntu bionic
5.18.2 在网盘上下载并解压sdk
sdk位于网盘的toolchain目录,解压后,需要先下载feeds软件包:
tar xvf openwrt-sdk-*-rockchip-armv8_gcc-11.2.0_musl.Linux-x86_64.tar.xz # 路径太长会导致有些包编译出错,所以这里改一下目录名 mv openwrt-sdk-*-rockchip-armv8_gcc-11.2.0_musl.Linux-x86_64 sdk cd sdk ./scripts/feeds update -a ./scripts/feeds install -a
5.18.3 将软件包编译并打包成ipk文件
此处以mwarning的示例作为演示,下载例子的源代码(共3个分别为example1, example2, example3),并拷到package目录:
git clone https://github.com/mwarning/openwrt-examples.git cp -rf openwrt-examples/example* package/ rm -rf openwrt-examples/
再通过以下命令进入配置菜单:
make menuconfig
在菜单中选中以下我们要编译的软件包(默认实际上已经选中):
"Utilities" => "example1" "Utilities" => "example3" "Network" => "VPN" => "example2"
退出配置菜单的界面,在提示是否保存设置时需要选择Yes,然后执下以下命令,分别编译这三个软件包:
make package/example1/compile V=99 make package/example2/compile V=99 make package/example3/compile V=99
编译成功后,可以在bin目录下找到ipk文件,如下所示:
$ find ./bin -name example*.ipk ./bin/packages/aarch64_generic/base/example3_1.0.0-220420.38257_aarch64_generic.ipk ./bin/packages/aarch64_generic/base/example1_1.0.0-220420.38257_aarch64_generic.ipk ./bin/packages/aarch64_generic/base/example2_1.0.0-220420.38257_aarch64_generic.ipk
5.18.4 将编译生成的ipk安装到NanoPi上
可以用scp命令将ipk文件上传到NanoPi上:
cd ./bin/packages/aarch64_generic/base/ scp example*.ipk root@192.168.2.1:/root/
然后用opkg命令进行安装他们:
cd /root/ opkg install example3_1.0.0-220420.38257_aarch64_generic.ipk opkg install example1_1.0.0-220420.38257_aarch64_generic.ipk opkg install example2_1.0.0-220420.38257_aarch64_generic.ipk
5.19 使用 GitHub Actions 编译 FriendlyWrt
项目地址: https://github.com/friendlyarm/Actions-FriendlyWrt
6 Debian Core的使用
6.1 帐户与密码
普通用户:
用户名: pi
密码: pi
Root用户:
默认没有设置root密码,可通过sudo passwd root命令配置root密码
6.2 查看IP地址
由于Debian Bullseye主机名默认为硬件型号, 所以可以使用ping命令来获得IP地址: ping NanoPi-R3S
Debian Bullseye使用network-manager管理网络, 网口默认配置成DHCP自动获取IP地址 (包括有多网口的设备)。
6.3 通过ssh登录Debian
使用以下命令:ssh pi@NanoPi-R3S
默认密码为pi
6.4 更新软件包
6.4.1 更换软件源为国内镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.org sudo sed -i -e 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo sed -i -e 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo apt update
6.5 更改时区
6.5.1 检查当前时区
timedatectl
6.5.2 列出所有时区
timedatectl list-timezones
6.5.3 设置时区 (比如上海)
sudo timedatectl set-timezone Asia/Shanghai
6.6 更换开机LOGO
替换内核下面的两个文件,重新编译内核:
kernel/logo.bmp
kernel/logo_kernel.bmp
或者使用脚本来操作,如下所示:
- 下载脚本
git clone https://github.com/friendlyarm/sd-fuse_rk3399.git -b kernel-4.19 --single-branch cd sd-fuse_rk3399
- 编译内核并重新打包固件
convert files/logo.jpg -type truecolor /tmp/logo.bmp convert files/logo.jpg -type truecolor /tmp/logo_kernel.bmp sudo LOGO=/tmp/logo.bmp KERNEL_LOGO=/tmp/logo_kernel.bmp ./build-kernel.sh debian-bookworm-core-arm64 sudo ./mk-sd-image.sh debian-bookworm-core-arm64 sudo ./mk-emmc-image.sh debian-bookworm-core-arm64
6.6.1 恢复出厂设置
在终端上执行如下命令:
sudo firstboot && sudo reboot
6.7 在Debian系统上安装Docker
请参考此链接: How to Install Docker on Debian/zh
7 如何编译系统
7.1 搭建编译环境
7.1.1 方法1: 使用Docker进行交叉编译
请参考 docker-cross-compiler-novnc,也可使用网盘 “04_SDK与编译器/docker” 目录下的本地镜像,参考README.md用docker load命令导入即可。
7.1.2 方法2: 本地搭建交叉编译环境
7.1.2.1 安装编译所需软件包
建议使用amd64架构的Ubuntu 20.04操作系统,参考如下内容安装编译及打包所需要的软件包:
sudo apt-get -y update sudo apt-get install -y sudo curl sudo bash -c \ "$(curl -fsSL https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh)"
对于中国大陆的用户亦可使用以下地址:
sudo bash -c \ "$(curl -fsSL http://112.124.9.243:3000/friendlyelec/build-env-on-ubuntu-bionic/raw/branch/cn/install.sh)"
你的电脑上会安装好如下交叉编译器:
版本 | 架构 | 编译器路径 | 用途 |
---|---|---|---|
4.9.3 | armhf | /opt/FriendlyARM/toolchain/4.9.3 | 用于编译armhf架构的应用程序 |
6.4 | aarch64 | /opt/FriendlyARM/toolchain/6.4-aarch64 | 用于交叉编译4.4内核 |
11.3 | aarch64 | /opt/FriendlyARM/toolchain/11.3-aarch64 | 用于交叉编译4.19及以上内核(含5.10,6.1)及uboot |
7.1.2.2 设置交叉编译器
参考上一节的表格,选用合适版本的编译器,然后将编译器的路径加入到PATH中,例如要使用11.3的交叉编译器,用vi编辑~/.bashrc,在末尾加入以下内容:
export PATH=/opt/FriendlyARM/toolchain/11.3-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/11.3-aarch64/libexec/gcc/aarch64-cortexa53-linux-gnu/11.3.0/lto-wrapper Target: aarch64-cortexa53-linux-gnu Configured with: /home/cross/arm64/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/11.3-aarch64 --exec_prefix=/opt/FriendlyARM/toolchain/11.3-aarch64 --with-sysroot=/opt/FriendlyARM/toolchain/11.3-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-languages=c,c++ --enable-fix-cortex-a53-843419 --with-arch=armv8-a+crypto+crc --with-cpu=cortex-a53 --with-pkgversion=ctng-1.25.0-119g-FA --with-bugurl=http://www.friendlyelec.com/ --enable-objc-gc --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --disable-libmpx --with-gmp=/home/cross/arm64/buildtools --with-mpfr=/home/cross/arm64/buildtools --with-mpc=/home/cross/arm64/buildtools --with-isl=/home/cross/arm64/buildtools --enable-lto --enable-threads=posix --disable-libstdcxx-pch --enable-clocale=gnu --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-indirect-function --enable-gnu-unique-object --enable-default-pie --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gold --with-libintl-prefix=/home/cross/arm64/buildtools --disable-multilib --with-local-prefix=/opt/FriendlyARM/toolchain/11.3-aarch64/aarch64-cortexa53-linux-gnu/sysroot --enable-long-long --enable-checking=release --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib gcc version 11.3.0 (ctng-1.25.0-119g-FA)
7.2 编译 Openwrt/Friendlywrt
7.2.1 下载源代码
FriendlyWrt有两个版本, 请根据需要进行选择.
7.2.1.1 版本FriendlyWrt 21.02
mkdir friendlywrt21-rk3566 cd friendlywrt21-rk3566 git clone https://github.com/friendlyarm/repo --depth 1 tools tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \ -m rk3566.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
7.2.1.2 版本FriendlyWrt 23.05
mkdir friendlywrt23-rk3566 cd friendlywrt23-rk3566 git clone https://github.com/friendlyarm/repo --depth 1 tools tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v23.05 \ -m rk3566.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
7.2.2 首次编译
下面的命令是编译不带docker的版本, 如需要编译带docker的版本, 请将rk3566.mk替换为rk3566-docker.mk:
./build.sh rk3566.mk
会编译所有组件(包含u-boot, kernel 和 friendlywrt)并生成sd卡镜像文件,再执行以下命令,可生成用于安装系统到emmc运行的镜像文件(eflahser固件):
./build.sh emmc-img
对项目进行过修改后, 需要重新打包sd卡镜像, 可执行如下命令:
./build.sh sd-img
7.2.3 二次编译
cd friendlywrt make menuconfig #改动FriendlyWrt的配置 rm -rf ./tmp make -j${nproc} cd ../ ./build.sh sd-img ./build.sh emmc-img
7.2.4 单独编译u-boot
./build.sh uboot
7.2.5 单独编译kernel
./build.sh kernel
7.2.6 单独编译friendlywrt
./build.sh friendlywrt
或者进入friendlywrt目录, 按标准openwrt的命令操作, 上面的命令出现错误时, 可尝试使用以下命令单线程编译:
cd friendlywrt make -j1 V=s
7.3 其他Linux系统编译
7.3.1 各个OS对应的内核与u-boot版本
操作系统 | 内核版本 | uboot版本 | 交叉编译器 | 分区类型 | 构建工具集 | 内核代码分支 | 内核配置 | uboot代码分支 | uboot配置 |
---|---|---|---|---|---|---|---|---|---|
openmediavault-arm64 | linux v6.1.y | u-boot v2017.09 |
11.3-aarch64 | GPT | sd-fuse |
nanopi6-v6.1.y | nanopi5_linux_defconfig | nanopi5-v2017.09 | nanopi5_defconfig |
ubuntu-noble-core-arm64 | GPT | ||||||||
debian-bookworm-core-arm64 | |||||||||
friendlywrt21 | nanopi5_linux_defconfig +friendlywrt.config | ||||||||
friendlywrt21-docker | |||||||||
friendlywrt23 | |||||||||
friendlywrt23-docker |
- 内核源代码仓库地址:https://github.com/friendlyarm/kernel-rockchip
- u-boot源代码仓库地址:https://github.com/friendlyarm/uboot-rockchip
- 交叉编译工具链存放在如下路径: /opt/FriendlyARM/toolchain/,使用前需导出到PATH环境变量,例如需要使用11.3-aarch64版本的编译器,使用如下命令:
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
- sd-fuse构建脚本可以用于快速编译kernel和uboot、重新打包sd卡固件与卡刷固件等
7.3.2 编译内核linux-v6.1.y
本节内容适用于如下OS:
friendlywrt21 | friendlywrt21-docker | friendlywrt23 | friendlywrt23-docker | ubuntu-noble-core-arm64 | openmediavault-arm64 | debian-bookworm-core-arm64 |
下载源代码并编译:
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi6-v6.1.y kernel-rockchip cd kernel-rockchip export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH touch .scmversion # 配置内核 # option1: 加载Linux系统配置 make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi5_linux_defconfig # option2: 加载FriendlyWrt系统配置 # make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi5_linux_defconfig friendlywrt.config # 启动配置界面 # 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)
打包kernel.img与resource.img:
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3566/kernel-6.1.y/tools/mkkrnlimg && chmod 755 mkkrnlimg wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3566/kernel-6.1.y/tools/resource_tool && chmod 755 resource_tool wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3566/kernel-6.1.y/prebuilt/boot/logo.bmp wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3566/kernel-6.1.y/prebuilt/boot/logo_kernel.bmp ./mkkrnlimg arch/arm64/boot/Image kernel.img ./resource_tool --dtbname arch/arm64/boot/dts/rockchip/rk3566-nanopi*-rev*.dtb logo.bmp logo_kernel.bmp
完成后会得到如下文件:
kernel.img | resource.img | 驱动模块位于out-modules目录 |
安装内核:
请参考 #应用新编译的uboot与内核
7.3.3 编译u-boot v2017.09
本节内容适用于如下OS:
friendlywrt21 | friendlywrt21-docker | friendlywrt23 | friendlywrt23-docker | ubuntu-noble-core-arm64 | openmediavault-arm64 | debian-bookworm-core-arm64 |
下载源代码并编译:
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 nanopi5-v2017.09 export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH cd uboot-rockchip/ ./make.sh nanopi_r3
编译完成后会生成如下文件:
uboot.img | trust.img | rk356x_spl_loader_vX.YY.ZZZ.bin (打包时改名为MiniLoaderAll.bin) |
安装u-boot:
请参考 #应用新编译的uboot与内核
7.3.4 应用新编译的uboot与内核
7.3.4.1 安装到目标板
本节内容适用于如下OS:
friendlywrt21 | friendlywrt21-docker | friendlywrt23 | friendlywrt23-docker | ubuntu-noble-core-arm64 | openmediavault-arm64 | debian-bookworm-core-arm64 |
由于RK3566的OS默认均采用GPT分区, 可以用dd命令将image文件烧写至image对应的分区,SD卡与eMMC的设备节点如下:
- SD/TF Card设备节点为 /dev/mmcblk0
- eMMC设备节点为 /dev/mmcblk2
下面将演示如何将内核更新到eMMC:
使用parted命令查看分区布局:
parted /dev/mmcblk2 print
得到如下输出:
Model: MMC BJTD4R (sd/mmc) Disk /dev/mmcblk2: 31.3GB 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 trust 3 16.8MB 21.0MB 4194kB misc 4 21.0MB 25.2MB 4194kB dtbo 5 25.2MB 41.9MB 16.8MB resource 6 41.9MB 83.9MB 41.9MB kernel 7 83.9MB 134MB 50.3MB boot 8 134MB 2500MB 2366MB ext4 rootfs 9 2500MB 31.3GB 28.8GB ext4 userdata
resource分区的序号为5, kernel分区的序号为6,对应的设备节点为/dev/mmcblk2p5和/dev/mmcblk2p6, dd命令如下:
dd if=resource.img of=/dev/mmcblk2p5 bs=1M dd if=kernel.img of=/dev/mmcblk2p6 bs=1M
如果要更新uboot:
dd if=uboot.img of=/dev/mmcblk2p1 bs=1M
如果要更新内核驱动模块,将新驱动模块目录上传并替换以下目录下的文件即可:/lib/modules。
7.3.4.2 打包新的SD Image
sd-fuse 提供一些工具和脚本, 用于制作SD卡固件, 具体用途如下:
- 制作分区镜像文件, 例如将rootfs目录打包成rootfs.img
- 将多个分区镜像文件打包成可直接写SD卡的单一镜像文件
- 简化内核和uboot的编译, 一键编译内核、第三方驱动, 并更新rootfs.img中的内核模块
请根据所用的内核版本点击对应的链接了解详细的使用方法:
内核版本 | 构建脚本 |
---|---|
linux v6.1.y | sd-fuse_rk3566/kernel-6.1.y |
7.3.4.3 线刷
7.3.4.3.1 Linux系统
用以下命令让开发板进入loader模式:
sudo reboot loader
用 upgrade_tool_v2.30_for_linux 工具烧写uboot与内核, 命令如下所示:
sudo upgrade_tool di -k kernel.img sudo upgrade_tool di -re resource.img sudo upgrade_tool di -u uboot.img sudo upgrade_tool RD
注:upgrade_tool是Rockchip提供的Linux下的命令行工具(Linux_Upgrade_Tool),需要使用v2以上版本。
7.4 使用脚本进行编译
7.4.1 下载工具与固件
以friendlycore-focal系统为例,从github克隆下载脚本, 并解压friendlycore-focal系统的映象文件,映象文件可以在网盘的"03_分区镜像文件"目录找到:
git clone https://github.com/friendlyarm/sd-fuse_rk3566.git -b kernel-6.1.y cd sd-fuse_rk3566 tar xvzf /path/to/netdrive/03_分区镜像文件/ubuntu-noble-core-arm64-images.tgz
7.4.2 编译内核
下载内核源代码并编译,编译完成后会自动更新 ubuntu-noble-core-arm64 目录下的相关映象文件,包括文件系统中的内核模块 (rootfs.img会被解包并重新打包):
git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi6-v6.1.y kernel-rk3566 KERNEL_SRC=$PWD/kernel-rk3566 ./build-kernel.sh ubuntu-noble-core-arm64
7.4.3 编译内核头文件
git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi6-v6.1.y kernel-rk3566 MK_HEADERS_DEB=1 BUILD_THIRD_PARTY_DRIVER=0 KERNEL_SRC=$PWD/kernel-rk3566 ./build-kernel.sh ubuntu-noble-core-arm64
7.4.4 编译uboot
下载uboot源代码并编译,编译完成后会自动更新 ubuntu-noble-core-arm64 目录下的相关映象文件:
git clone https://github.com/friendlyarm/uboot-rockchip --depth 1 -b nanopi5-v2017.09 UBOOT_SRC=$PWD/uboot-rockchip ./build-uboot.sh ubuntu-noble-core-arm64
7.4.5 生成新固件
将ubuntu-noble-core-arm64目录下的映象文件重新打包成sd卡固件:
./mk-sd-image.sh ubuntu-noble-core-arm64
命令完成后,固件位于out目录
8 板载资源的使用
8.1 使用VPU
请参考 VPU/zh
8.2 使用NPU
请参考 NPU/zh
9 备份文件系统并创建SD映像(将系统及应用复制到另一块开发板)
9.1 备份根文件系统
开发板上执行以下命令,备份整个文件系统(包括OS与数据):
sudo passwd root su root cd / tar --warning=no-file-changed -cvpzf /rootfs.tar.gz \ --exclude=/rootfs.tar.gz --exclude=/var/lib/docker/runtimes \ --exclude=/etc/firstuser --exclude=/etc/friendlyelec-release \ --exclude=/usr/local/first_boot_flag --one-file-system /
注:备份时,如果系统中有挂载目录,最后会出现一个错误提示信息,可以无视它,我们本来就是要忽略这些目录
9.2 从根文件系统制作一个可启动的SD卡
Only support RK3328/RK3399/RK3568/RK3566/RK3588
10 Linux操作系统的常见操作
10.1 Linux系统下使用adb
10.1.1 buildroot系统下开启adb功能
开机自动开启
mv /etc/init.d/K50usbdevice.sh /etc/init.d/S50usbdevice.sh reboot
临时开启
usbdevice-wrapper start
10.1.2 ubuntu和debian系统下开启adb功能
开机自动开启
sudo systemctl enable usbdevice sudo reboot
临时开启
usbdevice-wrapper start
10.1.3 如何连接
使用adb时,与电脑相连接的端口与usb线刷的端口相同。
10.2 安装内核头文件
安装位于/opt/archives目录下的deb文件:
sudo dpkg -i /opt/archives/linux-headers-*.deb
在线下载并更新内核头文件:
wget http://112.124.9.243/archives/RK3566/linux-headers-$(uname -r)-latest.deb
sudo dpkg -i ./linux-headers-latest.deb
可以访问 http://112.124.9.243/archives/RK3566 查看有哪些内核deb包。
10.3 设置内核启动参数 (仅支持eMMC)
将固件XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz烧写到TF卡,将TF卡插入电脑,Windows电脑一般会自动识别TF卡的分区,该分区为exfat格式,Linux或Mac用户,请手动挂载TF卡的第一个分区,假设TF卡的设备名为/dev/sdX,挂载/dev/sdX1即可。
编辑TF卡对应OS目录下的info.conf配置文件,增加bootargs-ext参数,例如:
bootargs-ext=rockchipdrm.fb_max_sz=2048
如果要删除某个已经指定的参数,可以设置为空,例如删除userdata参数:
bootargs-ext=userdata=
编辑完成后,再用此TF卡烧写系统到eMMC即可。
要在制作量产卡的过程中设置好内核启动参数,可参考如下脚本 (以RK3588为例):
https://github.com/friendlyarm/sd-fuse_rk3588/blob/kernel-6.1.y/test/test-custom-bootargs.sh
11 救砖办法
如何固件没有正确安装,导致开发板变砖,而且可能没有机会通过SD卡重新安装固件,这时,就需要进入Maskrom模式,通过擦除存储设备的办法救砖。
11.1 Windows用户
11.1.1 下载所需文件
- 获取所需工具:访问这里,在 05_Tools 目录中找到 RKDevTool_v3.19_for_window.zip, DriverAssitant_v5.12.zip 下载到本地
- 安装Rockchip USB驱动和RKDevTool: 解压 DriverAssitant_v5.12.zip 安装Rockchip USB驱动, 解压 RKDevTool_v3.19_for_window.zip 获得 Rockchip烧写工具 RKDevTool
- 获取loader: 访问这里,进入CPU型号对应的tools目录,下载 MiniLoaderAll.bin
11.1.2 进入Maskrom模式擦除存储设备
- 在电脑上启动 RKDevTool
- 按住Mask按键不放, 用USB C数据线, 将NanoPi-R3S与电脑进行连接, 连接到NanoPi-R3S的USB C接口, 保持按住Mask键, 状态灯亮起3秒后即可松开
- 正常情况下,界面下方会显示 Found One MASKROM Device, 如下图所示:
- 在 RKDevTool 界面上点击 Advanced Function 选项卡
- 在 Boot 编辑框中选择 MiniLoaderAll.bin,然后点击 Download 按钮
- 选中 EMMC,点 Switch Storage,再点击 ErashAll 按钮擦除eMMC
- 至此,NanoPi-R3S恢复至初始状态,可以正常通过SD卡或eMMC引导系统了
11.2 Linux
11.2.1 下载所需文件
- 获取所需工具:访问这里,在 05_Tools 目录中找到 upgrade_tool_v2.30_for_linux.tgz 下载到本地
- 获取loader: 访问这里,进入CPU型号对应的tools目录,下载 MiniLoaderAll.bin
11.2.2 安装upgrade_tool工具
输入如下命令:
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
11.2.3 进入Maskrom模式擦除存储设备
- 使用USB数据线将NanoPi-R3S与电脑相连接
- 将NanoPi-R3S断开电源,按住 MASK 键,连接电源,4秒后松开按键
- 用如下命令检查连接:
upgrade_tool LD
显示类似 "DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=13 Mode=Maskrom SerialNo=" 的内容表示已检测到设备。
- 用如下命令擦除eMMC:
upgrade_tool EF MiniLoaderAll.bin
- 至此,NanoPi-R3S恢复至初始状态,可以正常通过SD卡或eMMC引导系统了
11.3 Mac Users
我们测试发现Mac下的upgrade_tool_v2.25无法正常工作,因此建议使用Windows和Linux,除非获得了更新版本的upgrade_tool。
12 性能测试方法
12.1 测试网口速率
12.1.1 软件下载
Windows下可以到官网下载 iperf3测速工具: https://iperf.fr/iperf-download.php
Linux系统可以用以下命令安装: sudo apt-get install iperf3
12.1.2 开始测速
用网线连接电脑到Lan网口,
电脑上打开浏览器, 进入FriendlyWrt后台页面, 进入 "服务“ -> “终端”, 登录后输入以下命令启用 iperf3 服务:
iperf3 -s -i 2
再打开电脑的终端, 输入以下命令开始测试RX速率:
iperf3 -c 192.168.2.1 -i 2 -t 30 -P4
输入以下命令开始测试TX速率:
iperf3 -c 192.168.2.1 -i 2 -t 30 -P4 -R
13 资源链接
13.1 原理图和数据手册
14 更新日志
14.1 2024-10-16
- 内核默认开启了KVM
- 更新FriendlyWrt到openwrt-23.05.05版本
- 新增系统 Buidroot (tag:linux-5.10-gen-rkr8)
- 新增系统 Proxmox VE
- 新增系统 Debian bullseye desktop
14.2 2024-08-26
首次发布