“Orange Pi 3B”的版本间的差异
|  (→使用NoMachine远程登录) |  (→Orange Pi 3B的接口详情图) | ||
| (未显示同一用户的20个中间版本) | |||
| 第195行: | 第195行: | ||
| |- | |- | ||
| |   | |   | ||
| − | <big>''' | + | <big>'''四个定位孔的直径都是2.7mm,M.2 PICE设备固定孔直径为2.9mm。'''</big> | 
| |} | |} | ||
| 第359行: | 第359行: | ||
| </div></li> | </div></li> | ||
| − | <li><p>还需要准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡</p></li> | + | <li><p>还需要准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡 </p></li> | 
| <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p> | <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p> | ||
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| 第405行: | 第405行: | ||
| <li><p>然后选择'''导入配置'''选项</p> | <li><p>然后选择'''导入配置'''选项</p> | ||
| <p>[[File:pi3b-img43.png]]</p></li> | <p>[[File:pi3b-img43.png]]</p></li> | ||
| − | <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的''' | + | <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk356x_linux_tfcard.cfg'''配置文件,再点击'''打开'''</p> | 
| − | <p>[[File:pi3b-img44.png]]</p></li> | + | <p>[[File:pi3b-img44-2.png]]</p></li> | 
| <li><p>然后点击'''确定'''</p> | <li><p>然后点击'''确定'''</p> | ||
| <p>[[File:pi3b-img45.png]]</p></li> | <p>[[File:pi3b-img45.png]]</p></li> | ||
| <li><p>然后点击下图所示的位置</p> | <li><p>然后点击下图所示的位置</p> | ||
| <p>[[File:pi3b-img46.png]]</p></li> | <p>[[File:pi3b-img46.png]]</p></li> | ||
| − | <li><p>再选择前面下载的'''MiniLoader'''文件夹中''' | + | <li><p>再选择前面下载的'''MiniLoader'''文件夹中'''MiniLoaderAll.bin''',再点击'''打开'''</p> | 
| <div class="figure"> | <div class="figure"> | ||
| − | [[File:pi3b-img47.png]] | + | [[File:pi3b-img47-1.png]] | 
| </div></li> | </div></li> | ||
| 第629行: | 第629行: | ||
| <li><p>然后选择'''导入配置'''选项</p> | <li><p>然后选择'''导入配置'''选项</p> | ||
| <p>[[File:pi3b-img43.png]]</p></li> | <p>[[File:pi3b-img43.png]]</p></li> | ||
| − | <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的''' | + | <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk356x_linux_emmc.cfg'''配置文件,再点击'''打开'''</p> | 
| − | <p>[[File:pi3b-img66.png]]</p></li> | + | <p>[[File:pi3b-img66-1.png]]</p></li> | 
| <li><p>然后点击'''确定'''</p> | <li><p>然后点击'''确定'''</p> | ||
| <p>[[File:pi3b-img67.png]]</p></li> | <p>[[File:pi3b-img67.png]]</p></li> | ||
| <li><p>然后点击下图所示的位置</p> | <li><p>然后点击下图所示的位置</p> | ||
| <p>[[File:pi3b-img68.png]]</p></li> | <p>[[File:pi3b-img68.png]]</p></li> | ||
| − | <li><p>再选择前面下载的'''MiniLoader'''文件夹中''' | + | <li><p>再选择前面下载的'''MiniLoader'''文件夹中'''MiniLoaderAll.bin''',再点击'''打开'''</p> | 
| <div class="figure"> | <div class="figure"> | ||
| − | [[File:pi3b-img69.png]] | + | [[File:pi3b-img69-1.png]] | 
| </div></li> | </div></li> | ||
| 第5,228行: | 第5,228行: | ||
| |- | |- | ||
| |   | |   | ||
| − | '''https://downloads.nomachine.com/download/?id= | + | '''https://downloads.nomachine.com/download/?id=8''' | 
| |} | |} | ||
| 第5,254行: | 第5,254行: | ||
| |- | |- | ||
| |   | |   | ||
| − | <big>''' | + | <big>'''操作前请先确保Windows电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。''' | 
| '''<span style="color:#FF0000">Ubuntu20.04测试VNC很多问题,请不要使用这种方法。</span>'''</big> | '''<span style="color:#FF0000">Ubuntu20.04测试VNC很多问题,请不要使用这种方法。</span>'''</big> | ||
| 第5,425行: | 第5,425行: | ||
| <span id="ubuntu-focal系统"></span> | <span id="ubuntu-focal系统"></span> | ||
| − | ===  | + | === Debian Bookworm系统 === | 
| <ol style="list-style-type: decimal;"> | <ol style="list-style-type: decimal;"> | ||
| − | <li><p> | + | <li><p>Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| <li><p>gcc的版本如下所示</p> | <li><p>gcc的版本如下所示</p> | ||
| 第5,434行: | 第5,434行: | ||
| |- | |- | ||
| |   | |   | ||
| − | + | orangepi@orangepi:~$ '''gcc --version''' | |
| − | + | ||
| − | + | gcc (Debian 12.2.0-14) 12.2.0 | |
| − | + | ||
| − | + | Copyright (C) 2022 Free Software Foundation, Inc. | |
| + | |||
| + | This is free software; see the source for copying conditions.  There is NO | ||
| + | |||
| + | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| |} | |} | ||
| </li> | </li> | ||
| 第5,468行: | 第5,472行: | ||
| </li></ol> | </li></ol> | ||
| </li> | </li> | ||
| − | <li><p> | + | <li><p>Debian Bookworm默认安装有Python3</p> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| − | <li><p> | + | <li><p>Python具体版本如下所示</p> | 
| {| class="wikitable" style="width:800px;"   | {| class="wikitable" style="width:800px;"   | ||
| |- | |- | ||
| |   | |   | ||
| − | + | orangepi@orangepi:~$ '''python3''' | |
| − | + | ||
| − | + | Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux | |
| − | + | ||
| − | < | + | Type "help", "copyright", "credits" or "license" for more information. | 
| + | |||
| + | >>> | ||
| + | |} | ||
| + | {| class="wikitable" style="background-color:#ffffdc;width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <big>'''使用Ctrl+D快捷键可退出python的交互模式。'''</big> | ||
| |} | |} | ||
| </li> | </li> | ||
| 第5,498行: | 第5,509行: | ||
| </li></ol> | </li></ol> | ||
| </li> | </li> | ||
| − | <li><p> | + | <li><p>Debian Bookworm默认没有安装Java的编译工具和运行环境</p> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| − | <li><p> | + | <li><p>可以使用下面的命令安装openjdk,Debian Bookworm中最新版本为openjdk-17</p> | 
| {| class="wikitable" style="width:800px;"   | {| class="wikitable" style="width:800px;"   | ||
| |- | |- | ||
| 第5,512行: | 第5,523行: | ||
| |   | |   | ||
| <p>orangepi@orangepi:~$ '''java --version'''</p> | <p>orangepi@orangepi:~$ '''java --version'''</p> | ||
| − | |||
| − | |||
| − | |||
| |} | |} | ||
| </li> | </li> | ||
| 第5,542行: | 第5,550行: | ||
| </li></ol> | </li></ol> | ||
| − | |||
| − | === Ubuntu  | + | === Ubuntu Focal系统 === | 
| − | <ol  | + | <ol style="list-style-type: decimal;"> | 
| − | <li><p>Ubuntu  | + | <li><p>Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| <li><p>gcc的版本如下所示</p> | <li><p>gcc的版本如下所示</p> | ||
| 第5,554行: | 第5,561行: | ||
| |   | |   | ||
| <p>orangepi@orangepi:~$ '''gcc --version'''</p> | <p>orangepi@orangepi:~$ '''gcc --version'''</p> | ||
| − | <p>gcc (Ubuntu  | + | <p>gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0</p> | 
| − | <p>Copyright (C)  | + | <p>Copyright (C) 2019 Free Software Foundation, Inc.</p> | 
| <p>This is free software; see the source for copying conditions. There is NO</p> | <p>This is free software; see the source for copying conditions. There is NO</p> | ||
| <p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p> | <p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p> | ||
| 第5,587行: | 第5,594行: | ||
| </li></ol> | </li></ol> | ||
| </li> | </li> | ||
| − | <li><p>Ubuntu  | + | <li><p>Ubuntu Focal默认安装有Python3</p> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| <li><p>Python3具体版本如下所示</p> | <li><p>Python3具体版本如下所示</p> | ||
| 第5,594行: | 第5,601行: | ||
| |   | |   | ||
| <p>orangepi@orangepi:~$ '''python3'''</p> | <p>orangepi@orangepi:~$ '''python3'''</p> | ||
| − | <p>Python  | + | <p>Python 3.8.10 (default, Nov 14 2022, 12:59:47)</p> | 
| + | <p>[GCC 9.4.0] on linux</p> | ||
| <p>Type "help", "copyright", "credits" or "license" for more information.</p> | <p>Type "help", "copyright", "credits" or "license" for more information.</p> | ||
| <p>>>></p> | <p>>>></p> | ||
| 第5,616行: | 第5,624行: | ||
| </li></ol> | </li></ol> | ||
| </li> | </li> | ||
| − | <li><p>Ubuntu  | + | <li><p>Ubuntu Focal默认没有安装Java的编译工具和运行环境</p> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| − | <li><p>可以使用下面的命令安装openjdk- | + | <li><p>可以使用下面的命令安装openjdk-17</p> | 
| {| class="wikitable" style="width:800px;"   | {| class="wikitable" style="width:800px;"   | ||
| |- | |- | ||
| |   | |   | ||
| − | <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk- | + | <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p> | 
| |} | |} | ||
| </li> | </li> | ||
| 第5,630行: | 第5,638行: | ||
| |   | |   | ||
| <p>orangepi@orangepi:~$ '''java --version'''</p> | <p>orangepi@orangepi:~$ '''java --version'''</p> | ||
| − | <p>openjdk 18-ea 2022-03-22</p> | + | <p>openjdk 17.0.2 2022-01-18</p> | 
| − | <p>OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)</p> | + | <p>OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)</p> | 
| − | <p>OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)</p> | + | <p>OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing)</p> | 
| − | |} | + | |} | 
| − | </li> | + | </li> | 
| − | <li><p>编写Java版本的'''hello_world.java'''</p> | + | <li><p>编写Java版本的'''hello_world.java'''</p> | 
| − | {| class="wikitable" style="width:800px;"   | + | {| class="wikitable" style="width:800px;"  | 
| − | |- | + | |- | 
| − | |   | + | |  | 
| − | <p>orangepi@orangepi:~$ '''vim hello_world.java'''</p> | + | <p>orangepi@orangepi:~$ '''vim hello_world.java'''</p> | 
| − | <p>public class hello_world</p> | + | <p>public class hello_world</p> | 
| − | <p>{</p> | + | <p>{</p> | 
| − | :<p>public static void main(String[] args)</p> | + | :<p>public static void main(String[] args)</p> | 
| − | :<p>{</p> | + | :<p>{</p> | 
| − | ::<p>System.out.println("Hello World!");</p> | + | ::<p>System.out.println("Hello World!");</p> | 
| − | :<p>}</p> | + | :<p>}</p> | 
| − | <p>}</p> | + | <p>}</p> | 
| − | |} | + | |} | 
| − | </li> | + | </li> | 
| − | <li><p>然后编译运行'''hello_world.java'''</p> | + | <li><p>然后编译运行'''hello_world.java'''</p> | 
| − | {| class="wikitable" style="width:800px;"   | + | {| class="wikitable" style="width:800px;"  | 
| − | |- | + | |- | 
| − | |   | + | |  | 
| − | <p>orangepi@orangepi:~$ '''javac hello_world.java'''</p> | + | <p>orangepi@orangepi:~$ '''javac hello_world.java'''</p> | 
| − | <p>orangepi@orangepi:~$ '''java hello_world'''</p> | + | <p>orangepi@orangepi:~$ '''java hello_world'''</p> | 
| − | <p>Hello World!</p> | + | <p>Hello World!</p> | 
| − | |} | + | |} | 
| − | </li></ol> | + | </li></ol> | 
| − | </li></ol> | + | </li></ol> | 
| − | + | ||
| − | <span id="qt的安装方法"></span> | + | <span id="ubuntu-jammy系统"></span> | 
| − | + | ||
| − | == QT的安装方法 == | + | === Ubuntu Jammy系统 === | 
| − | + | ||
| − | <ol style="list-style-type: decimal;"> | + | <ol start="1" style="list-style-type: decimal;"> | 
| − | <li><p>使用下面的脚本可以安装QT5和QT Creator</p> | + | <li><p>Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> | 
| − | {| class="wikitable" style="width:800px;"   | + | <ol style="list-style-type: lower-alpha;"> | 
| − | |- | + | <li><p>gcc的版本如下所示</p> | 
| − | |   | + | {| class="wikitable" style="width:800px;"  | 
| − | <p>orangepi@orangepi:~$ '''install_qt.sh'''</p> | + | |- | 
| − | |} | + | |  | 
| − | </li> | + | <p>orangepi@orangepi:~$ '''gcc --version'''</p> | 
| − | <li><p>安装完后会自动打印QT的版本号</p> | + | <p>gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.0'''</p> | 
| − | <ol style="list-style-type: lower-alpha;"> | + | <p>Copyright (C) 2021 Free Software Foundation, Inc.</p> | 
| − | <li><p>Ubuntu20.04自带的qt版本为'''5.12.8'''</p> | + | <p>This is free software; see the source for copying conditions. There is NO</p> | 
| − | {| class="wikitable" style="width:800px;"   | + | <p>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p> | 
| − | |- | + | |} | 
| − | |   | + | </li> | 
| − | <p>orangepi@orangepi:~$ '''install_qt.sh'''</p> | + | <li><p>编写C语言的'''hello_world.c'''程序</p> | 
| − | <p>......</p> | + | {| class="wikitable" style="width:800px;"  | 
| − | <p>QMake version 3.1</p> | + | |- | 
| − | <p>Using Qt version '''<span style="color:#FF0000">5.12.8</span>''' in /usr/lib/aarch64-linux-gnu</p> | + | |  | 
| − | |} | + | <p>orangepi@orangepi:~$ '''vim hello_world.c'''</p> | 
| − | </li> | + | <p>#include <stdio.h></p> | 
| + | |||
| + | |||
| + | <p>int main(void)</p> | ||
| + | <p>{</p> | ||
| + | :<p>printf("Hello World!\n");</p> | ||
| + | |||
| + | |||
| + | :<p>return 0;</p> | ||
| + | <p>}</p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>然后编译运行'''hello_world.c'''</p> | ||
| + | {| class="wikitable" style="width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <p>orangepi@orangepi:~$ '''gcc -o hello_world hello_world.c'''</p> | ||
| + | <p>orangepi@orangepi:~$ '''./hello_world'''</p> | ||
| + | <p>Hello World!</p> | ||
| + | |} | ||
| + | </li></ol> | ||
| + | </li> | ||
| + | <li><p>Ubuntu Jammy默认安装有Python3</p> | ||
| + | <ol style="list-style-type: lower-alpha;"> | ||
| + | <li><p>Python3具体版本如下所示</p> | ||
| + | {| class="wikitable" style="width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <p>orangepi@orangepi:~$ '''python3'''</p> | ||
| + | <p>Python '''3.10.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux</p> | ||
| + | <p>Type "help", "copyright", "credits" or "license" for more information.</p> | ||
| + | <p>>>></p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>编写Python语言的'''hello_world.py'''程序</p> | ||
| + | {| class="wikitable" style="width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <p>orangepi@orangepi:~$ '''vim hello_world.py'''</p> | ||
| + | <p>print('Hello World!')</p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>运行'''hello_world.py'''的结果如下所示</p> | ||
| + | {| class="wikitable" style="width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <p>orangepi@orangepi:~$ '''python3 hello_world.py'''</p> | ||
| + | <p>Hello World!</p> | ||
| + | |} | ||
| + | </li></ol> | ||
| + | </li> | ||
| + | <li><p>Ubuntu Jammy默认没有安装Java的编译工具和运行环境</p> | ||
| + | <ol style="list-style-type: lower-alpha;"> | ||
| + | <li><p>可以使用下面的命令安装openjdk-18</p> | ||
| + | {| class="wikitable" style="width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-18-jdk'''</p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>安装完后可以查看下Java的版本</p> | ||
| + | {| class="wikitable" style="width:800px;"  | ||
| + | |- | ||
| + | |  | ||
| + | <p>orangepi@orangepi:~$ '''java --version'''</p> | ||
| + | <p>openjdk 18-ea 2022-03-22</p> | ||
| + | <p>OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1)</p> | ||
| + | <p>OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)</p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>编写Java版本的'''hello_world.java'''</p> | ||
| + | {| class="wikitable" style="width:800px;"   | ||
| + | |- | ||
| + | |   | ||
| + | <p>orangepi@orangepi:~$ '''vim hello_world.java'''</p> | ||
| + | <p>public class hello_world</p> | ||
| + | <p>{</p> | ||
| + | :<p>public static void main(String[] args)</p> | ||
| + | :<p>{</p> | ||
| + | ::<p>System.out.println("Hello World!");</p> | ||
| + | :<p>}</p> | ||
| + | <p>}</p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>然后编译运行'''hello_world.java'''</p> | ||
| + | {| class="wikitable" style="width:800px;"   | ||
| + | |- | ||
| + | |   | ||
| + | <p>orangepi@orangepi:~$ '''javac hello_world.java'''</p> | ||
| + | <p>orangepi@orangepi:~$ '''java hello_world'''</p> | ||
| + | <p>Hello World!</p> | ||
| + | |} | ||
| + | </li></ol> | ||
| + | </li></ol> | ||
| + | |||
| + | <span id="qt的安装方法"></span> | ||
| + | |||
| + | == QT的安装方法 == | ||
| + | |||
| + | <ol style="list-style-type: decimal;"> | ||
| + | <li><p>使用下面的脚本可以安装QT5和QT Creator</p> | ||
| + | {| class="wikitable" style="width:800px;"   | ||
| + | |- | ||
| + | |   | ||
| + | <p>orangepi@orangepi:~$ '''install_qt.sh'''</p> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>安装完后会自动打印QT的版本号</p> | ||
| + | <ol style="list-style-type: lower-alpha;"> | ||
| + | <li><p>Ubuntu20.04自带的qt版本为'''5.12.8'''</p> | ||
| + | {| class="wikitable" style="width:800px;"   | ||
| + | |- | ||
| + | |   | ||
| + | <p>orangepi@orangepi:~$ '''install_qt.sh'''</p> | ||
| + | <p>......</p> | ||
| + | <p>QMake version 3.1</p> | ||
| + | <p>Using Qt version '''<span style="color:#FF0000">5.12.8</span>''' in /usr/lib/aarch64-linux-gnu</p> | ||
| + | |} | ||
| + | </li> | ||
| <li><p>Ubuntu22.04自带的QT版本为'''5.15.3'''</p> | <li><p>Ubuntu22.04自带的QT版本为'''5.15.3'''</p> | ||
| {| class="wikitable" style="width:800px;"   | {| class="wikitable" style="width:800px;"   | ||
| 第6,411行: | 第6,537行: | ||
| === eDP屏幕的组装方法 === | === eDP屏幕的组装方法 === | ||
| <ol style="list-style-type: decimal;"> | <ol style="list-style-type: decimal;"> | ||
| − | <li><p> | + | <li><p>目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下:</p></li> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| <li><p>0.5间距30pin单头同向排线</p> | <li><p>0.5间距30pin单头同向排线</p> | ||
| <p>[[File:pi3b-11.png]]</p> | <p>[[File:pi3b-11.png]]</p> | ||
| </li> | </li> | ||
| − | <li><p> | + | <li><p>15.6寸 eDP显示屏,分辨率为1920x1080。</p> | 
| − | <p>[[File:pi3b-12.png]]</p> | + | <p>[[File:pi3b-12-1.png]]</p> | 
| </li> | </li> | ||
| </ol> | </ol> | ||
| − | <li><p> | + | <li><p>将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口</p></li> | 
| − | <p>[[File:pi3b-13.png]]</p> | + | <p>[[File:pi3b-13-1.png]]</p> | 
| </ol> | </ol> | ||
| 第6,468行: | 第6,594行: | ||
| </ol> | </ol> | ||
| </li> | </li> | ||
| − | <li><p> | + | <li><p>启动后可以看到eDP屏幕的显示如下所示:</p></li> | 
| <p>[[File:pi3b-20.png]]</p> | <p>[[File:pi3b-20.png]]</p> | ||
| </ol> | </ol> | ||
| 第6,747行: | 第6,873行: | ||
| </li> | </li> | ||
| <li><p>另外开发板配有开关机按键,还可以'''短按'''开发板上的开关机按键来关机。</p> | <li><p>另外开发板配有开关机按键,还可以'''短按'''开发板上的开关机按键来关机。</p> | ||
| − | <p>[[File:pi3b-img376.png]]</p></li> | + | <p>[[File:pi3b-img376-1.png]]</p></li> | 
| {| class="wikitable" style="background-color:#ffffdc;width:800px;"   | {| class="wikitable" style="background-color:#ffffdc;width:800px;"   | ||
| 第6,759行: | 第6,885行: | ||
| <ol start="3" style="list-style-type: decimal;"> | <ol start="3" style="list-style-type: decimal;"> | ||
| <li><p>关机后短按开发板上的开关机按键即可开机。</p> | <li><p>关机后短按开发板上的开关机按键即可开机。</p> | ||
| − | <p>[[File:pi3b-img376.png]]</p></li> | + | <p>[[File:pi3b-img376-1.png]]</p></li> | 
| <li><p>重启Linux系统的命令为</p> | <li><p>重启Linux系统的命令为</p> | ||
| {| class="wikitable" style="width:800px;"   | {| class="wikitable" style="width:800px;"   | ||
| 第6,784行: | 第6,910行: | ||
| <span id="使用开发板的ubuntu22.04系统编译"></span> | <span id="使用开发板的ubuntu22.04系统编译"></span> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| === 使用x64的Ubuntu22.04电脑编译 === | === 使用x64的Ubuntu22.04电脑编译 === | ||
| 第7,715行: | 第7,822行: | ||
| | '''eDP显示''' | | '''eDP显示''' | ||
| | '''OK''' | | '''OK''' | ||
| + | |- | ||
| + | | '''Camera''' | ||
| + | | '''<span style="color:#FF0000">NO</span>''' | ||
| |- | |- | ||
| | '''千兆网口''' | | '''千兆网口''' | ||
| 第7,846行: | 第7,956行: | ||
| == eDP屏幕的使用方法 == | == eDP屏幕的使用方法 == | ||
| <ol style="list-style-type: decimal;"> | <ol style="list-style-type: decimal;"> | ||
| − | <li><p> | + | <li><p>目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下:</p></li> | 
| <ol style="list-style-type: lower-alpha;"> | <ol style="list-style-type: lower-alpha;"> | ||
| <li><p>0.5间距30pin单头同向排线</p> | <li><p>0.5间距30pin单头同向排线</p> | ||
| <p>[[File:pi3b-26.png]]</p> | <p>[[File:pi3b-26.png]]</p> | ||
| </li> | </li> | ||
| − | <li><p> | + | <li><p>15.6寸 eDP显示屏,分辨率为1920x1080</p> | 
| <p>[[File:pi3b-27.png]]</p> | <p>[[File:pi3b-27.png]]</p> | ||
| </li> | </li> | ||
| </ol> | </ol> | ||
| − | <li><p> | + | <li><p>将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口</p></li> | 
| <p>[[File:pi3b-28.png]]</p> | <p>[[File:pi3b-28.png]]</p> | ||
| − | <li><p> | + | <li><p>再给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示</p></li> | 
| − | <p>[[File:pi3b-29.png]]</p> | + | <p>[[File:pi3b-29-1.png]]</p> | 
| </ol> | </ol> | ||
| 第7,872行: | 第7,982行: | ||
| <p>[[File:pi3b-img421.png]]</p></li> | <p>[[File:pi3b-img421.png]]</p></li> | ||
| <li><p>GPIO测试界面如下图所示,左边的两排'''CheckBox'''按钮跟40pin引脚是一一对应的关系。当勾选'''CheckBox'''按钮时,对应的GPIO引脚会被设置为'''OUT'''模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的'''GPIO READALL'''按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息;当点击'''BLINK ALL GPIO'''按钮时,程序会控制28个GPIO口不停的切换高低电平</p> | <li><p>GPIO测试界面如下图所示,左边的两排'''CheckBox'''按钮跟40pin引脚是一一对应的关系。当勾选'''CheckBox'''按钮时,对应的GPIO引脚会被设置为'''OUT'''模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的'''GPIO READALL'''按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息;当点击'''BLINK ALL GPIO'''按钮时,程序会控制28个GPIO口不停的切换高低电平</p> | ||
| − | <p>[[File:pi3b-img422.png]]</p></li> | + | <p>[[File:pi3b-img422-1.png]]</p></li> | 
| <li><p>然后点击'''GPIO READALL'''按钮,输出信息如下图所示:</p> | <li><p>然后点击'''GPIO READALL'''按钮,输出信息如下图所示:</p> | ||
| − | <p>[[File:pi3b-img423.png]]</p></li> | + | <p>[[File:pi3b-img423-1.png]]</p></li> | 
| − | <li><p> | + | <li><p>开发板40pin中总共有28个GPIO口可以使用,下面以11号引脚——对应GPIO为GPIO3_C6 ——对应wPi序号为5——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的'''CheckBox'''按钮,当按钮为选中状态时,11号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''3.3v''',说明设置高电平成功</p> | 
| − | <p>[[File:pi3b-img424.png]]</p></li> | + | <p>[[File:pi3b-img424-1.png]]</p></li> | 
| <li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为'''OUT''',引脚电平为高电平</p> | <li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为'''OUT''',引脚电平为高电平</p> | ||
| <p>[[File:pi3b-img425.png]]</p></li> | <p>[[File:pi3b-img425.png]]</p></li> | ||
| − | <li><p>再次点击下图的'''CheckBox''' | + | <li><p>再次点击下图的'''CheckBox'''按钮取消勾选状态,11号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''0v''',说明设置低电平成功</p> | 
| − | <p>[[File:pi3b-img426.png]]</p></li> | + | <p>[[File:pi3b-img426-1.png]]</p></li> | 
| <li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平</p> | <li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平</p> | ||
| − | <p>[[File:pi3b-img427.png]]</p></li></ol> | + | <p>[[File:pi3b-img427-1.png]]</p></li></ol> | 
| <span id="pin的uart测试-2"></span> | <span id="pin的uart测试-2"></span> | ||
| + | |||
| === 40pin的UART测试 === | === 40pin的UART测试 === | ||
| 第7,954行: | 第8,065行: | ||
| <li><p>然后在wiringOP的主界面点击'''PWM_TEST'''按钮进入PWM的测试界面</p> | <li><p>然后在wiringOP的主界面点击'''PWM_TEST'''按钮进入PWM的测试界面</p> | ||
| <p>[[File:pi3b-img441.png]]</p></li> | <p>[[File:pi3b-img441.png]]</p></li> | ||
| − | <li><p>PWM11对应的基地址是'''fe6f0030''',这里pwmchip0右边显示是'''fdd70020.pwm''', 这时需要点击下拉选项选择其它的pwmchip,直到右边显示'''fe6f0030.pwm'''为止</p> | + | <li><p>PWM11对应的基地址是'''fe6f0030''',PWM15对应的基地址是'''fe700030''',这里pwmchip0右边显示是'''fdd70020.pwm''', 这时需要点击下拉选项选择其它的pwmchip,直到右边显示'''fe6f0030.pwm'''或者'''fe700030.pwm'''为止</p> | 
| <p>[[File:pi3b-img442.png]]</p></li> | <p>[[File:pi3b-img442.png]]</p></li> | ||
| <li><p>当下拉选项选择'''pwmchip3'''时,右边对应的就是PWM11对应的基地址'''fe6f0030'''</p> | <li><p>当下拉选项选择'''pwmchip3'''时,右边对应的就是PWM11对应的基地址'''fe6f0030'''</p> | ||
| 第8,045行: | 第8,156行: | ||
| | '''更新说明''' | | '''更新说明''' | ||
| |- | |- | ||
| − | |  | + | | v1.0 | 
| − | | 2023- | + | | 2023-08-17 | 
| | 初始版本 | | 初始版本 | ||
| |} | |} | ||
| 第8,057行: | 第8,168行: | ||
| | style="text-align:center;" |'''更新说明''' | | style="text-align:center;" |'''更新说明''' | ||
| |- | |- | ||
| − | | style="text-align:center;" |2023- | + | | style="text-align:center;" |2023-08-17 | 
| |   | |   | ||
| + | Orangepi3b_1.0.0_ubuntu_focal_server_linux5.10.160.7z | ||
| + | |||
| + | Orangepi3b_1.0.0_ubuntu_jammy_server_linux5.10.160.7z | ||
| + | |||
| + | Orangepi3b_1.0.0_debian_bullseye_server_linux5.10.160.7z | ||
| + | |||
| + | Orangepi3b_1.0.0_debian_bookworm_server_linux5.10.160.7z | ||
| + | |||
| + | Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z | ||
| + | |||
| + | Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z | ||
| + | |||
| Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z | Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z | ||
| − | Orangepi3b_1.0. | + | Orangepi3b_1.0.0_debian_bookworm_desktop_xfce_linux5.10.160.7z | 
| − | |||
| OrangePi3B_RK3566_Android11_v1.0.0.tar.gz | OrangePi3B_RK3566_Android11_v1.0.0.tar.gz | ||
| 第8,072行: | 第8,194行: | ||
| OrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz | OrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz | ||
| + | |||
| * 初始版本 | * 初始版本 | ||
| |} | |} | ||
2023年8月23日 (三) 20:09的最新版本
目录
- 1 Orange Pi 3B的基本特性
- 2 开发板使用介绍
- 2.1 准备需要的配件
- 2.2 下载开发板的镜像和相关的资料
- 2.3 基于Windows PC将Linux镜像烧写到TF卡的方法
- 2.4 基于Ubuntu PC将Linux镜像烧写到TF卡的方法
- 2.5 烧录Linux镜像到eMMC中的方法
- 2.6 烧写Linux镜像到SPIFlash+NVMe SSD中的方法
- 2.7 烧录Android镜像到TF卡中的方法
- 2.8 烧录Android镜像到eMMC中的方法
- 2.9 烧录Android镜像到SPIFlash+NVMe SSD中的方法
- 2.10 使用RKDevTool清空SPIFlash的方法
- 2.11 启动香橙派开发板
- 2.12 调试串口的使用方法
- 2.13 使用开发板40pin接口中的5v引脚供电说明
 
- 3 Ubuntu/Debian Server和Xfce桌面系统使用说明
- 3.1 已支持的Linux镜像类型和内核版本
- 3.2 Linux系统适配情况
- 3.3 本手册Linux命令格式说明
- 3.4 Linux系统登录说明
- 3.5 板载LED灯测试说明
- 3.6 网络连接测试
- 3.7 SSH远程登录开发板
- 3.8 上传文件到开发板Linux系统中的方法
- 3.9 HDMI测试
- 3.10 蓝牙使用方法
- 3.11 USB接口测试
- 3.12 音频测试
- 3.13 温度传感器
- 3.14 40 Pin接口引脚说明
- 3.15 安装wiringOP的方法
- 3.16 40pin接口GPIO、I2C、UART、SPI和PWM测试
- 3.17 wiringOP-Python的安装使用方法
- 3.18 硬件看门狗测试
- 3.19 查看RK3566芯片的序列号
- 3.20 下载安装arm64版本balenaEtcher的方法
- 3.21 宝塔Linux面板的安装方法
- 3.22 设置中文环境以及安装中文输入法
- 3.23 远程登录Linux系统桌面的方法
- 3.24 Linux系统支持的部分编程语言测试
- 3.25 QT的安装方法
- 3.26 ROS安装方法
- 3.27 安装内核头文件的方法
- 3.28 树莓派5寸屏幕的使用
- 3.29 eDP屏幕的使用方法
- 3.30 开关机logo使用说明
- 3.31 ZFS文件系统的使用方法
- 3.32 关机和重启开发板的方法
 
- 4 Linux SDK——orangepi-build使用说明
- 5 Android 11系统的使用说明
- 6 附录
Orange Pi 3B的基本特性
什么是 Orange Pi 3B
Orange Pi 3B采用了瑞芯微RK3566四核64位Cortex-A55处理器,采用的22nm工艺,主频最高可达1.8GHz,集成ARM Mali-G52 GPU,内嵌高性能2D图像加速模块,内置0.8Tops算力的AI加速器NPU,可选2GB、4GB或者8GB内存,具有高达4K显示处理能力。
Orange Pi 3B引出了相当丰富的接口,包括HDMI输出、M.2 PCIe2.0x1、千兆网口、USB2.0、USB3.0接口和40pin扩展排针等。可广泛适用于高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。
Orange Pi 3B支持Android11、Ubuntu22.04、Ubuntu20.04、Debian11、Debian12、开源鸿蒙4.0 Beta1、Orange Pi OS(Arch)、基于开源鸿蒙的Orange Pi OS(OH)等操作系统。
Orange Pi 3B的用途
我们可以用它实现:
- 一台Linux桌面计算机
- 一台Linux网络服务器
- Android平板
- Android游戏机等
| 当然还有其他更多的功能,依托强大的生态系统以及各式各样的扩展配件,Orange Pi可以帮助用户轻松实现从创意到原型再到批量生产的交付,是创客、梦想家、业余爱好者的理想创意平台。 | 
Orange Pi 3B的硬件规格
| 硬件规格参数 | |
| 主控芯片 | Rockchip RK3566 | 
| CPU | 四核 64 位 Cortex-A55 处理器,22nm 先进工艺,主频最高 1.8GHz | 
| GPU | • ARM Mali G52 2EE图形处理器 • 支持OpenGL ES 1.1/2.0/3.2,OpenCL 2.0,Vulkan 1.1 • 内嵌高性能2D加速硬件 | 
| NPU | • 集成 RKNN NPU AI 加速器,0.8Tops@INT8 性能 • 支持 C affe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet 架构模型一键转换 | 
| VPU | • 4K@60fps H.265/H.264/VP9 视频解码 • 1080P@100fps H.265 视频编码 • 1080P@60fpsH.264 视频编码 | 
| PMU | Rockchip RK809-5 | 
| 内存 | 2GB/4GB/8GB (LPDDR4/4x) | 
| 存储 | • 支持eMMC模块:16GB/32GB/64GB/128GB • SPI Flash: 16MB/32MB • M.2 M-KEY插槽:SATA3 或者 PCIe2.0 NVME SSD • TF卡槽 | 
| Wi-Fi+蓝牙 | Wi-Fi 5+BT 5.0,BLE(20U5622) | 
| 以太网收发器 | 10/100/1000Mbps以太网(板载PHY芯片:YT8531C) | 
| 显示 | • 1x HDMI TX 2.0,最大支持4K@60FPS • 1xMIPI DSI 2 Lane • eDP1.3 | 
| 摄像头 | 1xMIPI CSI 2 Lane摄像头接口 | 
| USB | • 1xUSB 2.0 支持Device或HOST模式 • 1xUSB 3.0 HOST • 2xUSB 2.0 HOST | 
| 音频 | 3.5mm耳机孔音频输入/输出 | 
| 按键 | 1x MaskROM键,1xRESET键,1 xPOWER键 | 
| FAN | 2Pin 1.25mm规格的5V风扇接口 | 
| RTC | 2Pin 1.25mm规格的备用电池接口 | 
| 40Pin | 40Pin功能扩展接口,支持以下接口类型: GPIO、UART、I2C、SPI、PWM | 
| 电源 | Type-C 5V3A | 
| 支持的操作系统 | Android11、Ubuntu22 .04、Ubuntu20.04、Debian11、Debian12、开源鸿蒙4.0 Beta1、Orange Pi OS(Arch)、基于开源鸿蒙的Orange Pi OS(OH)等操作系统。 | 
| 外观规格介绍 | |
| PCB尺寸 | 85mm x 56mm x 17mm | 
| 重量 | 49g | 
Orange Pi 3B的顶层视图和底层视图
顶层视图:
底层视图:
Orange Pi 3B的接口详情图
| 四个定位孔的直径都是2.7mm,M.2 PICE设备固定孔直径为2.9mm。 | 
开发板使用介绍
准备需要的配件
- TF卡,最小16GB容量(推荐32GB或以上)的class10级或以上的高速闪迪卡 
- TF卡读卡器,用于将镜像烧录到TF卡中 
- HDMI接口的显示器 
- HDMI转HDMI连接线,用于将开发板连接到HDMI显示器或者电视进行显示 - 注意,如果想接4K显示器,请确保HDMI线支持4K视频输出。 
- 电源适配器,Orange Pi 3B建议使用5V/3A或者5V/4A的Type-C电源供电 
- USB接口的鼠标和键盘,只要是标准USB接口的鼠标和键盘都可以,鼠标和键盘可以用来控制Orange Pi开发板 
- USB摄像头 
- 5V的散热风扇。如下图所示,开发板上有用于接散热风扇的接口,接口规格为2pin 1.25mm间距 - 开发板上的风扇可以通过PWM来调节转速和开关。 
- 百兆或者千兆网线,用于将开发板连接到因特网 
- USB2.0公对公数据线,用于烧录镜像到eMMC、NVMe SSD等功能 
- 3.3V的USB转TTL模块和杜邦线,使用串口调试功能时,需要USB转TTL模块和杜邦线来连接开发板和电脑 
- 安装有Ubuntu和Windows操作系统的个人电脑 - 1 - Ubuntu22.04 PC - 可选,用于编译Linux源码 - 2 - Windows PC - 用于烧录Android和Linux镜像 
下载开发板的镜像和相关的资料
- 中文版资料的下载网址为:
- 英文版资料的下载网址为: 
- 资料主要包含 - Android源码:保存在百度云盘和谷歌网盘上 
- Linux源码:保存在Github上 
- 用户手册和原理图:保存在百度云盘和谷歌网盘上 
- 官方工具:主要包括开发板使用过程中需要用到的软件 
- Android镜像:保存在百度云盘和谷歌网盘上 
- Ubuntu镜像:保存在百度云盘和谷歌网盘上 
- Debian镜像:保存在百度云盘和谷歌网盘上 
- Orange Pi OS镜像:保存在百度云盘和谷歌网盘上 
- OpenHarmony镜像:保存在百度云盘和谷歌网盘上 
 
基于Windows PC将Linux镜像烧写到TF卡的方法
| 注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像。 | 
使用balenaEtcher烧录Linux镜像的方法
- 首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
- 然后使用读卡器把TF卡插入电脑
- 从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上。
- 然后下载Linux镜像的烧录软件——balenaEtcher,下载地址为:
- 进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方 
- 然后可以选择下载balenaEtcher的Portable版本的软件,Portable版本无需安装,双击打开就可以使用 
- 如果下载的是需要安装版本的balenaEtcher,请先安装再使用。如果下载的Portable版本balenaEtcher,直接双击打开即可,打开后的balenaEtcher界面如下图所示: - 打开balenaEtcher时如果提示下面的错误: - 请选择balenaEtcher后点击右键,然后选择以管理员身份运行。 
- 使用balenaEtcher烧录Linux镜像的具体步骤如下所示 
- balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中 
- Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验 
- 成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了 
使用RKDevTool烧录Linux镜像到TF卡中的方法
- 首先需要准备一根品质良好的USB2.0公对公数据线 
- 还需要准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip - 在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中 
- 然后下载下面的所有文件 - 注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。 
 
- 然后从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上 
- 然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可 
- 打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示 
- 然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到RKDevTool打开即可 
- 打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备” 
- 然后开始烧录Linux镜像到TF卡中 - 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示 
- 确保TF卡插槽没有插入TF卡 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
- 此时请在TF卡插槽中插入TF卡 
- 然后将鼠标光标放在下面的这片区域中 
- 然后点击鼠标右键会弹出下图所示的选择界面 
- 然后选择导入配置选项 
- 然后选择前面下载的MiniLoader文件夹中的rk356x_linux_tfcard.cfg配置文件,再点击打开 
- 然后点击确定 
- 然后点击下图所示的位置 
- 再选择前面下载的MiniLoader文件夹中MiniLoaderAll.bin,再点击打开 
- 然后点击下图所示的位置 
- 然后选择想要烧录的Linux镜像的路径,再点击打开 - 在烧录镜像前,建议将要烧录的Linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。 
- 然后请勾选上强制按地址写选项 
- 再点击执行按钮就会开始烧录Linux镜像到开发板的tf卡中 
- Linux镜像烧录完后的显示log如下图所示 
- 烧录完Linux镜像到tf卡中后,Linux系统会自动启动。 
 
使用Win32Diskimager烧录Linux镜像的方法
- 首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡 
- 然后使用读卡器把TF卡插入电脑 
- 接着格式化TF卡 - 可以使用SD Card Formatter这个软件格式化TF卡,其下载地址为
https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip 
 - 下载完后直接解压安装即可,然后打开软件 
- 如果电脑只插入了TF卡,则”Select card”一栏中会显示TF卡的盘符,如果电脑插入了多个USB存储设备,可以通过下拉框选择TF卡对应的盘符 
- 然后点击”Format”,格式化前会弹出一个警告框,选择”是(Y)”后就会开始格式化 
 
- 可以使用SD Card Formatter这个软件格式化TF卡,其下载地址为
- 从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上 
- 使用Win32Diskimager烧录Linux镜像到TF卡 - Win32Diskimager的下载页面为
 - http://sourceforge.net/projects/win32diskimager/files/Archive/ 
基于Ubuntu PC将Linux镜像烧写到TF卡的方法
| 注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像,Ubuntu PC指的是安装了Ubuntu系统的个人电脑。 | 
- 首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为class10级或class10级以上,建议使用闪迪等品牌的TF卡
- 然后使用读卡器把TF卡插入电脑
- 下载balenaEtcher软件,下载地址为
- 进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方 
- 然后选择下载Linux版本的软件即可 
- 从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上 - 7z结尾的压缩包的解压命令如下所示 - test@test:~$ 7z x Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z - test@test:~$ ls Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.* - Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.sha #校验和文件 - Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img #镜像文件 
- 解压镜像后可以先用sha256sum -c *.sha命令计算下校验和是否正确,如果提示成功说明下载的镜像没有错,可以放心的烧录到TF卡,如果提示校验和不匹配说明下载的镜像有问题,请尝试重新下载 - test@test:~$ sha256sum -c *.sha - Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img: OK 
- 然后在Ubuntu PC的图形界面双击balenaEtcher-1.5.109-x64.AppImage即可打开balenaEtcher(无需安装),balenaEtcher打开后的界面显示如下图所示 
- 使用balenaEtcher烧录Linux镜像的具体步骤如下所示 
- balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中 
- Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验 
- 成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了 
烧录Linux镜像到eMMC中的方法
使用RKDevTool烧录Linux镜像到eMMC中的方法
| 注意,下面所有的操作都是在Windows电脑中进行的。 | 
| 注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像。 | 
- 开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示: 
- 还需要准备一根品质良好的USB2.0公对公数据线 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip - 在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中 
- 然后下载下面的所有文件 - 注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。 
 
- 然后从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上 
- 然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可 
- 打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示 
- 然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可 
- 打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备” 
- 然后开始烧录Linux镜像到eMMC中 - 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示 
- 确保开发板没有插入TF卡,没有连接电源 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
- 然后将鼠标光标放在下面的这片区域中 
- 然后点击鼠标右键会弹出下图所示的选择界面 
- 然后选择导入配置选项 
- 然后选择前面下载的MiniLoader文件夹中的rk356x_linux_emmc.cfg配置文件,再点击打开 
- 然后点击确定 
- 然后点击下图所示的位置 
- 再选择前面下载的MiniLoader文件夹中MiniLoaderAll.bin,再点击打开 
- 然后点击下图所示的位置 
- 然后选择想要烧录的Linux镜像的路径,再点击打开 - 在烧录镜像前,建议将要烧录的Linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。 
- 然后请勾选上强制按地址写选项 
- 再点击执行按钮就会开始烧录Linux镜像到开发板的eMMC中 
- Linux镜像烧录完后的显示log如下图所示 
- 烧录完Linux镜像到eMMC中后,Linux系统会自动启动。 - 注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPI Flash后再启动试下。清空SPI Flash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。 
 
使用dd命令烧录Linux镜像到eMMC中的方法
| 注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu或者OPi OS Arch这样的Linux发行版镜像。 | 
- 开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示: 
- 使用dd命令烧录Linux镜像到eMMC中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见基于Windows PC将Linux镜像烧录到TF卡的方法和基于Ubuntu PC将Linux镜像烧录到TF卡的方法两小节的说明。 
- 使用TF卡启动Linux系统后,我们首先将解压后的Linux镜像文件(从官网下载的Debian、Ubuntu镜像或者OPi Arch镜像)上传到TF卡中。上传Linux镜像文件到开发板中的方法请参考上传文件到开发板Linux系统中的方法小节的说明。 
- 上传完镜像到开发板的Linux系统中后,我们再在开发板Linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的Linux镜像存放在/home/orangepi/Desktop目录下了,然后进入/home/orangepi/Desktop目录就能看到上传的镜像文件了。 - orangepi@orangepi:~$ cd /home/orangepi/Desktop - orangepi@orangepi:~/Desktop$ ls - Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img - 怎么进入开发板Linux系统的命令行? - 1. 使用串口登录终端的方法请参考调试串口的使用方法一小节的说明。 - 2. 使用ssh远程登录Linux系统请参考SSH远程登录开发板一小节的说明。 - 3. 如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。 
- 接下来,我们先使用下面的命令确认下eMMC的设备节点 - orangepi@orangepi:~/Desktop$ ls /dev/mmcblk*boot0 | cut -c1-12 - /dev/mmcblk0 
- 然后我们可以使用dd命令清空下eMMC,注意of=参数后面请填入上面命令输出的结果 - orangepi@orangepi:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/mmcblk0 count=1000 status=progress - orangepi@orangepi:~/Desktop$ sudo sync 
- 然后就可以使用dd命令烧录开发板的Linux镜像到eMMC中 - 下面的命令中 if= 参数后面是要填写Linux镜像存放的完整路径+Linux镜像的名字(比如/home/orangepi/Desktop/Linux镜像的名字)。因为上面我们已经进入Linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。 
- 下面命令中的Linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。 - sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img of=/dev/mmcblk0 status=progress - sudo sync - 注意,如果上传的是 .7z或者.xz 结尾Linux镜像压缩文件,使用dd命令烧录前请记得先解压。 - dd命令的所有参数的详细说明和更多用法可以在Linux系统中执行man dd命令来查看。 
 
- 当成功烧录开发板的Linux镜像到eMMC后,此时就可以使用poweroff命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动eMMC中的Linux系统了。 - 注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPI Flash后再启动试下。清空SPI Flash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。 
烧写Linux镜像到SPIFlash+NVMe SSD中的方法
| 注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu这样的Linux发行版镜像。 | 
| 注意,下面所有的操作都是在Windows电脑中进行的。 | 
使用RKDevTool烧录的方法
- 首先需要准备一个NVMe SSD固态硬盘,开发板M.2插槽支持的PCIe为PCIe2.0x1,理论最高速度为500MB/s。PCIe3.0和PCIe4.0的NVMe SSD也是可以用的,只是速度最高只有PCIe2.0x1的速度。 
- 然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好 
- SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置 
- 然后需要准备一根品质良好的USB2.0公对公数据线 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip - 在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中 
- 然后下载下面的所有文件 - 注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。 
 
- 然后从Orange Pi的资料下载页面下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”.img”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上 
- 然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可 
- 打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示 
- 然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可 
- 打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备” 
- 然后开始烧录Linux镜像到SSD中 - 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录接口的位置如下图所示 
- 确保开发板没有连接电源和插入TF卡以及eMMC 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
- 然后将鼠标光标放在下面的这片区域中 
- 然后点击鼠标右键会弹出下图所示的选择界面 
- 然后选择导入配置选项 
- 然后进入前面下载的MiniLoader文件夹中,然后选择rk3588_linux_pcie.cfg配置文件,再点击打开 
- 然后点击确定 
- 然后点击下图所示的位置 
- 再选择前面下载的MiniLoader文件夹中rk3566_MiniLoaderAll.bin,再点击打开 
- 然后点击下图所示的位置 
- 然后进入前面下载的MiniLoader文件夹中,再选择rk3566_rkspi_loader.img,再点击打开 
- 然后点击下图所示的位置 
- 然后选择想要烧录的Linux镜像的路径,再点击打开 - 在烧录镜像前,建议将要烧录的Linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。 
- 然后请勾选上强制按地址写选项 
- 再点击执行按钮就会开始烧录Linux镜像到SSD中 
- Linux镜像烧录完后的显示log如下图所示 - 如果烧录有问题,请先清空下SPI Flash然后再烧录试下。清空SPI Flash的方法请参考下使用RKDevTool清空SPIFlash的方法一小节的说明。 
- 镜像烧录完后会自动启动SPIFlash+PCIe SSD中的Linux系统,如果没有正常启动,请重新上电试下。 
 
使用dd命令烧录的方法
- 首先需要准备一个NVMe SSD固态硬盘,开发板M.2插槽支持的PCIe为PCIe2.0x1,理论最高速度为500MB/s。PCIe3.0和PCIe4.0的NVMe SSD也是可以用的,只是速度最高只有PCIe2.0x1的速度。 
- 然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好 
- SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置 
- 烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见基于Windows PC将Linux镜像烧写到TF卡的方法和基于Ubuntu PC将Linux镜像烧写到TF卡的方法两小节的说明。 
- 使用TF卡启动Linux系统后,我们首先烧录u-boot镜像到SPI Flash中 - 先运行下nand-sata-install,普通用户记得加sudo权限 - orangepi@orangepi:~$ sudo nand-sata-install 
- 然后选择7 Install/Update ther bootloader on SPI Flash 
 - 然后选择<Yes>
 - 然后请耐心等待烧录完成,烧录完成后显示如下所示(左下角会显示一个Done):
 
- 然后将Linux镜像文件(从官网下载的Debian或者Ubuntu镜像)上传到TF卡中。上传Linux镜像文件到开发板中的方法请参考上传文件到开发板Linux系统中的方法小节的说明。 
- 上传完镜像到开发板的Linux系统中后,我们再在开发板Linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的Linux镜像存放在/home/orangepi/Desktop目录下了,然后进入/home/orangepi/Desktop目录就能看到上传的镜像文件了。 - orangepi@orangepi:~$ cd /home/orangepi/Desktop - orangepi@orangepi:~/Desktop$ ls - Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img - 怎么进入开发板Linux系统的命令行? - 使用串口登录终端的方法请参考调试串口的使用方法一小节的说明。 
- 使用ssh远程登录Linux系统请参考SSH远程登录开发板一小节的说明。 
- 如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。 
 
- 接下来,我们先确认下NVMe SSD已经被开发板的Linux正常识别了。如果NVMe SSD正常识别了的话,使用sudo fdisk -l命令就能看到nvme相关的信息 - orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1" - Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors - 使用lspci命令可以看到一个NVMe相关的PCI设备 - orangepi@orangepi:~/Desktop$ lspci - 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) - 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01) 
- 然后我们可以使用dd命令清空下NVMe SSD(可选) - orangepi@orangepi3b:~/Desktop$ sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress - orangepi@orangepi3b:~/Desktop$ sudo sync 
- 然后就可以使用dd命令烧录开发板的Linux镜像到NVMe SSD中 - 下面的命令中 if= 参数后面是要填写Linux镜像存放的完整路径+Linux镜像的名字(比如/home/orangepi/Desktop/Linux镜像的名字)。因为上面我们已经进入Linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。 
- 下面命令中的Linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。 - sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img of=/dev/nvme0n1 status=progress - sudo sync - 注意,如果上传的是 .7z或者.xz 或者.gz结尾Linux镜像压缩文件,使用dd命令烧录前请记得先解压。 - dd命令的所有参数的详细说明和更多用法可以在Linux系统中执行man dd命令来查看。 
 
- 当成功烧录开发板的Linux镜像到NVMe SSD后,此时就可以使用poweroff命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的Linux系统了。 
- 启动NVMe SSD中的系统后,使用df -h命令可以看到实际的硬盘容量 - 128GB NVMe SSD - orangepi@orangepi:~$ df -h - Filesystem Size Used AvailUse% Mounted on 
 udev3.8G 8.0K 3.8G 1% /dev
 tmpfs 769M 1.4M 768M 1% /run
 /dev/nvme0n1p2118G 5.8G 111G 5% /
 tmpfs 3.8G 03.8G 0% /dev/shm
 tmpfs 5.0M 4.0K 5.0M 1% /run/lock
 tmpfs 3.8G 16K 3.8G 1% /tmp
 /dev/nvme0n1p1256M 90M 166M 36% /boot
 /dev/zram1194M 9.9M 170M 6% /var/log
 tmpfs 769M 60K 769M 1% /run/user/1000
 tmpfs 769M 48K 769M 1% /run/user/0
 
- 2TB NVMe SSD - orangepi@orangepi:~$ df -h - Filesystem Size Used AvailUse% Mounted on 
 udev3.8G 8.0K 3.8G 1% /dev
 tmpfs 769M 1.4M 768M 1% /run
 /dev/nvme0n1p21.9T 4.1G 1.8T 1% /
 tmpfs 3.8G 03.8G 0% /dev/shm
 tmpfs 5.0M 4.0K 5.0M 1% /run/lock
 /dev/zram23.7G 76K 3.5G 1% /tmp
 /dev/nvme0n1p1256M 90M 166M 36% /boot
 /dev/zram1194M 9.9M 170M 6% /var/log
 tmpfs 769M 60K 769M 1% /run/user/1000
 tmpfs 769M 48K 769M 1% /run/user/0
 
 
- 当TF卡和NVMe SSD中烧录了一模一样的系统,如果TF卡和NVMe SSD都插在了开发板中,此时上电启动开发板,u-boot会优先启动TF卡中的系统。但由于TF卡和NVMe SSD中的系统一模一样,所以两个存储设备中的/boot分区和rootfs分区的UUID也一样,这样会导致TF卡启动的时候有可能会加载了NVMe SSD中的分区。运行下面的脚本可以解决这个问题。 - orangepi@orangepi:~$ sudo fix_mmc_ssd.sh - 一模一样的系统是指镜像名一字不差的意思。就算都是Debian11系统,版本不同也是不同的。 
使用balenaEtcher软件烧录的方法
- 首先需要准备一个NVMe SSD固态硬盘,开发板M.2插槽支持的PCIe为PCIe2.0x1,理论最高速度为500MB/s。PCIe3.0和PCIe4.0的NVMe SSD也是可以用的,只是速度最高只有PCIe2.0x1的速度。 
- 然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好 
- SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置 
- 烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见基于Windows PC将Linux镜像烧写到TF卡的方法和基于Ubuntu PC将Linux镜像烧写到TF卡的方法两小节的说明。 
- 启动进入TF卡中的Linux系统后,请先确认下NVMe SSD已经被开发板的Linux正常识别了。如果NVMe SSD正常识别了的话,使用sudo fdisk -l命令就能看到nvme相关的信息 - orangepi@orangepi:~/Desktop$ sudo fdisk -l | grep "nvme0n1" - Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors - 使用lspci命令可以看到一个NVMe相关的PCI设备 - orangepi@orangepi:~/Desktop$ lspci - 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) - 01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01) 
- Linux镜像中已经预装了balenaEtcher,打开方法如下所示: - 如果没有预装,balenaEtcher arm64版本的下载安装方法请参考下载安装arm64版本balenaEtcher的方法小节的说明。 
- balenaEtcher打开后的界面如下所示:
- 使用balenaEtcher烧录u-boot到开发板SPI Flash中的方法如下所示: - 首先点击Flash from file
 - 然后进入/usr/lib/linux-u-boot-legacy-orangepi3b_1.x.x_arm64目录,再选择rkspi_loader.img,再点击Open打开
 - 然后点击Show 2 hidden打开更多存储设备的选项
 - 然后选择SPI Flash的设备名/dev/mtdblock0,然后点击Select
 - 然后点击Flash
 - 然后点击Yes, I’m sure
 - 然后输入开发板Linux系统的密码orangepi,就会开始烧录u-boot镜像到SPI Flash中
 - 烧录过程的显示如下所示:
 - 烧录完成后的显示如下所示:
 
- 烧录TF卡中的Linux系统到NVMe SSD中的方法(此方法相当于将TF卡中的系统克隆到NVMe SSD) - 首先点击Clone drive
 - 然后选择TF卡的设备名/dev/mmcblk1
 - 打开TF卡后的界面如下所示:
 - 然后点击Select target
 - 然后点击Show 2 hidden打开更多存储设备的选项
 - 然后点击Flash
 - 然后点击Yes, I’m sure
 - 然后输入开发板Linux系统的密码orangepi,就会开始烧录Linux镜像到SSD中
 - 然后需要扩容下NVMe SSD中rootfs分区的容量,步骤如下所示: - a) 首先打开GParted,如果系统没有预装Gparted,请使用apt命令安装下 - orangepi@orangepi:~$ sudo apt-get install -y gparted 
 - e) 选择NVMe SSD后的显示界面如下所所示:
 - f) 然后选择/dev/nvme0n1p2分区,再击点击右键,再选择Resize/Move
 
 - 此时就可以使用sudo poweroff命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的Linux系统了。
 
- 第 9 步是克隆TF卡中的系统到NMVe SSD中,我们还可以直接烧录Linux镜像文件到NVMe SSD中,这里大概说下步骤: 
烧录Android镜像到TF卡中的方法
通过USB2.0烧录口将Android 镜像烧录到TF卡中的方法
- 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10或以上,建议使用闪迪等品牌的TF卡 
- 还需要准备一根品质良好的USB2.0公对公数据线 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和烧录工具RKDevTool_Release_v3.15.zip - 在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中 
- 然后下载下面的所有文件 
 
然后从Orange Pi的资料下载页面下载Android的镜像。
然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上
然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可
打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示
然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可
打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备”
然后开始烧录Android镜像到TF卡中
- 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录接口的位置如下图所示 
- 然后确保开发板没有插入TF卡,没有连接电源 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
- 然后再插入TF卡到开发板 
- 然后请选择高级功能 
- 然后点击下图所示的位置 
- 再选择前面下载的MiniLoader文件夹中的rk3566_MiniLoaderAll.bin,再点击打开 
- 然后点击下载 
- 下载完rk3566_MiniLoaderAll.bin后的显示如下图所示 
- 然后选择存储设备为SD,再点击切换存储 
- 切换成功的显示如下图所示 
- 然后点击烧录工具的”升级固件”一栏 
- 接着点击”固件”按钮选择需要烧录的Android镜像的路径 
- 最后点击”升级”按钮就会开始烧录,烧录过程中的log如下图所示。烧录完成后Android系统会自动启动。 
使用SDDiskTool工具将Android镜像烧到TF卡的方法
- 首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10或以上,建议使用闪迪等品牌的TF卡 
- 然后使用读卡器把TF卡插入电脑 
- 然后从Orange Pi的资料下载页面下载SDDiskTool烧写工具,请确保SDDiskTool工具的版本为最新的v1.72 
- 然后从Orange Pi的资料下载页面下载Android11的镜像 
- 然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上 
- 然后使用解压软件解压SDDiskTool_v1.72.zip,此软件无需安装,在解压后的文件夹中找到SD_Firmware_Tool.exe打开即可 
- 打开SDDiskTool后,如果TF卡识别正常,会在”选择可移动磁盘设备”一栏中显示插入的磁盘设备,请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的,如果没有显示可以尝试拔插下TF卡 
- 确认完盘符后,可以先格式化下TF卡,点击SDDiskTool中的恢复磁盘按钮即可,也可使用前面提到的SD Card Formatter进行TF卡的格式化 
- 然后开始将Android镜像写入TF卡 
- 烧录完后即可退出SDDiskTool软件,然后就可以把TF卡从电脑中拔出来插到开发板中启动了 
烧录Android镜像到eMMC中的方法
| 注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPI Flash后再启动试下。清空SPI Flash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。 | 
通过USB2.0烧录口将Android 镜像烧录到eMMC中的方法
| 注意,下面所有的操作都是在Windows电脑中进行的。 | 
- 开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。 - eMMC模块和插入开发板的方法如下所示: 
- 还需要准备一根品质良好的USB2.0公对公数据线 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和烧录工具RKDevTool_Release_v3.15.zip 
- 然后从Orange Pi的资料下载页面下载Android的镜像。 
- 然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上 
- 然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可 
- 打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示 
- 然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可 
- 打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备” 
- 然后开始烧录Android镜像到eMMC中 - 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录接口的位置如下图所示 
- 然后确保开发板没有插入TF卡,没有连接电源 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
 - 然后请选择高级功能 
- 然后点击下图所示的位置 
- 再选择前面下载的MiniLoader文件夹中的rk3566_MiniLoaderAll.bin,再点击打开 
- 然后点击下载 
- 下载完MiniLoaderAll.bin后的显示如下图所示 
- 然后选择存储设备为EMMC,再点击切换存储 
- 切换成功的显示如下图所示 
 
通过TF卡将Android 11镜像烧录到eMMC中的方法
| 注意,下面所有的操作都是在Windows电脑中进行的。 | 
- 开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示: 
- 还需要准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为class10或以上,建议使用闪迪等品牌的TF卡 
- 然后使用读卡器把TF卡插入电脑 
- 然后从Orange Pi的资料下载页面下载SDDiskTool烧写工具,请确保SDDiskTool工具的版本为最新的v1.72 
- 然后从Orange Pi的资料下载页面下载Android的镜像 
- 然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上 
- 然后使用解压软件解压SDDiskTool_v1.72.zip,此软件无需安装,在解压后的文件夹中找到SD_Firmware_Tool.exe打开即可 
- 打开SDDiskTool后,如果TF卡识别正常,会在”选择可移动磁盘设备”一栏中显示插入的磁盘设备,请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的,如果没有显示可以尝试拔插下TF卡 
- 确认完盘符后,可以先格式化下TF卡,点击SDDiskTool中的恢复磁盘按钮即可,也可使用前面提到的SD Card Formatter进行TF卡的格式化 
- 然后开始将Android镜像写入TF卡 
- 烧录完成后的显示如下图所示,然后就可以退出SDDiskTool 
- 然后把TF卡从电脑中拔出来插到开发板中,开发板上电启动后就会自动开始将TF卡中的Android镜像烧录到开发板的eMMC中 
- 如果开发板连接了HDMI显示器,还可以从HDMI显示器中看到烧录Android镜像到eMMC中的进度条 
- 当HDMI显示器显示如下信息时,说明烧录Android镜像到eMMC中已完成,此时就可以拔出TF卡,然后eMMC中的安卓系统就会开始启动。 
烧录Android镜像到SPIFlash+NVMe SSD中的方法
| 注意,下面所有的操作都是在Windows电脑中进行的。 | 
- 首先需要准备一个NVMe SSD固态硬盘 
- 然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好 
- SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置 
- 还需要准备一根品质良好的USB2.0公对公数据线 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和烧录工具RKDevTool_Release_v3.15.zip 
- 然后下载Android11的镜像 
- 然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可 
- 打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示 
- 然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可 
- 打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备” 
- 然后开始烧录Android镜像到SPIFlash+NVMe SSD中 - 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示 
- 确保开发板没有插入TF卡,没有连接电源 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
- 然后点击烧录工具的”升级固件”一栏 
- 接着点击”固件”按钮选择需要烧录的Android镜像 
- 最后点击”升级”按钮就会开始烧录,烧录的过程如下图所示,可以看到,首先会烧录固件到SPIFlash中,然后烧录固件到PCIE中。烧录完成后Android系统会自动启动。 
 
使用RKDevTool清空SPIFlash的方法
- SPI Flash在开发板上的位置如下图所示 
- 首先需要准备一根品质良好的USB2.0公对公数据线 
- 然后从Orange Pi的资料下载页面下载瑞芯微驱动DriverAssitant_v5.12.zip和MiniLoader以及烧录工具RKDevTool_Release_v3.15.zip - 在Orange Pi的资料下载页面首先选择官方工具,然后进入下面的文件夹中 
- 然后下载下面的所有文件 - 注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。 
 
- 然后用解压软件解压DriverAssitant_v5.12.zip,再在解压后的文件夹中找到DriverInstall.exe可执行文件并打开即可 
- 打开DriverInstall.exe后安装瑞芯微驱动的步骤如下所示 
- 然后解压RKDevTool_Release_v3.15.zip,此软件无需安装,在解压后的文件夹中找到 RKDevTool打开即可 
- 打开RKDevTool 烧录工具后,因为电脑此时还没有通过USB2.0公对公数据线连接上开发板,所以左下角会提示”没有发现设备” 
- 然后就可以开始清空SPI FLASH中的内容 - 首先通过USB2.0公对公数据线连接好开发板与Windows电脑,开发板USB2.0烧录口的位置如下图所示 
- 确保开发板没有插入TF卡,没有连接电源 
- 然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示: 
- 然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了 
- 如果前面的步骤顺利,此时开发板会进入MASKROM模式,在烧录工具的界面上会提示”发现一个MASKROM设备” 
- 然后请选择高级功能 
- 然后点击下图所示的位置 
- 再选择前面下载的MiniLoader文件夹中的rk3566_MiniLoaderAll.bin,再点击打开 
- 然后点击下载 
- 下载完rk3566_MiniLoaderAll.bin后的显示如下图所示 
- 然后选择存储设备为SPINOR 
- 然后点击切换存储 
- 然后点击擦除所有就会开始擦除SPIFlash了 
- 擦除SPIFlash后的显示log如下图所示 
 
启动香橙派开发板
- 将烧录好镜像的TF卡插入香橙派开发板的TF卡插槽中。如果SPIFlash+NVMe SSD已经烧录好镜像了,那么就不需要插入TF卡了,只需确保NVMe SSD正常插入到开发板中即可。
- 开发板有HDMI接口,可以通过HDMI转HDMI连接线把开发板连接到电视或者HDMI显示器。如果有购买LCD屏幕,也可以使用LCD屏幕来显示开发板的系统界面。
- 接上USB鼠标和键盘,用于控制香橙派开发板。
- 开发板有以太网口,可以插入网线用来上网。
- 连接一个5V/3A的USB Type-C接口的高品质的电源适配。
- 切记不要插入电压输出大于5V的电源适配器,会烧坏开发板。 - 系统上电启动过程中很多不稳定的现象基本都是供电有问题导致的,所以一个靠谱的电源适配器很重要。如果启动过程中发现有不断重启的现象,请更换下电源或者Type-C数据线再试下。 - Type-C电源接口是不支持PD协商的。 - 另外请不要接到电脑的USB接口来给开发板供电。 
 
- 然后打开电源适配器的开关,如果一切正常,此时HDMI显示器或者LCD屏幕就能看到系统的启动画面了。 
- 如果想通过调试串口查看系统的输出信息,请使用串口线将开发板连接到电脑,串口的连接方法请参看调试串口的使用方法一节。 
调试串口的使用方法
调试串口的连接说明
- 首先需要准备一个3.3V的USB转TTL模块,然后将USB转TTL模块的USB接口一端插入到电脑的USB接口中。
- 为了更好的兼容性,推荐使用CH340 USB转TTL模块,请不要使用CP2102、PL2303类型的USB转TTL模块。 - 购买USB转TTL模块前,请确认模块支持1500000速率的波特率。 
 
- 开发板的调试串口GND、RXD和TXD引脚的对应关系如下图所示 
- USB转TTL模块GND、TXD和RXD引脚需要通过杜邦线连接到开发板的调试串口上 - USB转TTL模块的GND接到开发板的GND上 
- USB转TTL模块的RX接到开发板的TX上 
- USB转TTL模块的TX接到开发板的RX上 
 
- USB转TTL模块连接电脑和Orange Pi开发板的示意图如下所示 - 串口的TX和RX是需要交叉连接的,如果不想仔细区分TX和RX的顺序,可以把串口的TX和RX先随便接上,如果测试没有输出再交换下TX和RX的顺序,这样就总有一种顺序是对的 
Ubuntu平台调试串口的使用方法
| Linux下可以使用的串口调试软件有很多,如putty、minicom等,下面演示putty的使用方法。 | 
- 首先将USB转TTL模块插入Ubuntu电脑的USB接口,如果USB转TTL模块连接识别正常,在Ubuntu PC的/dev下就可以看到对应的设备节点名,记住这个节点名,后面设置串口软件时会用到 - test@test:~$ ls /dev/ttyUSB* - /dev/ttyUSB0 
- 然后使用下面的命令在Ubuntu PC上安装下putty - test@test:~$ sudo apt-get update - test@test:~$ sudo apt-get install -y putty 
- 然后运行putty,记得加sudo权限 - test@test:~$ sudo putty 
- 执行putty命令后会弹出下面的界面 
- 首先选择串口的设置界面 
- 然后设置串口的参数 
- 在串口的设置界面设置完后,再回到Session界面 
- 启动开发板后,就能从打开的串口终端中看到系统输出的Log信息了 
Windows平台调试串口的使用方法
| Windows下可以使用的串口调试软件有很多,如SecureCRT、MobaXterm等,下面演示MobaXterm的使用方法,这款软件有免费版本,无需购买序列号即可使用。 | 
- 下载MobaXterm - 下载MobaXterm网址如下 
- 进入MobaXterm下载网页后点击GET XOBATERM NOW! 
- 然后选择下载Home版本 
- 然后选择Portable便携式版本,下载完后无需安装,直接打开就可以使用 
 
- 下载完后使用解压缩软件解压下载的压缩包,即可得到MobaXterm的可执软件,然后双击打开 
- 打开软件后,设置串口连接的步骤如下 - 打开会话的设置界面 
- 选择串口类型 
- 选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用360驱动大师扫描安装USB转TTL串口芯片的驱动 
- 选择串口的波特率为1500000 
- 最后点击”OK”按钮完成设置 
 
使用开发板40pin接口中的5v引脚供电说明
| 我们推荐的开发板的供电方式是使用5V/3A的Type C接口的电源线插到开发板的Type-C电源接口来供电的。如果需要使用40pin接口中的5V引脚来给开发板供电,请确保使用的电源线和电源适配器能满足开发板的供电需求。如果有使用不稳定的情况,请换回Type-C电源供电。 | 
- 首先需要准备一根下图所示的电源线 - 上图所示的电源线在淘宝可以买到,请自行搜索购买。 
- 使用40pin接口中的5V引脚来给开发板供电,电源线的接法如下所示 
Ubuntu/Debian Server和Xfce桌面系统使用说明
| 本章内容是基于Linux服务器版本的镜像和xfce桌面版本镜像编写的。 | 
已支持的Linux镜像类型和内核版本
| Linux镜像类型 | 内核版本 | 服务器版 | 桌面版 | 
| Debian 11 - Bullseye | Linux5.10 | 支持 | 支持 | 
| Ubuntu 20.04 - Focal | Linux5.10 | 支持 | 支持 | 
| Ubuntu 22.04 - Jammy | Linux5.10 | 支持 | 支持 | 
| Debian12 - Bookworm | Linux5.10 | 支持 | 支持 | 
Linux系统适配情况
| 功能 | Debian11 | Debian12 | Ubuntu20.04 | Ubuntu22.04 | 
| USB2.0x3 | OK | OK | OK | OK | 
| USB3.0x1 | OK | OK | OK | OK | 
| M.2 NVMe SSD启动 | OK | OK | OK | OK | 
| WIFI | OK | OK | OK | OK | 
| 蓝牙 | OK | OK | OK | OK | 
| GPIO(40pin) | OK | OK | OK | OK | 
| UART(40pin) | OK | OK | OK | OK | 
| SPI(40pin) | OK | OK | OK | OK | 
| I2C(40pin) | OK | OK | OK | OK | 
| PWM(40pin) | OK | OK | OK | OK | 
| PWM风扇接口 | OK | OK | OK | OK | 
| 3pin调试串口 | OK | OK | OK | OK | 
| EMMC | OK | OK | OK | OK | 
| TF卡启动 | OK | OK | OK | OK | 
| HDMI 视频 | OK | OK | OK | OK | 
| HDMI 音频 | OK | OK | OK | OK | 
| Camera | NO | NO | NO | NO | 
| LCD | OK | OK | OK | OK | 
| eDP显示 | OK | OK | OK | OK | 
| 千兆网口 | OK | OK | OK | OK | 
| 网口状态灯 | OK | OK | OK | OK | 
| 耳机播放 | OK | OK | OK | OK | 
| 耳机录音 | OK | OK | OK | OK | 
| LED灯 | OK | OK | OK | OK | 
| RTC | OK | OK | OK | OK | 
| GPU | OK | OK | OK | OK | 
| NPU | OK | OK | OK | OK | 
| VPU | OK | OK | OK | OK | 
| 看门狗测试 | OK | OK | OK | OK | 
| Chromium硬解视频 | OK | OK | OK | OK | 
本手册Linux命令格式说明
- 本手册中所有需要在Linux系统中输入的命令都会使用下面的方框框起来 - 如下所示,黄色方框里内容表示需要特别注意的内容,这里面的命令除外。 
- 命令前面的提示符类型说明 - 命令前面提示符指的是下面方框内红色部分的内容,这部分内容不是Linux命令的一部分,所以在Linux系统中输入命令时,请不要把红色字体部分的内容也输入进去。 - orangepi@orangepi:~$ sudo apt update - root@orangepi:~# vim /boot/boot.cmd - test@test:~$ ssh root@192.168.1.xxx - root@test:~# ls 
- root@orangepi:~$ 提示符表示这个命令是在开发板的Linux系统中输入的, 提示符最后的 $ 表示系统当前用户为普通用户,当执行特权命令时,需要加上sudo 
- root@orangepi:~# 提示符表示这个命令是在开发板的Linux系统中输入的, 提示符最后的 # 表示系统当前用户为root用户,可以执行任何想要执行的命令 
- test@test:~$ 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的Linux系统中。提示符最后的 $ 表示系统当前用户为普通用户,当执行特权命令时,需要加上sudo 
- root@test:~# 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的Linux系统中。提示符最后的 # 表示系统当前用户为root用户,可以执行任何想要执行的命令 
 
- 哪些是需要输入的命令? - 如下所示,黑色加粗部分是需要输入的命令,命令下面的是输出的内容(有些命令有输出,有些可能没有输出),这部分内容是不需要输入的 - root@orangepi:~# cat /boot/orangepiEnv.txt - verbosity=7 - bootlogo=false - console=serial 
- 如下所示,有些命令一行写不下会放到下一行,只要黑色加粗的部分就都是需要输入的命令。当这些命令输入到一行的时候,每行最后的”\”是需要去掉的,这个不是命令的一部分。另外命令的不同部分都是有空格的,请别漏了 - orangepi@orangepi:~$ echo \ - "deb [arch=$(dpkg --print-architecture) \ - signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ - https://download.docker.com/linux/debian \ - $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 
 
Linux系统登录说明
Linux系统默认登录账号和密码
| 账号 | 密码 | 
| root | orangepi | 
| orangepi | orangepi | 
| 注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。 当输入密码提示错误,或者ssh连接有问题,请注意,只要使用的是Orange Pi提供的Linux镜像,就请不要怀疑上面的密码不对,而是要找其它的原因。 | 
设置Linux系统终端自动登录的方法
- Linux系统默认就是自动登录终端的,默认登录的用户名是orangepi 
- 使用下面的命令可以设置root用户自动登录终端 - orangepi@orangepi:~$ sudo auto_login_cli.sh root 
- 使用下面的命令可以禁止自动登录终端 - orangepi@orangepi:~$ sudo auto_login_cli.sh -d 
- 使用下面的命令可以再次设置orangepi用户自动登录终端 - orangepi@orangepi:~$ sudo auto_login_cli.sh orangepi 
Linux桌面版系统自动登录说明
- 桌面版系统启动后会自动登录进入桌面,无需输入密码 
- 运行下面的命令可以禁止桌面版系统自动登录桌面 - orangepi@orangepi:~$ sudo disable_desktop_autologin.sh 
- 然后重启系统就会出现登录对话框,此时需要输入密码才能进入系统 
Linux桌面版系统root用户自动登录的设置方法
- 执行下面的命令可以设置桌面版系统使用root用户自动登录 - orangepi@orangepi:~$ sudo desktop_login.sh root 
- 然后重启系统,就会自动使用root用户登录桌面了 - 注意,如果使用root用户登录桌面系统,是无法使用右上角的pulseaudio来管理音频设备的。 - 另外请注意这并不是一个bug,因为pulseaudio本来就不允许在root用户下运行。 
- 执行下面的命令可以再次设置桌面版系统使用orangepi用户自动登录 - orangepi@orangepi:~$ sudo desktop_login.sh orangepi 
Linux桌面版系统禁用桌面的方法
- 首先在命令行中输入下面的命令,请记得加sudo权限 - orangepi@orangepi:~$ sudo systemctl disable lightdm.service 
- 然后重启Linux系统就会发现不会显示桌面了 - orangepi@orangepi:~$ sudo reboot 
- 重新打开桌面的步骤如下所示: - 首先在命令行中输入下面的命令,请记得加sudo权限 - orangepi@orangepi:~$ sudo systemctl start lightdm.service 
- 命令执行完成后就会显示桌面了 
 
板载LED灯测试说明
- 开发板上有三个LED灯,一个绿灯,一个红灯,一个PCIe指示灯,所在位置如下图所示: 
- 只要开发板打开了电源,红色的LED灯就会常亮,这是由硬件控制的,软件无法关闭。 
- 绿色的LED灯在内核启动后会一直闪烁,这是由软件控制的。 
- PCIe指示灯在PCIe接口有数据传输时会闪烁。 
- 设置绿灯亮灭和闪烁的方法如下所示 - 注意,下面的操作请在root用户下进行。 - 首先进入绿灯的设置目录 - root@orangepi:~# cd /sys/class/leds/status_led 
- 设置绿灯停止闪烁的命令如下 - root@orangepi:/sys/class/leds/status_led# echo none > trigger 
- 设置绿灯常亮的命令如下 - root@orangepi:/sys/class/leds/status_led# echo default-on > trigger 
- 设置绿灯闪烁的命令如下 - root@orangepi:/sys/class/leds/status_led# echo heartbeat > trigger 
 
网络连接测试
以太网口测试
- 首先将网线的一端插入开发板的以太网接口,网线的另一端接入路由器,并确保网络是畅通的 
- 系统启动后会通过DHCP自动给以太网卡分配IP地址,不需要其他任何配置 
- 在开发板的Linux系统中查看IP地址的命令如下所示 - orangepi@orangepi:~$ ip addr show eth0 - 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 - link/ether 4a:fe:2b:3d:17:1c brd ff:ff:ff:ff:ff:ff 
- inet 192.168.1.150/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0 - valid_lft 43150sec preferred_lft 43150sec 
 
- inet6 fe80::9a04:3703:faed:23be/64 scope link noprefixroute - valid_lft forever preferred_lft forever 
 
 - 当使用ifconfig查看IP地址时,如果提示下面的信息,是因为没有加sudo导致的,正确的命令是:sudo ifconfig 
 - orangepi@orangepi:~$ ifconfig - Command 'ifconfig' is available in the following places - * /sbin/ifconfig - * /usr/sbin/ifconfig - The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable. - This is most likely caused by the lack of administrative privileges associated with your user account. - ifconfig: command not found - 开发板启动后查看IP地址有三种方法: - 1. 接HDMI显示器,然后登录系统使用ip addr show eth0命令查看IP地址 - 2. 在调试串口终端输入ip addr show eth0命令来查看IP地址 - 3. 如果没有调试串口,也没有HDMI显示器,还可以通过路由器的管理界面来查看开发板网口的IP地址。不过这种方法经常有人会无法正常看到开发板的IP地址。如果看不到,调试方法如下所示: - 首先检查Linux系统是否已经正常启动,如果开发板的绿灯在闪烁了,一般是正常启动了,如果只亮红灯,说明系统都没正常启动; 
- 检查网线有没有插紧,或者换根网线试下; 
- 换个路由器试下(路由器的问题有遇到过很多,比如路由器无法正常分配IP地址,或者已正常分配IP地址但在路由器中看不到); 
- 如果没有路由器可换就只能连接HDMI显示器或者使用调试串口来查看IP地址。 
 - 另外需要注意的是开发板DHCP自动分配IP地址是不需要任何设置的。 
- 测试网络连通性的命令如下,ping命令可以通过Ctrl+C快捷键来中断运行 - orangepi@orangepi:~$ ping www.baidu.com -I eth0 - PING www.a.shifen.com (14.215.177.38) from 192.168.1.12 eth0: 56(84) bytes of data. - 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=6.74 ms - 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=6.80 ms - 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=6.26 ms - 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.27 ms - ^C - --- www.a.shifen.com ping statistics --- - 4 packets transmitted, 4 received, 0% packet loss, time 3002ms - rtt min/avg/max/mdev = 6.260/6.770/7.275/0.373 ms 
WIFI连接测试
| 请不要通过修改/etc/network/interfaces配置文件的方式来连接WIFI,通过这种方式连接WIFI网络使用会有问题。 | 
服务器版镜像通过命令连接WIFI
| 当开发板没有连接以太网,没有连接HDMI显示器,只连接了串口时,推荐使用此小节演示的命令来连接WIFI网络。因为nmtui在某些串口软件(如minicom)中只能显示字符,无法正常显示图形界面。当然,如果开发板连接了以太网或者HDMI显示屏,也可以使用此小节演示的命令来连接WIFI网络的。 | 
- 先登录Linux系统,有下面三种方式 - 如果开发板连接了网线,可以通过ssh远程登录Linux系统
 - 如果开发板连接好了调试串口,可以使用串口终端登录Linux系统 
- 如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到Linux系统 
 
- 首先使用nmcli dev wifi命令扫描周围的WIFI热点 - orangepi@orangepi:~$ nmcli dev wifi 
- 然后使用nmcli 命令连接扫描到的WIFI热点,其中: - wifi_name需要换成想连接的WIFI热点的名字 
- wifi_passwd需要换成想连接的WIFI热点的密码 - orangepi@orangepi:~$ nmcli dev wifi connect wifi_name password wifi_passwd - Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'. 
 
- 通过ip addr show wlan0命令可以查看wifi的IP地址 - orangepi@orangepi:~$ ip addr show wlan0 - 11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 - link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff 
- inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0 - valid_lft 259192sec preferred_lft 259192sec 
 
- inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute - valid_lft 259192sec preferred_lft 172792sec 
 
- inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute - valid_lft forever preferred_lft forever 
 
 
- 使用ping命令可以测试wifi网络的连通性,ping命令可以通过Ctrl+C快捷键来中断运行 - orangepi@orangepi:~$ ping www.orangepi.org -I wlan0 (-I是大写的I不是小写的L) - PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data. - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms - ^C - --- www.orangepi.org ping statistics --- - 5 packets transmitted, 5 received, 0% packet loss, time 4006ms - rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms 
服务器版镜像通过图形化方式连接WIFI
- 先登录Linux系统,有下面三种方式 - 如果开发板连接了网线,可以通过ssh远程登录Linux系统 
- 如果开发板连接好了调试串口,可以使用串口终端登录Linux系统(串口软件请使用MobaXterm,使用minicom无法显示图形界面) 
- 如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到Linux系统 
 
- 然后在命令行中输入nmtui命令打开wifi连接的界面 - orangepi@orangepi:~$ nmtui 
- 输入nmtui命令打开的界面如下所示 
- 选择Activate a connect后回车 
- 然后就能看到所有搜索到的WIFI热点 
- 选择想要连接的WIFI热点后再使用Tab键将光标定位到Activate后回车 
- 然后会弹出输入密码的对话框,在Password内输入对应的密码然后回车就会开始连接WIFI 
- WIFI连接成功后会在已连接的WIFI名称前显示一个”*” 
- 通过ip addr show wlan0命令可以查看wifi的IP地址 - orangepi@orangepi:~$ ip addr show wlan0 - 11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 - link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff 
- inet 192.168.1.11/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0 - valid_lft 259069sec preferred_lft 259069sec 
 
- inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute - valid_lft 259071sec preferred_lft 172671sec 
 
- inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute - valid_lft forever preferred_lft forever 
 
 
- 使用ping命令可以测试wifi网络的连通性,ping命令可以通过Ctrl+C快捷键来中断运行 - orangepi@orangepi:~$ ping www.orangepi.org -I wlan0 (-I是大写的I不是小写的L) - PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data. - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms - 64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms - ^C - --- www.orangepi.org ping statistics --- - 5 packets transmitted, 5 received, 0% packet loss, time 4006ms - rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms 
桌面版镜像的测试方法
- 点击桌面右上角的网络配置图标(测试WIFI时请不要连接网线) 
- 在弹出的下拉框中点击More networks可以看到所有扫描到的WIFI热点,然后选择想要连接的WIFI热点 
- 然后输入WIFI热点的密码,再点击Connect就会开始连接WIFI 
- 连接好WIFI后,可以打开浏览器查看是否能上网,浏览器的入口如下图所示 
- 打开浏览器后如果能打开其他网页说明WIFI连接正常 
设置静态IP地址的方法
| 请不要通过修改/etc/network/interfaces配置文件的方式来设置静态IP地址。 | 
使用nmtui命令来设置静态IP地址
- 首先运行nmtui命令 - orangepi@orangepi:~$ nmtui 
- 然后选择Edit a connection并按下回车键 
- 然后选择需要设置静态IP地址的网络接口,比如设置Ethernet接口的静态IP地址选择Wired connection 1就可以了 
- 然后通过Tab键选择Edit并按下回车键 
- 然后通过Tab键将光标移动到下图所示的<Automatic>位置进行IPv4的配置 
- 然后回车,通过上下方向键选择Manual,然后回车确定 
- 选择完后的显示如下图所示 
- 然后通过Tab键将光标移动到<Show> 
- 然后回车,回车后会弹出下面的设置界面 
- 然后就可以在下图所示的位置设置IP地址(Addresses)、网关(Gateway)和DNS服务器的地址(里面还有很多其他设置选项,请自行探索),请根据自己的具体需求来设置,下图中设置的值只是一个示例 
- 设置完后将光标移动到右下角的<OK>,然后回车确认 
- 然后点击<Back>回退到上一级选择界面 
- 然后选择Activate a connection,再将光标移动到<OK>,最后点击回车 
- 然后选择需要设置的网络接口,比如Wired connection 1,然后将光标移动到<Deactivate>,再按下回车键禁用Wired connection 1 
- 然后请不要移动光标,再按下回车键重新使能Wired connection 1,这样前面设置的静态IP地址就会生效了 
- 然后通过<Back>和Quit按钮就可以退出nmtui 
- 然后通过ip addr show eth0就能看到网口的IP地址已经变成前面设置的静态IP地址了 - orangepi@orangepi:~$ ip addr show eth0 - 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 - link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff 
- inet 192.168.1.177/24 brd 192.168.1.255 scope global noprefixroute eth0 - valid_lft forever preferred_lft forever 
 
- inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute - valid_lft 259149sec preferred_lft 172749sec 
 
- inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute - valid_lft forever preferred_lft forever 
 
 
- 然后就可以测试网络的连通性来检查IP地址是否配置OK了,ping命令可以通过Ctrl+C快捷键来中断运行 - orangepi@orangepi:~$ ping 192.168.1.47 -I eth0 - PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 eth0: 56(84) bytes of data. - 64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms - 64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms - 64 bytes from 192.168.1.47: icmp_seq=3 ttl=64 time=0.273 ms - 64 bytes from 192.168.1.47: icmp_seq=4 ttl=64 time=0.269 ms - 64 bytes from 192.168.1.47: icmp_seq=5 ttl=64 time=0.275 ms - ^C - --- 192.168.1.47 ping statistics --- - 5 packets transmitted, 5 received, 0% packet loss, time 4042ms - rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms 
使用nmcli命令来设置静态IP地址
- 如果要设置网口的静态IP地址,请先将网线插入开发板,如果需要设置WIFI的静态IP地址,请先连接好WIFI,然后再开始设置静态IP地址 
- 然后通过nmcli con show命令可以查看网络设备的名字,如下所示 - orangepi为WIFI网络接口的名字(名字不一定相同) 
- Wired connection 1为以太网接口的名字 - orangepi@orangepi:~$ nmcli con show 
 NAMEUUID TYPE DEVICE
 orangepicfc4f922-ae48-46f1-84e1-2f19e9ec5e2awifi wlan0
 Wired connection 19db058b7-7701-37b8-9411-efc2ae8bfa30ethernet eth0
 
 
- 然后输入下面的命令,其中 - "Wired connection 1" 表示设置以太网口的静态IP地址,如果需要设置WIFI的静态IP地址,请修改为WIFI网络接口对应的名字(通过nmcli con show命令可以获取到) 
- ipv4.addresses后面是要设置的静态IP地址,可以修改为自己想要设置的值 
- ipv4.gateway 表示网关的地址 - orangepi@orangepi:~$ nmcli con mod "Wired connection 1" \ - ipv4.addresses "192.168.1.110" \ - ipv4.gateway "192.168.1.1" \ - ipv4.dns "8.8.8.8" \ - ipv4.method "manual" 
 
- 然后重启Linux系统 - orangepi@orangepi:~$ sudo reboot 
- 然后重新进入Linux系统使用ip addr show eth0命令就可以看到IP地址已经设置为想要的值了 - orangepi@orangepi:~$ ip addr show eth0 - 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 - link/ether 5e:ae:14:a5:91:b3 brd ff:ff:ff:ff:ff:ff 
- inet 192.168.1.110/32 brd 192.168.1.110 scope global noprefixroute eth0 - valid_lft forever preferred_lft forever 
 
- inet6 240e:3b7:3240:c3a0:97de:1d01:b290:fe3a/64 scope global dynamic noprefixroute - valid_lft 259183sec preferred_lft 172783sec 
 
- inet6 fe80::3312:861a:a589:d3c/64 scope link noprefixroute - valid_lft forever preferred_lft forever 
 
 
SSH远程登录开发板
| Linux系统默认都开启了ssh远程登录,并且允许root用户登录系统。ssh登录前首先需要确保以太网或者wifi网络已连接,然后使用ip addr命令或者通过查看路由器的方式获取开发板的IP地址。 | 
Ubuntu下SSH远程登录开发板
- 获取开发板的IP地址
- 然后就可以通过ssh命令远程登录Linux系统
- test@test:~$ ssh root@192.168.1.xxx (需要替换为开发板的IP地址) - root@192.168.1.xx's password: (在这里输入密码,默认密码为orangepi) 
 
- 注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。 - 如果提示拒绝连接,只要使用的是Orange Pi提供的镜像,就请不要怀疑orangepi这个密码是不是不对,而是要找其他原因。 
 
- 成功登录系统后的显示如下图所示 - 如果ssh无法正常登陆Linux系统,首先请检查下开发板的IP地址是否能ping通,如果ping通没问题的话,可以通过串口或者HDMI显示器登录Linux系统然后在开发板上输入下面的命令后再尝试是否能连接: 
 root@orangepi:~# reset_ssh.sh
 如果还不行,请重烧系统试下。
Windows下SSH远程登录开发板
- 首先获取开发板的IP地址 
- 在windows下可以使用MobaXterm远程登录开发板,首先新建一个ssh会话 
- 然后会提示输入密码,默认root和orangepi用户的密码都为orangepi - 注意,输入密码的时候,屏幕上是不会显示输入的密码的具体内容的,请不要以为是有什么故障,输入完后直接回车即可。 
上传文件到开发板Linux系统中的方法
在Ubuntu PC中上传文件到开发板Linux系统中的方法
使用scp命令上传文件的方法
- 使用scp命令可以在Ubuntu PC中上传文件到开发板的Linux系统中,具体命令如下所示 - file_path:需要替换为要上传文件的路径 
- orangepi:为开发板Linux系统的用户名,也可以替换成其它的,比如root 
- 192.168.xx.xx: 为开发板的IP地址,请根据实际情况进行修改 
- /home/orangepi: 开发板Linux系统中的路径,也可以修改为其它的路径 - test@test:~$ scp file_path orangepi@192.168.xx.xx:/home/orangepi/ 
 
- 如果要上传文件夹,需要加上-r参数 - test@test:~$ scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/ 
- scp还有更多的用法,请使用下面的命令查看man手册 
| test@test:~$ man scp | 
使用filezilla上传文件的方法
- 首先在Ubuntu PC中安装filezilla - test@test:~$ sudo apt install -y filezilla 
- 然后使用下面的命令打开filezilla - test@test:~$ filezilla 
- filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的 
- 连接开发板的方法如下图所示 
- 连接成功后在filezilla软件的右边就可以看到开发板Linux文件系统的目录结构了
- 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Ubuntu PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了。
- 上传完成后就可以去开发板Linux系统中的对应路径中查看上传的文件了 
- 上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了 
在Windows PC中上传文件到开发板Linux系统中的方法
使用filezilla上传文件的方法
- 首先下载filezilla软件Windows版本的安装文件,下载链接如下所示
- 下载的安装包如下所示,然后双击直接安装即可 - FileZilla_Server_1.5.1_win64-setup.exe - 安装过程中,下面的安装界面请选择Decline,然后再选择Next> 
- filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的
- 连接开发板的方法如下图所示:
- 然后选择保存密码,再点击确定
- 然后选择总是信任该主机,再点击确定
- 连接成功后在filezilla软件的右边就可以看到开发板Linux文件系统的目录结构了
- 然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Windows PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了
- 上传完成后就可以去开发板Linux系统中的对应路径中查看上传的文件了 
- 上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了 
HDMI测试
HDMI显示测试
- 使用HDMI转HDMI线连接Orange Pi开发板和HDMI显示器 
- 启动Linux系统后如果HDMI显示器有图像输出说明HDMI接口使用正常 
| 注意,很多笔记本电脑虽然带有HDMI接口,但是笔记本的HDMI接口一般只有输出功能,并没有HDMI in的功能,也就是说并不能将其他设备的HDMI输出显示到笔记本的屏幕上。 当想把开发板的HDMI接到笔记本电脑HDMI接口时,请先确认清楚您的笔记本是支持HDMI in的功能。 | 
| 当HDMI没有显示的时候,请先检查下HDMI线有没有插紧,确认接线没问题后,可以换一个不同的屏幕试下有没有显示。 | 
HDMI转VGA显示测试
- 首先需要准备下面的配件 
- HDMI转VGA显示测试如下所示 - 使用HDMI转VGA显示时,开发板以及开发板的Linux系统是不需要做任何设置的,只需要开发板HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。 
HDMI分辨率设置方法
- 首先在Settings中打开Display 
- 然后就能看到系统当前的分辨率 
- 点击Resolution(分辨率)的下拉框,就可以看到显示器当前支持的所有分辨率 
- 然后选择想要设置的分辨率,再点击Apply 
- 等新的分辨率设置完后再选择Keep the configuration即可 
蓝牙使用方法
桌面版镜像的测试方法
- 点击桌面右上角的蓝牙图标 
- 然后选择适配器 
- 如果有提示下面的界面,请选择Yes 
- 然后在蓝牙的适配器设置界面中设置Visibility Setting为Always visible,然后关闭即可 
- 然后打开蓝牙设备的配置界面 
- 点击Search即可开始扫描周围的蓝牙设备 
- 然后选择想要连接的蓝牙设备,再点击鼠标右键就会弹出对此蓝牙设备的操作界面,选择Pair即可开始配对,这里演示的是和Android手机配对 
- 配对时,桌面的右上角会弹出配对确认框,选择Confirm确认即可,此时手机上也同样需要进行确认 
- 和手机配对完后,可以选择已配对的蓝牙设备,然后右键选择Send a File即可开始给手机发送一张图片 
- 发送图片的界面如下所示 
USB接口测试
| USB接口是可以接USB hub来扩展USB接口的数量的。 | 
连接USB鼠标或键盘测试
- 将USB接口的键盘插入Orange Pi开发板的USB接口中
- 连接Orange Pi开发板到HDMI显示器
- 如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用)
连接USB存储设备测试
- 首先将U盘或者USB移动硬盘插入Orange Pi开发板的USB接口中
- 执行下面的命令如果能看到sdX的输出说明U盘识别成功
- orangepi@orangepi:~$ cat /proc/partitions | grep "sd*" 
 major minor #blocksname
 8030044160 sda
 8130043119 sda1
 
 
- 使用mount命令可以将U盘挂载到/mnt中,然后就能查看U盘中的文件了
| orangepi@orangepi:~$ sudo mount /dev/sda1 /mnt/ orangepi@orangepi:~$ ls /mnt/ test.txt | 
- 挂载完后通过df -h命令就能查看U盘的容量使用情况和挂载点
| orangepi@orangepi:~$ df -h | grep "sd" /dev/sda1 29G 208K 29G 1% /mnt | 
USB无线网卡测试
目前测试过的能用的USB无线网卡如下所示,其他型号的USB无线网卡请自行测试,如果无法使用就需要移植对应的USB无线网卡驱动
| 序号 | 型号 | |
| 1 | RTL8723BU 支持2.4G WIFI+BT4.0 |   | 
| 2 | RTL8811 支持2.4G +5G WIFI |   | 
| 3 | RTL8821CU 支持2.4G +5G WIFI 支持BT 4.2 | 
RTL8723BU测试
- 首先将RTL8723BU无线网卡模块插入开发板的USB接口中 
- 然后Linux系统会自动加载RTL8723BU蓝牙和WIFI相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载 - orangepi@orangepi:~$ lsmod - Module Size Used by 
 rfcomm 5734416
 rtl8xxxu 1064960
 rtk_btusb 614400
 
- 通过dmesg命令可以看到RTL8723BU模块的加载信息 - orangepi@orangepi:~$ dmesg - ...... - [ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform - [ 83.588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.00 - [ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 - [ 83.588422] usb 2-1: Product: 802.11n WLAN Adapter - [ 83.588443] usb 2-1: Manufacturer: Realtek - [ 83.588460] usb 2-1: SerialNumber: 00e04c000001 - [ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723 - [ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1 - [ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin - [ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_config.bin - [ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564 - [ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432 - [ 83.658651] usbcore: registered new interface driver rtk_btusb - [ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested! - [ 83.667137] usb 2-1: Please report results to Jes.Sorensen@gmail.com - [ 83.890140] usb 2-1: Vendor: Realtek - [ 83.890153] usb 2-1: Product: 802.11n WLAN Adapter - [ 83.890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes): - ...... - [ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0 - [ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae - [ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin - [ 83.895289] usb 2-1: Firmware revision 35.0 (signature 0x5301) - [ 84.050893] Bluetooth: hci0: RTL: fw version 0x0e2f9f73 - [ 84.266905] Bluetooth: RFCOMM TTY layer initialized - [ 84.266949] Bluetooth: RFCOMM socket layer initialized - [ 84.266999] Bluetooth: RFCOMM ver 1.11 - [ 84.884270] usbcore: registered new interface driver rtl8xxxu - [ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0 
- 然后通过sudo ifconfig命令可以看到RTL8723BU WIFI的设备节点,WIFI的连接和测试方法请参看WIFI连接测试一节,这里不再赘述 - orangepi@orangepi:~$ sudo ifconfig wlx0013eff458ae - wlx0013eff458ae: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 - ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet) 
- RX packets 0 bytes 0 (0.0 B) 
- RX errors 0 dropped 0 overruns 0 frame 0 
- TX packets 0 bytes 0 (0.0 B) 
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
 
 
- 然后通过hciconfig命令可以看到USB的蓝牙设备 - orangepi@orangepi:~$ sudo apt update && sudo apt install bluez - orangepi@orangepi:~$ hciconfig - hci0: Type: Primary Bus: USB - BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16 
- DOWN 
- RX bytes:1252 acl:0 sco:0 events:125 errors:0 
- TX bytes:23307 acl:0 sco:0 commands:125 errors:0 
 
 
- 在桌面中也可以看到出现了蓝牙图标,此时蓝牙还未打开,所以会显示一个红色的x 
- 点击Turn Bluetooth On可以打开蓝牙 
- 打开蓝牙后的显示如下所示 
- 蓝牙的测试方法请参看蓝牙使用方法一节,这里不再赘述 
RTL8811测试
- 首先将RTL8811无线网卡模块插入开发板的USB接口中 
- 然后Linux系统会自动加载RTL8811 WIFI相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载 - orangepi@orangepi:~$ lsmod - Module Size Used by 
 8821cu 1839104 0
 
- 通过dmesg命令可以看到RTL8811模块的加载信息 - orangepi@orangepi:~$ dmesg - [ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform - [ 118.767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00 - [ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 - [ 118.767199] usb 2-1: Product: 802.11ac NIC - [ 118.767219] usb 2-1: Manufacturer: Realtek - [ 118.767235] usb 2-1: SerialNumber: 123456 - [ 119.500530] usbcore: registered new interface driver rtl8821cu - [ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0 
- 然后通过sudo ifconfig命令可以看到WIFI的设备节点,WIFI的连接和测试方法请参看WIFI连接测试一节,这里不再赘述 - orangepi@orangepi:~$ sudo ifconfig wlx1cbfced9d260 - wlx1cbfced9d260: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 - ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet) 
- RX packets 0 bytes 0 (0.0 B) 
- RX errors 0 dropped 0 overruns 0 frame 0 
- TX packets 0 bytes 0 (0.0 B) 
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
 
 
RTL8821CU测试
- 首先将rtl8821cu 无线网卡模块插入开发板的usb 接口中 
- 然后使用lsusb命令就可以看到rtl8821cu usb wifi模块的设备信息,请确保USB模块没有处于Driver CDROM Mode - orangepi@orangepi:~$ lsusb | grep "Realtek" - Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC - orangepi@orangepi:~$ lsusb | grep "Realtek" - Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode) 
 如果lsusb命令看到的USB WIFI模块处于Driver CDROM Mode,请重新拔插下USB WIFI模块。如果还不行,请手动执行下面的命令切换下模式:
 orangepi@orangepi:~$ sudo usb_modeswitch -KW -v 0bda -p 1a2b
- Linux系统会自动加载rtl8821cu蓝牙和wifi相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载 - orangepi@orangepi:~$ lsmod - Module Size Used by 
 8821cu 1839104 0
 rtk_btusb 614400
 
- 通过dmesg命令可以看到rtl8821cu模块的加载信息 - orangepi@orangepi:~$ dmesg - ...... - [ 57.083693] usb 2-1: new high-speed USB device number 2 using ehci-platform - [ 57.231888] usb 2-1: New USB device found, idVendor=0bda, idProduct=1a2b, bcdDevice= 2.00 - [ 57.231916] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 - [ 57.231937] usb 2-1: Product: DISK - [ 57.231956] usb 2-1: Manufacturer: Realtek - [ 57.242594] usb-storage 2-1:1.0: USB Mass Storage device detected - [ 57.245674] scsi host0: usb-storage 2-1:1.0 - [ 58.069172] usb 2-1: USB disconnect, device number 2 - [ 58.440025] usb 2-1: new high-speed USB device number 3 using ehci-platform - [ 58.587819] usb 2-1: New USB device found, idVendor=0bda, idProduct=c820, bcdDevice= 2.00 - [ 58.587827] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 - [ 58.587833] usb 2-1: Product: 802.11ac NIC - [ 58.587838] usb 2-1: Manufacturer: Realtek - [ 58.587844] usb 2-1: SerialNumber: 123456 - [ 58.610463] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432 - [ 58.610656] usbcore: registered new interface driver rtk_btusb - [ 58.634631] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821 - [ 58.636729] Bluetooth: hci0: RTL: rom_version status=0 version=1 - [ 58.636740] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin - [ 58.664190] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.bin - [ 58.664746] Bluetooth: hci0: RTL: cfg_sz 10, total sz 31990 - [ 59.122471] Bluetooth: hci0: RTL: fw version 0x829a7644 - [ 59.265513] usbcore: registered new interface driver rtl8821cu - [ 59.280119] rtl8821cu 2-1:1.2 wlx90de80521825: renamed from wlan0 
- 然后通过sudo ifconfig命令可以看到rtl8821cu wifi的设备节点,wifi的连接和测试方法请参看WIFI连接测试一节,这里不再赘述 - orangepi@orangepi:~$ sudo ifconfig wlx90de80521825 - wlx90de80521825: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 - ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet) 
- RX packets 0 bytes 0 (0.0 B) 
- RX errors 0 dropped 0 overruns 0 frame 0 
- TX packets 0 bytes 0 (0.0 B) 
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
 
 
- 然后通过hciconfig命令可以看到USB的蓝牙设备 - orangepi@orangepi:~$ sudo apt-get update && sudo apt-get install -y bluez - orangepi@orangepi:~$ hciconfig - hci0: Type: Primary Bus: USB - BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16 
- DOWN 
- RX bytes:1252 acl:0 sco:0 events:125 errors:0 
- TX bytes:23307 acl:0 sco:0 commands:125 errors:0 
 
 
- 在桌面中也可以看到出现了蓝牙图标,此时蓝牙还未打开,所以会显示一个红色的x 
- 点击Turn Bluetooth On可以打开蓝牙 
- 打开蓝牙后的显示如下所示 
- 蓝牙的测试方法请参看蓝牙使用方法一节,这里不再赘述 
USB摄像头测试
- 首先需要准备一个下图所示的或者类似的支持UVC协议的USB摄像头,然后将USB摄像头插入到Orange Pi开发板的USB接口中 
- 通过v4l2-ctl命令可以看到USB摄像头的设备节点信息为/dev/video0 - orangepi@orangepi:~$ v4l2-ctl --list-devices - Q8 HD Webcam: Q8 HD Webcam (usb-fc880000.usb-1): - /dev/video0 
- /dev/video1 
- /dev/media0 
 
 - 注意v4l2中的l是小写字母l,不是数字1。 
 - 另外video的序号不一定都是video0,请以实际看到的为准。 
- 在桌面系统中可以使用Cheese直接打开USB摄像头,Cheese打开方法如下图所示: - Cheese打开USB摄像头后的界面如下图所示: 
- 使用fswebcam测试USB摄像头的方法 - 安装fswebcam - orangepi@orangepi:~$ sudo apt update - orangepi@orangepi:~$ sudo apt-get install -y fswebcam 
- 安装完fswebcam后可以使用下面的命令来拍照 - a) -d 选项用于指定USB摄像头的设备节点 
- b) --no-banner用于去除照片的水印 
- c) -r 选项用于指定照片的分辨率 
- d) -S 选项用于设置跳过前面的帧数 
- e) ./image.jpg 用于设置生成的照片的名字和路径 - orangepi@orangepi:~$ sudo fswebcam -d /dev/video0 \ - --no-banner -r 1280x720 -S 5 ./image.jpg 
 
- 在服务器版的Linux系统中,拍完照后可以使用scp命令将拍好的图片传到Ubuntu PC上镜像观看 - orangepi@orangepi:~$ scp image.jpg test@192.168.1.55:/home/test (根据实际情况修改IP地址和路径) 
- 在桌面版的Linux系统中,可以通过HDMI显示器直接查看拍摄的图片 
 
音频测试
在桌面系统中测试音频方法
- 首先打开文件管理器 
- 然后找到下面这个文件(如果系统中没有这个音频文件,可以自己上传一个音频文件到系统中) 
- 然后选中audio.wav文件,右键选择使用vlc打开就可以开始播放 
- 切换HDMI播放和耳机播放等不同音频设备的方法 
使用命令播放音频的方法
耳机接口播放音频测试
- 首先将耳机插入开发板的耳机孔中 
- 然后可以通过aplay -l命令可以查看下Linux系统支持的声卡设备,从下面的输出可知,card 0为rk809的声卡设备,也就是耳机的声卡设备 - orangepi@orangepi:~$ aplay -l (-I是大写的I不是小写的L) - **** List of PLAYBACK Hardware Devices **** - card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0] - Subdevices: 0/1 
- Subdevice #0: subdevice #0 
 - card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0] - Subdevices: 0/1 
- Subdevice #0: subdevice #0 
- Subdevice #0: subdevice #0 
 
- 然后使用aplay命令播放下系统自带的音频文件,如果耳机能听到声音说明硬件能正常使用 - orangepi@orangepi:~$ aplay -D hw:0,0 /usr/share/sounds/alsa/audio.wav - Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo 
HDMI音频播放测试
- 首先使用HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频) 
- 然后查看下HDMI的声卡序号,从下面的输出可以知道HDMI的声卡为card 1 - orangepi@orangepi:~$ aplay -l - **** List of PLAYBACK Hardware Devices **** - card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0] - Subdevices: 0/1 
- Subdevice #0: subdevice #0 
 - card 1: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0] - Subdevices: 0/1 
- Subdevice #0: subdevice #0 
- Subdevice #0: subdevice #0 
 
- 然后使用aplay命令播放下系统自带的音频文件,如果HDMI显示器或者电视能听到声音说明硬件能正常使用 - orangepi@orangepi:~$ aplay -D hw:1,0 /usr/share/sounds/alsa/audio.wav 
使用命令测试录音的方法
- Orange Pi 3B开发板没有板载MIC,只能通过带MIC功能的耳机来录制音频。将带MIC功能的耳机插入开发板后,运行下面的命令会通过耳机录制一段音频 - orangepi@orangepi:~$ amixer -c 0 cset name='Capture MIC Path' 'Main Mic' - orangepi@orangepi:~$ arecord -D hw:0,0 -d 5 -f cd -t wav /tmp/test.wav 
温度传感器
- 查看系统温度传感器的命令为:
- orangepi@orangepi:~$ sensors - soc_thermal-virtual-0 - Adapter: Virtual device - temp1: +41.9°C (crit = +115.0°C) 
 gpu_thermal-virtual-0- Adapter: Virtual device - temp1: +43.8°C 
 
- 查看nvme ssd固态硬盘当前温度的命令为: - orangepi@orangepi:~$ sudo smartctl -a /dev/nvme0 | grep "Temperature:" - Temperature: 40 Celsius 
40 Pin接口引脚说明
- Orange Pi 3B开发板40 pin接口引脚的顺序请参考下图 
- Orange Pi 3B开发板40 pin接口引脚的功能如下表所示 
- 40pin接口中总共有28个GPIO口,所有GPIO口的电压都是3.3v 
安装wiringOP的方法
| 注意,Orange Pi发布的Linux镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。 编译好的wiringOP的deb包在orangepi-build中的存放路径为: orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb 进入系统后可以运行下gpio readall命令,如果能看到下面的输出,说明wiringOP已经预装并且能正常使用。 wiringOP目前主要适配了设置GPIO口输入输出,设置GPIO口输出高低电平以及设置上下拉电阻的功能,像硬件PWM这样的功能是用不了的。 | 
- 下载wiringOP的代码 - orangepi@orangepi:~$ sudo apt update - orangepi@orangepi:~$ sudo apt install -y git - orangepi@orangepi:~$ git clone https://github.com/orangepi-xunlong/wiringOP.git -b next - 注意,Orange Pi 3B需要下载wiringOP next分支的代码,请别漏了-b next这个参数。 - 如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP源码,存放位置为:/usr/src/wiringOP。 
- 编译安装wiringOP - orangepi@orangepi:~$ cd wiringOP - orangepi@orangepi:~/wiringOP$ sudo ./build clean - orangepi@orangepi:~/wiringOP$ sudo ./build 
- 测试gpio readall命令的输出如下 
40pin接口GPIO、I2C、UART、SPI和PWM测试
| 注意,如果需要设置overlays同时打开多个配置,请像下面这样使用空格隔开写在一行即可。 orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt overlays=spi3-m0-cs0-spidev i2c2-m1 i2c3-m0 uart7-m2 uart9-m2 pwm11-m1 | 
40pin GPIO口测试
| Orange Pi发布的Linux系统中有预装一个blink_all_gpio程序,这个程序会设置40pin中的所有28个GPIO口不停的切换高低电平。 
 
 orangepi@orangepi3b:~$ sudo blink_all_gpio #记得加sudo权限 [sudo] password for orangepi: #在这里需要输入密码 | 
- 开发板40pin中总共有28个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO4_C3 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平 
- 首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号 - root@orangepi:~/wiringOP# gpio mode 2 out 
- 然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功 - root@orangepi:~/wiringOP# gpio write 2 0 - 使用gpio readall可以看到7号引脚的值(V)变为了0 
- 然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功 - root@orangepi:~/wiringOP# gpio write 2 1 - 使用gpio readall可以看到7号引脚的值(V)变为了1 
- 其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可 
40pin GPIO口上下拉电阻的设置方法
| 注意,Orange Pi 3B下面4个GPIO引脚因为外部有3.3V上拉,所以设置下拉是无效的,其它的引脚可以正常设置上下拉电阻功能 | 
- 下面以11号引脚——对应GPIO为GPIO3_C6 ——对应wPi序号为5——为例演示如何设置GPIO口的上下拉电阻 
- 首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号 - root@orangepi:~/wiringOP# gpio mode 5 in 
- 设置为输入模式后,执行下面的命令可以设置GPIO口为上拉模式 - root@orangepi:~/wiringOP# gpio mode 5 up 
- 然后输入下面的命令读取GPIO口的电平,如果电平为1,说明上拉模式设置成功 - root@orangepi:~/wiringOP# gpio read 5 - 1 
- 然后执行下面的命令可以设置GPIO口为下拉模式 - root@orangepi:~/wiringOP# gpio mode 5 down 
- 然后输入下面的命令读取GPIO口的电平,如果电平为0,说明下拉模式设置成功 - root@orangepi:~/wiringOP# gpio read 5 - 0 
40pin SPI测试
- 由40pin接口的原理图可知,Orange Pi 3B可用的spi为spi3 
- 在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 重启后进入系统先查看下Linux系统中是否存在spidev3.0的设备节点,如果存在,说明SPI3已经设置好了,可以直接使用 - orangepi@orangepi:~$ ls /dev/spidev3.0 - /dev/spidev3.0 
- 先不短接SPI3的mosi和miso两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致 - orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev3.0 - spi mode: 0x0 - bits per word: 8 - max speed: 500000 Hz (500 KHz) - TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒. - RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................…. 
- 然后短接SPI3的mosi(40pin接口中的第19号引脚)和miso(40pin接口中的第21号引脚)两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样 - orangepi@orangepi:~$ sudo spidev_test -v -D /dev/spidev3.0 - spi mode: 0x0 - bits per word: 8 - max speed: 500000 Hz (500 KHz) - TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒. - RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒. 
40pin I2C测试
- 由下表可知,Orange Pi 3B可用的i2c为i2c2、i2c3和i2c4共三组 i2c总线 - 从上表中可以看到,i2c4_m0和spi3_m0是引脚复用的,两者不能同时打开,i2c3_m0和uart3_m0也是引脚复用的,两者不能同时打开 
- 在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 启动Linux系统后,先确认下/dev下存在i2c的设备节点 - orangepi@orangepi:~# ls /dev/i2c-* - /dev/i2c-0 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-6 
- 然后在40pin接头的i2c引脚上接一个i2c设备 
| i2c2-m1 | i2c3-m0 | i2c4-m0 | |
| sda引脚 | 对应3号引脚 | 对应27号引脚 | 对应19号引脚 | 
| sck引脚 | 对应5号引脚 | 对应28号引脚 | 对应23号引脚 | 
| vcc引脚 | 对应1号引脚 | 对应1号引脚 | 对应1号引脚 | 
| gnd引脚 | 对应6号引脚 | 对应6号引脚 | 对应6号引脚 | 
- 然后使用i2cdetect -y命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用 - orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2的命令 - orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3的命令 - orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4的命令 
40pin的UART测试
- 由下表可知,Orange Pi 3B可用的uart为uart3、uart7和uart9共三组uart总线 - 从上表中可以看到,i2c3_m0和uart3_m0是引脚复用的,两者不能同时打开 
- 在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 进入Linux系统后,先确认下/dev下是否存在对应uart的设备节点 - orangepi@orangepi:~# ls /dev/ttyS* - /dev/ttyS1 /dev/ttyS3 /dev/ttyS7 /dev/ttyS9 
- 然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx 
| uart3 | uart7 | uart9 | |
| tx引脚 | 对应28号引脚 | 对应16号引脚 | 对应29号引脚 | 
| rx引脚 | 对应27号引脚 | 对应15号引脚 | 对应22号引脚 | 
- 使用gpio serial命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常 - 测试UART3 - orangepi@orangepi:~$ sudo gpio serial /dev/ttyS3 - [sudo] password for orangepi: #在这里输入密码 
 - Out: 0: -> 0 - Out: 1: -> 1 - Out: 2: -> 2 - Out: 3: -> 3 - Out: 4: -> 4 - Out: 5: -> 5^C 
- 测试UART7 - orangepi@orangepi:~$ sudo gpio serial /dev/ttyS7 - [sudo] password for orangepi: #在这里输入密码 
 - Out: 0: -> 0 - Out: 1: -> 1 - Out: 2: -> 2 - Out: 3: -> 3 - Out: 4: -> 4 - Out: 5: -> 5^C 
- 测试UART9 - orangepi@orangepi:~$ sudo gpio serial /dev/ttyS9 - [sudo] password for orangepi: #在这里输入密码 
 - Out: 0: -> 0 - Out: 1: -> 1 - Out: 2: -> 2 - Out: 3: -> 3 - Out: 4: -> 4 - Out: 5: -> 5^C 
 
PWM的测试方法
- 由下表可知,Orange Pi 3B可用的pwm11和pwm15共两路pwm 
- 在linux系统中,40 pin中的PWM默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 当打开一个pwm后,在/sys/class/pwm/中就会多出一个pwmchipX(X为具体的的数字),比如打开pwm11后,查看/sys/class/pwm/下的pwmchipX会由一个变成了两个 - orangepi@orangepi:~$ ls /sys/class/pwm/ - pwmchip0 pwmchip1 
- 上面哪个pwmchip对应pwm11呢,我们先查看下 ls /sys/class/pwm/ -l命令的输出,如下所示: 
- 然后由下表可知,pwm11寄存器的基地址为fe6f0030,再看 ls /sys/class/pwm/ -l命令的输出,可以看到pwmchip1中链接到了fe6f0030.pwm,所以pwm11对应pwmchip为pwmchip1 
- 然后使用下面的命令可以让pwm11输出一个50Hz的方波(请先切换到root用户,再执行下面的命令) 
- 上面演示的pwm11的测试方法,其他pwm测试方法都是类似的。 
| root@orangepi:~# echo 0 > /sys/class/pwm/pwmchip1/export root@orangepi:~# echo 20000000 > /sys/class/pwm/pwmchip1/pwm0/period root@orangepi:~# echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle root@orangepi:~# echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable | 
wiringOP-Python的安装使用方法
| wiringOP-Python是wiringOP的Python语言版本的库,用于在Python程序中操作开发板的GPIO、I2C、SPI和UART等硬件资源。 
 | 
wiringOP-Python的安装方法
- 首先安装依赖包 - root@orangepi:~# sudo apt-get update - root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools 
- 然后使用下面的命令下载wiringOP-Python的源码 
| 注意,下面的git clone--recursive命令会自动下载wiringOP的源码,因为wiringOP-Python是依赖wiringOP的。请确保下载过程没有因为网络问题而报错。 
 | 
| root@orangepi:~# git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next root@orangepi:~# cd wiringOP-Python root@orangepi:~/wiringOP-Python# git submodule update --init --remote | 
- 然后使用下面的命令编译wiringOP-Python并将其安装到开发板的Linux系统中 - root@orangepi:~# cd wiringOP-Python - root@orangepi:~/wiringOP-Python# python3 generate-bindings.py > bindings.i - root@orangepi:~/wiringOP-Python# sudo python3 setup.py install 
- 然后输入下面的命令,如果有帮助信息输出,说明wiringOP-Python安装成功,按下q键可以退出帮助信息的界面 
- wiringpi
- # This file was automatically generated by SWIG (http://www.swig.org).
- # Version 4.0.2
- #
- # Do not make changes to this file unless you know what you are doing--modify
- # the SWIG interface file instead.
| root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)" Help on module wiringpi: 
 
 | 
- 在python命令行下测试wiringOP-Python是否安装成功的步骤如下所示: - 首先使用python3命令进入python3的命令行模式
 - root@orangepi:~# python3 - 然后导入wiringpi的python模块
 - >>> import wiringpi; - 最后输入下面的命令可以查看下wiringOP-Python的帮助信息,按下q键可以退出帮助信息的界面
- wiringpi
- # This file was automatically generated by SWIG (http://www.swig.org).
- # Version 4.0.2
- #
- # Do not make changes to this file unless you know what you are doing--modify
- # the SWIG interface file instead.
- builtins.object
- GPIO
 
- I2C
 
- Serial
 
- nes
 
- class GPIO(builtins.object)
- | GPIO(pinmode=0)
- |
 - >>> help(wiringpi) - Help on module wiringpi: 
 NAME
 DESCRIPTION
 CLASSES
 
 >>>
40pin GPIO口测试
| wiringOP-Python跟wiringOP一样,也是可以通过指定wPi号来确定操作哪一个GPIO引脚,因为wiringOP-Python中没有查看wPi号的命令,所以只能通过wiringOP中的gpio命令来查看板子wPi号与物理引脚的对应关系。 | 
- 下面以7号引脚——对应GPIO为GPIO4_A4 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平 
- 直接用命令测试的步骤如下所示: - 首先设置GPIO口为输出模式,其中pinMode函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式 - root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \ - from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \ - wiringpi.pinMode(2, GPIO.OUTPUT) ; " 
- 然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功 - root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \ - from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\ - wiringpi.digitalWrite(2, GPIO.LOW)" 
- 然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功 - root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; \ - from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\ - wiringpi.digitalWrite(2, GPIO.HIGH)" 
 
- 在python3的命令行中测试的步骤如下所示: - 首先使用python3命令进入python3的命令行模式 - root@orangepi:~# python3 
- 然后导入wiringpi的python模块 - >>> import wiringpi - >>> from wiringpi import GPIO 
- 然后设置GPIO口为输出模式,其中pinMode函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式 - >>> wiringpi.wiringPiSetup() - 0 - >>> wiringpi.pinMode(2, GPIO.OUTPUT) 
- 然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功 - >>> wiringpi.digitalWrite(2, GPIO.LOW) 
- 然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功 - >>> wiringpi.digitalWrite(2, GPIO.HIGH) 
 
- wiringOP-Python在python代码中设置GPIO高低电平的方法可以参考下examples中的blink.py测试程序,blink.py测试程序会设置开发板40 pin中所有的GPIO口的电压不断的高低变化 - root@orangepi:~/wiringOP-Python# cd examples - root@orangepi:~/wiringOP-Python/examples# ls blink.py - blink.py - root@orangepi:~/wiringOP-Python/examples# python3 blink.py 
40pin SPI测试
- 由40pin接口的原理图可知,Orange Pi 3B可用的spi为spi3 
- 在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 先查看下Linux系统中是否存在spidev3.0的设备节点,如果存在,说明SPI3已经设置好了,可以直接使用 - orangepi@orangepi:~$ ls /dev/spidev3.0 - /dev/spidev3.0 
- 然后可以使用examples中的spidev_test.py程序测试下SPI的回环功能,spidev_test.py程序需要指定下面的两个参数: - --channel:指定SPI的通道号 
- --port:指定SPI的端口号 
 
- 先不短接 SPI3 的 mosi 和 miso 两个引脚,运行 spidev_test.py 的输出结果如下所示,可以看到 TX 和 RX 的数据不一致 - root@orangepi:~/wiringOP-Python# cd examples - root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \ - --channel 3 --port 0 - spi mode: 0x0 - max speed: 500000 Hz (500 KHz) - Opening device /dev/spidev3.0 - TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| - RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….| 
- 然后使用杜邦线短接SPI3的txd(40pin接口中的第19号引脚)和rxd(40pin接口中的第21号引脚)两个引脚再运行spidev_test.py的输出如下,可以看到发送和接收的数据一样,说明SPI3回环测试正常 - root@orangepi:~/wiringOP-Python# cd examples - root@orangepi:~/wiringOP-Python/examples# python3 spidev_test.py \ - --channel 3 --port 0 - spi mode: 0x0 - max speed: 500000 Hz (500 KHz) - Opening device /dev/spidev3.0 - TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| - RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| 
40pin I2C测试
- 由下表可知,Orange Pi 3B可用的i2c为i2c2、i2c3和i2c4共三组 i2c总线 - 从上表中可以看到,i2c4_m0和spi3_m0是引脚复用的,两者不能同时打开,i2c3_m0和uart3_m0也是引脚复用的,两者不能同时打开 
- 在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 启动Linux系统后,先确认下/dev下存在i2c的设备节点 - orangepi@orangepi:~# ls /dev/i2c-* - /dev/i2c-0 /dev/i2c-2 /dev/i2c-3 /dev/i2c-4 /dev/i2c-6 
- 然后在40pin接头的i2c引脚上接一个i2c设备,这里以ds1307 RTC模块为例 
| i2c2-m1 | i2c3-m0 | i2c4-m0 | |
| sda引脚 | 对应3号引脚 | 对应27号引脚 | 对应19号引脚 | 
| sck引脚 | 对应5号引脚 | 对应28号引脚 | 对应23号引脚 | 
| vcc引脚 | 对应1号引脚 | 对应1号引脚 | 对应1号引脚 | 
| gnd引脚 | 对应6号引脚 | 对应6号引脚 | 对应6号引脚 | 
- 然后使用i2cdetect -y命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用 - orangepi@orangepi:~$ sudo i2cdetect -y 2 #i2c2的命令 - orangepi@orangepi:~$ sudo i2cdetect -y 3 #i2c3的命令 - orangepi@orangepi:~$ sudo i2cdetect -y 4 #i2c4的命令 
- 然后可以运行examples中的ds1307.py测试程序读取RTC的时间 - root@orangepi:~/wiringOP-Python# cd examples - root@orangepi:~/wiringOP-Python/examples# python3 ds1307.py --device \ - "/dev/i2c-4" - Thu 2023-01-05 14:57:55 - Thu 2023-01-05 14:57:56 - Thu 2023-01-05 14:57:57 - ^C - exit 
40pin的UART测试
- 由下表可知,Orange Pi 3B可用的uart为uart3、uart7和uart9共三组uart总线 - 从上表中可以看到,i2c3_m0和uart3_m0是引脚复用的,两者不能同时打开 
- 在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示: 
- 进入Linux系统后,先确认下/dev下是否存在对应uart的设备节点 - orangepi@orangepi:~# ls /dev/ttyS* - /dev/ttyS1 /dev/ttyS3 /dev/ttyS7 /dev/ttyS9 
- 然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx 
| uart3 | uart7 | uart9 | |
| tx引脚 | 对应28号引脚 | 对应16号引脚 | 对应29号引脚 | 
| rx引脚 | 对应27号引脚 | 对应15号引脚 | 对应22号引脚 | 
- 使用examples中的serialTest.py程序测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常 - 测试UART3 - root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \ - "/dev/ttyS3" 
 - Out: 0: -> 0 - Out: 1: -> 1 - Out: 2: -> 2 - Out: 3: -> 3 - Out: 4:^C - exit 
- 测试UART7 - root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \ - "/dev/ttyS7" 
 - Out: 0: -> 0 - Out: 1: -> 1 - Out: 2: -> 2 - Out: 3: -> 3 - Out: 4:^C - exit 
- 测试UART9 - root@orangepi:~/wiringOP-Python/examples# python3 serialTest.py --device \ - "/dev/ttyS9" 
 - Out: 0: -> 0 - Out: 1: -> 1 - Out: 2: -> 2 - Out: 3: -> 3 - Out: 4:^C - exit 
 
硬件看门狗测试
Orange Pi发布的Linux系统中预装了watchdog_test程序,可以直接测试。
运行watchdog_test程序的方法如下所示:
- 第二个参数10表示看门狗的计数时间,如果这个时间内没有喂狗,系统会重启 
- 我们可以通过按下键盘上的任意键(ESC除外)来喂狗,喂狗后,程序会打印一行keep alive表示喂狗成功 - orangepi@orangepi:~$ sudo watchdog_test 10 - open success - options is 33152,identity is sunxi-wdt - put_usr return,if 0,success:0 - The old reset time is: 16 - return ENOTTY,if -1,success:0 - return ENOTTY,if -1,success:0 - put_user return,if 0,success:0 - put_usr return,if 0,success:0 - keep alive - keep alive - keep alive 
查看RK3566芯片的序列号
查看RK3566芯片序列号的命令如下所示,每个芯片的序列号都是不同的,所以可以使用序列号来区分多个开发板。
| orangepi@orangepi:~$ cat_serial.sh Serial : 8fa18eaf489041f0 | 
下载安装arm64版本balenaEtcher的方法
- balenaEtcher arm64版本的下载地址为: 
- deb版本balenaEtcher的安装使用方法: - deb版本的balenaEtcher安装命令如下所示: - orangepi@orangepi:~$ sudo apt install -y \ - --fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb 
- deb版本的balenaEtcher安装完成后,在Application中就可以打开了 
- balenaEtcher打开后的界面如下所示: 
 
- AppImage版本的balenaEtcher的使用方法: 
宝塔Linux面板的安装方法
| 宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能(摘抄自宝塔官网) | 
- 首先需要扩展下/tmp空间的大小,设置完后需要重启下开发板的Linux系统,命令如下所示: - orangepi@orangepi:~$ sudo sed -i 's/nosuid/&,size=2G/' /etc/fstab - orangepi@orangepi:~$ sudo reboot 
- 重启后,可以看到/tmp空间的大小变为2G了 - orangepi@orangepi:~$ df -h | grep "/tmp" - tmpfs 2.0G 12K 2.0G1% /tmp 
 
- 然后在Linux系统中输入下面的命令就可以开始宝塔的安装 - orangepi@orangepi:~$ sudo install_bt_panel.sh 
- 然后宝塔安装程序会提醒是否安装Bt-Panel到/www文件夹,此时输入y即可 - +---------------------------------------------------------------------- - | Bt-WebPanel FOR CentOS/Ubuntu/Debian - +---------------------------------------------------------------------- - | Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved. - +---------------------------------------------------------------------- - | The WebPanel URL will be http://SERVER_IP:8888 when installed. - +---------------------------------------------------------------------- 
 - Do you want to install Bt-Panel to the /www directory now?(y/n): y 
- 然后要做的就是耐心等待,当看到终端输出下面的打印信息时,说明宝塔已经安装完成,整个安装过程大约耗时34分钟,根据网络速度的不同可能会有一些差别 
- 此时在浏览器中输入上面显示的面板地址就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的username和password就可以登录进宝塔 
  
- 成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了 
- 进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网(https://www.bt.cn)注册一个 
- 最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等 
- 宝塔的更多功能可以参考下面资料自行探索 - 使用手册:http://docs.bt.cn - GitHub链接:https://github.com/aaPanel/BaoTa 
设置中文环境以及安装中文输入法
| 注意,安装中文输入法前请确保开发板使用的Linux系统为桌面版系统。 | 
Debian系统的安装方法
- 首先设置默认locale为中文 - 输入下面的命令可以开始配置locale - orangepi@orangepi:~$ sudo dpkg-reconfigure locales 
- 然后在弹出的界面中选择zh_CN.UTF-8 UTF-8(通过键盘上的上下方向按键来上下移动,通过空格键来选择,最后通过Tab键可以将光标移动到<OK>,然后回车即可) 
- 然后设置默认locale为zh_CN.UTF-8 
- 退出界面后就会开始locale的设置,命令行显示的输出如下所示 - orangepi@orangepi:~$ sudo dpkg-reconfigure locales - Generating locales (this might take a while)... - en_US.UTF-8... done 
- zh_CN.UTF-8... done 
 - Generation complete. 
 
- 然后打开Input Method 
- 然后选择OK 
- 然后选择Yes 
- 然后选择fcitx 
- 然后选择OK 
- 然后重启Linux系统才能使配置生效 
- 然后打开Fcitx configuration 
- 然后点击下图所示位置的+号 
- 然后搜索Google Pinyin再点击OK 
- 然后将Google Pinyin放到最前面 
- 然后打开Geany这个编辑器测试下中文输入法 
- 中文输入法测试如下所示 
- 通过Ctrl+Space快捷键可以切换中英文输入法 
- 如果需要整个系统都显示为中文,可以将/etc/default/locale中的变量都设置为zh_CN.UTF-8 - orangepi@orangepi:~$ sudo vim /etc/default/locale - # File generated by update-locale - LC_MESSAGES=zh_CN.UTF-8 - LANG=zh_CN.UTF-8 - LANGUAGE=zh_CN.UTF-8 
- 然后重启系统就能看到系统显示为中文了 
Ubuntu 20.04系统的安装方法
- 首先打开Language Support 
- 然后找到汉语(中国)选项 
- 然后请使用鼠标左键选中汉语(中国)并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示: 
| 注意,这一步不是很好拖动的,请耐心多试几次。 | 
- 然后选择Apply System-Wide将中文设置应用到整个系统 
- 然后设置Keyboard input method system为fcitx 
- 然后重启Linux系统使配置生效 
- 重新进入系统后,在下面的界面请选择不要再次询问我,然后请根据自己的喜好决定标准文件夹是否也要更新为中文 
- 然后可以看到桌面都显示为中文了 
- 然后我们可以打开Geany测试下中文输入法,打开方式如下图所示 
- 打开Geany后,默认还是英文输入法,我们可以通过Ctrl+Space快捷键来切换成中文输入法,然后就能输入中文了 
Ubuntu 22.04系统的安装方法
- 首先打开Language Support 
- 然后找到汉语(中国)选项 
- 然后请使用鼠标左键选中汉语(中国)并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示: 
| 注意,这一步不是很好拖动的,请耐心多试几次。 | 
- 然后选择Apply System-Wide将中文设置应用到整个系统 
- 然后重启Linux系统使配置生效 
- 重新进入系统后,在下面的界面请选择不要再次询问我,然后请根据自己的喜好决定标准文件夹是否也要更新为中文 
- 然后可以看到桌面都显示为中文了 
- 然后打开Fcitx5配置程序 
- 然后选择使用拼音输入法 
- 选择后的界面如下所示,再点击确定即可 
- 然后我们可以打开Geany测试下中文输入法,打开方式如下图所示 
- 打开Geany后,默认还是英文输入法,我们可以通过Ctrl+Space快捷键来切换成中文输入法,然后就能输入中文了 
远程登录Linux系统桌面的方法
| Ubuntu Gnome Wayland镜像不支持使用此处介绍的Nomachine和VNC来远程登录桌面。 | 
使用NoMachine远程登录
| 请确保开发板安装的Ubuntu或者Debian系统为桌面版本的系统。另外NoMachine也提供了详细的使用文档,强烈建议通读此文档来熟悉NoMachine的使用,文档链接如下所示: | 
| NoMachine支持Windows、Mac、Linux、iOS和安卓平台,所以我们可以在多种设备上通过NoMachine来远程登录控制Orange Pi开发板。下面演示下在Windows中通过NoMachine来远程登录Orange Pi开发板的Linux系统桌面。其他平台的安装方法请参考下NoMachine的官方文档。 操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。 | 
- 首先下载NoMachine软件Linux arm64 deb版本的安装包,然后安装到开发板的Linux系统中 - 由于RK3566是ARMv8架构的SOC,我们使用的系统为Ubuntu或者Debian,所以这里需要下载NoMachine for ARM ARMv8 DEB安装包,下载链接如下所示:
 - 注意,这个下载链接可能会变,请认准Armv8/Arm64版本的deb包。 
- 然后下载NoMachine软件Windows版本的安装包,下载地址如下所示
| 注意,这个下载链接可能会变。 | 
- 然后在Windows中安装NoMachine,安装完后请重启下电脑 
- 然后在Window中打开NoMachine 
- NoMachine启动后会自动扫描局域网内其他安装有NoMachine的设备,进入NoMachine的主界面后就可以看到开发板已经在可连接的设备列表里了,然后点击下图红色方框所示的位置即可开始登录开发板的Linux系统桌面 
- 然后点击OK 
- 然后在下图对应的位置输入开发板Linux系统的用户名和密码,再点击OK开始登陆 
- 然后在接下来的界面中都点击OK 
- 最后就能看到开发板Linux系统的桌面了 
使用VNC远程登录
| 操作前请先确保Windows电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。 Ubuntu20.04测试VNC很多问题,请不要使用这种方法。 | 
- 首先运行set_vnc.sh脚本设置下vnc,记得加sudo权限 - orangepi@orangepi:~$ sudo set_vnc.sh - You will require a password to access your desktops. 
 - Password: #在这里设置vnc的密码,8位字符 - Verify: #在这里设置vnc的密码,8位字符 - Would you like to enter a view-only password (y/n)? n - xauth: file /root/.Xauthority does not exist 
 - New 'X' desktop is orangepi3b:1 
 - Creating default startup script /root/.vnc/xstartup - Starting applications specified in /root/.vnc/xstartup - Log file is /root/.vnc/orangepi3b:1.log 
 - Killing Xtightvnc process ID 3047 
 - New 'X' desktop is orangepi3b:1 
 - Starting applications specified in /root/.vnc/xstartup - Log file is /root/.vnc/orangepi3b:1.log 
- 使用MobaXterm软件连接开发板linux系统桌面的步骤如下所示: 
Linux系统支持的部分编程语言测试
Debian Bullseye系统
- Debian Bullseye默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序 - gcc的版本如下所示 - orangepi@orangepi:~$ gcc --version - gcc (Debian 10.2.1-6) 10.2.1 20210110 - Copyright (C) 2020 Free Software Foundation, Inc. - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
- 编写C语言的hello_world.c程序 - orangepi@orangepi:~$ vim hello_world.c - #include <stdio.h> 
 - int main(void) - { - printf("Hello World!\n"); 
 
 - return 0; 
 - } 
- 然后编译运行hello_world.c - orangepi@orangepi:~$ gcc -o hello_world hello_world.c - orangepi@orangepi:~$ ./hello_world - Hello World! 
 
- Debian Bullseye默认安装有Python3 - Python具体版本如下所示 - orangepi@orangepi:~$ python3 - Python 3.9.2 (default, Feb 28 2021, 17:03:44) - [GCC 10.2.1 20210110] on linux - Type "help", "copyright", "credits" or "license" for more information. - >>> 
- 编写Python语言的hello_world.py程序 - orangepi@orangepi:~$ vim hello_world.py - print('Hello World!') 
- 运行hello_world.py的结果如下所示 - orangepi@orangepi:~$ python3 hello_world.py - Hello World! 
 
- Debian Bullseye默认没有安装Java的编译工具和运行环境 - 可以使用下面的命令安装openjdk,Debian > Bullseye中最新版本为openjdk-17 - orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk 
- 安装完后可以查看下Java的版本 - orangepi@orangepi:~$ java --version 
- 编写Java版本的hello_world.java - orangepi@orangepi:~$ vim hello_world.java - public class hello_world - { - public static void main(String[] args) 
- { - System.out.println("Hello World!"); 
 
- } 
 - } 
- 然后编译运行hello_world.java - orangepi@orangepi:~$ javac hello_world.java - orangepi@orangepi:~$ java hello_world - Hello World! 
 
Debian Bookworm系统
- Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序 - gcc的版本如下所示 - orangepi@orangepi:~$ gcc --version - gcc (Debian 12.2.0-14) 12.2.0 - Copyright (C) 2022 Free Software Foundation, Inc. - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
- 编写C语言的hello_world.c程序 - orangepi@orangepi:~$ vim hello_world.c - #include <stdio.h> 
 - int main(void) - { - printf("Hello World!\n"); 
 
 - return 0; 
 - } 
- 然后编译运行hello_world.c - orangepi@orangepi:~$ gcc -o hello_world hello_world.c - orangepi@orangepi:~$ ./hello_world - Hello World! 
 
- Debian Bookworm默认安装有Python3 - Python具体版本如下所示 - orangepi@orangepi:~$ python3 - Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux - Type "help", "copyright", "credits" or "license" for more information. - >>> - 使用Ctrl+D快捷键可退出python的交互模式。 
- 编写Python语言的hello_world.py程序 - orangepi@orangepi:~$ vim hello_world.py - print('Hello World!') 
- 运行hello_world.py的结果如下所示 - orangepi@orangepi:~$ python3 hello_world.py - Hello World! 
 
- Debian Bookworm默认没有安装Java的编译工具和运行环境 - 可以使用下面的命令安装openjdk,Debian Bookworm中最新版本为openjdk-17 - orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk 
- 安装完后可以查看下Java的版本 - orangepi@orangepi:~$ java --version 
- 编写Java版本的hello_world.java - orangepi@orangepi:~$ vim hello_world.java - public class hello_world - { - public static void main(String[] args) 
- { - System.out.println("Hello World!"); 
 
- } 
 - } 
- 然后编译运行hello_world.java - orangepi@orangepi:~$ javac hello_world.java - orangepi@orangepi:~$ java hello_world - Hello World! 
 
Ubuntu Focal系统
- Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序 - gcc的版本如下所示 - orangepi@orangepi:~$ gcc --version - gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 - Copyright (C) 2019 Free Software Foundation, Inc. - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
- 编写C语言的hello_world.c程序 - orangepi@orangepi:~$ vim hello_world.c - #include <stdio.h> 
 - int main(void) - { - printf("Hello World!\n"); 
 
 - return 0; 
 - } 
- 然后编译运行hello_world.c - orangepi@orangepi:~$ gcc -o hello_world hello_world.c - orangepi@orangepi:~$ ./hello_world - Hello World! 
 
- Ubuntu Focal默认安装有Python3 - Python3具体版本如下所示 - orangepi@orangepi:~$ python3 - Python 3.8.10 (default, Nov 14 2022, 12:59:47) - [GCC 9.4.0] on linux - Type "help", "copyright", "credits" or "license" for more information. - >>> 
- 编写Python语言的hello_world.py程序 - orangepi@orangepi:~$ vim hello_world.py - print('Hello World!') 
- 运行hello_world.py的结果如下所示 - orangepi@orangepi:~$ python3 hello_world.py - Hello World! 
 
- Ubuntu Focal默认没有安装Java的编译工具和运行环境 - 可以使用下面的命令安装openjdk-17 - orangepi@orangepi:~$ sudo apt install -y openjdk-17-jdk 
- 安装完后可以查看下Java的版本 - orangepi@orangepi:~$ java --version - openjdk 17.0.2 2022-01-18 - OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04) - OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, mixed mode, sharing) 
- 编写Java版本的hello_world.java - orangepi@orangepi:~$ vim hello_world.java - public class hello_world - { - public static void main(String[] args) 
- { - System.out.println("Hello World!"); 
 
- } 
 - } 
- 然后编译运行hello_world.java - orangepi@orangepi:~$ javac hello_world.java - orangepi@orangepi:~$ java hello_world - Hello World! 
 
Ubuntu Jammy系统
- Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序 - gcc的版本如下所示 - orangepi@orangepi:~$ gcc --version - gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0 - Copyright (C) 2021 Free Software Foundation, Inc. - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
- 编写C语言的hello_world.c程序 - orangepi@orangepi:~$ vim hello_world.c - #include <stdio.h> 
 - int main(void) - { - printf("Hello World!\n"); 
 
 - return 0; 
 - } 
- 然后编译运行hello_world.c - orangepi@orangepi:~$ gcc -o hello_world hello_world.c - orangepi@orangepi:~$ ./hello_world - Hello World! 
 
- Ubuntu Jammy默认安装有Python3 - Python3具体版本如下所示 - orangepi@orangepi:~$ python3 - Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux - Type "help", "copyright", "credits" or "license" for more information. - >>> 
- 编写Python语言的hello_world.py程序 - orangepi@orangepi:~$ vim hello_world.py - print('Hello World!') 
- 运行hello_world.py的结果如下所示 - orangepi@orangepi:~$ python3 hello_world.py - Hello World! 
 
- Ubuntu Jammy默认没有安装Java的编译工具和运行环境 - 可以使用下面的命令安装openjdk-18 - orangepi@orangepi:~$ sudo apt install -y openjdk-18-jdk 
- 安装完后可以查看下Java的版本 - orangepi@orangepi:~$ java --version - openjdk 18-ea 2022-03-22 - OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1) - OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing) 
- 编写Java版本的hello_world.java - orangepi@orangepi:~$ vim hello_world.java - public class hello_world - { - public static void main(String[] args) 
- { - System.out.println("Hello World!"); 
 
- } 
 - } 
- 然后编译运行hello_world.java - orangepi@orangepi:~$ javac hello_world.java - orangepi@orangepi:~$ java hello_world - Hello World! 
 
QT的安装方法
- 使用下面的脚本可以安装QT5和QT Creator - orangepi@orangepi:~$ install_qt.sh 
- 安装完后会自动打印QT的版本号 - Ubuntu20.04自带的qt版本为5.12.8 - orangepi@orangepi:~$ install_qt.sh - ...... - QMake version 3.1 - Using Qt version 5.12.8 in /usr/lib/aarch64-linux-gnu 
- Ubuntu22.04自带的QT版本为5.15.3 - orangepi@orangepi:~$ install_qt.sh - ...... - QMake version 3.1 - Using Qt version 5.15.3 in /usr/lib/aarch64-linux-gnu 
- Debian11自带的QT版本为5.15.2 - orangepi@orangepi:~$ install_qt.sh - ...... - QMake version 3.1 - Using Qt version 5.15.2 in /usr/lib/aarch64-linux-gnu 
- Debian12自带的QT版本为5.15.8 - orangepi@orangepi:~$ install_qt.sh - ...... - QMake version 3.1 - Using Qt version 5.15.8 in /usr/lib/aarch64-linux-gnu 
 
- 然后在Applications中就可以看到QT Creator的启动图标 - 也可以使用下面的命令打开QT Creator - orangepi@orangepi:~$ qtcreator - 在QT和QT应用的启动过程中,如果提示下面的错误,请直接忽略,此错误对应用的运行不会有影响。 
 - libGL error: failed to create dri screen - libGL error: failed to load driver: rockchip - libGL error: failed to create dri screen - libGL error: failed to load driver: rockchip 
- QT Creator打开后的界面如下所示 
- QT Creator的版本如下所示 
- 然后设置下QT 
- 然后就可以打开一个示例代码 
- 点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明 
- 然后点击下Configure Project 
- 然后点击左下角的绿色三角形编译运行下示例代码 
- 等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行 
- 参考资料 - https://wiki.qt.io/Install_Qt_5_on_Ubuntu 
ROS安装方法
Ubuntu20.04安装ROS 1 Noetic的方法
- ROS 1当前活跃的版本如下所示,推荐版本为Noetic Ninjemys
- ROS 1 Noetic Ninjemys官方安装文档链接如下所示: 
- ROS Noetic Ninjemys官方安装文档中Ubuntu推荐使用Ubuntu20.04,所以请确保开发板使用的系统为Ubuntu20.04桌面版系统 
- 然后使用下面的脚本安装ros1 - orangepi@orangepi3b:~$ install_ros.sh ros1 
- 使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件 
- The read operation timed out
 
- rosdep update
 
| 注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。 
 
 Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml ERROR: error loading sources list: | 
| orangepi@orangepi:~$ source /opt/ros/noetic/setup.bash orangepi@orangepi:~$ sudo rosdep init Wrote /etc/ros/rosdep/sources.list.d/20-default.list Recommended: please run 
 orangepi@orangepi:~$ rosdep update reading in sources list data from /etc/ros/rosdep/sources.list.d Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml Skip end-of-life distro "ardent" Skip end-of-life distro "bouncy" Skip end-of-life distro "crystal" Skip end-of-life distro "dashing" Skip end-of-life distro "eloquent" Add distro "foxy" Add distro "galactic" Skip end-of-life distro "groovy" Add distro "humble" Skip end-of-life distro "hydro" Skip end-of-life distro "indigo" Skip end-of-life distro "jade" Skip end-of-life distro "kinetic" Skip end-of-life distro "lunar" Add distro "melodic" Add distro "noetic" Add distro "rolling" updated cache in /home/orangepi/.ros/rosdep/sources.cache | 
- 然后在桌面中打开一个命令行终端窗口,再使用test_ros.sh脚本可以启动一个小海龟的例程来测试下ROS是否能正常使用 - orangepi@orangepi:~$ test_ros.sh 
- 运行完test_ros.sh脚本后,会弹出下图所示的一个小海龟 
- 然后请保持刚才打开终端窗口在最上面 
Ubuntu20.04安装ROS 2 Galactic的方法
- ROS 2当前活跃的版本如下所示,推荐版本为Galactic Geochelone 
- ROS 2 Galactic Geochelone官方安装文档链接如下所示: - docs.ros.org/en/galactic/Installation.html - http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html 
- ROS 2 Galactic Geochelone官方安装文档中Ubuntu Linux推荐使用Ubuntu20.04,所以请确保开发板使用的系统为Ubuntu20.04桌面版系统。安装ROS 2有几种方法,下面演示下通过Debian packages的方式来安装ROS 2 Galactic Geochelone 
- 使用install_ros.sh脚本可以安装ros2 - orangepi@orangepi:~$ install_ros.sh ros2 
- install_ros.sh脚本安装完ros2后会自动运行下ros2 -h命令,如果能看到下面的打印,说明ros2安装完成 - usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ... 
 - ros2 is an extensible command-line tool for ROS 2. 
 - optional arguments: - -h, --help show this help message and exit 
 
 - Commands: - action Various action related sub-commands 
- bag Various rosbag related sub-commands 
- component Various component related sub-commands 
- daemon Various daemon related sub-commands 
- doctor Check ROS setup and other potential issues 
- interface Show information about ROS interfaces 
- launch Run a launch file 
- lifecycle Various lifecycle related sub-commands 
- multicast Various multicast related sub-commands 
- node Various node related sub-commands 
- param Various param related sub-commands 
- pkg Various package related sub-commands 
- run Run a package specific executable 
- security Various security related sub-commands 
- service Various service related sub-commands 
- topic Various topic related sub-commands 
- wtf Use `wtf` as alias to `doctor` 
 
 - Call `ros2 <command> -h` for more detailed usage. 
 
- 然后可以使用 test_ros.sh脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行 - orangepi@orangepi3b:~$ test_ros.sh - [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1' - [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1] - [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2' - [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2] - [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3' - [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3] 
- 运行下面的命令可以打开rviz2 - orangepi@orangepi:~$ source /opt/ros/galactic/setup.bash - orangepi@orangepi:~$ ros2 run rviz2 rviz2 
- ROS的使用方法请参考下ROS 2的文档 
Ubuntu22.04安装ROS 2 Humble的方法
- 使用install_ros.sh脚本可以安装ros2 - orangepi@orangepi:~$ install_ros.sh ros2 
- install_ros.sh脚本安装完ros2后会自动运行下ros2 -h命令,如果能看到下面的打印,说明ros2安装完成 - usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ... 
 - ros2 is an extensible command-line tool for ROS 2. 
 - optional arguments: - -h, --help show this help message and exit 
 
 - Commands: - action Various action related sub-commands 
- bag Various rosbag related sub-commands 
- component Various component related sub-commands 
- daemon Various daemon related sub-commands 
- doctor Check ROS setup and other potential issues 
- interface Show information about ROS interfaces 
- launch Run a launch file 
- lifecycle Various lifecycle related sub-commands 
- multicast Various multicast related sub-commands 
- node Various node related sub-commands 
- param Various param related sub-commands 
- pkg Various package related sub-commands 
- run Run a package specific executable 
- security Various security related sub-commands 
- service Various service related sub-commands 
- topic Various topic related sub-commands 
- wtf Use `wtf` as alias to `doctor` 
 
 - Call `ros2 <command> -h` for more detailed usage. 
 
- 然后可以使用 test_ros.sh脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行 - orangepi@orangepi3b:~$ test_ros.sh - [INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1' - [INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1] - [INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2' - [INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2] - [INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3' - [INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3] 
- 运行下面的命令可以打开rviz2 - orangepi@orangepi:~$ source /opt/ros/humble/setup.bash - orangepi@orangepi:~$ ros2 run rviz2 rviz2 
- 参考文档 - http://docs.ros.org/en/humble/index.html - http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html 
安装内核头文件的方法
- OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为/opt/ - orangepi@orangepi:~$ ls /opt/linux-headers* - /opt/linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb 
- 使用下面的命令可以安装内核头文件的deb包 - 内核头文件deb包的名字需要替换为实际的名字,请不要照抄。 - orangepi@orangepi:~$ sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.x.x_arm64.deb 
- 安装完后在/usr/src下就能看到内核头文件所在的文件夹 - orangepi@orangepi:~$ ls /usr/src - linux-headers-5.10.160-rockchip-rk356x 
- 然后可以编写一个hello内核模块测试下内核头文件 - 首先编写hello内核模块的代码,如下所示: - orangepi@orangepi:~$ vim hello.c - #include <linux/init.h> - #include <linux/module.h> 
 - static int hello_init(void) - { - printk("Hello Orange Pi -- init\n"); 
 
 - return 0; 
 - } - static void hello_exit(void) - { - printk("Hello Orange Pi -- exit\n"); 
 
 - return; 
 - } 
 - module_init(hello_init); - module_exit(hello_exit); 
 - MODULE_LICENSE("GPL"); 
- 然后编写编译hello内核模块的Makefile文件,如下所示: - orangepi@orangepi:~$ vim Makefile - ifneq ($(KERNELRELEASE),) - obj-m:=hello.o - else - KDIR :=/lib/modules/$(shell uname -r)/build - PWD :=$(shell pwd) - all: - make -C $(KDIR) M=$(PWD) modules 
 - clean: - rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order 
 - endif 
- 然后使用make命令编译hello内核模块,编译过程的输出如下所示: - 如果自己复制的代码这里编译如果有问题,请去官方工具中下载源码然后上传到开发板的Linux系统中测试。 - orangepi@orangepi:~$ make - make -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/orangepi modules - make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx' - CC [M] /home/orangepi/hello.o 
- MODPOST /home/orangepi/Module.symvers 
- CC [M] /home/orangepi/hello.mod.o 
- LD [M] /home/orangepi/hello.ko 
 - make[1]: Leaving directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx' 
- 编译完后会生成hello.ko内核模块 - orangepi@orangepi:~$ ls *.ko - hello.ko 
- 使用insmod命令可以将hello.ko内核模块插入内核中 - orangepi@orangepi:~$ sudo insmod hello.ko 
- 然后使用demsg命令可以查看下hello.ko内核模块的输出,如果能看到下面的输出说明hello.ko内核模块加载正确 - orangepi@orangepi:~$ dmesg | grep "Hello" - [ 2871.893988] Hello Orange Pi -- init 
- 使用rmmod命令可以卸载hello.ko内核模块 - orangepi@orangepi:~$ sudo rmmod hello - orangepi@orangepi:~$ dmesg | grep "Hello" - [ 2871.893988] Hello Orange Pi -- init - [ 3173.800892] Hello Orange Pi -- exit 
 
树莓派5寸屏幕的使用
树莓派5寸屏幕的组装方法
- 首先准备需要的配件 
- 然后将15pin MIPI排线按照下图所示的方式连接到树莓派5寸屏幕上(注意绝缘面的朝向) 
- 最后连接到Orange Pi 3B开发板的LCD接口上 
打开树莓派5寸屏幕配置的方法
- Linux镜像默认是没有打开树莓派5寸屏幕的配置的,如果需要使用树莓派5寸屏幕,需要手动打开才行。 
- 打开mipi lcd配置的步骤如下所示: - 首先运行下orangepi-config,普通用户记得加sudo权限 - orangepi@orangepi:~$ sudo orangepi-config 
- 然后选择System 
- 然后选择Hardware 
- 然后使用键盘的方向键定位到raspi-7inch-touchscreen,再使用空格选中 
- 然后选择<Save>保存 
- 然后选择<Back> 
- 然后选择<Reboot>重启系统使配置生效 - 上面的设置最终会在/boot/orangepiEnv.txt中加入overlays=raspi-7inch-touchscreen这句配置。设置完后可以先检查下。如果不存在这句配置,那么设置就是有问题。 - 如果觉得使用orangepi-config比较麻烦,也可以使用vim编辑器打开/boot/orangepiEnv.txt,然后加入overlays=raspi-7inch-touchscreen 这句配置也是可以。 
 - orangepi@orangepi:~$ cat /boot/orangepiEnv.txt | grep "raspi" - overlays=raspi-7inch-touchscreen #示例配置 
 
- 启动后可以看到lcd屏幕的显示如下所示: 
服务器版镜像旋转显示方向的方法
- 在/boot/orangepiEnv.txt中加入extraargs=fbcon=rotate:要旋转的方向这行配置就可以设置服务器版本的Linux系统显示的方向,其中fbcon=rotate:后面的数字可以设置为: - 0: 正常屏(默认为横屏) 
- 1: 顺时钟转90度 
- 2: 翻转180度 
- 3: 顺时钟转270度 - orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt - overlays=lcd1 - extraargs=cma=64M fbcon=rotate:3 - 注意,/boot/orangepiEnv.txt中如果默认有extraargs=cma=64M这行配置,fbcon=rotate:3这个配置添加到extraargs=cma=64M的后面即可(需要用空格隔开)。 
 
- 然后重启Linux系统就能看到lcd屏幕显示的方向已经旋转了 
桌面版镜像旋转显示和触摸方向的方法
- 首先在Linux系统中打开Display设置 
- 然后在Rotation中选择想要旋转的方向 
- 然后点击Apply 
- 然后选择Keep this configuration 
- 此时屏幕显示就已旋转完成,然后关闭掉Display程序即可 
- 上面的步骤只会选择显示方向,并不会旋转触摸的方向,使用set_lcd_rotate.sh脚本可以旋转下触摸的方向,此脚本设置完后会自动重启,然后就可以测试触摸是否已经能正常使用了 - None: 不旋转 - orangepi@orangepi:~$ set_lcd_rotate.sh none 
- Left: 向左旋转90度 - orangepi@orangepi:~$ set_lcd_rotate.sh left 
- Inverted: 上下翻转,相当于旋转180度 - orangepi@orangepi:~$ set_lcd_rotate.sh inverted 
- Right: 向右旋转90度 - orangepi@orangepi:~$ set_lcd_rotate.sh right - set_lcd_rotate.sh脚本主要做四件事: - 旋转framebuffer显示的方向 
- 旋转触摸的方向 
- 关闭开机logo 
- 重启系统 
 - 旋转触摸的方向是通过在/usr/share/X11/xorg.conf.d/40-libinput.conf中加入Option "TransformationMatrix" "x x x x x x x x x"这行配置来实现的。其中"x x x x x x x x x"不同的方向配置不同。 
 
eDP屏幕的使用方法
eDP屏幕的组装方法
- 目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下: 
- 将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口 
打开eDP屏幕配置的方法
- Linux镜像默认是没有打开eDP屏幕的配置的,如果需要使用eDP屏幕,需要手动打开才行。 
- 打开eDP屏配置的步骤如下所示: - 首先运行下orangepi-config,普通用户记得加sudo权限 - orangepi@orangepi:~$ sudo orangepi-config 
- 然后选择System 
- 然后选择Hardware 
- 然后使用键盘的方向键定位到edp,再使用空格选中 
- 然后选择<Save>保存 
- 然后选择<Back> 
- 然后选择<Reboot>重启系统使配置生效 - 上面的设置最终会在/boot/orangepiEnv.txt中加入overlays=edp这句配置。设置完后可以先检查下。如果不存在这句配置,那么设置就是有问题。 
 - 如果觉得使用orangepi-config比较麻烦,也可以使用vim编辑器打开/boot/orangepiEnv.txt,然后加入overlays=edp 这句配置也是可以。 
 - orangepi@orangepi:~$ cat /boot/orangepiEnv.txt | grep "edp" - overlays=edp #示例配置 
 
- 启动后可以看到eDP屏幕的显示如下所示: 
开关机logo使用说明
- 开关机logo默认只在桌面版的系统中才会显示 
- 在/boot/orangepiEnv.txt中设置bootlogo变量为false可以关闭开关机logo - orangepi@orangepi:~$ vim /boot/orangepiEnv.txt - verbosity=1 - bootlogo=false 
- 在/boot/orangepiEnv.txt中设置bootlogo变量为true可以开启开关机logo - orangepi@orangepi:~$ vim /boot/orangepiEnv.txt - verbosity=1 - bootlogo=true 
- 开机logo图片在Linux系统中的位置为 - /usr/share/plymouth/themes/orangepi/watermark.png 
- 替换开机logo图片后需要运行下命令才能生效 - orangepi@orangepi:~$ sudo update-initramfs -u 
ZFS文件系统的使用方法
安装ZFS的方法
| 安装zfs前,请先确保使用的Linux镜像为最新版本。另外,如果系统中已经安装了zfs,就无需重复安装了。 | 
安装zfs前首先需要安装内核头文件,安装内核头文件的方法请参考安装内核头文件的方法小节的说明。
在Ubuntu20.04、Ubuntu22.04和Debian11系统中,zfs是无法通过apt直接安装的,这是因为默认的apt源中zfs版本低于2.1.6,存在和rk Linux5.10内核不兼容的问题,这个问题在zfs的2.1.6及以后的版本中得到了修复。
为了解决这个问题,我们提供了能正常安装的zfs的deb包,可以从开发板的官方工具中下载到。打开官方工具,然后进入Ubuntu和Debian系统使用的zfs相关的deb包文件夹后,可以看到Ubuntu20.04、Ubuntu22.04和Debian11三种类型的deb包,请下载需要的版本。
下载完对应版本的zfs deb包后,请将它们上传到开发板的Linux系统中。上传方法请参考上传文件到开发板Linux系统中的方法小节的说明。
上传完成后,再在开发板Linux系统的命令行中使用cd命令进入deb包的目录,然后使用下面的命令就可以安装zfs的deb包。
| orangepi@orangepi:~$ sudo apt install ./*.deb | 
安装完成后,使用下面的命令可以看到zfs相关的内核模块:
| orangepi@orangepi:~$ ls /lib/modules/5.10.160-rockchip-rk356x/updates/dkms/ icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko | 
然后重启下Linux系统就能看到zfs内核模块会自动加载了:
| orangepi@orangepi:~$ lsmod | grep "zfs" zfs 2801664 0 zunicode 327680 1 zfs zzstd 471040 1 zfs zlua 139264 1 zfs zcommon 69632 1 zfs znvpair 61440 2 zfs,zcommon zavl 16384 1 zfs icp 221184 1 zfs spl 77824 6 zfs,icp,zzstd,znvpair,zcommon,zavl | 
在Debian12中,zfs的默认版本为2.1.11,所以我们可以通过下面的命令直接安装zfs,再次提醒下,安装前需要确保系统已安装内核头文件的deb包。
| orangepi@orangepi:~$ sudo apt install -y zfsutils-linux zfs-dkms | 
创建ZFS池的方法
| ZFS是基于存储池的,我们可以将多个物理存储设备添加到池中,然后从这个池中分配存储空间。 下面的内容是基于开发板接了一个NVMe SSD和一个U盘来演示的。 | 
- 首先我们可以通过lsblk命令查看下开发板所有的存储设备,当前开发板接了一个NVMe SSD以及一个U盘,输出如下所示: 
- 然后输入下面的命令可以创建一个ZFS池,包含NVMe SSD和U盘两个存储设备 - orangepi@orangepi:~$ sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda 
- 然后使用zpool list命令可以看到系统已经创建了一个名为pool1的ZFS池,并且ZFS池pool1的大小是NVME SSD的大小加上U盘的大小 
- 然后执行df -h可以看到pool1被挂载到了/pool1目录 - orangepi@orangepi:~$ df -h 
 - Filesystem Size Used Avail Use% Mounted on - tmpfs 1.6G 18M 1.6G 2% /run 
 - /dev/mmcblk0p2 29G 6.0G 22G 22% / 
 - tmpfs 7.7G 46M 7.7G 1% /dev/shm 
 - tmpfs 5.0M 4.0K 5.0M 1% /run/lock 
 - tmpfs 7.7G 944K 7.7G 1% /tmp 
 - /dev/mmcblk0p1 1022M 115M 908M 12% /boot 
 - /dev/zram1 188M 4.5M 169M 3% /var/log 
 - tmpfs 1.6G 80K 1.6G 1% /run/user/1000 
 - pool1 489G 9.3M 489G 1% /pool1 
 
- 使用下面的命令可以看到pool1的文件系统类型为zfs - orangepi@orangepi:~$ mount | grep pool1 - pool1 on /pool1 type zfs (rw,xattr,noacl) 
- 然后我们可以测试下拷贝一个文件到ZFS池中 - orangepi@orangepi:~$ sudo cp -v /usr/local/test.mp4 /pool1/ - '/usr/local/test.mp4' -> '/pool1/test.mp4' 
测试ZFS的数据去重功能
- ZFS的数据去重功能默认是关闭的,我们需要执行下面的命令打开 - orangepi@orangepi:~$ sudo zfs set dedup=on pool1 
- 然后做一个简单的测试,首先进入pool1中,再执行下面的命令生成1个1G大小的随机文件 - orangepi@orangepi:~$ cd /pool1/ - root@orangepi:/pool1$ sudo dd if=/dev/urandom of=test.1g bs=1M count=1024 - 1024+0 records in - 1024+0 records out - 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s 
- 然后使用下面的命令将1G大小的随机文件拷贝1000份 
| root@orangepi:/pool1$ for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done | 
- 然后用du -lh可以看到目前池中总共有1002G的数据,但实际上ZFS池的大小只有504GB(SSD+U盘的总容量),是装不下那么大的数据的
| root@orangepi:/pool1$ du -lh 1002G | 
测试ZFS的数据压缩功能
- 因为存储的数据不同,压缩节省的磁盘空间也会有所不同,所以我们选择压缩比较大的纯文本文件来进行压缩测试,执行下面的命令将/var/log/和/etc/目录打包成tar包
- orangepi@orangepi:~$ cd /pool1/ - root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/ 
 
- 然后通过ls -lh命令可以看到的文件大小以及在ZFS池中占用的空间都是27M 
- 然后我们在ZFS池pool1中启用压缩功能 - root@orangepi:/pool1$ sudo zfs set compression=lz4 pool1 
- 然后再次执行下面的命令将/var/log/和/etc/目录打包成tar包 
| root@orangepi:/pool1$ sudo tar -cf text.tar /var/log/ /etc/ | 
关机和重启开发板的方法
- 在Linux系统运行的过程中,如果直接拔掉Type-C电源断电,可能会导致文件系统丢失某些数据或者损坏,所以在断电前请先使用poweroff命令关闭开发板的Linux系统,然后再拔掉电源。 - orangepi@orangepi:~$ sudo poweroff 
- 另外开发板配有开关机按键,还可以短按开发板上的开关机按键来关机。 
| 注意,Linux桌面版系统按下开关机按键后会弹出下图所示的确认框,需要点击Shut Down选项后才会关机。 | 
Linux SDK——orangepi-build使用说明
编译系统需求
| 我们可以在x64的电脑中交叉编译开发板的Linux镜像,也可以在开发板的Ubuntu22.04系统中来编译开发板的Linux镜像,请根据自己的喜好二选一。 
 | 
使用x64的Ubuntu22.04电脑编译
- Linux SDK,即orangepi-build,支持在安装有Ubuntu 22.04的电脑上运行,所以下载orangepi-build前,请首先确保自己电脑已安装的Ubuntu版本是Ubuntu 22.04。查看电脑已安装的Ubuntu版本的命令如下所示,如果Release字段显示的不是22.04,说明当前使用的Ubuntu版本不符合要求,请更换系统后再进行下面的操作。 - test@test:~$ lsb_release -a - No LSB modules are available. - Distributor ID: Ubuntu - Description: Ubuntu 22.04 LTS - Release: 22.04 - Codename: jammy 
- 如果电脑安装的是Windows系统,没有安装有Ubuntu 22.04的电脑,可以考虑使用VirtualBox或者VMware来在Windows系统中安装一个Ubuntu 22.04虚拟机。但是请注意,不要在WSL虚拟机上编译orangepi-build,因为orangepi-build没有在WSL虚拟机中测试过,所以无法确保能正常在WSL中使用orangepi-build。 
- Ubuntu 22.04 amd64版本的安装镜像下载地址为: - https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso - 或者 - https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso 
- 在电脑中或者虚拟机中安装完Ubuntu 22.04后,请先设置Ubuntu 22.04的软件源为清华源,不然后面安装软件的时候很容易由于网络原因而出错 - 替换清华源的方法参考这个网页的说明即可
 - 注意Ubuntu版本需要切换到22.04 
- 需要替换的/etc/apt/sources.list文件的内容为 - test@test:~$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak - test@test:~$ sudo vim /etc/apt/sources.list - # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 - deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse - # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse - deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse - # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse - deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse - # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse - deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse - # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse 
 - # 预发布软件源,不建议启用 - # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse - # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse 
- 替换完后需要更新下包信息,并确保没有报错 - test@test:~$ sudo apt update 
- 另外,由于内核和U-boot等源码都是存放在GitHub上的,所以编译镜像的时候请确保电脑能正常从GitHub下载代码,这点是非常重要的。 
 
获取Linux sdk的源码
从github下载orangepi-build
- Linux sdk其实指的就是orangepi-build这套代码,orangepi-build是基于armbian build编译系统修改而来的,使用orangepi-build可以编译出多个版本的Linux镜像。首先下载orangepi-build的代码,命令如下所示:
- test@test:~$ sudo apt-get update - test@test:~$ sudo apt-get install -y git - test@test:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next 
 
- 注意,Orange Pi 3B开发板是需要下载orangepi-build的next分支源码的,上面的git clone命令需要指定orangepi-build源码的分支为next。 
 
- 通过git clone命令下载orangepi-build的代码是不需要输入github账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入git clone命令后Ubuntu PC提示需要输入github账号的用户名和密码,一般都是git clone后面的orangepi-build仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供github账号的用户名和密码。 
 
- 开发板当前使用的u-boot和Linux内核版本如下所示
| 分支 | u-boot版本 | Linux内核版本 | 
| legacy | u-boot 2017.09 | Linux5.10 | 
| 这里所说的分支和orangepi-build源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的。 目前RK提供的Linux5.10 bsp内核我们定义为legacy分支。如果以后支持主线内核了,就会添加一个current分支。 | 
- orangepi-build下载完后会包含下面的文件和文件夹 - build.sh: 编译启动脚本 
- external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等 
- LICENSE: GPL 2许可证文件 
- README.md: orangepi-build说明文件 
- scripts: 编译linux镜像的通用脚本 - test@test:~/orangepi-build$ ls - build.sh external LICENSE README.md scripts - 如果是从github下载的orangepi-build的代码,下载完后你可能会发现orangepi-build中并没有包含u-boot和Linux内核的源码,也没有编译u-boot和Linux内核需要用到交叉编译工具链,这是正常的,因为这些东西都存放在其它单独的github仓库或者某些服务器上了(下文会详述其地址)。orangepi-build在脚本和配置文件中会指定u-boot、Linux内核和交叉编译工具链的地址,运行orangepi-build时,当其发现本地没有这些东西,会自动去相应的地方下载的。 
 
下载交叉编译工具链
| 只有在x64的电脑中使用orangepi-build编译镜像才会下载交叉编译工具链。在开发板的Ubuntu22.04中编译开发板的Linux镜像是不会下载交叉编译工具链的,此时orangepi-build/toolchains会是一个空文件夹。 | 
- orangepi-build第一次运行的时候会自动下载交叉编译工具链放在toolchains文件夹中,每次运行orangepi-build的build.sh脚本后,都会检查toolchains中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载。 
- 交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站 - https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/ 
- toolchains下载完后会包含多个版本的交叉编译工具链,开发板只会使用其中的两个 - test@test:~/orangepi-build$ ls toolchains/ - gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu - gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf - gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu - gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf - gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi - gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf - gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu - gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi - gcc-linaro-aarch64-none-elf-4.8-2013.11_linux - gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux - gcc-linaro-arm-none-eabi-4.8-2014.04_linux 
- 编译Linux内核源码使用的交叉编译工具链为 - linux5.10 - gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu 
 
- 编译u-boot源码使用的交叉编译工具链为 - v2017.09 - gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu 
 
orangepi-build完整目录结构说明
- orangepi-build仓库下载完后并不包含Linux内核、u-boot的源码以及交叉编译工具链,Linux内核和u-boot的源码存放在独立的git仓库中 - Linux内核源码存放的git仓库如下所示: - https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk35xx 
- u-boot源码存放的git仓库如下所示: - https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588 
 
- orangepi-build第一次运行的时候会去下载交叉编译工具链、u-boot和Linux内核源码,成功编译完一次Linux镜像后在orangepi-build中可以看到的文件和文件夹有 - build.sh: 编译启动脚本 
- external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的rootfs压缩包也存放在external中 
- kernel: 存放Linux内核的源码,里面名为orange-pi-5.10-rk35xx的文件夹存放的就是RK3588/RK3588S/RK3566系列开发板legacy分支的内核源码,内核源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载内核源码 
- LICENSE: GPL 2许可证文件 
- README.md: orangepi-build说明文件 
- output: 存放编译生成的u-boot、Linux等deb包、编译日志以及编译生成的镜像等文件 
- scripts: 编译Linux镜像的通用脚本 
- toolchains: 存放交叉编译工具链 
- u-boot: 存放u-boot的源码,里面名为v2017.09-rk3588的文件夹存放的就是RK3588/RK3588S/RK3566系列开发板legacy分支的u-boot源码,u-boot源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载u-boot源码 
- userpatches: 存放编译脚本需要用到的配置文件 - test@test:~/orangepi-build$ ls - build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches 
 
编译u-boot
- 运行build.sh脚本,记得加sudo权限 - test@test:~/orangepi-build$ sudo ./build.sh 
- 选择U-boot package,然后回车 
- 接着选择开发板的型号 
- 然后就会开始编译u-boot,编译时提示的部分信息说明如下 - u-boot源码的版本 - [ o.k. ] Compiling u-boot [ v2017.09 ] 
- 交叉编译工具链的版本 - [ o.k. ] Compiler version [ aarch64-linux-gnu-gcc 7.4.1 ] 
- 编译生成的u-boot deb包的路径 - [ o.k. ] Target directory [ orangepi-build/output/debs/u-boot ] 
- 编译生成的u-boot deb包的包名 - [ o.k. ] File name [ linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb ] 
- 编译使用的时间 - [ o.k. ] Runtime [ 1 min ] 
- 重复编译u-boot的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译u-boot - [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no ] 
 
- 查看编译生成的u-boot deb包 - test@test:~/orangepi-build$ ls output/debs/u-boot/ - linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb 
- 生成的u-boot的deb包包含的文件如下所示 - 使用下面的命令可以解压deb包 - test@test:~/orangepi-build$ cd output/debs/u-boot - test@test:~/orangepi_build/output/debs/u-boot$ $ dpkg -x \ - linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb . (注意命令最后有个”.”) - test@test:~/orangepi_build/output/debs/u-boot$ ls - linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb usr 
- 解压后的文件如下所示 - test@test:~/orangepi-build/output/debs/u-boot$ tree usr - usr - └── lib - ├── linux-u-boot-legacy-orangepi3b_1.0.0_arm64 
- │ ├── idbloader.img 
- │ ├── rkspi_loader.img 
- │ └── u-boot.itb 
- └── u-boot - ├── LICENSE 
- ├── orangepi-3b-rk3566_defconfig 
- └── platform_install.sh 
 
 
 - 3 directories, 6 files 
 
- orangepi-bulid编译系统编译u-boot源码时首先会将u-boot的源码和github服务器的u-boot源码进行同步,所以如果想修改u-boot的源码,首先需要关闭源码的下载更新功能(需要完整编译过一次u-boot后才能关闭这个功能,否则会提示找不到u-boot的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为u-boot的源码都已缓存好了),否则所作的修改都会被还原,方法如下: - 设置userpatches/config-default.conf中的IGNORE_UPDATES变量为”yes” - test@test:~/orangepi-build$ vim userpatches/config-default.conf - IGNORE_UPDATES="yes" 
- 调试u-boot代码时,可以使用下面的方法来更新Linux镜像中的u-boot进行测试 - 将编译好的u-boot的deb包上传到开发板的Linux系统中 - test@test:~/orangepi-build$ cd output/debs/u-boot - test@test:~/orangepi_build/output/debs/u-boot$ scp \ - linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb root@192.168.1.xxx:/root 
- 然后登录到开发板,卸载已安装的u-boot的deb包 - root@orangepi:~# apt purge -y linux-u-boot-orangepi3b-legacy 
- 再安装刚才上传的新的u-boot的deb包 - root@orangepi:~# dpkg -i linux-u-boot-legacy-orangepi3b_1.0.0_arm64.deb 
- 然后运行 nand-sata-install脚本 - root@orangepi:~# nand-sata-install 
- 然后选择5 Install/Update the bootloader on SD/eMM来更新TF卡中的u-boot或者7 Install/Update the bootloader on SPI Flash来更新SPI Flash中的u-boot 
- 按下回车键后首先会弹出一个Warning 
- 再按下回车键就会开始更新u-boot,更新完后会显示下面的信息 
- 然后就可以重启开发板来测试u-boot的修改是否生效了 
 
- 其它有用的信息 - u-boot 2017.09源码中,开发板使用的defconfig配置文件为 - orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi-3b-rk3566_defconfig 
- u-boot 2017.09源码中,开发板使用dts文件为 
 - orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3566-orangepi-3b.dts 
编译Linux内核
- 运行build.sh脚本,记得加sudo权限 - test@test:~/orangepi-build$ sudo ./build.sh 
- 选择Kernel package,然后回车 
- 接着选择开发板的型号 
- 然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个 
- 如果第4) 步选择了需要显示内核配置菜单(第二个选项),则会弹出通过make menuconfig打开的内核配置的界面,此时可以直接修改内核的配置,修改完后再保存退出即可,退出后会开始编译内核源码 - 如果不需要修改内核的配置选项,在运行build.sh脚本时,传入KERNEL_CONFIGURE=no就可临时屏蔽弹出内核的配置界面了 - test@test:~/orangepi-build$ sudo ./build.sh KERNEL_CONFIGURE=no 
- 也可以设置orangepi-build/userpatches/config-default.conf配置文件中的KERNEL_CONFIGURE=no,这样可以永久禁用这个功能 
- 编译内核的时候如果提示下面的错误,这是由于Ubuntu PC的终端界面太小,导致make menuconfig的界面无法显示,请把Ubuntu PC的终端调到最大,然后重新运行build.sh脚本 
 
- 编译内核源码时提示的部分信息说明如下 - Linux内核源码的版本 - [ o.k. ] Compiling current kernel [ 5.10.160 ] 
- 使用的交叉编译工具链的版本 - [ o.k. ] Compiler version [ aarch64-none-linux-gnu-gcc 11.2.1 ] 
- 内核默认使用的配置文件以及它存放的路径 - [ o.k. ] Using kernel config file [ config/kernel/linux-rockchip-rk356x-legacy.config ] 
- 编译生成的内核相关的deb包的路径 - [ o.k. ] Target directory [ orangepi-build/output/debs/ ] 
- 编译生成的内核镜像deb包的包名 - [ o.k. ] File name [ linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb ] 
- 编译使用的时间 - [ o.k. ] Runtime [ 5 min ] 
- 最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码 - [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no ] 
 
- 查看编译生成的内核相关的deb包 - linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb包含内核使用的dtb文件 
- linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb包含内核头文件 
- linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb包含内核镜像和内核模块 - test@test:~/orangepi-build$ ls output/debs/linux-* - output/debs/linux-dtb-legacy-rockchip-rk356x_1.0.0_arm64.deb - output/debs/linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb - output/debs/linux-headers-legacy-rockchip-rk356x_1.0.0_arm64.deb 
 
- 生成的linux-image的deb包包含的文件如下所示 - 使用下面的命令可以解压deb包 
 - test@test:~/orangepi-build$ cd output/debs - test@test:~/orangepi_build/output/debs$ mkdir test - test@test:~/orangepi_build/output/debs$ cp \ - linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb test/ - test@test:~/orangepi_build/output/debs$ cd test - test@test:~/orangepi_build/output/debs/test$ dpkg -x \ - linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb . - test@test:~/orangepi_build/output/debs/test$ ls - boot etc lib linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb usr - 解压后的文件如下所示 - test@test:~/orangepi-build/output/debs/test$ tree -L 2 - . - ├── boot - │ ├── config-5.10.160-rockchip-rk356x - │ ├── System.map-5.10.160-rockchip-rk356x - │ └── vmlinuz-5.10.160-rockchip-rk356x - ├── etc - │ └── kernel - ├── lib - │ └── modules - ├── linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb - └── usr - ├── lib 
- └── share 
 
 
- orangepi-bulid编译系统编译Linux内核源码时首先会将Linux内核源码和github服务器的Linux内核源码进行同步,所以如果想修改Linux内核的源码,首先需要关闭源码的更新功能(需要完整编译过一次Linux内核源码后才能关闭这个功能,否则会提示找不到Linux内核的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为Linux的源码都已缓存好了),否则所作的修改都会被还原,方法如下: - 设置userpatches/config-default.conf中的IGNORE_UPDATES变量为”yes” - test@test:~/orangepi-build$ vim userpatches/config-default.conf - IGNORE_UPDATES="yes" 
- 如果对内核做了修改,可以使用下面的方法来更新开发板Linux系统的内核和内核模块 - 将编译好的Linux内核的deb包上传到开发板的Linux系统中 - test@test:~/orangepi-build$ cd output/debs - test@test:~/orangepi-build/output/debs$ scp \ - linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb root@192.168.1.xxx:/root 
- 然后登录到开发板,卸载已安装的Linux内核的deb包 - root@orangepi:~# apt purge -y linux-image-legacy-rockchip-rk356x 
- 再安装刚才上传的新的Linux内核的deb包 - root@orangepi:~# dpkg -i linux-image-legacy-rockchip-rk356x_1.0.0_arm64.deb 
- 然后重启开发板,再查看内核相关的修改是否已生效 - root@orangepi:~# reboot 
 
- 其它有用的信息 - 内核配置文件存放位置如下所示,请不要到内核源码中去找开发板所使用的内核配置文件 
- 开发板使用的dts文件所在的位置为 
 - orangepi-build/external/config/kernel/linux-rockchip-rk356x-legacy.config - orangepi-build/kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts 
编译rootfs
- 运行build.sh脚本,记得加sudo权限 - test@test:~/orangepi-build$ sudo ./build.sh 
- 选择Rootfs and all deb packages,然后回车 
- 接着选择开发板的型号 
- 然后选择rootfs的类型 
- 然后选择镜像的类型 - Image with console interface (server)表示服务器版的镜像,体积比较小 
- Image with desktop environment表示带桌面的镜像,体积比较大 
 
- 如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了) 
- 如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前Ubuntu Jammy主要维护XFCE和Gnome两种桌面,Ubuntu Focal只维护XFCE桌面,Debian Bullseye主要维护XFCE和KDE桌面 - 然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。 
- 然后就会开始编译rootfs,编译时提示的部分信息说明如下所示 - rootfs的类型 - [ o.k. ] local not found [ Creating new rootfs cache for jammy] 
- 编译生成的rootfs压缩包的存放路径 - [ o.k. ] Target directory [ external/cache/rootfs ] 
- 编译生成的rootfs压缩包的名字 - [ o.k. ] File name [ jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 ] 
- 编译使用的时间 - [ o.k. ] Runtime [ 13 min ] 
 
- 查看编译生成的rootfs压缩包 - jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4是rootfs的压缩包,名字各字段的含义为 - a) jammy表示rootfs的Linux发行版的类型 
- b) xfce表示rootfs为桌面版的类型,如果为cli则表示服务器版类型 
- c) arm64表示rootfs的架构类型 
- d) f930ff6ebbac1a72108a2e100762b18f是由rootfs安装的所有软件包的包名生成的MD5哈希值,只要没有修改rootfs安装的软件包的列表,那么这个值就不会变,编译脚本会通过这个MD5哈希值来判断是否需要重新编译rootfs 
 
- jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list列出了rootfs安装的所有软件包的包名 - test@test:~/orangepi-build$ ls external/cache/rootfs/ - jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4 - jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current - jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list 
 
- 如果需要的rootfs在external/cache/rootfs下已经存在,那么再次编译rootfs就会直接跳过编译过程,不会重新开始编译,编译镜像的时候也会去external/cache/rootfs下查找是否已经有缓存可用的rootfs,如果有就直接使用,这样可以节省大量的下载编译时间。 
编译Linux镜像
- 运行build.sh脚本,记得加sudo权限 - test@test:~/orangepi-build$ sudo ./build.sh 
- 选择Full OS image for flashing,然后回车 
- 然后选择开发板的型号 
- 然后选择rootfs的类型 
- 然后选择镜像的类型 - Image with console interface > (server)表示服务器版的镜像,体积比较小 
- Image with desktop environment表示带桌面的镜像,体积比较大 
 
- 如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多(没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了) 
- 如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前Ubuntu Jammy主要维护XFCE和Gnome两种桌面,Ubuntu Focal只维护XFCE桌面,Debian Bullseye主要维护XFCE和KDE桌面 - 然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。 
- 然后就会开始编译Linux镜像,编译的大致流程如下 - 初始化Ubuntu PC的编译环境,安装编译过程需要的软件包 
- 下载u-boot和Linux内核的源码(如果已经缓存,则只更新代码) 
- 编译u-boot源码,生成u-boot的deb包 
- 编译Linux源码,生成Linux相关的deb包 
- 制作Linux firmware的deb包 
- 制作orangepi-config工具的deb包 
- 制作板级支持的deb包 
- 如果是编译desktop版镜像,还会制作desktop相关的deb包 
- 检查rootfs是否已经缓存,如果没有缓存,则重新制作rootfs,如果已经缓存,则直接解压使用 
- 安装前面生成的deb包到rootfs中 
- 对不同的开发板和不同类型镜像做一些特定的设置,如预装额外的软件包,修改系统配置等 
- 然后制作镜像文件,并格式化分区,默认类型为ext4 
- 再将配置好的rootfs拷贝到镜像的分区中 
- 然后更新initramfs 
- 最后将u-boot的bin文件通过dd命令写入到镜像中 
 
- 编译完镜像后会提示下面的信息 - 编译生成的镜像的存放路径 - [ o.k. ] Done building [ output/images/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160/Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.img ] 
- 编译使用的时间 
 - [ o.k. ] Runtime [ 19 min ] - 重复编译镜像的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译镜像 - [ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi3b BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ] 
 
Android 11系统的使用说明
已支持的Android版本
| Android版本 | 内核版本 | 
| Android 11 | Linux4.19 | 
Android 功能适配情况
| 功能 | Android 11 | 
| USB2.0x3 | OK | 
| USB3.0x1 | OK | 
| M.2 NVMe SSD启动 | OK | 
| WIFI | OK | 
| 蓝牙 | OK | 
| GPIO(40pin) | OK | 
| UART(40pin) | OK | 
| SPI(40pin) | OK | 
| I2C(40pin) | OK | 
| PWM(40pin) | OK | 
| PWM风扇接口 | OK | 
| 3pin调试串口 | OK | 
| EMMC | OK | 
| TF卡启动 | OK | 
| HDMI 视频 | OK | 
| HDMI 音频 | OK | 
| LCD | OK | 
| eDP显示 | OK | 
| Camera | NO | 
| 千兆网口 | OK | 
| 网口状态灯 | OK | 
| 耳机播放 | OK | 
| 耳机录音 | OK | 
| LED灯 | OK | 
| GPU | OK | 
| NPU | OK | 
| VPU | OK | 
| RTC | OK | 
WIFI的连接测试方法
- 首先点击进入Setting
- 打开Wi-Fi后如果一切正常,就可以扫描到附近的Wi-Fi热点了 
- 然后选择想连接的Wi-Fi后会弹出下图所示的密码输入界面 
- 然后使用键盘输入Wi-Fi对应的密码,再使用鼠标点击虚拟键盘中的回车按钮就会开始连接Wi-Fi了 
- Wi-Fi连接成功后的显示如下图所示: 
Wi-Fi hotspot的使用方法
- 首先请确保以太网口已连接网线,并且能正常上网 
- 然后选择Settings 
- 然后选择Network & internet 
- 然后选择Hotspot & tethering 
- 然后选择Wi-Fi hotspot 
- 然后打开Wi-Fi hotspot,下图中还可以看到生成的热点的名字和密码,记住它们,在连接热点的时候要用到(如果需要修改热点的名字和密码,需要先关闭Wi-Fi hotspot,然后才能修改) 
- 此时可以拿出你的手机,如果一切正常,在手机搜索到的WI-FI列表中就能找到上图Hotspot name下面显示的同名(这里为 AndroidAP_6953)的WIFI热点了。然后可以点击AndroidAP_6953连接热点,密码在上图的Hotspot password 下面可以看到 
蓝牙的测试方法
- 首先点击进入Setting 
- 然后选择Connected devices 
- 然后点击Pair new device打开蓝牙并开始扫描周围的蓝牙设备 
- 搜索到的蓝牙设备会在Available devices下面显示出来 
- 然后点击想要连接的蓝牙设备就可以开始配对了,当弹出下面的界面时,请使用鼠标选择Pair选项 
- 这里测试的是开发板和安卓手机蓝牙的配置过程,此时在手机上会弹出下面的确认界面,在手机上也点击配对按钮后就会开始配对过程 
- 配对完成后,可以看到如下图所示的已配对的蓝牙设备 
- 此时可以使用手机蓝牙给开发板发送一张图片,发送后,在开发板的安卓系统中可以看到下面的确认界面,然后点击Accept就可以开始接收手机发过来的图片了 
- 开发板Android系统蓝牙接收到的图片可以在文件管理器中打开Download目录查看 
树莓派5寸屏幕的使用方法
| 请确保使用的镜像为下面的两个版本的镜像: OrangePi3B_RK3566_Android11_lcd_v1.x.x.img OrangePi3B_RK3566_Android11_spi-nvme_lcd_v1.x.x.img | 
- 首先需要组装好屏幕,请参考树莓派5寸屏幕的组装方法 
- 给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示 
eDP屏幕的使用方法
- 目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下: 
- 将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口 
- 再给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示 
40pin 接口 GPIO、UART、SPI 和 PWM 测试
40pin GPIO 口测试
- 首先点击wiringOP图标打开wiringOP APP 
- wiringOP APP的主界面显示如下图所示,然后点击GPIO_TEST按钮打开GPIO测试界面 
- GPIO测试界面如下图所示,左边的两排CheckBox按钮跟40pin引脚是一一对应的关系。当勾选CheckBox按钮时,对应的GPIO引脚会被设置为OUT模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的GPIO READALL按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息;当点击BLINK ALL GPIO按钮时,程序会控制28个GPIO口不停的切换高低电平 
- 然后点击GPIO READALL按钮,输出信息如下图所示: 
- 开发板40pin中总共有28个GPIO口可以使用,下面以11号引脚——对应GPIO为GPIO3_C6 ——对应wPi序号为5——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的CheckBox按钮,当按钮为选中状态时,11号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功 
- 然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为高电平 
- 再次点击下图的CheckBox按钮取消勾选状态,11号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功 
- 然后点击GPIO READALL按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平 
40pin的UART测试
- Android中默认打开了UART7和UART9,在40pin的位置如下图所示,对应的设备节点分别是/dev/ttyS7和/dev/ttyS9 
- 首先点击wiringOP图标打开wiringOP APP 
- wiringOP APP的主界面显示如下图所示,然后点击UART_TEST按钮打开UART测试界面 
- APP的串口测试界面如下图所示 
- 下面以测试UART7为例,在选择框中选择/dev/ttyS7节点,在编辑框中输入想要设置的波特率,然后点击OPEN按钮打开/dev/ttyS7节点,打开成功后,OPEN按钮变为不可选中状态,CLOSE按钮和SEND按钮变为可选中状态
40pin的SPI测试
- 由 40pin 接口的原理图可知,Orange Pi 3B可用的 spi 为 spi3 
- 这里通过w25q64模块来测试SPI接口,首先在SPI3接口接入w25q64设备 
- 然后点击wiringOP图标打开wiringOP APP 
- wiringOP APP的主界面显示如下图所示,点击SPI_TEST按钮打开SPI的测试界面 
- 然后点击OPEN按钮初始化SPI 
40pin的PWM测试
- Android默认开启了PWM11,对应的引脚在40pin的所在位置如下图所示 
- 首先点击wiringOP图标打开wiringOP APP 
- 然后在wiringOP的主界面点击PWM_TEST按钮进入PWM的测试界面 
- PWM11对应的基地址是fe6f0030,PWM15对应的基地址是fe700030,这里pwmchip0右边显示是fdd70020.pwm, 这时需要点击下拉选项选择其它的pwmchip,直到右边显示fe6f0030.pwm或者fe700030.pwm为止 
- 当下拉选项选择pwmchip3时,右边对应的就是PWM11对应的基地址fe6f0030 
- 然后确认PWM的通道,默认是0通道,并确认PWM的周期,默认的配置是50000ns,转换为PWM频率是20KHz,可自行修改,点击EXPORT按钮导出PWM11 
- 然后拖动下面的拖动条,就可以改变PWM的占空比,然后勾选Enable就可以输出PWM波形了 
ADB的使用方法
使用网络连接adb调试
| 使用网络adb无需数据线来连接电脑和开发板,而是通过网络来通信,所以首先请确保开发板的有线或者无线网络已经连接好了,然后获取开发板的IP地址,后面要用到。 | 
- 确保Android系统的service.adb.tcp.port设置为5555端口号 - console:/ # getprop | grep "adb.tcp" - [service.adb.tcp.port]: [5555] 
- 如果service.adb.tcp.port没有设置,可以使用下面的命令设置网络adb的端口号 - console:/ # setprop service.adb.tcp.port 5555 - console:/ # stop adbd - console:/ # start adbd 
- 在Ubuntu PC上安装adb工具 - test@test:~$ sudo apt update - test@test:~$ sudo apt install -y adb 
- 然后在Ubuntu PC上连接网络adb - test@test:~$ adb connect 192.168.1.xxx (IP地址需要修改为开发板的IP地址) - * daemon not running; starting now at tcp:5037 - * daemon started successfully - connected to 192.168.1.xxx:5555 
 - test@test:~$ adb devices - List of devices attached - 192.168.1.xxx:5555 device 
- 然后在Ubuntu PC上通过adb shell就可以登录到android系统 - test@test:~$ adb shell - console:/ # 
附录
用户手册更新历史
| 版本 | 日期 | 更新说明 | 
| v1.0 | 2023-08-17 | 初始版本 | 
镜像更新历史
| 日期 | 更新说明 | 
| 2023-08-17 | Orangepi3b_1.0.0_ubuntu_focal_server_linux5.10.160.7z Orangepi3b_1.0.0_ubuntu_jammy_server_linux5.10.160.7z Orangepi3b_1.0.0_debian_bullseye_server_linux5.10.160.7z Orangepi3b_1.0.0_debian_bookworm_server_linux5.10.160.7z Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z Orangepi3b_1.0.0_debian_bookworm_desktop_xfce_linux5.10.160.7z 
 OrangePi3B_RK3566_Android11_lcd_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_spi-nvme_v1.0.0.tar.gz OrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz 
 
 | 
























































































































































































































































































































































































































































































































