主页
开发板系列
键盘电脑
平板电脑
开源手机
开源游戏机
Orange Pi OS
通用问题
开发板常见问题
英文网站
中文网站
英文论坛
中文论坛
打开主菜单
Wiki-Orange Pi
β
搜索
查看“Orange Pi 5 Plus”的源代码
←
Orange Pi 5 Plus
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<span id="orange-pi-5-plus的基本特性"></span> = '''Orange Pi 5 Plus的基本特性''' = <span id="什么是-orange-pi-5-plus"></span> == 什么是 Orange Pi 5 Plus == Orange Pi 5 Plus采用了瑞芯微RK3588新一代八核64位ARM处理器,具体为四核A76和四核A55,采用的三星8nm LP制程工艺,大核主频最高可达2.4GHz,集成ARM Mali-G610 MP4 GPU,内嵌高性能3D和2D图像加速模块,内置高达6 Tops算力的AI加速器NPU,可选4GB、8GB、16GB或者32GB内存,具有高达8K显示处理能力。 Orange Pi 5 Plus引出了相当丰富的接口,包括2个HDMI输出、1个HDMI输入、USB-C/DP接口、M.2 M-key PCIe3.0x4、M.2 E-key PCIe2.0x1、2个2.5G网口、eMMC扩展接口、USB2.0、USB3.0接口、红外、耳机、板载MIC、喇叭、RTC和40pin扩展排针等。可广泛适用于高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi 5 Plus支持Orange Pi 官方研发的操作系统Orange Pi OS,同时,支持Android 12.1、OpenWRT、Debian11、Debian12、Ubuntu20.04和Ubuntu22.04等操作系统。 <span id="orange-pi-5-plus的用途"></span> == Orange Pi 5 Plus的用途 == 我们可以用它实现: * 一台Linux桌面计算机 * 一台Linux网络服务器 * Android平板 * Android游戏机等 {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <br><big>'''当然还有其他更多的功能,依托强大的生态系统以及各式各样的扩展配件,Orange Pi可以帮助用户轻松实现从创意到原型再到批量生产的交付,是创客、梦想家、业余爱好者的理想创意平台。'''</big><br><br> |} <span id="section"></span> <span id="orange-pi-5-plus的硬件规格"></span> == Orange Pi 5 Plus的硬件规格 == {| class="wikitable" |- |colspan=2|<div style="text-align:center"><big>'''Orange Pi 5 PLUS硬件规格'''</big></div> |- | 主控芯片 | Rockchip RK3588(8nm LP制程) |- | CPU | • 8核64位处理器 • 4个Cortex-A76和4个Cortex-A55及独立的NEON协处理器 • Cortex-A76主频最高2.4GHz,Cortex-A55主频最高1.8GHz |- | GPU | • 集成ARM Mali-G610 • 内置 3D GPU • 兼容OpenGL ES1.1/2.0/3.2、OpenCL 2.2和Vulkan 1.2 |- | NPU | 内嵌的NPU支持INT4/INT8/INT16/FP16,算力高达6 Tops |- | PMU | RK806-1 |- | RAM | 4GB/8GB/16GB/32GB可选 |- | 存储 | • QSPI Nor FLASH: 16MB/32MB • MicroSD卡插槽 • eMMC插座,可外接eMMC模块 • 用于NVMe SSD (PCIe 3.0 x4) 的M.2 2280插槽 |- | USB | • 2 x USB3.0 • 2 x USB2.0 • 1 x Type-C |- | 视频 | • 2 x HDMI 2.1 输出,高达8K@60FPS • 1 x Type-C(DP 1.4A)输出,高达4K@60FPS • 1 x HDMI输入,高达4K@60FPS • 1 x MIPI DSI 4 Lane输出,高达4K@60FPS |- | TP接口 | 1 x 6Pin FPC插座 |- | 摄像头 | 1 x MIPI CSI 4 Lane |- | 音频 | • 1 x 3.5mm耳机孔音频输入/输出 • 1 x 板载MIC输入 • 2 x HDMI输出 • 1 x HDMI输入 • 1 x DP输出 • 1 x扬声器输出(2pin,1.25mm规格) |- | 以太网 | 2 x PCIe 2.5G 以太网口(RTL8125BG ) |- | 40pin扩展口 | 用于扩展UART、I2C、SPI、CAN、PWM、GPIO接口 |- | PCIe M.2 M-KEY | PCIe 3.0 x 4 lanes,用于接2280的NVMe SSD固态硬盘 |- | PCIe M.2 E-KEY | 包含PCIe 2.0 x 1/PCM/UART/USB2.0接口,支持2230的Wi-Fi6/BT模块 |- | 按键 | 1个MaskROM键,1个RECOVERY键,1个开关机键 |- | 供电 | 支持Type-C供电,5V@4A |- | 红外接收器 | 1个红外接收器 |- | LED | RGB LED三色指示灯 |- | 风扇接口 | 2pin,1.25mm规格,用于接5V风扇,支持PWM控制开关和转速 |- | RTC电池接口 | 2pin,1.25mm规格,用于给RTC模块供电 |- | 调试 | 3pin调试串口(UART) |- | 支持的操作系统 | Orangepi OS(Droid)、Orangepi OS(Arch)、Orangepi OS(OH)、Ubuntu20.04、Ubuntu22.04、Debian11、Debian12、OpenWRT和Android12等 |- |colspan=2|<div style="text-align:center"><big>'''外观规格介绍'''</big></div> |- | 产品尺寸 | 100mm*75mm |- | 重量 | 86.5g |} <span id="orange-pi-5-plus的顶层视图和底层视图"></span> == Orange Pi 5 Plus的顶层视图和底层视图 == <big>'''(顶层视图)'''</big><br> <div class="figure"> [[File:plus-5-1.jpeg]] </div> <big>'''(底层视图)'''</big><br> <div class="figure"> [[File:plus-5-2.jpeg]] </div> <span id="orange-pi-5-plus的接口详情图"></span> == Orange Pi 5 Plus的接口详情图 == <div class="figure"> [[File:plus-5-3.png]] </div> = '''开发板使用介绍''' = == 准备需要的配件 == <ol style="list-style-type: decimal;"> <li><p>TF卡,最小16GB容量(推荐32GB或以上)的'''class10'''级或以上的高速闪迪卡</p> <p>[[File:plus-5-4.png]]</p></li> <li><p>TF卡读卡器,用于将镜像烧录到TF卡中</p> <p>[[File:plus-5-5.png]]</p></li> <li><p>HDMI接口的显示器</p> <p>[[File:plus-5-6.png]]</p></li> <li><p>HDMI转HDMI连接线,用于将开发板连接到HDMI显示器或者电视进行显示</p> <p>[[File:plus-5-7.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <br><big>'''注意,如果想接4K或者8K显示器,请确保HDMI线支持4K或者8K视频显示。'''</big><br><br> |} <li><p>Type-C转HDMI线,通过Type-C接口将开发板连接到HDMI显示器或者电视进行显示</p> <div class="figure"> [[File:plus-5-8.png]] </div></li> <li><p>Type-C转USB转接头,用于通过Type-C接口连接USB存储设备或者鼠标键盘等USB设备('''开发板上有2个USB3.0 HOST接口和2个USB2.0 HOST接口,此配件一般用不到''')</p> <div class="figure"> [[File:plus-5-9.png]] </div></li> <li><p>10.1寸MIPI屏幕,用于显示开发板的系统界面(此屏幕和OPi5/OPi5B通用)</p> <div class="figure"> [[File:plus-5-10.png]] </div></li> <li><p>电源适配器,Orange Pi 5 Plus建议使用5V/4A的Type-C电源供电</p> <p>[[File:plus-5-11.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''开发板上有两个长得一样的Type-C接口,其中网口旁边竖着的那个才是电源接口,另外那个Type-C接口是没有供电功能的,请别接错了。'''</big> <p>[[File:plus-5-12.png]]</p> <big>'''<span style="color:#FF0000">开发板的Type-C电源接口不支持PD协商功能,只支持固定的5V电压输入。</span>'''</big> |}</li> <li><p>USB接口的鼠标和键盘,只要是标准USB接口的鼠标和键盘都可以,鼠标和键盘可以用来控制Orange Pi开发板</p> <p>[[File:plus-5-13.png]]</p></li> <li><p>USB摄像头</p> <p>[[File:plus-5-14.png]]</p></li> <li><p>5V的散热风扇。如下图所示,开发板上有用于接散热风扇的接口,接口规格为'''2pin 1.25mm间距'''</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <br><big>'''开发板上的风扇可以通过PWM来调节转速和开关。'''</big><br><br> |} <p>[[File:5-plus-15.png]]</p></li> <li><p>网线,用于将开发板连接到因特网</p> <p>[[File:plus-5-16.png]]</p></li> <li><p>Type-C接口的数据线,用于烧录镜像、使用ADB等功能</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>红外遥控器</p> <p>[[File:plus-5-18.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <br><big>'''注意,空调遥控或者电视机的遥控是无法控制Orange Pi开发板的,Orange Pi提供的操作系统默认只能保证Orange Pi提供的遥控器才可以使用。'''</big><br><br> |} </li> <li><p>1300万MIPI接口的OV13850摄像头(和OPi5/OPi5B通用)</p> <p>[[File:plus-5-19.png]]</p></li> <li><p>1300万MIPI接口的OV13855摄像头(和OPi5/OPi5B通用)</p> <p>[[File:plus-5-20.png]]</p></li> <li><p>M.2 M-KEY 2280规格的NVMe SSD固态硬盘,PCIe接口的规格为PCIe3.0x4</p> <p>[[File:plus-5-21.png]]</p></li> <li><p>eMMC扩展模块('''待添加实物图片''')</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''开发板上插入eMMC模块的位置如下图所示:'''</big> <p>[[File:plus-5-22.png]]</p> |}</li> <li><p>RTC电池,接口为2pin,1.25mm间距</p> <p>[[File:plus-5-23.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''开发板上接RTC电池接口的位置如下图所示:'''</big> <p>[[File:plus-5-24.png]]</p> |} </li> <li><p>喇叭,接口为2pin,1.25mm间距</p> <p>[[File:plus-5-25.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''开发板上接喇叭的接口位置如下图所示:'''</big> <p>[[File:plus-5-26.png]]</p> |} </li> <li><p>配套外壳('''待添加图片和组装方法''')</p></li> <li><p>'''3.3V'''的USB转TTL模块和杜邦线,使用串口调试功能时,需要USB转TTL模块和杜邦线来连接开发板和电脑</p> <p>[[File:plus-5-27.png]] [[File:plus-5-28.png]]</p></li> <li><p>安装有Ubuntu和Windows操作系统的个人电脑</p> {| class="wikitable" style="width: 600px" |- | style="text-align: left;"| 1 | style="text-align: left;"| Ubuntu22.04 PC | style="text-align: left;"| 可选,用于编译Linux源码 |- | style="text-align: left;"| 2 | style="text-align: left;"| Windows PC | style="text-align: left;"| 用于烧录Android和Linux镜像 |}</li></ol> == 下载开发板的镜像和相关的资料 == <ol start="1" style="list-style-type: decimal;"> <li><p>中文版资料的下载网址为为:</p> {| class="wikitable" style="width:800px;" |- | <big><p>'''http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html'''</p></big> |} <p>[[File:plus-5-29.png]]</p> <li><p>英文版资料的下载网址为:</p> {| class="wikitable" style="width:800px;" |- | <big>'''http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html'''</big> |} <p>[[File:plus-5-30.png]]</p></li> <li><p>资料主要包含</p> a. '''用户手册和原理图:'''保存在百度云盘和谷歌网盘上<br> b. '''官方工具:'''主要包括开发板使用过程中需要用到的软件<br> c. '''Android源码''':保存在百度云盘和谷歌网盘上<br> d. '''Linux源码''':保存在Github上<br> e. '''OpenWRT源码''':保存在Github上<br> f. '''Android镜像''':保存在百度云盘和谷歌网盘上<br> g. '''Ubuntu镜像''':保存在百度云盘和谷歌网盘上<br> h. '''Debian镜像''':保存在百度云盘和谷歌网盘上<br> i. '''Orange Pi OS镜像''':保存在百度云盘和谷歌网盘上<br> j. '''OpenWRT镜像''': 保存在百度云盘和谷歌网盘上 </li></ol> <span id="基于windows-pc将linux镜像烧录到tf卡的方法"></span> == 基于Windows PC将Linux镜像烧录到TF卡的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <br><big>'''注意,这里说的Linux镜像具体指的是从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi资料下载页面]下载的Debian、Ubuntu、OpenWRT或者OPi OS Arch这样的Linux发行版镜像。'''</big><br><br> |} <span id="使用balenaetcher烧录linux镜像的方法"></span> === 使用balenaEtcher烧录Linux镜像的方法 === <ol style="list-style-type: decimal;"> <li><p>首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后使用读卡器把TF卡插入电脑</p></li> <li><p>从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般在2GB以上。</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} </li> <li><p>然后下载Linux镜像的烧录软件——'''balenaEtcher''',下载地址为:</p></li> <big>'''https://www.balena.io/etcher/'''</big> </ol> <ol start="5" style="list-style-type: decimal;"> <li><p>进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方</p> <p>[[File:plus-5-32.png]]</p></li> <li><p>然后可以选择下载balenaEtcher的Portable版本的软件,Portable版本无需安装,双击打开就可以使用</p> <p>[[File:plus-5-33.png]]</p></li> <li><p>如果下载的是需要安装版本的balenaEtcher,请先安装再使用。如果下载的Portable版本balenaEtcher,直接双击打开即可,打开后的balenaEtcher界面如下图所示:</p> <p>[[File:plus-5-34.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''打开balenaEtcher时如果提示下面的错误:'''</big> <p>[[File:plus-5-35.png]]</p> <big>'''请选择balenaEtcher后点击右键,然后选择以管理员身份运行。'''</big> <p>[[File:plus-5-36.png]]</p> |} </li> </ol> <ol start="8" style="list-style-type: decimal;"> <li><p>使用balenaEtcher烧录Linux镜像的具体步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先选择要烧录的Linux镜像文件的路径</p></li> <li><p>然后选择TF卡的盘符</p></li> <li><p>最后点击Flash就会开始烧录Linux镜像到TF卡中</p> <p>[[File:plus-5-37.png]]</p></li></ol> </li> <li><p>balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中</p> <p>[[File:plus-5-38.png]]</p></li> <li><p>Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验</p> <p>[[File:plus-5-39.png]]</p></li> <li><p>成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了</p> <p>[[File:plus-5-40.png]]</p></li></ol> <span id="使用rkdevtool烧录linux镜像到tf卡中的方法"></span> === 使用RKDevTool烧录Linux镜像到TF卡中的方法 === <ol style="list-style-type: decimal;"> <li><p>首先需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>还需要准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后将TF卡插入开发板的卡槽中</p> <p>[[File:plus-5-42.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p> <ol style="list-style-type: lower-alpha;"> <li><p>在[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi的资料下载页面]首先选择'''官方工具''',然后进入下面的文件夹中</p> <p>[[File:plus-5-43.png]]</p></li> <li><p>然后下载下面的所有文件</p> <p>[[File:plus-5-44.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <br><big>'''注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。'''</big><br><br> |}</li></ol> </li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} </li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到'''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool'''烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Linux镜像到TF卡中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有连接Type-C电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了。Type-C电源接口的位置如下所示:</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示“'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后将鼠标光标放在下面的这片区域中</p> <p>[[File:plus-5-55.png]]</p></li> <li><p>然后点击鼠标右键会弹出下图所示的选择界面</p> <p>[[File:plus-5-56.png]]</p></li> <li><p>然后选择'''导入配置'''选项</p> <p>[[File:plus-5-57.png]]</p></li> <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk3588_linux_tfcard.cfg'''配置文件,再点击'''打开'''</p> <p>[[File:plus-5-58.png]]</p></li> <li><p>然后点击'''确定'''</p> <p>[[File:plus-5-59.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-60.png]]</p></li> <li><p>再选择前面下载的'''MiniLoader'''文件夹中'''MiniLoaderAll.bin''',再点击'''打开'''</p> <p>[[File:plus-5-61.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-62.png]]</p></li> <li><p>然后选择想要烧录的linux镜像的路径,再点击'''打开'''</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''在烧录镜像前,建议将要烧录的linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。'''</big> |} <p>[[File:plus-5-63.png]]</p></li> <li><p>然后请勾选上'''强制按地址写'''选项</p> <p>[[File:plus-5-64.png]]</p></li> <li><p>再点击执行按钮就会开始烧录linux镜像到开发板的tf卡中</p> <p>[[File:plus-5-65.png]]</p></li> <li><p>linux镜像烧录完后的显示log如下图所示</p> <p>[[File:plus-5-66.png]]</p></li> <li><p>烧录完linux镜像到tf卡中后,linux系统会自动启动。</p></li></ol> </li></ol> <span id="使用win32diskimager烧录linux镜像的方法"></span> === 使用Win32Diskimager烧录Linux镜像的方法 === <ol style="list-style-type: decimal;"> <li><p>首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后使用读卡器把TF卡插入电脑</p></li> <li><p>接着格式化TF卡</p> <ol style="list-style-type: lower-alpha;"> <li>可以使用'''SD Card Formatter'''这个软件格式化TF卡,其下载地址为</li> <big>'''https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip '''</big> </li> <li><p>下载完后直接解压安装即可,然后打开软件</p></li> <li><p>如果电脑只插入了TF卡,则”'''Select card'''”一栏中会显示TF卡的盘符,如果电脑插入了多个USB存储设备,可以通过下拉框选择TF卡对应的盘符</p> <div class="figure"> [[File:plus-5-67.png]] </div></li> <li><p>然后点击”'''Format'''”,格式化前会弹出一个警告框,选择”'''是(Y)'''”后就会开始格式化</p> [[File:plus-5-68.png]] </li> <li><p>格式化完TF卡后会弹出下图所示的信息,点击确定即可</p> <p>[[File:plus-5-69.png]]</p></li></ol> <li><p>从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} </li> <li><p>使用'''Win32Diskimager'''烧录Linux镜像到TF卡</p> <ol style="list-style-type: lower-alpha;"> <li>Win32Diskimager的下载页面为</li> <big>'''http://sourceforge.net/projects/win32diskimager/files/Archive/'''</big> </li></ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>下载完后直接安装即可,Win32Diskimager界面如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先选择镜像文件的路径</p></li> <li><p>然后确认下TF卡的盘符和”'''设备'''”一栏中显示的一致</p></li> <li><p>最后点击”'''写入'''”即可开始烧录</p> <p>[[File:plus-5-71.png]]</p></li></ol> </li> <li><p>镜像写入完成后,点击”'''退出'''”按钮退出即可,然后就可以拔出TF卡插到开发板中启动</p></li></ol> <span id="基于ubuntu-pc将linux镜像烧录到tf卡的方法"></span> == 基于Ubuntu PC将Linux镜像烧录到TF卡的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这里说的Linux镜像具体指的是从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi资料下载页面]下载的Debian、Ubuntu、OpenWRT或者OPi OS Arch这样的Linux发行版镜像,Ubuntu PC指的是安装了Ubuntu系统的个人电脑。'''</big><br> |} # 首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡 # 然后使用读卡器把TF卡插入电脑 # 下载balenaEtcher软件,下载地址为 ::{| class="wikitable" style="width:800px;" |- | '''https://www.balena.io/etcher/''' |} <ol start="4" style="list-style-type: decimal;"> <li><p>进入balenaEtcher下载页面后,点击绿色的下载按钮会跳到软件下载的地方</p> <p>[[File:plus-5-32.png]]</p></li> <li><p>然后选择下载Linux版本的软件即可</p> <p>[[File:plus-5-73.png]]</p></li> <li><p>从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} <p>7z结尾的压缩包的解压命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''7z x orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z'''</p> <p>test@test:~$ '''ls orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.*'''</p> <p>orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.sha #校验和文件</p> <p>orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img #镜像文件</p> |} <p>如果下载的是OpenWRT镜像,压缩包是以gz结尾的,解压命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''gunzip openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img.gz'''</p> <p>test@test:~$ '''ls openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img'''</p> <p>'''openwrt-aarch64-opi5plus-23.05-linux-5.10.110-ext4.img''' #镜像文件</p> |} </li> <li><p>解压镜像后可以先用'''sha256sum -c *.sha'''命令计算下校验和是否正确,如果提示'''成功'''说明下载的镜像没有错,可以放心的烧录到TF卡,如果提示'''校验和不匹配'''说明下载的镜像有问题,请尝试重新下载</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sha256sum -c *.sha'''</p> <p>orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.img: OK</p> |} <p>如果下载的是OpenWRT镜像,要对压缩包进行校验,不要解压后再校验</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sha256sum -c openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz.sha'''</p> <p>openwrt-aarch64-opi5plus-23.04-linux-5.10.110-ext4.img.gz: OK</p> |} </li> <li><p>然后在Ubuntu PC的图形界面双击'''balenaEtcher-1.14.3-x64.AppImage'''即可打开balenaEtcher('''无需安装'''),balenaEtcher打开后的界面显示如下图所示</p> <p>[[File:plus-5-75.png]]</p></li> <li><p>使用balenaEtcher烧录Linux镜像的具体步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先选择要烧录的Linux镜像文件的路径</p></li> <li><p>然后选择TF卡的盘符</p></li> <li><p>最后点击Flash就会开始烧录Linux镜像到TF卡中</p> <p>[[File:plus-5-76.png]]</p></li></ol> </li> <li><p>balenaEtcher烧录Linux镜像的过程显示的界面如下图所示,另外进度条显示紫色表示正在烧录Linux镜像到TF卡中</p> <p>[[File:plus-5-77.png]]</p></li></ol> <ol start="11" style="list-style-type: decimal;"> <li><p>Linux镜像烧录完后,balenaEtcher默认还会对烧录到TF卡中的镜像进行校验,确保烧录过程没有出问题。如下图所示,显示绿色的进度条就表示镜像已经烧录完成,balenaEtcher正在对烧录完成的镜像进行校验</p> <p>[[File:plus-5-78.png]]</p></li> <li><p>成功烧录完成后balenaEtcher的显示界面如下图所示,如果显示绿色的指示图标说明镜像烧录成功,此时就可以退出balenaEtcher,然后拔出TF卡插入到开发板的TF卡槽中使用了</p> <p>[[File:plus-5-79.png]]</p></li></ol> <span id="烧录linux镜像到emmc中的方法"></span> == 烧录Linux镜像到eMMC中的方法 == <span id="使用rkdevtool烧录linux镜像到emmc中的方法"></span> === 使用RKDevTool烧录Linux镜像到eMMC中的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这里说的Linux镜像具体指的是从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi资料下载页面]下载的Debian、Ubuntu、OpenWRT或者OPi OS Arch这样的Linux发行版镜像。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC接口的位置如下所示:</p> <p>[[File:plus-5-80-1.png]]</p></li> <li><p>还需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p> <ol style="list-style-type: lower-alpha;"> <li><p>在[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi的资料下载页面]首先选择官方工具,然后进入下面的文件夹中</p> <p>[[File:plus5-82.png]]</p></li> <li><p>然后下载下面的所有文件</p> <p>[[File:plus5-83.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。'''</big> |} </li></ol> </li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} </li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到 '''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool''' 烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Linux镜像到eMMC中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有插入TF卡,没有连接电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后将鼠标光标放在下面的这片区域中</p> <p>[[File:plus-5-55.png]]</p></li> <li><p>然后点击鼠标右键会弹出下图所示的选择界面</p> <p>[[File:plus-5-56.png]]</p></li> <li><p>然后选择'''导入配置'''选项</p> <p>[[File:plus-5-57.png]]</p></li> <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk3588_linux_emmc.cfg'''配置文件,再点击'''打开'''</p> <p>[[File:plus-5-97.png]]</p></li> <li><p>然后点击'''确定'''</p> <p>[[File:plus-5-98.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-99.png]]</p></li> <li><p>再选择前面下载的'''MiniLoader'''文件夹中'''MiniLoaderAll.bin''',再点击'''打开'''</p> <p>[[File:plus-5-100.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-101.png]]</p></li> <li><p>然后选择想要烧录的linux镜像的路径,再点击'''打开'''</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''在烧录镜像前,建议将要烧录的linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。'''</big> |} <p>[[File:plus-5-63.png]]</p></li> <li><p>然后请勾选上'''强制按地址写'''选项</p> <p>[[File:plus-5-103.png]]</p></li> <li><p>再点击执行按钮就会开始烧录linux镜像到开发板的eMMC中</p> <p>[[File:plus-5-104.png]]</p></li> <li><p>linux镜像烧录完后的显示log如下图所示</p> <p>[[File:plus-5-105.png]]</p></li> <li><p>烧录完linux镜像到eMMC中后,linux系统会自动启动。</p></li></ol> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPIFlash后再启动试下。清空SPIFlash的方法请参考[[Orange Pi 5 Plus#使用RKDevTool清空SPIFlash的方法|'''使用RKDevTool清空SPIFlash的方法''']]小节的内容。'''</big> |} </li></ol> <span id="使用dd命令烧录linux镜像到emmc中的方法"></span> === 使用dd命令烧录Linux镜像到eMMC中的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这里说的Linux镜像具体指的是从Orange Pi资料下载页面下载的Debian、Ubuntu、OpenWRT或者OPi OS Arch这样的Linux发行版镜像。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板预留了eMMC模块的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:</p> <p>[[File:plus-5-80-2.png]][[File:plus-5-80-3.png]]</p> <p>[[File:plus-5-80-4.png]]</p></li> <li><p>使用dd命令烧录linux镜像到eMMC中需要借助TF卡来完成,所以首先需要将linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入linux系统。烧录Linux镜像到TF卡的方法请见[[Orange Pi 5 Plus#基于Windows PC将Linux镜像烧录到TF卡的方法|'''基于Windows PC将Linux镜像烧录到TF卡的方法''']]和[[Orange Pi 5 Plus#基于Ubuntu PC将Linux镜像烧录到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧录到TF卡的方法''']]两小节的说明。</p></li> <li><p>使用TF卡启动linux系统后,我们首先将解压后的linux镜像文件(从官网下载的Debian、Ubuntu镜像或者OPi Arch镜像)上传到TF卡中。上传linux镜像文件到开发板中的方法请参考[[Orange Pi 5 Plus#上传文件到开发板Linux系统中的方法|'''上传文件到开发板Linux系统中的方法''']]小节的说明。</p></li> <li><p>上传完镜像到开发板的linux系统中后,我们再在开发板linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的linux镜像存放在'''/home/orangepi/Desktop'''目录下了,然后进入'''/home/orangepi/Desktop'''目录就能看到上传的镜像文件了。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''</p> <p>orangepi@orangepi:~/Desktop$ '''ls'''</p> <p>Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <p>'''怎么进入开发板linux系统的命令行?'''</p></li> # '''使用串口登录终端的方法请参考[[Orange Pi 5 Plus#调试串口的使用方法|调试串口的使用方法]]一小节的说明。''' # '''使用ssh远程登录linux系统请参考[[Orange Pi 5 Plus#SSH远程登录开发板|SSH远程登录开发板]]一小节的说明。''' # '''如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。''' |} </ol> <!-- --> <ol start="5" style="list-style-type: decimal;"> <li><p>接下来,我们先使用下面的命令确认下eMMC的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/Desktop$ '''ls /dev/mmcblk*boot0 | cut -c1-12'''</p> <p>'''<span style="color:#FF0000">/dev/mmcblk1</span>'''</p> |} </li> <li><p>然后我们可以使用dd命令清空下eMMC,注意'''of='''参数后面请填入上面命令输出的结果</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=<span style="color:#FF0000">/dev/mmcblk1</span> count=1000 status=progress'''</p> <p>orangepi@orangepi:~/Desktop$ '''sudo sync'''</p> |} </li> <li><p>然后就可以使用dd命令烧录开发板的linux镜像到eMMC中</p> <ol style="list-style-type: lower-alpha;"> <li><p>下面的命令中 '''if=''' > 参数后面是要填写linux镜像存放的完整路径+Linux镜像的名字(比如'''/home/orangepi/Desktop/Linux镜像的名字''')。因为上面我们已经进入linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。</p></li> <li><p>下面命令中的linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。</p> {| class="wikitable" style="width:1000px;" |- | <p>'''sudo dd bs=1M if=Orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=<span style="color:#FF0000">/dev/mmcblk1</span> status=progress'''</p> <p>'''sudo''' '''sync'''</p> |} </li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">注意,如果上传的是 .7z或者.xz 结尾linux镜像压缩文件,使用dd命令烧录前请记得先解压。</span>'''</big> <big>'''dd命令的所有参数的详细说明和更多用法可以在linux系统中执行man dd命令来查看。'''</big> |} </li></ol> </li> <li><p>当成功烧录开发板的linux镜像到eMMC后,此时就可以使用'''poweroff'''命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动eMMC中的linux系统了。</p></li></ol> <span id="烧录linux镜像到spiflashnvme-ssd中的方法"></span> == 烧录Linux镜像到SPIFlash+NVMe SSD中的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这里说的Linux镜像具体指的是从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi资料下载页面]下载的Debian、Ubuntu、OpenWRT或者OPi OS Arch这样的Linux发行版镜像。'''</big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <span id="使用rkdevtool烧录的方法"></span> === 使用dd命令烧录的方法 === <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个M-Key 2280规格的NVMe SSD固态硬盘,开发板M.2插槽PCIe接口的规格为PCIe3.0x4。</p> <p>[[File:plus-5-21.png]]</p></li> <li><p>然后把NVMe SSD插入下图所示的开发板的M.2 PCIe接口,并固定好</p> <p>[[File:plus-5-108.png]]</p></li> <li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>烧录linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入linux系统。烧录Linux镜像到TF卡的方法请见[[Orange Pi 5 Plus#基于Windows PC将Linux镜像烧录到TF卡的方法|'''基于Windows PC将Linux镜像烧录到TF卡的方法''']]和[[Orange Pi 5 Plus#基于Ubuntu PC将Linux镜像烧录到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧录到TF卡的方法''']]两小节的说明。</p></li> <li><p>使用TF卡启动linux系统后,我们首先烧录u-boot镜像到SPI Flash中</p> <ol style="list-style-type: lower-alpha;"> <li><p>先运行下'''nand-sata-install''','''<span style="color:#FF0000">普通用户记得加sudo权限</span>'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo nand-sata-install'''</p> |} </li> <li><p>然后选择'''7 Install/Update ther bootloader on SPI Flash'''</p></li> <div class="figure"> [[File:plus-5-110.png]] </div></li></ol> <ol start="3" style="list-style-type: lower-alpha;"> <li>然后选择'''<Yes>'''</li> <div class="figure"> [[File:plus-5-111.png]] </div></ol> <ol start="4" style="list-style-type: lower-alpha;"> <li>然后请耐心等待烧录完成,烧录完成后显示如下所示(左下角会显示一个'''Done'''):</li> [[File:plus-5-112.png]] {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''OPi OS Arch系统中没有nand-sata-install这个脚本,请使用下面的命令将u-boot镜像到SPI Flash中:'''</big> [orangepi@orangepi ~]$ '''sudo dd if=/boot/rkspi_loader.img of=/dev/mtdblock0''' |}</ol></ol> <ol start="6" style="list-style-type: decimal;"> <li><p>然后将linux镜像文件(从官网下载的Debian、Ubuntu或者OpenWRT镜像)上传到TF卡中。上传linux镜像文件到开发板中的方法请参考[[Orange Pi 5 Plus#上传文件到开发板Linux系统中的方法|'''上传文件到开发板Linux系统中的方法''']]小节的说明。</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} </li> <li><p>上传完镜像到开发板的linux系统中后,我们再在开发板linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的linux镜像存放在'''/home/orangepi/Desktop'''目录下了,然后进入'''/home/orangepi/Desktop'''目录就能看到上传的镜像文件了。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''</p> <p>orangepi@orangepi:~/Desktop$ '''ls'''</p> <p>orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''怎么进入开发板linux系统的命令行?'''</big> <ol start="1" style="list-style-type: decimal;"> <li><p>'''使用串口登录终端的方法请参考[[Orange Pi 5 Plus#调试串口的使用方法|调试串口的使用方法]]一小节的说明。'''</p></li> <li><p>'''使用ssh远程登录linux系统请参考[[Orange Pi 5 Plus#SSH远程登录开发板|SSH远程登录开发板]]一小节的说明。'''</p></li> <li><p>'''如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。'''</p> |} </li></ol> <!-- --> <ol start="8" style="list-style-type: decimal;"> <li><p>接下来,我们先确认下NVMe SSD已经被开发板的linux正常识别了。如果NVMe SSD正常识别了的话,使用'''sudo fdisk -l'''命令就能看到'''nvme'''相关的信息</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep "nvme0n1"'''</p> <p>Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors</p> |} <p>使用'''lspci'''命令可以看到一个NVMe相关的PCI设备</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lspci'''</p> <p>0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)</p> <p>0000:01:00.0 Non-Volatile memory controller: SK hynix BC501 '''<span style="color:#FF0000">NVMe</span>''' Solid State Drive</p> <p>.…</p> |} </li> <li><p>然后我们可以使用dd命令清空下NVMe SSD(可选)</p> {| class="wikitable" style="width:1000px;" |- | <p>orangepi@orangepi5plus:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''</p> <p>orangepi@orangepi5plus:~/Desktop$ '''sudo sync'''</p> |} </li> <li><p>然后就可以使用dd命令烧录开发板的linux镜像到NVMe SSD中</p> <ol style="list-style-type: lower-alpha;"> <li><p>下面的命令中 '''if=''' > 参数后面是要填写linux镜像存放的完整路径+Linux镜像的名字(比如'''/home/orangepi/Desktop/Linux镜像的名字''')。因为上面我们已经进入linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。</p></li> <li><p>下面命令中的linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。</p> {| class="wikitable" style="width:1000px;" |- | <p>'''sudo dd bs=1M if=orangepi5plus_x.x.x_debian_bullseye_desktop_xfce_linux5.10.110.img of=/dev/nvme0n1 status=progress'''</p> <p>'''sudo''' '''sync'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">注意,如果上传的是 .7z或者.xz 或者.gz结尾linux镜像压缩文件,使用dd命令烧录前请记得先解压。</span>'''</big> <big>'''dd命令的所有参数的详细说明和更多用法可以在linux系统中执行man dd命令来查看。'''</big> |} </li></ol> </li> <li><p>当成功烧录开发板的linux镜像到NVMe SSD后,此时就可以使用'''poweroff'''命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的linux系统了。</p></li></ol> <span id="使用balenaetcher软件烧录的方法"></span> === 使用balenaEtcher软件烧录的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''OPi OS Arch系统和OpenWRT系统请不要使用这种方法。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个M-Key 2280规格的NVMe SSD固态硬盘,开发板M.2插槽PCIe接口的规格为PCIe3.0x4。</p> <p>[[File:plus-5-21.png]]</p></li> <li><p>然后把NVMe SSD插入下图所示的开发板的M.2 PCIe接口,并固定好</p> <p>[[File:plus-5-108.png]]</p></li> <li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>烧录linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入linux系统。烧录Linux镜像到TF卡的方法请见[[Orange Pi 5 Plus#基于Windows PC将Linux镜像烧录到TF卡的方法|'''基于Windows PC将Linux镜像烧录到TF卡的方法''']]和[[Orange Pi 5 Plus#基于Ubuntu PC将Linux镜像烧录到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧录到TF卡的方法''']]两小节的说明。</p></li> <li><p>启动进入TF卡中的linux系统后,请先确认下NVMe SSD已经被开发板的linux系统正常识别了。如果NVMe SSD正常识别了的话,使用'''sudo fdisk -l'''命令就能看到'''nvme'''相关的信息</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep "nvme0n1"'''</p> <p>Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors</p> |} <p>使用'''lspci'''命令可以看到一个NVMe相关的PCI设备</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lspci'''</p> <p>0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)</p> <p>0000:01:00.0 Non-Volatile memory controller: SK hynix BC501 '''<span style="color:#FF0000">NVMe</span>''' Solid State Drive</p> <p>.…</p> |} </li> <li><p>linux镜像中已经预装了balenaEtcher,打开方法如下所示:</p></li> <div class="figure"> [[File:plus-5-117.png]] </div> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''如果没有预装,balenaEtcher arm64版本的下载安装方法请参考[[Orange Pi 5 Plus#下载安装arm64版本balenaEtcher的方法|下载安装arm64版本balenaEtcher的方法]]小节的说明。'''</big> |} </ol> <ol start="7" style="list-style-type: decimal;"> <li>balenaEtcher打开后的界面如下所示:</li> <div class="figure"> [[File:plus-5-118.png]] </div></ol> <ol start="8" style="list-style-type: decimal;"> <li><p>使用balenaEtcher烧录u-boot到开发板SPI Flash中的方法如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li>首先点击'''Flash from file'''</li> </li> <div class="figure"> [[File:plus-5-119.png]] </div></ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后进入'''/usr/lib/linux-u-boot-legacy-orangepi5plus_1.x.x_arm64'''目录,再选择'''rkspi_loader.img''',再点击'''Open'''打开</li> [[File:plus-5-120.png]] </ol> <ol start="3" style="list-style-type: lower-alpha;"> <li><p>打开'''rkspi_loader.img'''后的界面如下所示:</p> <p>[[File:plus-5-121.png]]</p></li> <li><p>然后点击'''Select target'''</p></li> <div class="figure"> [[File:plus-5-122.png]] </div></ol> <ol start="5" style="list-style-type: lower-alpha;"> <li>然后点击'''Show 2 hidden'''打开更多存储设备的选项</li> <div class="figure"> [[File:plus-5-123.png]] </div></ol> <ol start="6" style="list-style-type: lower-alpha;"> <li>然后选择SPI Flash的设备名'''/dev/mtdblock0''',然后点击'''Select'''</li> <div class="figure"> [[File:plus-5-124.png]] </div></ol> <ol start="7" style="list-style-type: lower-alpha;"> <li>然后点击'''Flash'''</li> <div class="figure"> [[File:plus-5-125.png]] </div></ol> <ol start="8" style="list-style-type: lower-alpha;"> <li>然后点击'''Yes, I’m sure'''</li> <div class="figure"> [[File:plus-5-126.png]] </div></ol> <ol start="9" style="list-style-type: lower-alpha;"> <li>然后输入开发板linux系统的密码'''orangepi''',就会开始烧录u-boot镜像到SPI Flash中</li> <div class="figure"> [[File:plus-5-127.png]] </div></ol> <ol start="10" style="list-style-type: lower-alpha;"> <li>烧录过程的显示如下所示:</li> <div class="figure"> [[File:plus-5-128.png]] </div></ol> <ol start="11" style="list-style-type: lower-alpha;"> <li>烧录完成后的显示如下所示:</li> <div class="figure"> [[File:plus-5-129.png]] </div></ol></ol> <ol start="9" style="list-style-type: decimal;"> <li><p>烧录TF卡中的linux系统到NVMe SSD中的方法(此方法相当于将TF卡中的系统克隆到NVMe SSD)</p> <ol style="list-style-type: lower-alpha;"> <li>首先点击'''Clone drive'''</li> </li> <div class="figure"> [[File:plus-5-130.png]] </div></ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后选择TF卡的设备名'''/dev/mmcblk1'''</li> <div class="figure"> [[File:plus-5-131.png]] </div></ol> <ol start="3" style="list-style-type: lower-alpha;"> <li>打开TF卡后的界面如下所示:</li> <div class="figure"> [[File:plus-5-132.png]] </div></ol> <ol start="4" style="list-style-type: lower-alpha;"> <li>然后点击'''Select target'''</li> <div class="figure"> [[File:plus-5-122.png]] </div></ol> <ol start="5" style="list-style-type: lower-alpha;"> <li>然后点击'''Show 2 hidden'''打开更多存储设备的选项</li> <div class="figure"> [[File:plus-5-123.png]] </div></ol> <ol start="6" style="list-style-type: lower-alpha;"> <li>然后选择NVMe SSD的设备名'''/dev/nvme0n1''',然后点击'''Select'''</li> [[File:plus-5-135.png]] </ol> <ol start="7" style="list-style-type: lower-alpha;"> <li>然后点击'''Flash'''</li> <div class="figure"> [[File:plus-5-136.png]] </div></ol> <ol start="8" style="list-style-type: lower-alpha;"> <li>然后点击'''Yes, I’m sure'''</li> <div class="figure"> [[File:plus-5-137.png]] </div></ol> <ol start="9" style="list-style-type: lower-alpha;"> <li>然后输入开发板linux系统的密码orangepi,就会开始烧录linux镜像到SSD中</li> <div class="figure"> [[File:plus-5-138.png]] </div></ol> <ol start="10" style="list-style-type: lower-alpha;"> <li>烧录过程的显示如下所示:</li> [[File:plus-5-139.png]] <div class="figure"> [[File:plus-5-140.png]] </div></ol> <ol start="11" style="list-style-type: lower-alpha;"> <li>烧录完成后的显示如下所示:</li> [[File:plus-5-141.png]] </ol> <ol start="12" style="list-style-type: lower-alpha;"> <li><p>然后需要扩容下NVMe SSD中rootfs分区的容量,步骤如下所示:</p> <ol style="list-style-type: none;"> <li>a) 首先打开'''GParted''',如果系统没有预装Gparted,请使用apt命令安装下</li> </li> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo apt-get install -y gparted''' |} <div class="figure"> [[File:plus-5-142.png]] </div></ol> <ol start="2" style="list-style-type: none;"> <li>b) 然后输入linux系统的密码orangepi,再点击'''Authenticate'''</li> [[File:plus-5-143.png]] </ol> <ol start="3" style="list-style-type: none;"> <li><p>c) 然后点击'''Fix'''</p> <p>[[File:plus-5-144.png]]</p></li> <li><p>d) 然后选择NVMe SSD</p></li> <div class="figure"> [[File:plus-5-145.png]] </div></ol> <ol start="5" style="list-style-type: none;"> <li>e) 选择NVMe SSD后的显示界面如下所所示:</li> <div class="figure"> [[File:plus-5-146.png]] </div></ol> <ol start="6" style="list-style-type: none;"> <li>f) 然后选择'''/dev/nvme0n1p2'''分区,再击点击右键,再选择'''Resize/Move'''</li> <div class="figure"> [[File:plus-5-147.png]] </div></ol> <ol start="7" style="list-style-type: none;"> <li><p>g) 然后在下图所示的位置将容量拖动到最大</p> <p>[[File:plus-5-148.png]]</p></li> <li><p>h) 然后点击'''Resize/Move'''</p> <p>[[File:plus-5-149.png]]</p></li> <li><p>i) 然后点击下图位置绿色的 '''<span style="color:green">√</span>'''</p> <p>[[File:plus-5-150.png]]</p></li> <li><p>j) 再点击'''Apply'''</p> <p>[[File:plus-5-151.png]]</p></li> <li><p>k) 然后点击'''Close'''关闭即可</p> <p>[[File:plus-5-152.png]]</p></li></ol></ol> <!-- --> <ol start="13" style="list-style-type: lower-alpha;"> <li>此时就可以使用'''sudo poweroff'''命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的linux系统了。</li></ol></ol> <!-- --> <ol start="10" style="list-style-type: decimal;"> <li><p>第'''9'''步是克隆TF卡中的系统到NMVe SSD中,我们还可以直接烧录linux镜像文件到NVMe SSD中,这里大概说下步骤:</p> <ol style="list-style-type: lower-alpha;"> <li><p>上传linux镜像文件到开发板的linux系统中</p></li> <li><p>然后使用balenaEtcher烧录即可</p> <p>[[File:plus-5-153.png]]</p></li> <li><p>'''使用这种方法烧录镜像后无需手动扩容,第一次启动会自动扩容。'''</p></li></ol> </li></ol> === 使用RKDevTool烧录的方法 === <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个M-Key 2280规格的NVMe SSD固态硬盘,开发板M.2插槽PCIe接口的规格为PCIe3.0x4。</p> <p>[[File:plus-5-21.png]]</p></li> <li><p>然后把NVMe SSD插入下图所示的开发板的M.2 PCIe接口,并固定好</p> <p>[[File:plus-5-108.png]]</p></li> <li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>然后需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p> <ol style="list-style-type: lower-alpha;"> <li><p>在[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi的资料下载页面]首先选择'''官方工具''',然后进入下面的文件夹中</p> <p>[[File:plus-5-31.png]]</p></li> <li><p>然后下载下面的所有文件</p> <p>[[File:plus5-159.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。'''</big> |}</li></ol> </li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载想要烧录的Linux操作系统镜像文件压缩包,然后使用解压软件解压,解压后的文件中,以”'''.img'''”结尾的文件就是操作系统的镜像文件,大小一般都在2GB以上</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果下载的是OpenWRT镜像,在OpenWRT镜像的下载链接中会看到下面两种类型的镜像,请下载”TF卡、eMMC和NVME SSD启动镜像”文件夹中的镜像文件。'''</big> <p>[[File:plus-5-31.png]]</p> |} </li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到 '''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool''' 烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Linux镜像到SSD中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有连接电源,'''<span style="color:#FF0000">并且没有插入TF卡或者eMMC模块</span>'''</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了。Type-C电源接口的位置如下所示:</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后将鼠标光标放在下面的这片区域中</p> <p>[[File:plus-5-55.png]]</p></li> <li><p>然后点击鼠标右键会弹出下图所示的选择界面</p> <p>[[File:plus-5-56.png]]</p></li> <li><p>然后选择'''导入配置'''选项</p> <p>[[File:plus-5-57.png]]</p></li> <li><p>然后进入前面下载的'''MiniLoader'''文件夹中,再进入'''pcie_loader'''文件夹中,然后选择'''rk3588_linux_pcie.cfg'''配置文件,再点击'''打开'''</p> <p>[[File:plus-5-173.png]]</p></li> <li><p>然后点击'''确定'''</p> <p>[[File:plus-5-174.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-175.png]]</p></li> <li><p>再选择前面下载的'''MiniLoader'''文件夹中'''MiniLoaderAll.bin''',再点击'''打开'''</p> <p>[[File:plus-5-61.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-177.png]]</p></li> <li><p>然后进入前面下载的'''MiniLoader'''文件夹中,然后选择'''rkspi_loader.img''',再点击'''打开'''</p> <p>[[File:plus-5-178.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-179.png]]</p></li> <li><p>然后选择想要烧录的linux镜像的路径,再点击'''打开'''</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''在烧录镜像前,建议将要烧录的linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。'''</big> |} <p>[[File:plus-5-63.png]]</p></li> <li><p>然后请勾选上'''强制按地址写'''选项</p> <p>[[File:plus-5-181.png]]</p></li> <li><p>再点击执行按钮就会开始烧录u-boot+linux镜像到SPIFlash+SSD中</p> <p>[[File:plus-5-182.png]]</p></li> <li><p>linux镜像烧录完后的显示log如下图所示</p> <p>[[File:plus-5-183.png]]</p></li> <li><p>镜像烧录完后会自动启动SPIFlash+PCIe SSD中的linux系统,如果没有正常启动,请重新上电试下。</p></li> </ol> </li></ol> <span id="烧录openwrt镜像到spi-flash中的方法"></span> == 烧录OpenWRT镜像到SPI FLASH中的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''此小节介绍的方法是烧录整个OpenWRT镜像到spi flash中,不需要nvme ssd。也就是说,u-boot、内核和rootfs都是存放在spi flash中的。'''</big><br> <big>'''由于开发板上的spi flash只有16MB,所以此系统基本无法安装多少软件,目前只能实现一些基础功能。'''</big> |} <span id="使用dd命令烧录的方法-1"></span> === 使用dd命令烧录的方法 === <ol style="list-style-type: decimal;"> <li><p>烧录OpenWRT镜像到SPIFlash中需要借助TF卡来完成,所以首先需要将支持TF卡启动的OpenWRT镜像烧录到TF卡上,然后使用TF卡启动开发板进入OpenWRT系统。烧录OpenWRT镜像到TF卡的方法请见[[Orange Pi 5 Plus#基于Ubuntu PC将Linux镜像烧录到TF卡的方法|'''基于Windows PC将Linux镜像烧写到TF卡的方法''']]和[[Orange Pi 5 Plus#基于Ubuntu PC将Linux镜像烧录到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧写到TF卡的方法''']]两小节的说明。</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载能够从'''SPIFlash'''启动的'''OpenWRT'''镜像。打开下载链接后可以看到下面两种类型的OpenWRT镜像,请选择'''SPIFlash启动镜像'''文件夹中的镜像进行下载</p> <p>[[File:plus5-194.png]]</p></li> <li><p>然后把从官网下载的镜像上传到TF卡中。</p></li> <li><p>然后再执行下面的命令即可将OpenWRT镜像烧写到SPIFlash中。'''<span style="color:#FF0000">注意if=后面需要指定镜像存放的实际路径</span>'''</p></li> {| class="wikitable" style="width:1000px;" |- | '''<span style="color:#FF0000">root@OpenWrt:~# dd if=openwrt-rockchip-armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin of=/dev/mtdblock0</span>''' |} <li><p>然后就可以使用'''poweroff'''命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash中的OpenWRT系统了</p></li></ol> <span id="使用-rkdevtool-烧录的方法"></span> === 使用 RKDevTool 烧录的方法 === <ol style="list-style-type: decimal;"> <li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>然后需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v2.96.zip''',<span style="color:#FF0000">请确保下载的'''RKDevTool'''工具的的版本为'''v2.96'''</span></p> <ol style="list-style-type: lower-alpha;"> <li><p>在[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi的资料下载页面]首先选择'''官方工具''',然后进入下面的文件夹中</p> <p>[[File:plus5-197.png]]</p></li> <li><p>然后下载下面的所有文件</p> <p>[[File:plus5-198.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。'''</big> |} </li></ol> </li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载能够从SPIFlash启动的OpenWRT镜像,受限于SPIFlash的容量,镜像是小于'''16MB'''的。打开下载链接后可以看到下面两种类型的'''OpenWRT'''镜像,请选择'''SPIFlash启动镜像'''文件夹中的镜像</p> <p>[[File:plus5-199.png]]</p></li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v2.96.zip''',此软件无需安装,在解压后的文件夹中找到 '''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool''' 烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录OpenWRT镜像到SPI FLASH中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有连接电源,'''<span style="color:#FF0000">并且没有插入TF卡和eMMC模块</span>'''</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后将鼠标光标放在下面的这片区域中</p> <p>[[File:plus-5-55.png]]</p></li> <li><p>然后点击鼠标右键会弹出下图所示的选择界面</p> <p>[[File:plus-5-56.png]]</p></li> <li><p>然后选择'''导入配置'''选项</p> <p>[[File:plus-5-57.png]]</p></li> <li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk3588_linux_spiflash.cfg'''配置文件,再点击'''打开'''</p> <p>[[File:plus-5-212.png]]</p></li> <li><p>然后点击'''确定'''</p> <div class="figure"> [[File:plus-5-213.png]] </div></li> <li><p>然后点击下图所示的位置</p> <div class="figure"> [[File:plus-5-214.png]] </div></li> <li><p>再选择前面下载的'''MiniLoader'''文件夹中'''MiniLoaderAll.bin''',再点击'''打开'''</p> <p>[[File:plus-5-215.png]]</p></li> <li><p>然后点击下图所示的位置</p> <div class="figure"> [[File:plus-5-216.png]] </div></li> <li><p>再选择想要烧录的OpenWRT镜像的路径,再点击'''打开'''</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">在烧录镜像前,建议将要烧录的OpenWRT镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。</span>'''</big> |} <div class="figure"> [[File:plus-5-63.png]] </div></li> <li><p>然后请确保'''强制按地址写'''选项已勾上</p> <div class="figure"> [[File:plus-5-218.png]] </div></li> <li><p>再点击'''执行'''按钮就会开始烧录OpenWRT镜像到SPIFlash中</p> <div class="figure"> [[File:plus-5-219.png]] </div></li> <li><p>OpenWRT镜像烧录完后的显示log如下图所示</p> <div class="figure"> [[File:plus-5-220.png]] </div></li> <li><p>OpenWRT镜像烧录完后会自动启动,如果没有正常启动,请重新上电试下。</p></li></ol> </li></ol> <span id="烧录android镜像到tf卡中的方法"></span> == 烧录Android镜像到TF卡中的方法 == <ol style="list-style-type: decimal;"> <li><p>首先准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''或以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后使用读卡器把TF卡插入电脑</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载SDDiskTool烧写工具,'''<span style="color:#FF0000">请确保SDDiskTool工具的版本为最新的v1.72</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Android12的镜像</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开安卓镜像的下载链接后可以看到下面两种类型的安卓镜像,请选择'''TF卡和eMMC启动镜像'''文件夹中的镜像进行下载</p> <p>[[File:plus-5-221.png]]</p></li> <li><p>进入'''TF卡和eMMC启动镜像'''文件夹后可以看到下面三个镜像,它们的区别是:</p> <ol style="list-style-type: lower-alpha;"> <li><p>第一个镜像专门用于HDMI显示的,支持8K显示,如果不使用LCD屏幕,请下载不带lcd的镜像</p></li> <li><p>如果要使用lcd屏幕,请选择带lcd的镜像</p></li> <li><p>带box的镜像是专用于电视盒子的镜像</p> <p>[[File:plus-5-222.png]]</p></li></ol> </li></ol> </li> <li><p>然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上</p></li> <li><p>然后使用解压软件解压'''SDDiskTool_v1.72.zip''',此软件无需安装,在解压后的文件夹中找到'''SD_Firmware_Tool.exe'''打开即可</p> <p>[[File:plus-5-223.png]]</p></li> <li><p>打开'''SDDiskTool'''后,如果TF卡识别正常,会在”'''选择可移动磁盘设备'''”一栏中显示插入的磁盘设备,'''<span style="color:#FF0000">请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的</span>''',如果没有显示可以尝试拔插下TF卡</p> <p>[[File:plus-5-224.png]]</p></li> <li><p>确认完盘符后,可以先格式化下TF卡,点击'''SDDiskTool'''中的'''恢复磁盘'''按钮即可,也可使用前面提到的'''SD Card Formatter'''进行TF卡的格式化</p> <p>[[File:plus-5-225.png]]</p></li> <li><p>然后开始将Android镜像写入TF卡</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在”'''选择功能模式'''”中勾选”'''SD启动'''”</p></li> <li><p>然后在”'''选择升级固件'''”一栏中选择Android镜像的路径</p></li> <li><p>最后点击”'''开始创建'''”按钮就会开始烧录Android镜像到TF卡中</p> <p>[[File:plus-5-226.png]]</p></li></ol> </li> <li><p>烧录完后即可退出SDDiskTool软件,然后就可以把TF卡从电脑中拔出来插到开发板中启动了</p> <p>[[File:plus-5-227.png]]</p></li></ol> <span id="烧录android镜像烧录到emmc中的方法"></span> == 烧录Android镜像烧录到eMMC中的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPIFlash后再启动试下。清空SPIFlash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。</span>'''</big> |} <span id="通过type-c线将android-镜像烧录到emmc中的方法"></span> === 通过Type-C线将Android 镜像烧录到eMMC中的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:</p> <p>[[File:plus-5-80-2.png]][[File:plus-5-80-3.png]]</p> <p>[[File:plus-5-80-4.png]]</p></li> <li><p>还需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和烧录工具'''<span style="color:#FF0000">RKDevTool_Release_v3.15.zip</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Android的镜像。</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开安卓镜像的下载链接后可以看到下面两种类型的安卓镜像,请选择'''TF卡和eMMC启动镜像'''文件夹中的镜像进行下载</p> <p>[[File:plus-5-221.png]]</p></li> <li><p>进入'''TF卡和eMMC启动镜像'''文件夹后可以看到下面三个镜像,它们的区别是:</p> <ol style="list-style-type: lower-alpha;"> <li><p>第一个镜像专门用于HDMI显示的,支持8K显示,如果不使用LCD屏幕,请下载不带lcd的镜像</p></li> <li><p>如果要使用lcd屏幕,请选择带lcd的镜像</p></li> <li><p>带box的镜像是专用于电视盒子的镜像</p> <p>[[File:plus-5-222.png]]</p></li></ol> </li></ol> </li> <li><p>然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上</p></li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到 '''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool''' 烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Android镜像到eMMC中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>然后确保开发板没有插入TF卡,没有连接电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后点击烧录工具的”'''升级固件'''”一栏</p> <p>[[File:plus-5-241.png]]</p></li> <li><p>接着点击”'''固件'''”按钮选择需要烧录的Android镜像的路径</p> <p>[[File:plus-5-242.png]]</p></li> <li><p>最后点击”'''升级'''”按钮就会开始烧录,烧录过程中的log如下图所示。烧录完成后Android系统会自动启动。</p> <p>[[File:plus-5-243.png]]</p></li></ol> </li></ol> <span id="通过tf卡将android-12镜像烧录到emmc中的方法"></span> === 通过TF卡将Android 12镜像烧录到eMMC中的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:</p> <p>[[File:plus-5-80-2.png]][[File:plus-5-80-3.png]]</p> <p>[[File:plus-5-80-4.png]]</p></li> <li><p>还需要准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''或以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后使用读卡器把TF卡插入电脑</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载SDDiskTool烧写工具,'''<span style="color:#FF0000">请确保SDDiskTool工具的版本为最新的v1.72</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Android的镜像</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开安卓镜像的下载链接后可以看到下面两种类型的安卓镜像,请选择'''TF卡和eMMC启动镜像'''文件夹中的镜像进行下载</p> <p>[[File:plus-5-221.png]]</p></li> <li><p>进入'''TF卡和eMMC启动镜像'''文件夹后可以看到下面三个镜像,它们的区别是:</p> <ol style="list-style-type: lower-alpha;"> <li><p>第一个镜像专门用于HDMI显示的,支持8K显示,如果不使用LCD屏幕,请下载不带lcd的镜像</p></li> <li><p>如果要使用lcd屏幕,请选择带lcd的镜像</p></li> <li><p>带box的镜像是专用于电视盒子的镜像</p> <p>[[File:plus-5-222.png]]</p></li></ol> </li></ol> </li> <li><p>然后使用解压软件解压下载的Android镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Android镜像文件,大小在1GB以上</p></li> <li><p>然后使用解压软件解压'''SDDiskTool_v1.72.zip''',此软件无需安装,在解压后的文件夹中找到'''SD_Firmware_Tool.exe'''打开即可</p> <p>[[File:plus-5-223.png]]</p></li> <li><p>打开'''SDDiskTool'''后,如果TF卡识别正常,会在”'''选择可移动磁盘设备'''”一栏中显示插入的磁盘设备,'''<span style="color:#FF0000">请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的</span>''',如果没有显示可以尝试拔插下TF卡</p> <p>[[File:plus-5-224.png]]</p></li> <li><p>确认完盘符后,可以先格式化下TF卡,点击'''SDDiskTool'''中的'''恢复磁盘'''按钮即可,也可使用前面提到的'''SD Card Formatter'''进行TF卡的格式化</p> <p>[[File:plus-5-225.png]]</p></li> <li><p>然后开始将Android镜像写入TF卡</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''“选择可移动磁盘设备”'''下面确认显示的盘符为TF卡对应的盘符</p></li> <li><p>然后在”'''选择功能模式'''”中选择'''“固件升级”'''</p></li> <li><p>然后在”'''选择升级固件'''”一栏中选择Android固件的路径</p></li> <li><p>最后点击”'''开始创建'''”按钮就会开始烧录</p> <p>[[File:plus-5-250.png]]</p></li></ol> </li> <li><p>烧录完成后的显示如下图所示,然后就可以退出SDDiskTool</p> <p>[[File:plus-5-251.png]]</p></li> <li><p>然后把TF卡从电脑中拔出来插到开发板中,开发板上电启动后就会自动开始将TF卡中的Android镜像烧录到开发板的eMMC中</p></li> <li><p>如果开发板连接了HDMI显示器,还可以从HDMI显示器中看到烧录Android镜像到eMMC中的进度条</p> <p>[[File:plus-5-252.png]]</p></li> <li><p>当HDMI显示器显示如下信息时,说明烧录Android镜像到eMMC中已完成,此时就可以拔出TF卡,然后eMMC中的安卓系统就会开始启动。</p> <p>[[File:plus-5-253.png]]</p></li></ol> <span id="烧录android镜像到spiflashnvme-ssd中的方法"></span> == 烧录Android镜像到SPIFlash+NVMe SSD中的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个M-Key 2280规格的NVMe SSD固态硬盘,开发板M.2插槽PCIe接口的规格为PCIe3.0x4。</p> <p>[[File:plus-5-21.png]]</p></li> <li><p>然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好</p> <p>[[File:plus-5-108.png]]</p></li> <li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>还需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和烧录工具'''<span style="color:#FF0000">RKDevTool_Release_v3.15.zip</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Android12的镜像</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开安卓镜像的下载链接后可以看到下面两种类型的安卓镜像,请选择'''SPIFlash-NVME > SSD启动镜像'''文件夹中的镜像进行下载</p> <p>[[File:plus-5-258.png]]</p></li> <li><p>进入'''SPIFlash-NVME > SSD启动镜像'''文件夹后可以看到下面三个镜像,它们的区别是:</p> <ol style="list-style-type: lower-alpha;"> <li><p>第一个镜像专门用于HDMI显示的,支持8K显示,如果不使用LCD屏幕,请下载不带lcd的镜像</p></li> <li><p>如果要使用lcd屏幕,请选择带lcd的镜像</p></li> <li><p>带box的镜像是专用于电视盒子的镜像</p> <p>[[File:plus-5-259.png]]</p></li></ol> </li></ol> </li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到 '''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool''' 烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Android镜像到SPIFlash+NVMe SSD中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有插入TF和eMMC模块,没有连接电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后点击烧录工具的”'''升级固件'''”一栏</p> <p>[[File:plus-5-241.png]]</p></li> <li><p>接着点击”'''固件'''”按钮选择需要烧录的Android镜像</p> <p>[[File:plus-5-242.png]]</p></li> <li><p>最后点击”'''升级'''”按钮就会开始烧录,烧录的过程如下图所示,可以看到,首先会烧录固件到SPIFlash中,然后烧录固件到PCIE中。烧录完成后Android系统会自动启动。</p> <p>[[File:plus-5-271.png]]</p></li></ol> </li></ol> <span id="烧录orange-pi-os-droid镜像到tf卡中的方法"></span> == 烧录Orange Pi OS (Droid)镜像到TF卡中的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''或以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后使用读卡器把TF卡插入电脑</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载SDDiskTool烧写工具,'''<span style="color:#FF0000">请确保SDDiskTool工具的版本为最新的v1.72</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Orange Pi OS (Droid)的镜像,打开Orange Pi OS (Droid)镜像的下载链接后可以看到下面两种类型的镜像,请选择下面的镜像</p> <p>[[File:plus-5-272.png]]</p></li> <li><p>然后使用解压软件解压下载的Orange Pi OS (Droid)镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Orange Pi OS (Droid)镜像文件,大小在1GB以上</p></li> <li><p>然后使用解压软件解压'''SDDiskTool_v1.72.zip''',此软件无需安装,在解压后的文件夹中找到'''SD_Firmware_Tool.exe'''打开即可</p> <p>[[File:plus-5-223.png]]</p></li> <li><p>打开'''SDDiskTool'''后,如果TF卡识别正常,会在”'''选择可移动磁盘设备'''”一栏中显示插入的磁盘设备,'''<span style="color:#FF0000">请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的</span>''',如果没有显示可以尝试拔插下TF卡</p> <p>[[File:plus-5-224.png]]</p></li> <li><p>确认完盘符后,可以先格式化下TF卡,点击'''SDDiskTool'''中的'''恢复磁盘'''按钮即可,也可使用前面提到的'''SD Card Formatter'''进行TF卡的格式化</p> <p>[[File:plus-5-225.png]]</p></li> <li><p>然后开始将Orange Pi OS (Droid)镜像写入TF卡</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在”'''选择功能模式'''”中勾选”'''SD启动'''”</p></li> <li><p>然后在”'''选择升级固件'''”一栏中选择Orange Pi OS (Droid)镜像的路径</p></li> <li><p>最后点击”'''开始创建'''”按钮就会开始烧录Orange Pi OS (Droid)镜像到TF卡中</p> <p>[[File:plus-5-226.png]]</p></li></ol> </li> <li><p>烧录完后即可退出SDDiskTool软件,然后就可以把TF卡从电脑中拔出来插到开发板中启动了</p></li> [[File:plus-5-227.png]] </ol> <span id="烧录orange-pi-os-droid镜像到emmc中的方法"></span> == 烧录Orange Pi OS (Droid)镜像到eMMC中的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">注意,烧录镜像到eMMC中后如果测试发现启动不了,请清空下SPIFlash后再启动试下。清空SPIFlash的方法请参考使用RKDevTool清空SPIFlash的方法小节的内容。</span>'''</big> |} <span id="通过type-c线将orange-pi-os-droid-镜像烧录到emmc"></span> === 通过Type-C线将Orange Pi OS (Droid) 镜像烧录到eMMC === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:</p> <p>[[File:plus-5-80-2.png]][[File:plus-5-80-3.png]]</p> <p>[[File:plus-5-80-4.png]]</p></li> <li><p>还需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和烧录工具'''<span style="color:#FF0000">RKDevTool_Release_v3.15.zip</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Orange Pi OS (Droid)的镜像</p> <p>[[File:plus-5-272.png]]</p></li> <li><p>然后使用解压软件解压下载的Orange Pi OS (Droid)镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Orange Pi OS (Droid)镜像文件,大小在1GB以上</p></li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到'''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool'''烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Orange Pi OS (Droid)镜像到eMMC中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有插入TF卡,没有连接电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后点击烧录工具的”'''升级固件'''”一栏</p> <p>[[File:plus-5-241.png]]</p></li> <li><p>接着点击”'''固件'''”按钮选择需要烧录的Orange Pi OS > (Droid)镜像的路径</p> <p>[[File:plus-5-242.png]]</p></li> <li><p>最后点击”'''升级'''”按钮就会开始烧录,烧录过程中的log如下图所示。烧录完成后Orange > Pi OS (Droid)系统会自动启动。</p> <p>[[File:plus-5-292.png]]</p></li></ol> </li></ol> <span id="通过tf卡将orange-pi-os-droid镜像烧录到emmc"></span> === 通过TF卡将Orange Pi OS (Droid)镜像烧录到eMMC === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板预留了eMMC的扩展接口,烧录系统到eMMC前,首先需要购买一个与开发板eMMC接口相匹配的eMMC模块。然后将eMMC模块安装到开发板上。eMMC模块和插入开发板的方法如下所示:</p> <p>[[File:plus-5-80-2.png]][[File:plus-5-80-3.png]]</p> <p>[[File:plus-5-80-4.png]]</p></li> <li><p>还需要准备一张8GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''或以上,建议使用闪迪等品牌的TF卡</p></li> <li><p>然后使用读卡器把TF卡插入电脑</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载SDDiskTool烧写工具,'''<span style="color:#FF0000">请确保SDDiskTool工具的版本为最新的v1.72</span>'''</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载Orange Pi OS (Droid)的镜像</p> <p>[[File:plus-5-272.png]]</p></li> <li><p>然后使用解压软件解压下载的Orange Pi OS (Droid)镜像的压缩包,解压后的文件中,以”.img” 结尾的文件就是Orange Pi OS (Droid)镜像文件,大小在1GB以上</p></li> <li><p>然后使用解压软件解压'''SDDiskTool_v1.72.zip''',此软件无需安装,在解压后的文件夹中找到'''SD_Firmware_Tool.exe'''打开即可</p> <p>[[File:plus-5-223.png]]</p></li> <li><p>打开'''SDDiskTool'''后,如果TF卡识别正常,会在”'''选择可移动磁盘设备'''”一栏中显示插入的磁盘设备,'''<span style="color:#FF0000">请务必确认显示的磁盘设备和你想烧录的TF卡的盘符是一致的</span>''',如果没有显示可以尝试拔插下TF卡</p> <p>[[File:plus-5-224.png]]</p></li> <li><p>确认完盘符后,可以先格式化下TF卡,点击'''SDDiskTool'''中的'''恢复磁盘'''按钮即可,也可使用前面提到的'''SD Card Formatter'''进行TF卡的格式化</p> <p>[[File:plus-5-225.png]]</p></li> <li><p>然后开始将Orange Pi OS (Droid)镜像写入TF卡</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''“选择可移动磁盘设备”'''下面确认显示的盘符为TF卡对应的盘符</p></li> <li><p>然后在”'''选择功能模式'''”中选择'''“固件升级”'''</p></li> <li><p>然后在”'''选择升级固件'''”一栏中选择Orange Pi OS (Droid)固件的路径</p></li> <li><p>最后点击”'''开始创建'''”按钮就会开始烧录</p> <p>[[File:plus-5-226.png]]</p></li></ol> </li> <li><p>烧录完成后的显示如下图所示,然后就可以退出SDDiskTool</p> <p>[[File:plus-5-227.png]]</p></li> <li><p>然后把TF卡从电脑中拔出来插到开发板中,开发板上电启动后就会自动开始将TF卡中的Orange Pi OS (Droid)镜像烧录到开发板的eMMC中</p></li> <li><p>如果开发板连接了HDMI显示器,还可以从HDMI显示器中看到烧录Orange Pi OS (Droid)镜像到eMMC中的进度条</p> <p>[[File:plus-5-252.png]]</p></li> <li><p>当HDMI显示器显示如下信息时,说明烧录Orange Pi OS (Droid)镜像到eMMC中已完成,此时就可以拔出TF卡,然后eMMC中的Orange Pi OS (Droid)系统就会开始启动。</p> <p>[[File:plus-5-253.png]]</p></li></ol> <span id="烧录orange-pi-os-droid镜像到spiflashnvme-ssd中"></span> == 烧录Orange Pi OS (Droid)镜像到SPIFlash+NVMe SSD中 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面所有的操作都是在Windows电脑中进行的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个2280规格的NVMe SSD固态硬盘,开发板M.2插槽PCIe接口的规格为PCIe3.0x4。</p> <p>[[File:plus-5-21.png]]</p></li> <li><p>然后把NVMe SSD插入开发板的M.2 PCIe接口,并固定好</p> <p>[[File:plus-5-108.png]]</p></li> <li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>还需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip''',烧录工具'''<span style="color:#FF0000">RKDevTool_Release_v3.15.zip</span>'''</p></li> <li><p>然后下载Orange Pi OS (Droid)的镜像,打开Orange Pi OS (Droid)镜像的下载链接后可以看到下面两种类型的镜像,请选择带'''spi-nvme'''的镜像进行下载</p> <p>[[File:plus-5-306.png]]</p></li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到'''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool'''烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后开始烧录Android镜像到SPIFlash+NVMe SSD中</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有插入TF和eMMC模块,没有连接电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后点击烧录工具的”'''升级固件'''”一栏</p> <p>[[File:plus-5-241.png]]</p></li> <li><p>接着点击”'''固件'''”按钮选择需要烧录的Orange Pi OS (Droid)镜像</p> <p>[[File:plus-5-242.png]]</p></li> <li><p>最后点击”'''升级'''”按钮就会开始烧录,烧录的过程如下图所示,可以看到,首先会烧录固件到SPIFlash中,然后烧录固件到PCIE中。烧录完成后Orange Pi OS (Droid)系统会自动启动。</p> <p>[[File:plus-5-318.png]]</p></li></ol> </li></ol> == 使用RKDevTool清空SPIFlash的方法 == <ol style="list-style-type: decimal;"> <li><p>SPI Flash在开发板上的位置如下图所示</p> <p>[[File:plus-5-109.png]]</p></li> <li><p>首先需要准备一根品质良好的Type-C接口的数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p> <ol style="list-style-type: lower-alpha;"> <li><p>在[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi的资料下载页面]首先选择'''官方工具''',然后进入下面的文件夹中</p> <p>[[File:plus5-321.png]]</p></li> <li><p>然后下载下面的所有文件</p> <p>[[File:plus5-322.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,“MiniLoader-烧录Linux镜像才需要用到的东西”文件夹下文简称为MiniLoader文件夹。'''</big> |} </li></ol> </li> <li><p>然后用解压软件解压'''DriverAssitant_v5.12.zip''',再在解压后的文件夹中找到'''DriverInstall.exe'''可执行文件并打开即可</p> <p>[[File:plus-5-46.png]]</p></li> <li><p>打开'''DriverInstall.exe'''后安装瑞芯微驱动的步骤如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>点击”'''驱动安装'''”按钮</p> <p>[[File:plus-5-47.png]]</p></li> <li><p>等待一段时间后,会弹出窗口提示”'''安装驱动成功'''”,然后点击'''“确定”'''按钮即可</p> <p>[[File:plus-5-48.png]]</p></li></ol> </li> <li><p>然后解压'''RKDevTool_Release_v3.15.zip''',此软件无需安装,在解压后的文件夹中找到 '''RKDevTool'''打开即可</p> <p>[[File:plus-5-49.png]]</p></li> <li><p>打开'''RKDevTool''' 烧录工具后,因为电脑此时还没有通过Type-C线连接上开发板,所以左下角会提示”'''没有发现设备'''”</p> <p>[[File:plus-5-50.png]]</p></li> <li><p>然后就可以开始清空SPI FLASH中的内容</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先通过Type-C数据线连接好开发板与Windows电脑,开发板Type-C接口的位置如下图所示</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>确保开发板没有连接电源</p></li> <li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p> <p>[[File:plus-5-52.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p> <p>[[File:plus-5-53.png]]</p></li> <li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p> <p>[[File:plus-5-54.png]]</p></li> <li><p>然后请选择'''高级功能'''</p> <p>[[File:plus-5-332.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-333.png]]</p></li> <li><p>再选择前面下载的'''MiniLoader'''文件夹中的'''MiniLoaderAll.bin''',再点击打开</p> <p>[[File:plus-5-215.png]]</p></li> <li><p>然后点击'''下载'''</p> <p>[[File:plus-5-335.png]]</p></li> <li><p>下载完'''MiniLoaderAll.bin'''后的显示如下图所示</p> <div class="figure"> [[File:plus-5-336.png]] </div></li> <li><p>然后选择存储设备为'''SPINOR'''</p> <div class="figure"> [[File:plus-5-337.png]] </div></li> <li><p>然后点击'''切换存储'''</p> <p>[[File:plus-5-338.png]]</p></li> <li><p>然后点击'''擦除所有'''就会开始擦除SPIFlash了</p> <div class="figure"> [[File:plus-5-339.png]] </div></li> <li><p>擦除SPIFlash后的显示log如下图所示</p> <div class="figure"> [[File:plus-5-340.png]] </div> </li></ol> == 启动香橙派开发板 == # 将烧录好镜像的TF卡或eMMC模块插入香橙派开发板的TF卡插槽中。如果SPIFlash+NVMe SSD已经烧录好镜像了,那么就不需要插入TF卡或eMMC模块了,只需确保NVMe SSD正常插入到开发板中即可。 # 开发板有HDMI接口,可以通过HDMI转HDMI连接线把开发板连接到电视或者HDMI显示器。如果有购买LCD屏幕,也可以使用LCD屏幕来显示开发板的系统界面。如果有Type-C转HDMI的线,也可以通过Type-C接口来显示开发板的系统界面。 # 接上USB鼠标和键盘,用于控制香橙派开发板。 # 开发板有以太网口,可以插入网线用来上网。 # 连接一个5V/4A的USB Type-C接口的'''高品质'''的电源适配。 ::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">切记不要插入电压输出大于5V的电源适配器,会烧坏开发板。</span>'''</big><br> <big>'''<span style="color:#FF0000">系统上电启动过程中很多不稳定的现象基本都是供电有问题导致的,所以一个靠谱的电源适配器很重要。如果启动过程中发现有不断重启的现象,请更换下电源或者Type-C数据线再试下。</span>'''</big><br> <big>'''<span style="color:#FF0000">Type-C电源接口是不支持PD协商的。</span>'''</big><br> <big>'''<span style="color:#FF0000">另外请不要接到电脑的USB接口来给开发板供电。</span>'''</big><br> |} ::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''开发板上有两个长得一样的Type-C接口,其中网口旁边竖着的那个才是电源接口,另外那个Type-C接口是没有供电功能的,请别接错了。'''</big><br> [[File:plus-5-12.png]] |} <ol start="6" style="list-style-type: decimal;"> <li><p>然后打开电源适配器的开关,如果一切正常,此时HDMI显示器或者LCD屏幕就能看到系统的启动画面了。</p></li> <li><p>如果想通过调试串口查看系统的输出信息,请使用串口线将开发板连接到电脑,串口的连接方法请参看[[Orange Pi 5 Plus#调试串口的使用方法|'''调试串口的使用方法''']]一节。</p></li></ol> == 调试串口的使用方法 == === 调试串口的连接说明 === <ol start="1" style="list-style-type: decimal;"> <li><p>首先需要准备一个'''3.3V'''的USB转TTL模块,然后将USB转TTL模块的USB接口一端插入到电脑的USB接口中。</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''为了更好的兼容性,推荐使用CH340 USB转TTL模块,请不要使用CP2102、PL2303类型的USB转TTL模块。'''</big> <big>'''购买USB转TTL模块前,请确认模块支持1500000速率的波特率。'''</big> |} [[File:plus-5-342.png]] </ol> <ol start="2" style="list-style-type: decimal;"> <li><p>开发板的调试串口GND、RXD和TXD引脚的对应关系如下图所示:</p> <p>[[File:plus-5-343.png]]</p></li> <li><p>USB转TTL模块GND、TXD和RXD引脚需要通过杜邦线连接到开发板的调试串口上</p> <ol style="list-style-type: lower-alpha;"> <li><p>USB转TTL模块的GND接到开发板的GND上</p></li> <li><p>USB转TTL模块的<span style="color:#FF0000">'''RX接到开发板的TX上'''</span></p></li> <li><p>USB转TTL模块的<span style="color:#FF0000">'''TX接到开发板的RX上'''</span></p></li></ol> </li> <li><p>USB转TTL模块连接电脑和Orange Pi开发板的示意图如下所示</p> <div class="figure"> [[File:plus-5-344.png]] </div> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''串口的TX和RX是需要交叉连接的,如果不想仔细区分TX和RX的顺序,可以把串口的TX和RX先随便接上,如果测试没有输出再交换下TX和RX的顺序,这样就总有一种顺序是对的。'''</big> |} </li></ol> <span id="ubuntu平台调试串口的使用方法"></span> === Ubuntu平台调试串口的使用方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''Linux下可以使用的串口调试软件有很多,如putty、minicom等,下面演示下putty的使用方法。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先将USB转TTL模块插入Ubuntu电脑的USB接口,如果USB转TTL模块连接识别正常,在Ubuntu PC的'''/dev'''下就可以看到对应的设备节点名,记住这个节点名,后面设置串口软件时会用到。</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''ls /dev/ttyUSB*'''</p> <p>/dev/ttyUSB0</p> |} </li> <li><p>然后使用下面的命令在Ubuntu PC上安装下putty</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt-get update'''</p> <p>test@test:~$ '''sudo apt-get install -y putty'''</p> |} </li> <li><p>然后运行putty,'''<span style="color:#FF0000">记得加sudo权限</span>'''</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo putty'''</p> |} </li> <li><p>执行putty命令后会弹出下面的界面</p> <p>[[File:plus-5-345.png]]</p></li> <li><p>首先选择串口的设置界面</p> <p>[[File:plus-5-346.png]]</p></li> <li><p>然后设置串口的参数</p> <ol style="list-style-type: lower-alpha;"> <li><p>设置Serial line to connect to为/dev/ttyUSB0(修改为对应的节点名,一般为/dev/ttyUSB0)</p></li> <li><p>设置Speed(baud)为'''1500000'''(串口的波特率)</p></li> <li><p>设置Flow control为None</p> <p>[[File:plus-5-347.png]]</p></li></ol> </li> <li><p>在串口的设置界面设置完后,再回到Session界面</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先选择Connection type为Serial</p></li> <li><p>然后点击Open按钮连接串口</p> <p>[[File:plus-5-348.png]]</p></li></ol> </li> <li><p>启动开发板后,就能从打开的串口终端中看到系统输出的Log信息了</p> <p>[[File:plus-5-349.png]]</p></li></ol> <span id="windows平台调试串口的使用方法"></span> === Windows平台调试串口的使用方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''Windows下可以使用的串口调试软件有很多,如SecureCRT、MobaXterm等,下面演示MobaXterm的使用方法,这款软件有免费版本,无需购买序列号即可使用。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>下载MobaXterm</p> <ol style="list-style-type: lower-alpha;"> <li><p>下载MobaXterm网址如下</p> <big>'''https://mobaxterm.mobatek.net'''</big> </li> <li><p>进入MobaXterm下载网页后点击'''GET XOBATERM NOW!'''</p> <p>[[File:plus-5-350.png]]</p></li> <li><p>然后选择下载Home版本</p> <p>[[File:plus-5-351.png]]</p></li> <li><p>然后选择Portable便携式版本,下载完后无需安装,直接打开就可以使用</p> <p>[[File:plus-5-352.png]]</p></li></ol> </li> <li><p>下载完后使用解压缩软件解压下载的压缩包,即可得到MobaXterm的可执软件,然后双击打开</p> <p>[[File:plus-5-353.png]]</p></li> <li><p>打开软件后,设置串口连接的步骤如下</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开会话的设置界面</p></li> <li><p>选择串口类型</p></li> <li><p>选择串口的端口号(根据实际的情况选择对应的端口号),如果看不到端口号,请使用[http://weishi.360.cn/qudongdashi/ '''360驱动大师''']扫描安装USB转TTL串口芯片的驱动</p></li> <li><p>选择串口的波特率为'''1500000'''</p></li> <li><p>最后点击”'''OK'''”按钮完成设置</p></li> </li> [[File:plus-5-354.png]] </ol></ol> <ol start="4" style="list-style-type: decimal;"> <li><p>点击“'''OK'''”按钮后会进入下面的界面,此时启动开发板就能看到串口的输出信息了</p> <p>[[File:plus-5-355.png]]</p></li></ol> == 使用开发板40pin接口中的5v引脚供电说明 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''我们推荐的开发板的供电方式是使用5V/4A或者5V/5A的Type C接口的电源线插到开发板的Type-C电源接口来供电的。如果需要使用40pin接口中的5V引脚来给开发板供电,请确保使用的电源线和电源适配器能满足开发板的供电需求。如果有使用不稳定的情况,请换回Type-C电源供电。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先需要准备一根下图所示的电源线</p> <p>[[File:5plus-1.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''上图所示的电源线在淘宝可以买到,请自行搜索购买。'''</big> |} </li> <li><p>使用40pin接口中的5V引脚来给开发板供电,电源线的接法如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>上图所示的电源线USB A口需要插到'''5V/4A'''或者'''5V/5A'''的电源适配器接头上'''(请不要插到电脑的USB接口来供电,一般的手机充电头也不行,因为开发板没有PD功能,一般的手机充电头只能输出最低的5V/2A)'''</p></li> <li><p>红色的杜邦线需要插到开发板40pin的5V引脚上</p></li> <li><p>黑色的杜邦线需要插到40pin接口的GND引脚上</p></li> <li><p>40pin接口5V引脚和GND引脚在开发板中的位置如下图所示,'''切记不要接反了'''</p> <p>[[File:5plus-2.png]]</p></li></ol> </li> </ol> <span id="ubuntudebian-server和xfce桌面系统使用说明"></span> = '''Ubuntu/Debian Server和Xfce桌面系统使用说明''' = {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''本章内容是基于Ubuntu/Debian的服务器版本镜像和xfce桌面版本镜像编写的。'''</big> <big>'''如果使用的是Ubuntu22.04 Gnome镜像,请先查看[[Orange Pi 5 Plus#Ubuntu22.04 Gnome Wayland桌面系统使用说明|Ubuntu22.04 Gnome Wayland桌面系统使用说明]]一章的说明。'''</big> <big>'''[[Orange Pi 5 Plus#Ubuntu22.04 Gnome Wayland桌面系统使用说明|Ubuntu22.04 Gnome Wayland桌面系统使用说明]]一章中不存在的内容,可以参考此章的说明,但是有些细节是会有差异的,这点请特别注意下。'''</big> <big>'''如果使用的是OPi OS Arch镜像,请查看[[Orange Pi 5 Plus#Orange Pi OS Arch系统使用说明|Orange Pi OS Arch系统使用说明]]一章的内容。'''</big> |} <span id="已支持的ubuntudebian镜像类型和内核版本"></span> == 已支持的Ubuntu/Debian镜像类型和内核版本 == {| class="wikitable" style="width: 600px" |- | style="text-align: left;"| '''Linux镜像类型''' | style="text-align: left;"| '''内核版本''' | style="text-align: left;"| '''服务器版''' | style="text-align: left;"| '''桌面版''' |- | style="text-align: left;"| '''Debian 11 - Bullseye''' | style="text-align: left;"| '''Linux5.10''' | style="text-align: left;"| '''支持''' | style="text-align: left;"| '''支持''' |- | style="text-align: left;"| '''Debian 12 - Bookworm''' | style="text-align: left;"| '''Linux5.10''' | style="text-align: left;"| '''支持''' | style="text-align: left;"| '''支持''' |- | style="text-align: left;"| '''Ubuntu 20.04 - Focal''' | style="text-align: left;"| '''Linux5.10''' | style="text-align: left;"| '''支持''' | style="text-align: left;"| '''支持''' |- | style="text-align: left;"| '''Ubuntu 22.04 - Jammy''' | style="text-align: left;"| '''Linux5.10''' | style="text-align: left;"| '''支持''' | style="text-align: left;"| '''支持''' |} == linux系统适配情况 == {| class="wikitable" style="width: 600px" |- | style="text-align: left;"| '''功能''' | style="text-align: left;"| '''Debian11''' | style="text-align: left;"| '''Debian12''' | style="text-align: left;"| '''Ubuntu20.04''' | style="text-align: left;"| '''Ubuntu22.04''' |- | style="text-align: left;"| '''HDMI TX1视频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2视频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX视频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB2.0X2''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB3.0X2''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口X2''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口灯''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''调试串口''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTC芯片''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''FAN风扇接口''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''eMMC扩展接口''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-WIFI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-BT''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-BT''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX210-WIFI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX210-BT''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-WIFI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-BT''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MaskROM按键''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C转USB3.0''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C ADB功能''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C DP视频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C DP音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''开关机按键''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''红外功能''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''三色LED灯''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''板载MIC''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机播放''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机录音''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPK喇叭''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN GPIO''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN I2C''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN SPI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN UART''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN CAN''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN PWM''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''TF卡启动''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPI+NVME启动''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13850摄像头''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13855摄像头''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''GPU''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''VPU''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''NPU''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''REBOOT命令重启''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Poweroff命令关机''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD显示''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD触摸''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Chromium硬解视频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |} == 本手册linux命令格式说明 == <ol style="list-style-type: decimal;"> <li><p>本手册中所有需要在Linux系统中输入的命令都会使用下面的方框框起来</p> {| class="wikitable" style="width:800px;height: 40px" |- | |} <p>如下所示,黄色方框里内容表示需要特别注意的内容,这里面的命令除外。</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;height: 40px" |- | |}</li> <li><p>命令前面的提示符类型说明</p> <ol style="list-style-type: lower-alpha;"> <li><p>命令前面提示符指的是下面方框内红色部分的内容,这部分内容不是linux命令的一部分,所以在linux系统中输入命令时,请不要把红色字体部分的内容也输入进去。</p> {| class="wikitable" style="width:800px;" |- | <p>'''<span style="color:#FF0000">orangepi@orangepi:~$</span> sudo apt update'''</p> <p>'''<span style="color:#FF0000">root@orangepi:~#</span>''' '''vim /boot/boot.cmd'''</p> <p>'''<span style="color:#FF0000">test@test:~$</span> ssh root@192.168.1.xxx'''</p> <p>'''<span style="color:#FF0000">root@test:~#</span> ls'''</p> |} </li> <li><p>'''<span style="color:#FF0000">root@orangepi:~$</span>''' 提示符表示这个命令是在'''开发板的linux系统'''中输入的,提示符最后的 '''<span style="color:#FF0000">$</span>''' 表示系统当前用户为普通用户,当执行特权命令时,需要加上'''sudo'''</p></li> <li><p>'''<span style="color:#FF0000">root@orangepi:~#</span>''' 提示符表示这个命令是在'''开发板的linux系统'''中输入的,提示符最后的 '''<span style="color:#FF0000">#</span>''' 表示系统当前用户为root用户,可以执行任何想要执行的命令</p></li> <li><p>'''<span style="color:#FF0000">test@test:~$</span>''' 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的linux系统中。提示符最后的 '''<span style="color:#FF0000">$</span>''' 表示系统当前用户为普通用户,当执行特权命令时,需要加上'''sudo'''</p></li> <li><p>'''<span style="color:#FF0000">root@test:~#</span>''' 提示符表示这个命令是在Ubuntu PC或者Ubuntu虚拟机中输入的,而不是开发板的linux系统中。提示符最后的 '''<span style="color:#FF0000">#</span>''' 表示系统当前用户为root用户,可以执行任何想要执行的命令</p></li></ol> </li> <li><p>哪些是需要输入的命令?</p> <ol style="list-style-type: lower-alpha;"> <li><p>如下所示,'''黑色加粗部分'''是需要输入的命令,命令下面的是输出的内容(有些命令有输出,有些可能没有输出),这部分内容是不需要输入的</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''cat /boot/orangepiEnv.txt'''</p> <p>'''<span style="color:#FF0000">verbosity=7</span>'''</p> <p>bootlogo=false</p> <p>'''<span style="color:#FF0000">console=serial</span>'''</p> |} </li> <li><p>如下所示,有些命令一行写不下会放到下一行,只要黑色加粗的部分就都是需要输入的命令。当这些命令输入到一行的时候,每行最后的”'''\'''”是需要去掉的,这个不是命令的一部分。另外命令的不同部分都是有空格的,请别漏了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''echo \'''</p> <p>'''"deb [arch=$(dpkg --print-architecture) \'''</p> <p>'''signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \'''</p> <p>'''https://download.docker.com/linux/debian \'''</p> <p>'''$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null'''</p> |} </li></ol> </li></ol> == linux系统登录说明 == === linux系统默认登录账号和密码 === {| class="wikitable" style="width: 600px" |- | style="text-align: left;"| '''账号''' | style="text-align: left;"| '''密码''' |- | style="text-align: left;"| '''root''' | style="text-align: left;"| '''orangepi''' |- | style="text-align: left;"| '''orangepi''' | style="text-align: left;"| '''orangepi''' |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,输入密码的时候,<span style="color:#FF0000">屏幕上是不会显示输入的密码的具体内容的</span>,请不要以为是有什么故障,输入完后直接回车即可。'''</big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''当输入密码提示错误,或者ssh连接有问题,请注意,只要使用的是Orange Pi提供的Linux镜像,<span style="color:#FF0000">就请不要怀疑上面的密码不对</span>,而是要找其它的原因。'''</big> |} === 设置linux系统终端自动登录的方法 === <ol style="list-style-type: decimal;"> <li><p>linux系统默认就是自动登录终端的,默认登录的用户名是'''<span style="color:#FF0000">orangepi</span>'''</p> <p>[[File:plus-5-356.png]]</p></li> <li><p>使用下面的命令可以设置root用户自动登录终端</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh root'''</p> |} </li> <li><p>使用下面的命令可以禁止自动登录终端</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh -d'''</p> |} </li> <li><p>使用下面的命令可以再次设置orangepi用户自动登录终端</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo auto_login_cli.sh orangepi'''</p> |} </li></ol> === linux桌面版系统自动登录说明 === <ol style="list-style-type: decimal;"> <li><p>桌面版系统启动后会自动登录进入桌面,无需输入密码</p> <div class="figure"> [[File:plus-5-357.png]] </div></li> <li><p>运行下面的命令可以禁止桌面版系统自动登录桌面</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo disable_desktop_autologin.sh'''</p> |} </li> <li><p>然后重启系统就会出现登录对话框,此时需要输入'''密码'''才能进入系统</p></li> <div class="figure"> [[File:plus-5-358.png]] </div></ol> <span id="linux桌面版系统root用户自动登录的设置方法"></span> === Linux桌面版系统root用户自动登录的设置方法 === <ol style="list-style-type: decimal;"> <li><p>执行下面的命令可以设置桌面版系统使用root用户自动登录</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo desktop_login.sh root'''</p> |} </li> <li><p>然后重启系统,就会自动使用root用户登录桌面了</p> <p>[[File:plus-5-359.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果使用root用户登录桌面系统,是无法使用右上角的pulseaudio来管理音频设备的。'''</big> <big>'''另外请注意这并不是一个bug,因为pulseaudio本来就不允许在root用户下运行。'''</big> |} </li> <li><p>执行下面的命令可以再次设置桌面版系统使用orangepi用户自动登录</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo desktop_login.sh orangepi'''</p> |} </li></ol> <span id="linux桌面版系统禁用桌面的方法"></span> === Linux桌面版系统禁用桌面的方法 === <ol style="list-style-type: decimal;"> <li><p>首先在命令行中输入下面的命令,'''<span style="color:#FF0000">请记得加sudo权限</span>'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo systemctl disable lightdm.service'''</p> |} </li> <li><p>然后重启Linux系统就会发现不会显示桌面了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo reboot'''</p> |} </li> <li><p>重新打开桌面的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在命令行中输入下面的命令,'''<span style="color:#FF0000">请记得加sudo权限</span>'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo systemctl start lightdm.service'''</p> |} </li> <li><p>选择完后显示器就会显示桌面了</p></li></ol> </li></ol> <span id="板载led灯测试说明"></span> == 板载LED灯测试说明 == <ol style="list-style-type: decimal;"> <li><p>开发板上有一个红绿蓝三色灯,所在位置如下图所示:</p> <p>[[File:plus-5-360.png]]</p></li> <li><p>'''<span style="color:#FF0000">只要开发板打开了电源,红色的LED灯就会常亮,这是由硬件控制的,软件无法关闭。通过红色的LED灯可以确定开发板的电源是否已正常开启。</span>'''</p></li> <li><p>绿色和蓝色的LED灯在内核启动后会一直闪烁,这是由软件控制的。</p></li> <li><p>使用命令设置绿灯亮灭和闪烁的方法如下所示:</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面的操作请在root用户下进行。'''</big> |} <ol style="list-style-type: lower-alpha;"> <li><p>首先进入绿灯的设置目录</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''cd /sys/class/leds/green_led'''</p> |} </li> <li><p>设置绿灯停止闪烁的命令如下</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:/sys/class/leds/green_led# '''echo none > trigger'''</p> |} </li> <li><p>设置绿灯常亮的命令如下</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:/sys/class/leds/green_led# '''echo default-on > trigger'''</p> |} </li> <li><p>设置绿灯闪烁的命令如下</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:/sys/class/leds/green_led# '''echo heartbeat > trigger'''</p> |} </li></ol> </li> <li><p>使用命令设置蓝灯亮灭和闪烁的方法如下所示:</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面的操作请在root用户下进行。'''</big> |} <ol style="list-style-type: lower-alpha;"> <li><p>首先进入蓝灯的设置目录</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''cd /sys/class/leds/blue_led'''</p> |} </li> <li><p>设置蓝灯停止闪烁的命令如下</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:/sys/class/leds/blue_led# '''echo none > trigger'''</p> |} </li> <li><p>设置蓝灯常亮的命令如下</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:/sys/class/leds/blue_led# '''echo default-on > trigger'''</p> |} </li> <li><p>设置蓝灯闪烁的命令如下</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:/sys/class/leds/blue_led# '''echo heartbeat > trigger'''</p> |} </li></ol> <li><p>如果开机后不需要LED灯闪烁,可以使用下面的方法来关闭绿灯和蓝灯</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p> </li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p> </li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''opi5plus-disable-leds'''配置</p> <p>[[File:5plus-53.png]]</p> </li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p> </li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p> </li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p> </li> <li><p>重启后就可以看到开发板上只有红灯常亮了,绿灯和蓝灯都不会闪烁了</p> </li></ol> </li></ol> == 网络连接测试 == <span id="g以太网口测试"></span> === 2.5G以太网口测试 === <ol style="list-style-type: decimal;"> <li><p>开发板有两个2.5G的以太网接口,两个网口的测试方法是一样的。首先将网线的一端插入开发板的以太网接口,网线的另一端接入路由器,并确保网络是畅通的。</p></li> <li><p>系统启动后会通过'''DHCP'''自动给以太网卡分配IP地址,'''<span style="color:#FF0000">不需要其他任何配置</span>'''。</p></li> <li><p>在开发板的Linux系统中查看IP地址的命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ip addr show'''</p> <p>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000</p> :<p>link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00</p> :<p>inet 127.0.0.1/8 scope host lo</p> ::<p>valid_lft forever preferred_lft forever</p> :<p>inet6 ::1/128 scope host</p> ::<p>valid_lft forever preferred_lft forever</p> <p>2: '''enP3p49s0''': <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000</p> :<p>link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff</p> :<p>inet '''192.168.1.245'''/24 brd 192.168.1.255 scope global dynamic noprefixroute enP3p49s0</p> ::<p>valid_lft 42537sec preferred_lft 42537sec</p> :<p>inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> <p>3: '''enP4p65s0''': <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000</p> :<p>link/ether 00:e0:4c:68:00:27 brd ff:ff:ff:ff:ff:ff</p> :<p>inet '''192.168.1.247'''/24 brd 192.168.1.255 scope global dynamic noprefixroute enP4p65s0</p> ::<p>valid_lft 43179sec preferred_lft 43179sec</p> :<p>inet6 fe80::62b5:dc5e:728e:39a3/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''当使用ifconfig查看IP地址时,如果提示下面的信息,是因为没有加sudo导致的,正确的命令是:sudo ifconfig'''</p></big> <p>orangepi@orangepi:~$ '''ifconfig'''</p> <p>Command 'ifconfig' is available in the following places</p> <p>* /sbin/ifconfig</p> <p>* /usr/sbin/ifconfig</p> <p>The command could not be located because '/sbin:/usr/sbin' is not included in the PATH environment variable.</p> <p>This is most likely caused by the lack of administrative privileges associated with your user account.</p> <p>ifconfig: command not found</p> |} </li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''开发板启动后查看IP地址有三种方法:''' # '''接HDMI显示器,然后登录系统使用ip addr show命令查看IP地址''' # '''在调试串口终端输入ip addr show命令来查看IP地址''' # '''如果没有调试串口,也没有HDMI显示器,还可以通过路由器的管理界面来查看开发板网口的IP地址。不过这种方法经常有人会无法正常看到开发板的IP地址。如果看不到,调试方法如下所示:''' <!-- --> <ol style="list-style-type: upper-alpha;"> <li><p>'''首先检查Linux系统是否已经正常启动,如果开发板的三色灯在闪烁了,一般是正常启动了,如果只亮红灯,说明系统都没正常启动;'''</p></li> <li><p>'''检查网线有没有插紧,或者换根网线试下;'''</p></li> <li><p>'''换个路由器试下(路由器的问题有遇到过很多,比如路由器无法正常分配IP地址,或者已正常分配IP地址但在路由器中看不到);'''</p></li> <li><p>'''如果没有路由器可换就只能连接HDMI显示器或者使用调试串口来查看IP地址。'''</p></li></ol> <p>'''另外需要注意的是开发板DHCP自动分配IP地址是不需要任何设置的。'''</p></big> |}</ol> <!-- --> <ol start="4" style="list-style-type: decimal;"> <li><p>测试网络连通性的命令如下,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ping www.baidu.com -I enP4p65s0 #其中一个网口的测试命令'''</p> <p>orangepi@orangepi:~$ '''ping www.baidu.com -I enP3p49s0 #另一个网口的测试命令'''</p> <p>PING www.a.shifen.com (14.119.104.254) from 192.168.1.182 enP3p49s0: 56(84) bytes of data.</p> <p>64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=56 time=6.26 ms</p> <p>64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=6 ttl=56 time=5.69 ms</p> <p>^C</p> <p>--- www.a.shifen.com ping statistics ---</p> <p>6 packets transmitted, 6 received, 0% packet loss, time 5008ms</p> <p>rtt min/avg/max/mdev = 5.671/5.859/6.264/0.202 ms</p> |} </li></ol> <span id="wifi连接测试"></span> === WIFI连接测试 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big> '''<span style="color:#FF0000">首先请注意Orange Pi 5 Plus开发板上是没有WIFI模块的,需要外接PCIe网卡或者USB网卡才能使用WIFI功能。</span>''' '''外接PCIe网卡的使用说明请参考[[Orange Pi 5 Plus#M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法|PCIe WIFI6+蓝牙模块的使用方法]]一小节。''' '''外接USB网卡的使用说明请参考[[Orange Pi 5 Plus#USB无线网卡测试|USB无线网卡测试]]一小节。''' </big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请不要通过修改/etc/network/interfaces配置文件的方式来连接WIFI,通过这种方式连接WIFI网络使用会有问题。'''</big> |} <span id="服务器版镜像通过命令连接wifi"></span> ==== 服务器版镜像通过命令连接WIFI ==== {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''当开发板没有连接以太网,没有连接HDMI显示器,只连接了串口时,推荐使用此小节演示的命令来连接WIFI网络。因为nmtui在某些串口软件(如minicom)中只能显示字符,无法正常显示图形界面。当然,如果开发板连接了以太网或者HDMI显示屏,也可以使用此小节演示的命令来连接WIFI网络的。''' '''<span style="color:#FF0000">下面演示的命令都是默认WIFI的网络设备节点名为wlan0,但不同的WIFI模块节点名会有不同,请注意替换为实际看到的节点名,不要照抄。</span>'''</big> |} <ol style="list-style-type: decimal;"> <li><p>先登录linux系统,有下面三种方式</p> <ol style="list-style-type: lower-alpha;"> <li>如果开发板连接了网线,可以通过'''ssh远程登录linux系统'''</li> <li><p>如果开发板连接好了调试串口,可以使用串口终端登录linux系统</p></li> <li><p>如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统</p></li></ol> </li> <li><p>首先使用'''nmcli dev wifi'''命令扫描周围的WIFI热点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''nmcli dev wifi'''</p> |} <div class="figure"> [[File:plus-5-361.png]] </div></li> <li><p>然后使用'''nmcli''' 命令连接扫描到的WIFI热点,其中:</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''wifi_name'''需要换成想连接的WIFI热点的名字</p></li> <li><p>'''wifi_passwd'''需要换成想连接的WIFI热点的密码</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''nmcli dev wifi connect <span style="color:#FF0000">wifi_name</span> password <span style="color:#FF0000">wifi_passwd</span>'''</p> <p>Device 'wlan0' successfully activated with 'cf937f88-ca1e-4411-bb50-61f402eef293'.</p> |} </li></ol> </li> <li><p>通过'''ip addr show wlan0'''命令可以查看wifi的IP地址</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''WIFI的设备节点名不一定都是wlan0,请以实际看到的为准。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ip addr show wlan0'''</p> <p>11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p> :<p>link/ether 23:8c:d6:ae:76:bb brd ff:ff:ff:ff:ff:ff</p> :<p>inet '''<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p> ::<p>valid_lft 259192sec preferred_lft 259192sec</p> :<p>inet6 240e:3b7:3240:c3a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p> ::<p>valid_lft 259192sec preferred_lft 172792sec</p> :<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> |} </li> <li><p>使用'''ping'''命令可以测试wifi网络的连通性,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''WIFI的设备节点名不一定都是wlan0,请以实际看到的为准。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''</p> <p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms</p> <p>^C</p> <p>--- www.orangepi.org ping statistics ---</p> <p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p> <p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p> |} </li></ol> <span id="服务器版镜像通过图形化方式连接wifi"></span> ==== 服务器版镜像通过图形化方式连接WIFI ==== <ol style="list-style-type: decimal;"> <li><p>先登录linux系统,有下面三种方式</p> <ol style="list-style-type: lower-alpha;"> <li><p>如果开发板连接了网线,可以通过'''ssh远程登录linux系统'''</p></li> <li><p>如果开发板连接好了调试串口,可以使用串口终端登录linux系统(串口软件请使用MobaXterm,使用minicom无法显示图形界面)</p></li> <li><p>如果连接了开发板到HDMI显示器,可以通过HDMI显示的终端登录到linux系统</p></li></ol> </li> <li><p>然后在命令行中输入nmtui命令打开wifi连接的界面</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''nmtui'''</p> |} </li> <li><p>输入nmtui命令打开的界面如下所示</p> <p>[[File:plus-5-362.png]]</p></li> <li><p>选择'''Activate a connect'''后回车</p> <p>[[File:plus-5-363.png]]</p></li> <li><p>然后就能看到所有搜索到的WIFI热点</p> <p>[[File:plus-5-364.png]]</p></li> <li><p>选择想要连接的WIFI热点后再使用Tab键将光标定位到'''Activate'''后回车</p> <p>[[File:plus-5-365.png]]</p></li> <li><p>然后会弹出输入密码的对话框,在'''Password'''内输入对应的密码然后回车就会开始连接WIFI</p> <p>[[File:plus-5-366.png]]</p></li> <li><p>WIFI连接成功后会在已连接的WIFI名称前显示一个”*”</p> <p>[[File:plus-5-367.png]]</p></li> <li><p>通过'''ip addr show wlan0'''命令可以查看wifi的IP地址</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''WIFI的设备节点名不一定都是wlan0,请以实际看到的为准。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ip addr show wlan0'''</p> <p>11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p> :<p>link/ether 24:8c:d3:aa:76:bb brd ff:ff:ff:ff:ff:ff</p> :<p>inet '''<span style="color:#FF0000">192.168.1.11</span>'''/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p> ::<p>valid_lft 259069sec preferred_lft 259069sec</p> :<p>inet6 240e:3b7:3240:c4a0:c401:a445:5002:ccdd/64 scope global dynamic noprefixroute</p> ::<p>valid_lft 259071sec preferred_lft 172671sec</p> :<p>inet6 fe80::42f1:6019:a80e:4c31/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> |} </li> <li><p>使用'''ping'''命令可以测试wifi网络的连通性,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''WIFI的设备节点名不一定都是wlan0,请以实际看到的为准。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0'''</p> <p>PING www.orangepi.org (182.92.236.130) from 192.168.1.49 wlan0: 56(84) bytes of data.</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=1 ttl=52 time=43.5 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=2 ttl=52 time=41.3 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=3 ttl=52 time=44.9 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=4 ttl=52 time=45.6 ms</p> <p>64 bytes from 182.92.236.130 (182.92.236.130): icmp_seq=5 ttl=52 time=48.8 ms</p> <p>^C</p> <p>--- www.orangepi.org ping statistics ---</p> <p>5 packets transmitted, 5 received, 0% packet loss, time 4006ms</p> <p>rtt min/avg/max/mdev = 41.321/44.864/48.834/2.484 ms</p> |} </li></ol> ==== 桌面版镜像的测试方法 ==== <ol style="list-style-type: decimal;"> <li><p>点击桌面右上角的网络配置图标(测试WIFI时请不要连接网线)</p> <p>[[File:plus-5-368.png]]</p></li> <li><p>在弹出的下拉框中点击'''More networks'''可以看到所有扫描到的WIFI热点,然后选择想要连接的WIFI热点</p> <p>[[File:plus-5-369.png]]</p></li> <li><p>然后输入WIFI热点的密码,再点击'''Connect'''就会开始连接WIFI</p> <p>[[File:plus-5-370.png]]</p></li> <li><p>连接好WIFI后,可以打开浏览器查看是否能上网,浏览器的入口如下图所示</p> <p>[[File:plus-5-371.png]]</p></li> <li><p>打开浏览器后如果能打开其他网页说明WIFI连接正常</p> <div class="figure"> [[File:plus-5-372.png]] </div></li></ol> <span id="设置静态ip地址的方法"></span> === 设置静态IP地址的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请不要通过修改/etc/network/interfaces配置文件的方式来设置静态IP地址。'''</big> |} <span id="使用nmtui命令来设置静态ip地址"></span> ==== 使用nmtui命令来设置静态IP地址 ==== <ol style="list-style-type: decimal;"> <li><p>首先运行'''nmtui'''命令</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''nmtui'''</p> |} </li> <li><p>然后选择'''Edit a connection'''并按下回车键</p> <p>[[File:plus-5-373.png]]</p></li> <li><p>然后选择需要设置静态IP地址的网络接口,比如设置'''Ethernet'''接口的静态IP地址选择'''Wired connection 1'''或者'''Wired connection 2'''</p> <p>[[File:plus-5-374.png]]</p></li> <li><p>然后通过'''Tab'''键选择'''Edit'''并按下回车键</p> <p>[[File:plus-5-375.png]]</p></li> <li><p>然后通过Tab键将光标移动到下图所示的'''<Automatic>'''位置进行IPv4的配置</p> <p>[[File:plus-5-376.png]]</p></li> <li><p>然后回车,通过上下方向键选择'''Manual''',然后回车确定</p> <p>[[File:plus-5-377.png]]</p></li> <li><p>选择完后的显示如下图所示</p> <p>[[File:plus-5-378.png]]</p></li> <li><p>然后通过Tab键将光标移动到'''<Show>'''</p> <p>[[File:plus-5-379.png]]</p></li> <li><p>然后回车,回车后会弹出下面的设置界面</p> <p>[[File:plus-5-380.png]]</p></li> <li><p>然后就可以在下图所示的位置设置IP地址(Addresses)、网关(Gateway)和DNS服务器的地址(里面还有很多其他设置选项,请自行探索),'''<span style="color:#FF0000">请根据自己的具体需求来设置,下图中设置的值只是一个示例</span>'''</p> <p>[[File:plus-5-381.png]]</p></li> <li><p>设置完后将光标移动到右下角的'''<OK>''',然后回车确认</p> <p>[[File:plus-5-382.png]]</p></li> <li><p>然后点击'''<Back>'''回退到上一级选择界面</p> <p>[[File:plus-5-383.png]]</p></li> <li><p>然后选择'''Activate a connection''',再将光标移动到'''<OK>''',最后点击回车</p> <p>[[File:plus-5-384.png]]</p></li> <li><p>然后选择需要设置的网络接口,比如'''Wired connection 2''',然后将光标移动到'''<Deactivate>''',再按下回车键禁用'''Wired connection 2'''</p> <p>[[File:plus-5-385.png]]</p></li> <li><p>然重新选择并使能'''Wired connection 2''',这样前面设置的静态IP就会生效了</p> <p>[[File:plus-5-386.png]]</p></li> <li><p>然后通过'''<Back>'''和'''Quit'''按钮就可以退出nmtui</p> <p>[[File:plus-5-387.png]] [[File:plus-5-388.png]]</p></li> <li><p>然后通过'''ip addr show'''就能看到网口的IP地址已经变成前面设置的静态IP地址了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ip addr show enP4p65s0'''</p> <p>3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000</p> :<p>link/ether 5e:ac:14:a5:92:b3 brd ff:ff:ff:ff:ff:ff</p> :<p>inet '''192.168.1.100'''/24 brd 192.168.1.255 scope global noprefixroute enP4p65s0</p> ::<p>valid_lft forever preferred_lft forever</p> :<p>inet6 241e:3b8:3240:c3a0:e269:8305:dc08:135e/64 scope global dynamic noprefixroute</p> ::<p>valid_lft 259149sec preferred_lft 172749sec</p> :<p>inet6 fe80::957d:bbbe:4928:3604/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> |} </li> <li><p>然后就可以测试网络的连通性来检查IP地址是否配置OK了,'''ping'''命令可以通过'''Ctrl+C'''快捷键来中断运行</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ping 192.168.1.47 -I enP4p65s0'''</p> <p>PING 192.168.1.47 (192.168.1.47) from 192.168.1.188 enP4p65s0: 56(84) bytes of data.</p> <p>64 bytes from 192.168.1.47: icmp_seq=1 ttl=64 time=0.233 ms</p> <p>64 bytes from 192.168.1.47: icmp_seq=2 ttl=64 time=0.263 ms</p> <p>^C</p> <p>--- 192.168.1.47 ping statistics ---</p> <p>5 packets transmitted, 5 received, 0% packet loss, time 4042ms</p> <p>rtt min/avg/max/mdev = 0.233/0.262/0.275/0.015 ms</p> |} </li></ol> <span id="使用nmcli命令来设置静态ip地址"></span> ==== 使用nmcli命令来设置静态IP地址 ==== <ol style="list-style-type: decimal;"> <li><p>如果要设置网口的静态IP地址,请先将网线插入开发板,'''如果需要设置WIFI的静态IP地址,请先连接好WIFI''',然后再开始设置静态IP地址</p></li> <li><p>然后通过'''nmcli con show'''命令可以查看网络设备的名字,如下所示,'''Wired connection 1'''和'''Wired connection 2'''为以太网接口的名字</p> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''nmcli con show'''<br> <span style="margin-right: 180px;">NAME</span><span style="margin-right: 260px;">UUID </span><span style="margin-right: 45px;">TYPE </span><span style="margin-right: 50px;">DEVICE</span><br> <span style="margin-right: 50px;">'''Wired connection 1'''</span><span style="margin-right: 45px;">c043c817-1156-3b72-a559-9a8cd642bf70</span><span style="margin-right: 30px;">ethernet </span><span style="margin-right: 50px;">enP3p49s0</span><br> <span style="margin-right: 50px;">'''Wired connection 2'''</span><span style="margin-right: 50px;">6f74598a-ccc6-358b-be05-87eaf34df930</span><span style="margin-right: 30px;">ethernet </span><span style="margin-right: 50px;">enP4p65s0</span><br> |} </li> <li><p>然后输入下面的命令,其中</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''"Wired connection 1"''' 表示设置以太网口的静态IP地址,如果需要设置其它网口的静态IP地址,请修改为对应网络接口对应的名字(通过'''nmcli > con show'''命令可以获取到)</p></li> <li><p>'''ipv4.addresses''' 后面是要设置的静态IP地址,可以修改为自己想要设置的值</p></li> <li><p>'''ipv4.gateway''' 表示网关的地址</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''nmcli con mod "Wired connection 1" \'''</p> <p>'''ipv4.addresses "192.168.1.110" \'''</p> <p>'''ipv4.gateway "192.168.1.1" \'''</p> <p>'''ipv4.dns "8.8.8.8" \'''</p> <p>'''ipv4.method "manual"'''</p> |} </li></ol> </li> <li><p>然后重启linux系统</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo reboot'''</p> |} </li> <li><p>然后重新进入linux系统使用'''ip addr show'''命令就可以看到IP地址已经设置为想要的值了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ip addr show'''</p> <p>2: enP3p49s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000</p> :<p>link/ether 00:e0:4c:68:00:26 brd ff:ff:ff:ff:ff:ff</p> :<p>inet '''<span style="color:#FF0000">192.168.1.110</span>'''/32 scope global noprefixroute enP3p49s0</p> ::<p>valid_lft forever preferred_lft forever</p> :<p>inet6 fe80::9005:95ac:b9c0:2beb/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> |} </li></ol> <span id="m.2-e-key-pcie-wifi6蓝牙模块的使用方法"></span> == M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法 == # 首先需要购买一个PCIe WIFI6+蓝牙模块 ::{| class="wikitable" style="width: 800px" |- | '''序号''' | '''型号''' | '''实物图片''' | '''已支持的OS''' |- | '''1''' | '''AX200''' '''(PCIE+USB接口)''' | [[File:plus-5-389.png]] | '''<span style="color:#FF0000">Debian</span>''' '''<span style="color:#FF0000">Ubuntu</span>''' '''OpenWRT''' '''OPi OS Arch''' |- | '''2''' | '''AX210''' '''(PCIE+USB接口)''' | [[File:plus-5-390.png]] | '''<span style="color:#FF0000">Debian</span>''' '''<span style="color:#FF0000">Ubuntu</span>''' '''OpenWRT''' '''OPi OS Arch''' |- | '''3''' | '''RTL8852BE''' '''(PCIE+USB接口)''' | [[File:plus-5-391.png]] | '''<span style="color:#FF0000">Debian</span>''' '''<span style="color:#FF0000">Ubuntu</span>''' '''Android12''' '''OPi OS Arch''' '''OPi OS Droid''' |} <ol start="2" style="list-style-type: decimal;"> <li><p>然后将模块插入开发板的M.2 E-Key接口中并固定好,位置如下图所示:</p> <p>[[File:plus-5-392.png]]</p></li> <li><p>然后使用lspci命令如果能看到WIFI模块的信息,说明模块接触良好</p> <ol style="list-style-type: lower-alpha;"> <li><p>AX200显示如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lspci | grep "Network"'''</p> <p>0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)</p> |} </li> <li><p>AX210显示如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lspci | grep "Network"'''</p> <p>0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz (rev 1a)</p> |} </li> <li><p>RTL8852显示如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lspci | grep "Network"'''</p> <p>0002:21:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)</p> |} </li></ol> </li> <li><p>然后使用下面的命令就能看到会多了一个WIFI的设备节点了</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''ip a'''</p> |} </li> <li><p>WIFI的连接和测试方法请参看[[Orange Pi 5 Plus#WIFI连接测试|'''WIFI连接测试''']]一节,这里不再赘述。</p></li> <li><p>蓝牙的测试方法请参看[[Orange Pi 5 Plus#蓝牙使用方法|'''蓝牙使用方法''']]一节,这里不再赘述。</p></li></ol> <span id="ssh远程登录开发板"></span> == SSH远程登录开发板 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''Linux系统默认都开启了ssh远程登录,并且允许root用户登录系统。ssh登录前首先需要确保以太网或者wifi网络已连接,然后使用ip addr命令或者通过查看路由器的方式获取开发板的IP地址。'''</big> |} <span id="ubuntu下ssh远程登录开发板"></span> === Ubuntu下SSH远程登录开发板 === # 获取开发板的IP地址 # 然后就可以通过ssh命令远程登录linux系统 ::{| class="wikitable" style="width:800px;" |- | test@test:~$ '''ssh root@192.168.1.xxx''' (需要替换为开发板的IP地址)<br> root@192.168.1.xx's password: (在这里输入密码,默认密码为orangepi) |} ::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,输入密码的时候,<span style="color:#FF0000">屏幕上是不会显示输入的密码的具体内容的</span>,请不要以为是有什么故障,输入完后直接回车即可。''' '''如果提示拒绝连接,只要使用的是Orange Pi提供的镜像,<span style="color:#FF0000">就请不要怀疑orangepi这个密码是不是不对</span>,而是要找其他原因。'''</big> |} <ol start="3" style="list-style-type: decimal;"> <li><p>成功登录系统后的显示如下图所示</p> <div class="figure"> [[File:plus-5-399.png]] </div> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''如果ssh无法正常登陆linux系统,首先请检查下开发板的IP地址是否能ping通,如果ping通没问题的话,可以通过串口或者HDMI显示器登录linux系统然后在开发板上输入下面的命令后再尝试是否能连接:'''</p> root@orangepi:~# '''reset_ssh.sh''' '''如果还不行,请重烧系统试下。'''</big> |} </li></ol> <span id="windows下ssh远程登录开发板"></span> === Windows下SSH远程登录开发板 === <ol style="list-style-type: decimal;"> <li><p>首先获取开发板的IP地址</p></li> <li><p>在windows下可以使用MobaXterm远程登录开发板,首先新建一个ssh会话</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开'''Session'''</p></li> <li><p>然后在'''Session Setting'''中选择'''SSH'''</p></li> <li><p>然后在'''Remote host'''中输入开发板的IP地址</p></li> <li><p>然后在'''Specify username'''中输入linux系统的用户名'''root'''或'''orangepi'''</p></li> <li><p>最后点击'''OK'''即可</p> <p>[[File:plus-5-400.png]]</p></li></ol> </li> <li> <p>然后会提示输入密码,默认root和orangepi用户的密码都为orangepi</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,输入密码的时候,<span style="color:#FF0000">屏幕上是不会显示输入的密码的具体内容的</span>,请不要以为是有什么故障,输入完后直接回车即可。'''</p></big> |} </li> [[File:plus-5-401.png]] </ol> <ol start="4" style="list-style-type: decimal;"> <li>成功登录系统后的显示如下图所示</li> [[File:plus-5-402.png]] </ol> <span id="adb的使用方法"></span> == ADB的使用方法 == === 网络adb的使用方法 === <ol style="list-style-type: decimal;"> <li><p>系统启动后请先确认下'''adbd'''已经启动了</p> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''ps -ax | grep "adbd"'''<br> <span style="margin-right: 80px;">808 ?</span><span style="margin-right: 60px;">Sl</span><span style="margin-right: 45px;">0:00 /usr/bin/adbd</span><br> <span style="margin-right: 30px;">3707 ttyFIQ0</span><span style="margin-right: 60px;">S+</span><span style="margin-right: 50px;">0:00 grep --color=auto adbd</span><br> |} </li> <li><p>然后查看下开发板的IP地址,并记下来</p></li> <li><p>然后在Ubuntu PC上安装adb工具</p> <p>test@test:~$ '''sudo apt-get update'''</p> <p>test@test:~$ '''sudo apt-get install -y adb'''</p></li> <li><p>然后使用下面的命令连接网络adb</p></li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb connect 192.168.1.xx:5555 <span style="color:#FF0000">#IP地址请替换为开发板的IP地址</span>''' * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 192.168.1.xx:5555 test@test:~$ '''adb devices''' List of devices attached '''192.168.1.xx:5555 device''' |} </ol> <ol start="5" style="list-style-type: decimal;"> <li>然后使用下面的命令就可以登录开发板的linux系统</li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb shell''' '''root@orangepi5plus:/# <--- 看到这个提示符后说明已成功登录开发板''' |} </ol> <ol start="6" style="list-style-type: decimal;"> <li><p>使用adb上传文件到开发板的命令如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''adb push filename /root'''</p> <p>filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)</p> |} </li> <li><p>使用adb重启开发板的命令如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''adb reboot'''</p> |} </li></ol> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''如果您的Windows系统中没有adb工具,可以使用RKDevTool软件([[Orange Pi 5 Plus#使用RKDevTool烧录Linux镜像到TF卡中的方法|使用RKDevTool烧录Linux镜像到TF卡中的方法]]一小节有用到这个软件)中的adb程序。'''</big> [[File:plus-5-403-1.png]] <big>'''在Windows中使用adb的示例如下所示:'''</big> [[File:plus-5-404.png]] |} === 使用type-c数据线连接adb === <ol style="list-style-type: decimal;"> <li><p>首先准备一根品质良好的Type-C数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后通过Type-C数据线连接好开发板与Ubuntu PC,开发板Type-C接口的位置如下图所示:</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>然后运行下面的命令将Type-C接口设置为'''device'''模式</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo set_device.sh'''</p> |} <p>如果linux系统中不存在'''set_device.sh'''脚本,请直接使用下面的命令:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo bash -c "echo device > /sys/kernel/debug/usb/fc000000.usb/mode"'''</p> <p>orangepi@orangepi:~$ '''sudo systemctl restart usbdevice'''</p> |} </li> <li><p>'''然后请确认下adbd已经启动了'''</p> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''ps -ax | grep "adbd"'''<br> <span style="margin-right: 80px;">808 ?</span><span style="margin-right: 60px;">Sl</span><span style="margin-right: 45px;">0:00 /usr/bin/adbd</span><br> <span style="margin-right: 30px;">3707 ttyFIQ0</span><span style="margin-right: 60px;">S+</span><span style="margin-right: 50px;">0:00 grep --color=auto adbd</span><br> |} </li> <li><p>然后在Ubuntu PC上安装下adb工具</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt-get update'''</p> <p>test@test:~$ '''sudo apt-get install -y adb'''</p> |} </li> <li><p>然后使用下面的命令查看下有没有识别到adb设备</p></li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb devices''' List of devices attached '''e0f9f71bc343c305 device''' |} </ol> <ol start="7" style="list-style-type: decimal;"> <li>然后使用下面的命令就可以登录开发板的linux系统</li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb shell''' '''root@orangepi5plus:/# <--- 看到这个提示符后说明已成功登录开发板''' |} </ol> <ol start="8" style="list-style-type: decimal;"> <li><p>使用adb上传文件到开发板的命令如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''adb push filename /root'''</p> <p>filename: 1 file pushed. 3.7 MB/s (1075091 bytes in 0.277s)</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''如果您的Windows系统中没有adb工具,可以使用RKDevTool软件([[Orange Pi 5 Plus#使用RKDevTool烧录Linux镜像到TF卡中的方法|使用RKDevTool烧录Linux镜像到TF卡中的方法]]一小节有用到这个软件)中的adb程序。'''</big> [[File:plus-5-407.png]] <big>'''在Windows中使用adb的示例如下所示:'''</big> [[File:plus-5-408.png]] |} </li></ol> <span id="上传文件到开发板linux系统中的方法"></span> == 上传文件到开发板Linux系统中的方法 == <span id="在ubuntu-pc中上传文件到开发板linux系统中的方法"></span> === 在Ubuntu PC中上传文件到开发板Linux系统中的方法 === ==== 使用scp命令上传文件的方法 ==== <ol style="list-style-type: decimal;"> <li><p>使用scp命令可以在Ubuntu PC中上传文件到开发板的Linux系统中,具体命令如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''file_path:'''需要替换为要上传文件的路径</p></li> <li><p>'''orangepi:'''为开发板linux系统的用户名,也可以替换成其它的,比如root</p></li> <li><p>'''192.168.xx.xx:''' 为开发板的IP地址,请根据实际情况进行修改</p></li> <li><p>'''/home/orangepi:''' 开发板linux系统中的路径,也可以修改为其它的路径</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''scp file_path orangepi@192.168.xx.xx:/home/orangepi/'''</p> |} </li></ol> </li> <li><p>如果要上传文件夹,需要加上-r参数</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''scp -r dir_path orangepi@192.168.xx.xx:/home/orangepi/'''</p> |} </li> <li><p>scp还有更多的用法,请使用下面的命令查看man手册</p></li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''man scp''' |}</ol> ==== 使用filezilla上传文件的方法 ==== <ol style="list-style-type: decimal;"> <li><p>首先在Ubuntu PC中安装filezilla</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt install -y filezilla'''</p> |} </li> <li><p>然后使用下面的命令打开filezilla</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''filezilla'''</p> |} </li> <li><p>filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的</p> <div class="figure"> [[File:plus-5-409.png]] </div></li> <li><p>连接开发板的方法如下图所示</p></li> <div class="figure"> [[File:plus-5-410.png]] </div></ol> <ol start="5" style="list-style-type: decimal;"> <li><p>然后选择'''保存密码''',再点击'''确定'''</p> <p>[[File:plus-5-411.png]]</p></li> <li><p>然后选择'''总是信任该主机''',再点击'''确定'''</p></li> <div class="figure"> [[File:plus-5-412.png]] </div></ol> <ol start="7" style="list-style-type: decimal;"> <li>连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了</li> <div class="figure"> [[File:plus-5-413.png]] </div></ol> <ol start="8" style="list-style-type: decimal;"> <li>然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Ubuntu PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了。</li> <div class="figure"> [[File:plus-5-414.png]] </div></ol> <ol start="9" style="list-style-type: decimal;"> <li><p>上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了</p></li> <li><p>上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了</p></li></ol> <span id="在windows-pc中上传文件到开发板linux系统中的方法"></span> === 在Windows PC中上传文件到开发板Linux系统中的方法 === <span id="使用filezilla上传文件的方法-1"></span> ==== 使用filezilla上传文件的方法 ==== <ol style="list-style-type: decimal;"> <li><p>首先下载filezilla软件Windows版本的安装文件,下载链接如下所示</p> {| class="wikitable" style="width:800px;" |- | <big>'''https://filezilla-project.org/download.php?type=client'''</big> |} </li> <div class="figure"> [[File:plus-5-415.png]] </div> [[File:plus-5-416.png]] </ol> <ol start="2" style="list-style-type: decimal;"> <li><p>下载的安装包如下所示,然后双击直接安装即可</p> {| class="wikitable" style="width:800px;" |- | <p>'''FileZilla_Server_1.5.1_win64-setup.exe'''</p> |} </li> 安装过程中,下面的安装界面请选择'''Decline''',然后再选择'''Next>''' <div class="figure"> [[File:plus-5-417.png]] </div></ol> <ol start="3" style="list-style-type: decimal;"> <li>filezilla打开后的界面如下所示,此时右边远程站点下面显示的是空的</li> <div class="figure"> [[File:plus-5-418.png]] </div></ol> <ol start="4" style="list-style-type: decimal;"> <li>连接开发板的方法如下图所示:</li> <div class="figure"> [[File:plus-5-419.png]] </div></ol> <ol start="5" style="list-style-type: decimal;"> <li>然后选择'''保存密码''',再点击'''确定'''</li> <div class="figure"> [[File:plus-5-420.png]] </div></ol> <ol start="6" style="list-style-type: decimal;"> <li>然后选择'''总是信任该主机''',再点击'''确定'''</li> <div class="figure"> [[File:plus-5-421.png]] </div></ol> <ol start="7" style="list-style-type: decimal;"> <li>连接成功后在filezilla软件的右边就可以看到开发板linux文件系统的目录结构了</li> <div class="figure"> [[File:plus-5-422.png]] </div></ol> <ol start="8" style="list-style-type: decimal;"> <li>然后在filezilla软件的右边选择要上传到开发板中的路径,再在filezilla软件的左边选中Windows PC中要上传的文件,再点击鼠标右键,再点击上传选项就会开始上传文件到开发板中了</li> <div class="figure"> [[File:plus-5-423.png]] </div></ol> <ol start="9" style="list-style-type: decimal;"> <li><p>上传完成后就可以去开发板linux系统中的对应路径中查看上传的文件了</p></li> <li><p>上传文件夹的方法和上传文件的方法是一样的,这里就不再赘述了</p></li></ol> <span id="hdmi测试"></span> == HDMI测试 == <span id="hdmi输出测试"></span> === HDMI输出测试 === <ol style="list-style-type: decimal;"> <li><p>开发板有两个HDMI输出接口,所在位置如下图所示:</p> <p>[[File:plus-5-424.png]]</p></li> <li><p>Linux系统默认配置HDMI_TX1支持8K显示,HDMI_TX2默认只支持4K显示(同一时间只能有1个HDMI_TX接口支持8K显示)。如果想设置HDMI_TX2支持8K显示,请按照如下步骤设置下:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''hdmi2-8k'''配置</p> <p>[[File:plus-5-427.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>然后使用HDMI转HDMI线连接Orange Pi开发板和HDMI显示器</p> <p>[[File:plus-5-7.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,如果想接4K或者8K显示器,请确保HDMI线支持4K或者8K视频显示。'''</p></big> |} </li> <li><p>启动linux系统后如果HDMI显示器有图像输出说明HDMI接口使用正常</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,很多笔记本电脑虽然带有HDMI接口,但是笔记本的HDMI接口一般只有输出功能,并没有HDMI in的功能,也就是说并不能将开发板的HDMI输出显示到笔记本的屏幕上。''' '''当想把开发板的HDMI接到笔记本电脑HDMI接口时,请先确认清楚您的笔记本是支持HDMI in的功能。''' '''当HDMI没有显示的时候,请先检查下HDMI线有没有插紧,确认接线没问题后,可以换一个不同的屏幕试下有没有显示。'''</big> |} </ol> <span id="hdmi-in的测试方法"></span> === HDMI IN的测试方法 === <ol style="list-style-type: decimal;"> <li><p>开发板HDMI In接口的所在位置如下所示:</p> <p>[[File:plus-5-432.png]]</p></li> <li><p>首先使用下图所示的HDMI转HDMI线将其它设备的HDMI输出接到开发板的HDMI In接口上</p> <p>[[File:plus-5-7.png]]</p></li> <li><p>Linux系统HDMI In功能默认是关闭的,打开方法如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中'''hdmirx'''配置</p> <p>[[File:plus-5-436.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>重启进入系统后再在桌面上打开一个终端,然后运行下'''test_hdmiin.sh'''脚本</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''test_hdmiin.sh'''</p> |} </li> <li><p>然后就能看到HDMI In的输入画面了(下图中HDMI In显示的是opi5开发板HDMI输出的画面,此时正在播放一个视频)。'''test_hdmiin.sh'''脚本默认会将HDMI In输入的音频播放到开发板的HDMI_TX1、HDMI_TX2和ES8388(代表喇叭或者耳机)中去。</p> <div class="figure"> [[File:plus-5-440.png]] </div></li></ol> <span id="hdmi转vga显示测试"></span> === HDMI转VGA显示测试 === <ol style="list-style-type: decimal;"> <li><p>首先需要准备下面的配件</p> <ol style="list-style-type: lower-alpha;"> <li><p>HDMI转VGA转换器</p> <p>[[File:plus-5-441.png]]</p></li> <li><p>一根VGA线</p> <p>[[File:plus-5-442.png]]</p></li> <li><p>一个支持VGA接口的显示器或者电视</p></li></ol> </li> <li><p>HDMI转VGA显示测试如下所示:</p> <p>[[File:plus-5-443.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''使用HDMI转VGA显示时,开发板以及开发板的Linux系统是不需要做任何设置的,只需要开发板HDMI接口能正常显示就可以了。所以如果测试有问题,请检查HDMI转VGA转换器、VGA线以及显示器是否有问题。'''</p></big> |} </li></ol> <span id="hdmi分辨率设置方法"></span> === HDMI分辨率设置方法 === <ol style="list-style-type: decimal;"> <li><p>首先在'''Settings'''中打开'''Display'''</p> <p>[[File:plus-5-444.png]]</p></li> <li><p>然后就能看到系统当前的分辨率</p> <p>[[File:plus-5-445.png]]</p></li> <li><p>点击Resolution(分辨率)的下拉框,就可以看到显示器当前支持的所有分辨率</p> <p>[[File:plus-5-446.png]]</p></li> <li><p>然后选择想要设置的分辨率,再点击Apply</p> <p>[[File:plus-5-447.png]]</p></li> <li><p>等新的分辨率设置完后再选择'''Keep the configuration'''即可</p> <p>[[File:plus-5-448.png]]</p></li></ol> == 蓝牙使用方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">请注意,Orange Pi 5 Plus开发板上是没有蓝牙模块的,需要外接带蓝牙的PCIe网卡或者带蓝牙的USB网卡才能使用蓝牙功能。</span>''' '''外接PCIe网卡的使用说明请参考[[Orange Pi 5 Plus#M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法|PCIe WIFI6+蓝牙模块的使用方法]]一小节。''' '''外接USB网卡的使用说明请参考[[Orange Pi 5 Plus#USB无线网卡测试|USB无线网卡测试]]一小节。'''</big> |} <span id="桌面版镜像的测试方法-1"></span> === 桌面版镜像的测试方法 === <ol style="list-style-type: decimal;"> <li><p>点击桌面右上角的蓝牙图标</p> <p>[[File:plus-5-449.png]]</p></li> <li><p>然后选择适配器</p> <p>[[File:plus-5-450.png]]</p></li> <li><p>如果有提示下面的界面,请选择'''Yes'''</p> <p>[[File:plus-5-451.png]]</p></li> <li><p>然后在蓝牙的适配器设置界面中设置'''Visibility Setting'''为'''Always visible''',然后关闭即可</p> <p>[[File:plus-5-452.png]]</p></li> <li><p>然后打开蓝牙设备的配置界面</p> <p>[[File:plus-5-453.png]]</p></li> <li><p>点击'''Search'''即可开始扫描周围的蓝牙设备</p> <p>[[File:plus-5-454.png]]</p></li></ol> <!-- --> <ol start="6" style="list-style-type: decimal;"> <li><p>然后选择想要连接的蓝牙设备,再点击鼠标右键就会弹出对此蓝牙设备的操作界面,选择'''Pair'''即可开始配对,这里演示的是和Android手机配对</p> <p>[[File:plus-5-455.png]]</p></li> <li><p>配对时,桌面的右上角会弹出配对确认框,选择'''Confirm'''确认即可,此时手机上也同样需要进行确认</p> <p>[[File:plus-5-456.png]]</p></li> <li><p>和手机配对完后,可以选择已配对的蓝牙设备,然后右键选择'''Send a File'''即可开始给手机发送一张图片</p> <p>[[File:plus-5-457.png]]</p></li> <li><p>发送图片的界面如下所示</p> <p>[[File:plus-5-458.png]]</p></li></ol> <span id="usb接口测试"></span> == USB接口测试 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''USB接口是可以接USB hub来扩展USB接口的数量的。'''</big> |} <span id="连接usb鼠标或键盘测试"></span> === 连接USB鼠标或键盘测试 === # 将USB接口的键盘插入Orange Pi开发板的USB接口中 # 连接Orange Pi开发板到HDMI显示器 # 如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用) <span id="连接usb存储设备测试"></span> === 连接USB存储设备测试 === # 首先将U盘或者USB移动硬盘插入Orange Pi开发板的USB接口中 # 执行下面的命令如果能看到sdX的输出说明U盘识别成功 ::{| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''cat /proc/partitions | grep "sd*"'''<br> <span style="margin-right: 30px;">major </span><span style="margin-right: 40px;">minor </span><span style="margin-right: 30px;">#blocks</span><span style="margin-right: 50px;">name</span><br> <span style="margin-right: 70px;">8</span><span style="margin-right: 60px;">0</span><span style="margin-right: 50px;">30044160 </span><span style="margin-right: 50px;color:#FF0000">'''sda'''</span><br> <span style="margin-right: 70px;">8</span><span style="margin-right: 60px;">1</span><span style="margin-right: 50px;">30043119 </span><span style="margin-right: 50px;color:#FF0000">'''sda1'''</span><br> |} <ol start="3" style="list-style-type: decimal;"> <li>使用mount命令可以将U盘挂载到'''/mnt'''中,然后就能查看U盘中的文件了</li> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo mount /dev/sda1 /mnt/''' orangepi@orangepi:~$ '''ls /mnt/''' test.txt |} </ol> <ol start="4" style="list-style-type: decimal;"> <li>挂载完后通过'''df -h'''命令就能查看U盘的容量使用情况和挂载点</li> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''df -h | grep "sd"''' /dev/sda1 29G 208K 29G 1% /mnt |} </ol> <span id="usb无线网卡测试"></span> === USB无线网卡测试 === 目前'''测试过的'''能用的USB无线网卡如下所示,其他型号的USB无线网卡请自行测试,如果无法使用就需要移植对应的USB无线网卡驱动 {| class="wikitable" style="width: 800px;" |- | 序 号 | 型号 | 实物图片 |- | 1 | RTL8723BU 支持2.4G WIFI+BT4.0 | [[File:plus-5-459.png]] |- | 2 | RTL8811 支持2.4G +5G WIFI | [[File:plus-5-460.png]] |- | 3 | RTL8821CU 支持2.4G +5G WIFI 支持BT 4.2 | [[File:plus-5-461.png]] |} <span id="rtl8723bu测试"></span> ==== RTL8723BU测试 ==== <ol style="list-style-type: decimal;"> <li><p>首先将RTL8723BU无线网卡模块插入开发板的USB接口中</p></li> <li><p>然后linux系统会自动加载RTL8723BU蓝牙和WIFI相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lsmod'''</p> <span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br> <span style="margin-right: 100px;">rfcomm </span><span style="margin-right: 50px;">57344</span><span style="margin-right: 50px;">16</span><br> <span style="margin-right: 95px;">rtl8xxxu </span><span style="margin-right: 50px;">106496</span><span style="margin-right: 30px;">0</span><br> <span style="margin-right: 90px;">rtk_btusb </span><span style="margin-right: 50px;">61440</span><span style="margin-right: 30px;">0</span><br> |} </li> <li><p>通过dmesg命令可以看到RTL8723BU模块的加载信息</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''dmesg'''</p> <p>......</p> <p>[ 83.438901] usb 2-1: new high-speed USB device number 2 using ehci-platform</p> <p>[ 83.588375] usb 2-1: New USB device found, idVendor=0bda, idProduct=b720, bcdDevice= 2.00</p> <p>[ 83.588403] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3</p> <p>[ 83.588422] usb 2-1: Product: 802.11n WLAN Adapter</p> <p>[ 83.588443] usb 2-1: Manufacturer: Realtek</p> <p>[ 83.588460] usb 2-1: SerialNumber: 00e04c000001</p> <p>[ 83.601974] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000b lmp_ver=06 lmp_subver=8723</p> <p>[ 83.603894] Bluetooth: hci0: RTL: rom_version status=0 version=1</p> <p>[ 83.603920] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_fw.bin</p> <p>[ 83.610108] Bluetooth: hci0: RTL: loading rtl_bt/rtl8723b_config.bin</p> <p>[ 83.611274] Bluetooth: hci0: RTL: cfg_sz 68, total sz 22564</p> <p>[ 83.658494] rtk_btusb: Realtek Bluetooth USB driver ver 3.1.6d45ddf.20220519-142432</p> <p>[ 83.658651] usbcore: registered new interface driver rtk_btusb</p> <p>[ 83.667124] usb 2-1: This Realtek USB WiFi dongle (0x0bda:0xb720) is untested!</p> <p>[ 83.667137] usb 2-1: Please report results to Jes.Sorensen@gmail.com</p> <p>[ 83.890140] usb 2-1: Vendor: Realtek</p> <p>[ 83.890153] usb 2-1: Product: 802.11n WLAN Adapter</p> <p>[ 83.890159] usb 2-1: rtl8723bu_parse_efuse: dumping efuse (0x200 bytes):</p> <p>......</p> <p>[ 83.890412] usb 2-1: RTL8723BU rev E (SMIC) 1T1R, TX queues 3, WiFi=1, BT=1, GPS=0, HI PA=0</p> <p>[ 83.890417] usb 2-1: RTL8723BU MAC: 00:13:ef:f4:58:ae</p> <p>[ 83.890421] usb 2-1: rtl8xxxu: Loading firmware rtlwifi/rtl8723bu_nic.bin</p> <p>[ 83.895289] usb 2-1: Firmware revision 35.0 (signature 0x5301)</p> <p>[ 84.050893] Bluetooth: hci0: RTL: fw version 0x0e2f9f73</p> <p>[ 84.266905] Bluetooth: RFCOMM TTY layer initialized</p> <p>[ 84.266949] Bluetooth: RFCOMM socket layer initialized</p> <p>[ 84.266999] Bluetooth: RFCOMM ver 1.11</p> <p>[ 84.884270] usbcore: registered new interface driver rtl8xxxu</p> <p>[ 84.912046] rtl8xxxu 2-1:1.2 wlx0013eff458ae: renamed from wlan0</p> |} </li> <li><p>然后通过'''sudo ifconfig'''命令可以看到RTL8723BU WIFI的设备节点,WIFI的连接和测试方法请参看[[Orange Pi 5 Plus#WIFI连接测试|'''WIFI连接测试''']]一节,这里不再赘述</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo ifconfig wlx0013eff458ae'''</p> <p>wlx0013eff458ae: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500</p> ::<p>ether 00:13:ef:f4:58:ae txqueuelen 1000 (Ethernet)</p> ::<p>RX packets 0 bytes 0 (0.0 B)</p> ::<p>RX errors 0 dropped 0 overruns 0 frame 0</p> ::<p>TX packets 0 bytes 0 (0.0 B)</p> ::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p> |} </li> <li><p>然后通过'''hciconfig'''命令可以看到USB的蓝牙设备</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo apt update && sudo apt install bluez'''</p> <p>orangepi@orangepi:~$ '''hciconfig'''</p> <p>hci0: Type: Primary Bus: '''USB'''</p> ::<p>BD Address: 00:13:EF:F4:58:AE ACL MTU: 820:8 SCO MTU: 255:16</p> ::<p>DOWN</p> ::<p>RX bytes:1252 acl:0 sco:0 events:125 errors:0</p> ::<p>TX bytes:23307 acl:0 sco:0 commands:125 errors:0</p> |} </li> <li><p>在桌面中也可以看到出现了蓝牙图标,此时蓝牙还未打开,所以会显示一个红色的'''x'''</p> <p>[[File:plus-5-462.png]]</p></li> <li><p>点击'''Turn Bluetooth On'''可以打开蓝牙</p> <p>[[File:plus-5-463.png]]</p></li> <li><p>打开蓝牙后的显示如下所示</p> <p>[[File:plus-5-464.png]]</p></li> <li><p>蓝牙的测试方法请参看[[Orange Pi 5 Plus#蓝牙使用方法|'''蓝牙使用方法''']]一节,这里不再赘述</p></li></ol> <span id="rtl8811测试"></span> ==== RTL8811测试 ==== <ol style="list-style-type: decimal;"> <li><p>首先将RTL8811无线网卡模块插入开发板的USB接口中</p></li> <li><p>然后linux系统会自动加载RTL8811 WIFI相关的内核模块,通过lsmod命令可以看到下面内核模块已自动加载</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lsmod'''</p> <span style="margin-right: 100px;">Module </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 45px;">Used by</span><br> <span style="margin-right: 100px;">8821cu </span><span style="margin-right: 50px;">1839104 </span><span style="margin-right: 50px;">0</span><br> |} </li> <li><p>通过dmesg命令可以看到RTL8811模块的加载信息</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''dmesg'''</p> <p>[ 118.618194] usb 2-1: new high-speed USB device number 2 using ehci-platform</p> <p>[ 118.767152] usb 2-1: New USB device found, idVendor=0bda, idProduct=c811, bcdDevice= 2.00</p> <p>[ 118.767181] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3</p> <p>[ 118.767199] usb 2-1: Product: 802.11ac NIC</p> <p>[ 118.767219] usb 2-1: Manufacturer: Realtek</p> <p>[ 118.767235] usb 2-1: SerialNumber: 123456</p> <p>[ 119.500530] usbcore: registered new interface driver rtl8821cu</p> <p>[ 119.525498] rtl8821cu 2-1:1.0 wlx1cbfced9d260: renamed from wlan0</p> |} </li> <li><p>然后通过'''sudo ifconfig'''命令可以看到WIFI的设备节点,WIFI的连接和测试方法请参看[[Orange Pi 5 Plus#WIFI连接测试|'''WIFI连接测试''']]一节,这里不再赘述</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo ifconfig wlx1cbfced9d260'''</p> <p>wlx1cbfced9d260: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500</p> ::<p>ether 1c:bf:ce:d9:d2:60 txqueuelen 1000 (Ethernet)</p> ::<p>RX packets 0 bytes 0 (0.0 B)</p> ::<p>RX errors 0 dropped 0 overruns 0 frame 0</p> ::<p>TX packets 0 bytes 0 (0.0 B)</p> ::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p> |} </li></ol> <span id="usb摄像头测试"></span> === USB摄像头测试 === <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个下图所示的或者类似的支持UVC协议的USB摄像头,然后将USB摄像头插入到Orange Pi开发板的USB接口中</p> <p>[[File:plus-5-14.png]]</p></li> <li><p>通过v4l2-ctl命令可以看到USB摄像头的设备节点信息为/dev/video0</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''v4l2-ctl --list-devices'''</p> <p>Q8 HD Webcam: Q8 HD Webcam ('''<span style="color:#FF0000">usb</span>'''-fc880000.usb-1):</p> ::<p>'''/dev/video0'''</p> ::<p>/dev/video1</p> ::<p>/dev/media0</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意v4l2中的l是小写字母l,不是数字1。'''</p> <p>'''另外video的序号不一定都是video0,请以实际看到的为准。'''</p></big> |} </li> <li><p>在桌面系统中可以使用Cheese直接打开USB摄像头,Cheese打开方法如下图所示:</p> <p>[[File:plus-5-466.png]]</p> <p>Cheese打开USB摄像头后的界面如下图所示:</p> <p>[[File:plus-5-467.png]]</p></li> <li><p>使用fswebcam测试USB摄像头的方法</p> <ol style="list-style-type: lower-alpha;"> <li><p>安装fswebcam</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo''' '''apt update'''</p> <p>orangepi@orangepi:~$ '''sudo apt-get install -y fswebcam'''</p> |} </li> <li><p>安装完fswebcam后可以使用下面的命令来拍照</p> <ol style="list-style-type: lower-alpha;"> <li><p>-d 选项用于指定USB摄像头的设备节点</p></li> <li><p>--no-banner用于去除照片的水印</p></li> <li><p>-r 选项用于指定照片的分辨率</p></li> <li><p>-S 选项用设置于跳过前面的帧数</p></li> <li><p>./image.jpg 用于设置生成的照片的名字和路径</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo''' '''fswebcam -d /dev/video0 \'''</p> <p>'''--no-banner -r 1280x720 -S 5 ./image.jpg'''</p> |} </li></ol> </li> <li><p>在服务器版的linux系统中,拍完照后可以使用scp命令将拍好的图片传到Ubuntu PC上镜像观看</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''scp image.jpg test@192.168.1.55:/home/test (根据实际情况修改IP地址和路径)'''</p> |} </li> <li><p>在桌面版的linux系统中,可以通过HDMI显示器直接查看拍摄的图片</p></li></ol> </li></ol> == 音频测试 == === 在桌面系统中测试音频方法 === <ol style="list-style-type: decimal;"> <li><p>首先打开文件管理器</p> <p>[[File:plus-5-468.png]]</p></li> <li><p>然后找到下面这个文件(如果系统中没有这个音频文件,可以自己上传一个音频文件到系统中)</p> <p>[[File:plus-5-469.png]]</p></li> <li><p>然后选中audio.wav文件,右键选择使用vlc打开就可以开始播放</p> <p>[[File:plus-5-470.png]]</p></li> <li><p>切换HDMI播放和耳机播放等不同音频设备的方法</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先打开音量控制界面</p> <p>[[File:plus-5-471.png]]</p></li> <li><p>播放音频的时候,在'''Playback'''中会显示播放软件可以使用的音频设备选项,如下图所示,在这里可以设置需要播放到哪个音频设备</p> <p>[[File:plus-5-472.png]]</p></li></ol> </li></ol> === 使用命令播放音频的方法 === ==== 耳机接口播放音频测试 ==== <ol style="list-style-type: decimal;"> <li><p>首先将耳机插入开发板的耳机孔中</p> <p>[[File:plus-5-473.png]]</p></li> <li><p>然后可以通过'''aplay -l'''命令可以查看下linux系统支持的声卡设备,从下面的输出可知,'''card 3'''为es8388的声卡设备,也就是耳机的声卡设备</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''aplay -l'''</p> <p>**** List of PLAYBACK Hardware Devices ****</p> <p>card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]</p> :<p>Subdevices: 0/1</p> :<p>Subdevice #0: subdevice #0</p> <p>card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]</p> :<p>Subdevices: 0/1</p> :<p>Subdevice #0: subdevice #0</p> <p>card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]</p> :<p>Subdevices: 1/1</p> :<p>Subdevice #0: subdevice #0</p> <p>'''card 3: rockchipes8388 [rockchip,es8388], device 0: dailink-multicodecs ES8323.7-0011-0 [dailink-multicodecs ES8323.7-0011-0]'''</p> :<p>'''Subdevices: 0/1'''</p> :<p>'''Subdevice #0: subdevice #0'''</p> |} </li> <li><p>然后使用'''aplay'''命令播放下系统自带的音频文件,如果耳机能听到声音说明硬件能正常使用</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">3</span>,0 /usr/share/sounds/alsa/audio.wav'''</p> <p>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> |} </li></ol> ==== 喇叭接口播放音频测试 ==== <ol style="list-style-type: decimal;"> <li><p>首先需要准备一个下图所示的喇叭,开发板上喇叭座子的规格为'''2pin 1.25mm'''间距</p> <p>[[File:plus-5-25.png]]</p></li> <li><p>开发板上喇叭接口的位置如下所示,准备好喇叭后,请将其插入到开发板的喇叭接口中</p> <p>[[File:plus-5-475.png]]</p></li> <li><p>喇叭和耳机使用的同一个声卡,使用喇叭前,请确保耳机接口没有插入耳机(如果插入了耳机,音频会播放到耳机)。然后使用'''aplay'''命令播放下系统自带的音频文件,如果喇叭能听到声音说明硬件能正常使用</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''aplay -D hw:3,0 /usr/share/sounds/alsa/audio.wav'''</p> <p>Playing WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> |} </li></ol> <span id="hdmi音频播放测试"></span> ==== HDMI音频播放测试 ==== <ol style="list-style-type: decimal;"> <li><p>首先使用HDMI 转HDMI线将Orange Pi开发板连接到电视机上(其他的HDMI显示器需要确保可以播放音频)</p></li> <li><p>然后查看下HDMI的声卡序号,从下面的输出可以知道HDMI_TX1的声卡为'''card 1''',HDMI_TX2的声卡为'''card 2'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''aplay -l'''</p> <p>**** List of PLAYBACK Hardware Devices ****</p> <p>card 0: rockchipdp0 [rockchip,dp0], device 0: rockchip,dp0 spdif-hifi-0 [rockchip,dp0 spdif-hifi-0]</p> :<p>Subdevices: 1/1</p> :<p>Subdevice #0: subdevice #0</p> <p>'''card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]'''</p> :<p>'''Subdevices: 1/1'''</p> :<p>'''Subdevice #0: subdevice #0'''</p> <p>'''card 2: rockchiphdmi1 [rockchip-hdmi1], device 0: rockchip-hdmi1 i2s-hifi-0 [rockchip-hdmi1 i2s-hifi-0]'''</p> :<p>'''Subdevices: 1/1'''</p> :<p>'''Subdevice #0: subdevice #0'''</p> |} </li> <li><p>然后使用'''aplay'''命令播放下系统自带的音频文件,如果HDMI显示器或者电视能听到声音说明硬件能正常使用</p> <ol style="list-style-type: lower-alpha;"> <li><p>播放音频到HDMI_TX1的命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">1</span>,0 /usr/share/sounds/alsa/audio.wav'''</p> |} </li> <li><p>播放音频到HDMI_TX2的命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''aplay -D hw:<span style="color:#FF0000">2</span>,0 /usr/share/sounds/alsa/audio.wav'''</p> |} </li></ol> </li></ol> === 使用命令测试录音的方法 === <ol style="list-style-type: decimal;"> <li><p>开发板上有板载MIC,位置如下所示:</p> <p>[[File:plus-5-476.png]]</p></li> <li><p>运行'''test_record.sh main'''命令会通过板载MIC录制一段音频,然后播放到HDMI_TX1和耳机。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''test_record.sh main'''</p> <p>Start recording: /tmp/test.wav</p> <p>Recording WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> <p>Start playing</p> <p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> <p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> |} </li> <li><p>除了板载MIC,我们还可以通过带MIC功能的耳机来录制音频。将带MIC功能的耳机插入开发板后,运行'''test_record.sh headset'''命令会通过耳机录制一段音频,然后播放到HDMI_TX1和耳机。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''test_record.sh headset'''</p> <p>Start recording: /tmp/test.wav</p> <p>Recording WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> <p>Start playing</p> <p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> <p>Playing WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo</p> |} </li></ol> == 温度传感器 == 查看系统温度传感器的命令为: {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sensors''' gpu_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C littlecore_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C bigcore0_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C tcpm_source_psy_6_0022-i2c-6-22 Adapter: rk3x-i2c in0: 0.00 V (min = +0.00 V, max = +0.00 V) curr1: 0.00 A (max = +0.00 A) npu_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C center_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C bigcore1_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C soc_thermal-virtual-0 Adapter: Virtual device temp1: +47.2°C (crit = +115.0°C) |} <span id="pin扩展接口引脚使用说明"></span> == 40 Pin扩展接口引脚使用说明 == <div class="figure"> [[File:plus-5-477.png]] </div> <ol style="list-style-type: decimal;"> <li><p>Orange Pi 5 Plus开发板40 pin扩展接口引脚的顺序请参考下图:</p> <p>[[File:plus-5-478.png]]</p></li> <li><p>Orange Pi 5 Plus开发板40 pin接口引脚的功能如下表所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>下面是40 pin完整的引脚图</p> <p>[[File:plus-5-479.png|1000px]]</p> <p>下面这张是彩图,包含上面表格中的部分内容:</p> <p>[[File:plus-5-480.png]]</p></li> <li><p>下面的表格是上面完整表格左半边部分的图,能看得清楚点</p> <p>[[File:plus-5-481.png]]</p></li> <li><p>下面的表格是上面完整表格右半边部分的图,能看得清楚点</p> <p>[[File:plus-5-482.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''上面表格中pwm都标出了对应的寄存器的基地址,在查看/sys/class/pwm/中哪个pwmchip对应40 pin排针中哪个pwm引脚时很有用。'''</p></big> |} </li></ol> </li> <li><p>40 pin接口中总共有'''<span style="color:#FF0000">28</span>'''个GPIO口,所有GPIO口的电压都是'''<span style="color:#FF0000">3.3v</span>'''。</p></li></ol> <span id="安装wiringop的方法"></span> == 安装wiringOP的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,Orange Pi发布的linux镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。''' '''编译好的wiringOP的deb包在orangepi-build中的存放路径为:'''<br> '''<span style="color:blue">orangepi-build/external/cache/debs/arm64/wiringpi_x.xx.deb</span>''' '''进入系统后可以运行下gpio readall命令,如果能看到下面的输出,说明wiringOP已经预装并且能正常使用。'''</big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | [[File:plus-5-483.png]] <big>'''wiringOP目前主要适配了设置GPIO口输入输出,设置GPIO口输出高低电平以及设置上下拉电阻的功能,像硬件PWM这样的功能是用不了的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>下载wiringOP的代码</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo apt update'''</p> <p>orangepi@orangepi:~$ '''sudo apt install -y git'''</p> orangepi@orangepi:~$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next''' |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,Orange Pi 5 Plus需要下载wiringOP next分支的代码,请别漏了-b next这个参数。'''</p> <p>'''如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP源码,存放位置为:/usr/src/wiringOP'''</p></big> |} </li> <li><p>编译安装wiringOP</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''cd wiringOP'''</p> <p>orangepi@orangepi:~/wiringOP$ '''sudo ./build clean'''</p> <p>orangepi@orangepi:~/wiringOP$ '''sudo ./build'''</p> |} </li> <li><p>测试gpio readall命令的输出如下</p> <div class="figure"> [[File:plus-5-483.png]] </div></li></ol> <span id="pin接口gpioi2cuartspican和pwm测试"></span> == 40 pin接口GPIO、I2C、UART、SPI、CAN和PWM测试 == <span id="pin-gpio口测试"></span> === 40 pin GPIO口测试 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''Orange Pi发布的linux系统中有预装一个blink_all_gpio程序,这个程序会设置40 pin中的所有28个GPIO口不停的切换高低电平。''' '''运行blink_all_gpio程序后,当用万用表去测量GPIO口的电平时,会发现GPIO引脚会在0和3.3v之间不停的切换。使用这个程序我们可以来测试GPIO口是否能正常工作。''' '''运行blink_all_gpio程序的方式如下所示:''' orangepi@orangepi5plus:~$ '''sudo blink_all_gpio #记得加sudo权限''' [sudo] password for orangepi: '''#在这里需要输入密码'''</big> |} <ol style="list-style-type: decimal;"> <li><p>开发板40 pin中总共有'''28'''个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO1_D6 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平</p> <div class="figure"> [[File:plus-5-485.png]] </div></li> <li><p>首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> out'''</p> |} </li> <li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">0</span>'''</p> |} <p>使用gpio readall可以看到7号引脚的值(V)变为了0</p> <div class="figure"> [[File:plus-5-486.png]] </div></li> <li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio write 2 <span style="color:#FF0000">1</span>'''</p> |} <p>使用gpio readall可以看到7号引脚的值(V)变为了1</p> <div class="figure"> [[File:plus-5-487.png]] </div></li> <li><p>其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可</p></li></ol> <span id="pin-gpio口上下拉电阻的设置方法"></span> === 40 pin GPIO口上下拉电阻的设置方法 === <ol style="list-style-type: decimal;"> <li><p>下面以7号引脚——对应GPIO为GPIO1_D6 ——对应wPi序号为2——为例演示如何设置GPIO口的上下拉电阻</p> <div class="figure"> [[File:plus-5-487.png]] </div></li> <li><p>首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> in'''</p> |} </li> <li><p>设置为输入模式后,执行下面的命令可以设置GPIO口为上拉模式</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> up'''</p> |} </li> <li><p>然后输入下面的命令读取GPIO口的电平,如果电平为1,说明上拉模式设置成功</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">2</span>'''</p> <p>'''1'''</p> |} </li> <li><p>然后执行下面的命令可以设置GPIO口为下拉模式</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio mode <span style="color:#FF0000">2</span> down'''</p> |} </li> <li><p>然后输入下面的命令读取GPIO口的电平,如果电平为0,说明下拉模式设置成功</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP# '''gpio read <span style="color:#FF0000">2</span>'''</p> <p>'''0'''</p> |} </li></ol> <span id="pin-spi测试"></span> === 40 pin SPI测试 === <ol style="list-style-type: decimal;"> <li><p>由下图可知,Orange Pi 5 Plus可用的SPI为SPI0和SPI4</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>SPI0和SPI4在40pin中对应的引脚如下表所示。SPI4_M1和SPI4_M2同一时间只能使用其中一组,不能同时使用,它们都是同一个SPI4,只是接到不同的引脚上去了而已,请不要以为它们是两组不同的SPI总线。</p></li> {| class="wikitable" style="width: 800px;" |- | | '''S PI0_M2对应40pin''' | '''S PI4_M1对应40pin''' | '''SP I4_M2对应40pin''' |- | '''MOSI''' | '''19号引脚''' | '''12号引脚''' | '''8号引脚''' |- | '''MISO''' | '''21号引脚''' | '''31号引脚''' | '''10号引脚''' |- | '''CLK''' | '''23号引脚''' | '''35号引脚''' | '''22号引脚''' |- | '''CS0''' | '''24号引脚''' | '''40号引脚''' | '''31号引脚''' |- | '''CS1''' | '''26号引脚''' | '''38号引脚''' | '''<span style="color:#FF0000">无</span>''' |- | '''dtb o配置''' | '''spi 0-m2-cs0-spidev''' '''spi 0-m2-cs1-spidev''' '''spi0-m2 -cs0-cs1-spidev''' | '''spi 4-m1-cs0-spidev''' '''spi 4-m1-cs1-spidev''' '''spi4-m1 -cs0-cs1-spidev''' | '''spi4 -m2-cs0-spidev''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的SPI的配置</p> <p>[[File:plus-5-492.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>重启后进入系统先查看下linux系统中是否存在'''spidevx.x'''的设备节点,如果存在,说明SPI已经设置好了,可以直接使用。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/spidev*'''</p> <p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''上面是打开spi0-m2-cs0-cs1-spidev和spi4-m1-cs0-cs1-spidev后显示的结果。'''</p></big> |} </li> <li><p>然后先不短接SPI0或者SPI4的MOSI和MISO两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p> <p>'''或者'''</p> <p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev0.0'''</p> <p>spi mode: 0x0</p> <p>bits per word: 8</p> <p>max speed: 500000 Hz (500 KHz)</p> <p>TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p> <p>RX | FF FF FF FF FF FF '''<span style="color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….</p> |} </li> <li><p>然后短接SPI0或者SPI4的MOSI和MISO两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样,说明SPI回环测试正常。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p> <p>'''或者'''</p> <p>orangepi@orangepi:~$ '''sudo spidev_test -v -D /dev/spidev0.0'''</p> <p>spi mode: 0x0</p> <p>bits per word: 8</p> <p>max speed: 500000 Hz (500 KHz)</p> <p>TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p> <p>RX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p> |} </li></ol> <span id="pin-i2c测试"></span> === 40 pin I2C测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的i2c为i2c2、i2c4、i2c5和i2c8共四组 i2c总线。</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>4组I2C总线在40pin中对应的引脚如下表所示。I2C2_M0和I2C2_M4同一时间只能使用其中一组,不能同时使用,它们都是同一个I2C2,只是接到不同的引脚上去了而已,请不要以为它们是两组不同的I2C2总线。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''I2C总线''' | style="text-align: left;"| '''SDA对应40pin''' | style="text-align: left;"| '''SCL对应40pin''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''I2C2_M0''' | style="text-align: left;"| '''3号引脚''' | style="text-align: left;"| '''5号引脚''' | style="text-align: left;"| '''i2c2-m0''' |- | style="text-align: left;"| '''I2C2_M4''' | style="text-align: left;"| '''10号引脚''' | style="text-align: left;"| '''8号引脚''' | style="text-align: left;"| '''i2c2-m4''' |- | style="text-align: left;"| '''I2C4_M3''' | style="text-align: left;"| '''22号引脚''' | style="text-align: left;"| '''32号引脚''' | style="text-align: left;"| '''i2c4-m3''' |- | style="text-align: left;"| '''I2C5_M3''' | style="text-align: left;"| '''27号引脚''' | style="text-align: left;"| '''28号引脚''' | style="text-align: left;"| '''i2c5-m3''' |- | style="text-align: left;"| '''I2C8_M2''' | style="text-align: left;"| '''29号引脚''' | style="text-align: left;"| '''7号引脚''' | style="text-align: left;"| '''i2c8-m2''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的I2C的配置</p> <p>[[File:plus-5-499.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>启动linux系统后,先确认下'''/dev'''下存在需要使用I2C的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p> |} </li> <li><p>然后在40 pin接口对应的I2C引脚上接一个I2C设备</p></li> <li><p>然后使用'''i2cdetect -y'''命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 2''' #i2c2的命令</p> <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 4''' #i2c4的命令</p> <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 5''' #i2c5的命令</p> <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 8''' #i2c8的命令</p> |} </li> <div class="figure"> [[File:plus-5-503.png]] </div></ol> <span id="pin的uart测试"></span> === 40 pin的UART测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的uart为uart1、uart3、uart4、uart6、uart7和uart8共6组uart总线</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>6组UART总线在40pin中对应的引脚如下表所示:</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''UART总线''' | style="text-align: left;"| '''RX对应40pin''' | style="text-align: left;"| '''TX对应40pin''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''UART1_M1''' | style="text-align: left;"| '''27号引脚''' | style="text-align: left;"| '''28号引脚''' | style="text-align: left;"| '''uart1-m1''' |- | style="text-align: left;"| '''UART3_M1''' | style="text-align: left;"| '''18号引脚''' | style="text-align: left;"| '''16号引脚''' | style="text-align: left;"| '''uart3-m1''' |- | style="text-align: left;"| '''UART4_M2''' | style="text-align: left;"| '''19号引脚''' | style="text-align: left;"| '''23号引脚''' | style="text-align: left;"| '''uart4-m2''' |- | style="text-align: left;"| '''UART6_M1''' | style="text-align: left;"| '''10号引脚''' | style="text-align: left;"| '''8号引脚''' | style="text-align: left;"| '''uart6-m1''' |- | style="text-align: left;"| '''UART7_M2''' | style="text-align: left;"| '''24号引脚''' | style="text-align: left;"| '''26号引脚''' | style="text-align: left;"| '''uart7-m2''' |- | style="text-align: left;"| '''UART8_M1''' | style="text-align: left;"| '''40号引脚''' | style="text-align: left;"| '''35号引脚''' | style="text-align: left;"| '''uart8-m1''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的UART的配置</p> <p>[[File:plus-5-507.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>进入linux系统后,先确认下/dev下是否存在对应uart的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/ttyS*'''</p> |} </li> <li><p>然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx引脚</p></li> <li><p>使用'''gpio serial'''命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常(ttySX需要替换为对应uart的节点名,请不要照抄)</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo gpio serial /dev/ttySX'''</p> <p>[sudo] password for orangepi: #在这里输入密码</p> <p>Out: 0: -> 0</p> <p>Out: 1: -> 1</p> <p>Out: 2: -> 2</p> <p>Out: 3: -> 3</p> <p>Out: 4: -> 4</p> <p>Out: 5: -> 5^C</p> |} </li></ol> <span id="pwm的测试方法"></span> === PWM的测试方法 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的PWM有pwm0、pwm1、pwm11、pwm12、pwm13和pwm14共六路pwm</p> <p>[[File:plus-5-479.png|1000px]]</p></li> <li><p>PWM在40pin中对应的引脚如下表所示。PWM0_M0和PWM0_M2、PWM1_M0和PWM1_M2、PWM14_M0和PWM14_M2同一时间只能使用其中一个,不能同时使用,它们都是同一个PWM,只是接到不同的引脚上去了而已,请不要以为它们是两个不同的PWM总线。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''PWM总线''' | style="text-align: left;"| '''对应40pin''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''PWM0_M0''' | style="text-align: left;"| '''5号引脚''' | style="text-align: left;"| '''pwm0-m0''' |- | style="text-align: left;"| '''PWM0_M2''' | style="text-align: left;"| '''22号引脚''' | style="text-align: left;"| '''pwm0-m2''' |- | style="text-align: left;"| '''PWM1_M0''' | style="text-align: left;"| '''3号引脚''' | style="text-align: left;"| '''pwm1-m0''' |- | style="text-align: left;"| '''PWM1_M2''' | style="text-align: left;"| '''32号引脚''' | style="text-align: left;"| '''pwm1-m2''' |- | style="text-align: left;"| '''PWM11_M0''' | style="text-align: left;"| '''12号引脚''' | style="text-align: left;"| '''pwm11-m0''' |- | style="text-align: left;"| '''PWM12_M0''' | style="text-align: left;"| '''14号引脚''' | style="text-align: left;"| '''pwm12-m0''' |- | style="text-align: left;"| '''PWM13_M0''' | style="text-align: left;"| '''16号引脚''' | style="text-align: left;"| '''pwm13-m0''' |- | style="text-align: left;"| '''PWM14_M0''' | style="text-align: left;"| '''33号引脚''' | style="text-align: left;"| '''pwm14-m0''' |- | style="text-align: left;"| '''PWM14_M2''' | style="text-align: left;"| '''7号引脚''' | style="text-align: left;"| '''pwm14-m0''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的PWM默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的PWM的配置</p> <p>[[File:plus-5-514.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>当打开一个pwm后,在'''/sys/class/pwm/'''中就会多出一个pwmchipX(X为具体的的数字),比如打开pwm14后,查看'''/sys/class/pwm/'''下的pwmchipX会由两个变成了三个</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /sys/class/pwm/'''</p> <p>pwmchip0 pwmchip1 pwmchip2</p> |} </li> <li><p>上面哪个pwmchip对应pwm14呢,我们先查看下 '''ls /sys/class/pwm/ -l'''命令的输出,如下所示:</p> <div class="figure"> [[File:plus-5-518.png]] </div></li> <li><p>然后由下表可知,pwm14寄存器的基地址为febf0020,再看 '''ls /sys/class/pwm/ -l'''命令的输出,可以看到pwmchip2中链接到了febf0020.pwm,所以pwm14对应pwmchip为pwmchip2</p> <p>[[File:plus-5-519.png]]</p></li> <li><p>然后使用下面的命令可以让pwm14输出一个50Hz的方波(请先切换到root用户,再执行下面的命令)</p></li> {| class="wikitable" style="width:800px;" |- | root@orangepi:~# '''echo 0 > /sys/class/pwm/pwmchip2/export''' root@orangepi:~# '''echo 20000000 > /sys/class/pwm/pwmchip2/pwm0/period''' root@orangepi:~# '''echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle''' root@orangepi:~# '''echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable''' |} [[File:plus-5-520.png]] </ol> <ol start="8" style="list-style-type: decimal;"> <li>上面演示的pwm14的测试方法,其他pwm测试方法都是类似的。</li></ol> <span id="can的测试方法"></span> === CAN的测试方法 === <span id="打开can的方法"></span> ==== 打开CAN的方法 ==== <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的CAN总线为CAN0和CAN1共两组CAN总线</p> <p>[[File:plus5-521.png|1200px]]</p></li> <li><p>在linux系统中,40 pin中的CAN默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的CAN的配置(OPi > 5 Plus可选'''can0-m0'''和'''cam1-m0''')</p> <p>[[File:plus-5-524.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>进入linux系统后,使用'''sudo ifconfig -a'''命令如果能看到CAN的设备节点,就说明CAN已正确打开了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo ifconfig -a'''</p> <p>can0: flags=128<NOARP> mtu 16</p> ::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p> ::<p>RX packets 0 bytes 0 (0.0 B)</p> ::<p>RX errors 0 dropped 0 overruns 0 frame 0</p> ::<p>TX packets 0 bytes 0 (0.0 B)</p> ::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p> ::<p>device interrupt 94</p> <p>can1: flags=128<NOARP> mtu 16</p> ::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p> ::<p>RX packets 0 bytes 0 (0.0 B)</p> ::<p>RX errors 0 dropped 0 overruns 0 frame 0</p> ::<p>TX packets 0 bytes 0 (0.0 B)</p> ::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p> ::<p>device interrupt 95</p> |} </li> <li><p>CAN0和CAN1对应的引脚为</p></li> {| class="wikitable" style="width:800px;" |- | | style="text-align: left;"| '''CAN0''' | style="text-align: left;"| '''CAN1''' |- | '''TX引脚''' | style="text-align: left;"| '''对应40pin的5号引脚''' | style="text-align: left;"| '''对应40pin的18号引脚''' |- | '''RX引脚''' | style="text-align: left;"| '''对应40pin的3号引脚''' | style="text-align: left;"| '''对应40pin的16号引脚''' |} </ol> <span id="使用canalyst-ii分析仪测试收发消息"></span> ==== 使用CANalyst-II分析仪测试收发消息 ==== <ol style="list-style-type: decimal;"> <li><p>测试使用的CANalyst-II分析仪如下图所示</p> <p>[[File:plus-5-528.png]]</p></li> <li><p>CANalyst-II分析仪资料下载链接</p> {| class="wikitable" style="width:800px;" |- | <big>'''https://www.zhcxgd.com/3.html'''</big> |} </li> <li><p>首先要安装USBCANToolSetup这个软件</p> <p>[[File:plus-5-529.png]]</p></li> <li><p>USBCANToolSetup安装后的快捷方式为</p> <p>[[File:plus-5-530.png]]</p></li> <li><p>另外还需要安装一下USB驱动程序</p> <p>[[File:plus-5-531.png]]</p></li> <li><p>CANalyst-II分析仪的USB接口那端需要接到电脑的USB接口中</p> <p>[[File:plus-5-532.png]]</p></li> <li><p>测试CAN功能还需要准备一个下图所示的CAN收发器,CAN收发器主要功能是将CAN控制器的TTL信号转换成CAN总线的差分信号</p> <ol style="list-style-type: lower-alpha;"> <li><p>CAN收发器的3.3V引脚需要接开发板40 pin中的3.3V引脚</p></li> <li><p>CAN收发器的GND引脚需要接开发板40 pin中的GND引脚</p></li> <li><p>CAN收发器的CAN TX引脚需要接开发板40 pin中CAN总线的TX引脚</p></li> <li><p>CAN收发器的CAN RX引脚需要接开发板40 pin中CAN总线的RX引脚</p></li> <li><p>CAN收发器的CANL引脚需要接分析仪的H接口</p></li> <li><p>CAN收发器的CANL引脚需要接分析仪的L接口</p> <p>[[File:plus-5-533.png]]</p></li></ol> </li> <li><p>然后可以打开USB-CAN软件</p> <p>[[File:plus-5-534.png]]</p></li> <li><p>然后点击启动设备</p> <p>[[File:plus-5-535.png]]</p></li> <li><p>然后点击确定</p> <p>[[File:plus-5-536.png]]</p></li> <li><p>再设置波特率为1000k bps</p> <p>[[File:plus-5-537.png]]</p></li> <li><p>成功打开后USB-CAN软件会显示序列号等信息</p> <p>[[File:plus-5-538.png]]</p></li> <li><p>开发板接收CAN消息测试</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在开发板的Linux系统中设置下CAN总线的波特率为'''1000kbps'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo ip link set can0 down'''</p> <p>orangepi@orangepi:~$ '''sudo ip link set can0 type can bitrate 1000000'''</p> <p>orangepi@orangepi:~$ '''sudo ip link set can0 up'''</p> |} </li> <li><p>然后运行'''candump can0'''命令准备接收消息</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo candump can0'''</p> |} </li> <li><p>然后在USB-CAN软件中发送一个消息给开发板</p> <p>[[File:plus-5-539.png]]</p></li> <li><p>如果开发板中可以接收到分析仪发送的消息说明CAN总线能正常使用</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi5plus:~$ '''sudo candump can0'''</p> <p>'''can0 001 [8] 01 02 03 04 05 06 07 08'''</p> |} </li></ol> </li> <li><p>开发板发送CAN消息测试</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在Linux系统中设置下CAN的波特率为'''1000kbps'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo ip link set can0 down'''</p> <p>orangepi@orangepi:~$ '''sudo ip link set can0 type can bitrate 1000000'''</p> <p>orangepi@orangepi:~$ '''sudo ip link set can0 up'''</p> |} </li> <li><p>再开发板中执行'''cansend'''命令,发送一个消息</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo cansend can0 123#1122334455667788'''</p> |} </li> <li><p>如果USB-CAN软件可以接收到开发板发过来的消息说明通信成功</p> <p>[[File:plus-5-540.png]]</p></li></ol> </li></ol> <span id="wiringop-python的安装使用方法"></span> == wiringOP-Python的安装使用方法 == {| class="wikitable" style="width:800px;background-color:#ffffdc;" |- | <big>'''wiringOP-Python是wiringOP的Python语言版本的库,用于在Python程序中操作开发板的GPIO、I2C、SPI和UART等硬件资源。''' '''另外请注意下面所有的命令都是在<span style="color:#FF0000">root</span>用户下操作的。'''</big> |} <span id="wiringop-python的安装方法"></span> === wiringOP-Python的安装方法 === <ol style="list-style-type: decimal;"> <li><p>首先安装依赖包</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''sudo apt-get update'''</p> <p>root@orangepi:~# '''sudo apt-get -y install git swig python3-dev python3-setuptools'''</p> |} </li> <li><p>然后使用下面的命令下载wiringOP-Python的源码</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,下面的git clone--recursive命令会自动下载wiringOP的源码,因为wiringOP-Python是依赖wiringOP的。请确保下载过程没有因为网络问题而报错。''' '''如果从GitHub下载代码有问题,可以直接使用Linux镜像中自带的wiringOP-Python源码,存放位置为:/usr/src/wiringOP-Python'''。</big> |} {| class="wikitable" style="width:800px;" |- | 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''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>然后使用下面的命令编译wiringOP-Python并将其安装到开发板的Linux系统中</p> {| class="wikitable" style="width:800px;" |- | root@orangepi:~# '''cd wiringOP-Python''' root@orangepi:~/wiringOP-Python# '''python3 generate-bindings.py > bindings.i''' root@orangepi:~/wiringOP-Python# '''sudo python3 setup.py install''' |} </li> <li><p>然后输入下面的命令,如果有帮助信息输出,说明wiringOP-Python安装成功,按下'''q'''键可以退出帮助信息的界面</p></li> {| class="wikitable" style="width:800px;" |- | root@orangepi:~/wiringOP-Python# '''python3 -c "import wiringpi; help(wiringpi)"''' Help on module wiringpi: NAME ::wiringpi DESCRIPTION :: # 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. |} </ol> <ol start="5" style="list-style-type: decimal;"> <li><p>在python命令行下测试wiringOP-Python是否安装成功的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li>首先使用python3命令进入python3的命令行模式</li> </li> {| class="wikitable" style="width:800px;" |- | root@orangepi:~# '''python3''' |} </ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后导入wiringpi的python模块</li> {| class="wikitable" style="width:800px;" |- | >>> '''import wiringpi;''' |} </ol> <ol start="3" style="list-style-type: lower-alpha;"> <li>最后输入下面的命令可以查看下wiringOP-Python的帮助信息,按下'''q'''键可以退出帮助信息的界面</li> {| class="wikitable" style="width:800px;" |- | >>> '''help(wiringpi)''' Help on module wiringpi: NAME ::wiringpi DESCRIPTION :: # 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. CLASSES ::builtins.object ::::GPIO ::::I2C ::::Serial ::::nes ::class GPIO(builtins.object) ::| GPIO(pinmode=0) ::| >>> |} </ol> <span id="pin-gpio口测试-1"></span> === 40 pin GPIO口测试 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''wiringOP-Python跟wiringOP一样,也是可以通过指定wPi号来确定操作哪一个GPIO引脚,因为wiringOP-Python中没有查看wPi号的命令,所以只能通过wiringOP中的gpio命令来查看板子wPi号与物理引脚的对应关系。'''</big> [[File:plus-5-485.png]] |} <ol style="list-style-type: decimal;"> <li><p>下面以7号引脚——对应GPIO为GPIO1_D6——对应wPi序号为2——为例演示如何设置GPIO口的高低电平</p> <div class="figure"> [[File:plus-5-483.png]] </div></li> <li><p>直接用命令测试的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先设置GPIO口为输出模式,其中'''pinMode'''函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''python3 -c "import wiringpi; \'''</p> <p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \'''</p> <p>'''wiringpi.pinMode(2, GPIO.OUTPUT) ; "'''</p> |} </li> <li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''python3 -c "import wiringpi; \'''</p> <p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''</p> <p>'''wiringpi.digitalWrite(2, GPIO.LOW)"'''</p> |} </li> <li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''python3 -c "import wiringpi; \'''</p> <p>'''from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\'''</p> <p>'''wiringpi.digitalWrite(2, GPIO.HIGH)"'''</p> |} </li></ol> </li> <li><p>在python3的命令行中测试的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先使用python3命令进入python3的命令行模式</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''python3'''</p> |} </li> <li><p>然后导入wiringpi的python模块</p> {| class="wikitable" style="width:800px;" |- | <p>>>> '''import wiringpi'''</p> <p>>>> '''from wiringpi import GPIO'''</p> |} </li> <li><p>然后设置GPIO口为输出模式,其中'''pinMode'''函数的第一个参数是引脚对应的wPi的序号,第二个参数是GPIO的模式</p> {| class="wikitable" style="width:800px;" |- | <p>>>> '''wiringpi.wiringPiSetup()'''</p> <p>0</p> <p>>>> '''wiringpi.pinMode(2, GPIO.OUTPUT)'''</p> |} </li> <li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>>>> '''wiringpi.digitalWrite(2, GPIO.LOW)'''</p> |} </li> <li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>>>> '''wiringpi.digitalWrite(2, GPIO.HIGH)'''</p> |} </li></ol> </li> <li><p>wiringOP-Python在python代码中设置GPIO高低电平的方法可以参考下examples中的'''blink.py'''测试程序,'''blink.py'''测试程序会设置开发板40 pin中所有的GPIO口的电压不断的高低变化</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p> <p>root@orangepi:~/wiringOP-Python/examples# '''ls blink.py'''</p> <p>'''blink.py'''</p> <p>root@orangepi:~/wiringOP-Python/examples'''# python3 blink.py'''</p> |} </li></ol> <span id="pin-spi测试-1"></span> === 40 pin SPI测试 === <ol style="list-style-type: decimal;"> <li><p>由下图可知,Orange Pi 5 Plus可用的SPI为SPI0和SPI4</p> <p>[[File:plus-5-479.png|1000px]]</p></li> <li><p>SPI0和SPI4在40pin中对应的引脚如下表所示。SPI4_M1和SPI4_M2同一时间只能使用其中一组,不能同时使用,它们都是同一个SPI4,只是接到不同的引脚上去了而已,请不要以为它们是两组不同的SPI总线。</p></li> {| class="wikitable" style="width:800px;" |- | | '''S PI0_M2对应40pin''' | '''S PI4_M1对应40pin''' | '''SP I4_M2对应40pin''' |- | '''MOSI''' | '''19号引脚''' | '''12号引脚''' | '''8号引脚''' |- | '''MISO''' | '''21号引脚''' | '''31号引脚''' | '''10号引脚''' |- | '''CLK''' | '''23号引脚''' | '''35号引脚''' | '''22号引脚''' |- | '''CS0''' | '''24号引脚''' | '''40号引脚''' | '''31号引脚''' |- | '''CS1''' | '''26号引脚''' | '''38号引脚''' | '''<span style="color:#FF0000">无</span>''' |- | '''dtb o配置''' | '''spi 0-m2-cs0-spidev''' '''spi 0-m2-cs1-spidev''' '''spi0-m2 -cs0-cs1-spidev''' | '''spi 4-m1-cs0-spidev''' '''spi 4-m1-cs1-spidev''' '''spi4-m1 -cs0-cs1-spidev''' | '''spi4 -m2-cs0-spidev''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的SPI的配置</p> <p>[[File:plus5-546.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>重启后进入系统先查看下linux系统中是否存在'''spidevx.x'''的设备节点,如果存在,说明SPI已经设置好了,可以直接使用。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/spidev*'''</p> <p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''上面是打开spi0-m2-cs0-cs1-spidev和spi4-m1-cs0-cs1-spidev后显示的结果。'''</p></big> |} </li> <li><p>然后可以使用examples中的'''spidev_test.py'''程序测试下SPI的回环功能,'''spidev_test.py'''程序需要指定下面的两个参数:</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''--channel''':指定SPI的通道号</p></li> <li><p>'''--port''':指定SPI的端口号</p></li></ol> </li> <li><p>先不短接SPI的MOSI和MISO两个引脚,运行'''spidev_test.py'''的输出结果如下所示,可以看到 TX 和 RX 的数据不一致</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''--channel和--port参数后面的x需要替换为具体SPI的通道号和SPI的端口号。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p> root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py --channel x --port x''' spi mode: 0x0 max speed: 500000 Hz (500 KHz) Opening device /dev/spidev4.1 TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' 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 '''<span style="color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |.............….| |} </li></ol> <ol start="7" style="list-style-type: decimal;"> <li><p>然后使用杜邦线短接SPI的MOSI和MISO两个引脚,再运行'''spidev_test.py'''的输出如下,可以看到发送和接收的数据一样,说明SPI回环测试正常</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''--channel和--port参数后面的x需要替换为具体SPI的通道号和SPI的端口号。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p> root@orangepi:~/wiringOP-Python/examples# '''python3 spidev_test.py --channel x --port x''' spi mode: 0x0 max speed: 500000 Hz (500 KHz) Opening device /dev/spidev4.1 TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' 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 '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D |......@.......…| |} </li></ol> <span id="pin-i2c测试-1"></span> === 40 pin I2C测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的i2c为i2c2、i2c4、i2c5和i2c8共四组 i2c总线。</p> <p>[[File:plus-5-479.png|1000px]]</p></li> <li><p>4组I2C总线在40pin中对应的引脚如下表所示。I2C2_M0和I2C2_M4同一时间只能使用其中一组,不能同时使用,它们都是同一个I2C2,只是接到不同的引脚上去了而已,请不要以为它们是两组不同的I2C2总线。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''I2C总线''' | style="text-align: left;"| '''SDA对应40pin''' | style="text-align: left;"| '''SCL对应40pin''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''I2C2_M0''' | style="text-align: left;"| '''3号引脚''' | style="text-align: left;"| '''5号引脚''' | style="text-align: left;"| '''i2c2-m0''' |- | style="text-align: left;"| '''I2C2_M4''' | style="text-align: left;"| '''10号引脚''' | style="text-align: left;"| '''8号引脚''' | style="text-align: left;"| '''i2c2-m4''' |- | style="text-align: left;"| '''I2C4_M3''' | style="text-align: left;"| '''22号引脚''' | style="text-align: left;"| '''32号引脚''' | style="text-align: left;"| '''i2c4-m3''' |- | style="text-align: left;"| '''I2C5_M3''' | style="text-align: left;"| '''27号引脚''' | style="text-align: left;"| '''28号引脚''' | style="text-align: left;"| '''i2c5-m3''' |- | style="text-align: left;"| '''I2C8_M2''' | style="text-align: left;"| '''29号引脚''' | style="text-align: left;"| '''7号引脚''' | style="text-align: left;"| '''i2c8-m2''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的I2C的配置</p> <p>[[File:plus5-553.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>启动linux系统后,先确认下'''/dev'''下存在对应i2c的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p> |} </li> <li><p>然后在40 pin接头的i2c引脚上接一个i2c设备,这里以ds1307 RTC模块为例</p> <p>[[File:plus-5-557.png]]</p></li> <li><p>然后使用'''i2cdetect -y'''命令如果能检测到连接的i2c设备的地址,就说明i2c能正常识别。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 2''' #i2c2的命令</p> <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 4''' #i2c4的命令</p> <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 5''' #i2c5的命令</p> <p>orangepi@orangepi:~$ '''sudo i2cdetect -y 8''' #i2c8的命令</p> |} </li> <li><p>然后可以运行'''wiringOP-Python/examples'''文件中的'''ds1307.py'''测试程序读取RTC的时间</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''/dev/i2c-x需要替换是具体的i2c设备节点的序号。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python# '''cd examples'''</p> <p>root@orangepi:~/wiringOP-Python/examples# '''python3 ds1307.py --device "/dev/i2c-x"'''</p> <p>Thu 2023-01-05 14:57:55</p> <p>Thu 2023-01-05 14:57:56</p> <p>Thu 2023-01-05 14:57:57</p> <p>^C</p> <p>exit</p> |} </li></ol> <span id="pin的uart测试-1"></span> === 40 pin的UART测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的uart为uart1、uart3、uart4、uart6、uart7和uart8共6组uart总线</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>6组UART总线在40pin中对应的引脚如下表所示:</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''UART总线''' | style="text-align: left;"| '''RX`对应40pin''' | style="text-align: left;"| '''TX对应40pin''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''UART1_M1''' | style="text-align: left;"| '''27号引脚''' | style="text-align: left;"| '''28号引脚''' | style="text-align: left;"| '''uart1-m1''' |- | style="text-align: left;"| '''UART3_M1''' | style="text-align: left;"| '''18号引脚''' | style="text-align: left;"| '''16号引脚''' | style="text-align: left;"| '''uart3-m1''' |- | style="text-align: left;"| '''UART4_M2''' | style="text-align: left;"| '''19号引脚''' | style="text-align: left;"| '''23号引脚''' | style="text-align: left;"| '''uart4-m2''' |- | style="text-align: left;"| '''UART6_M1''' | style="text-align: left;"| '''10号引脚''' | style="text-align: left;"| '''8号引脚''' | style="text-align: left;"| '''uart6-m1''' |- | style="text-align: left;"| '''UART7_M2''' | style="text-align: left;"| '''24号引脚''' | style="text-align: left;"| '''26号引脚''' | style="text-align: left;"| '''uart7-m2''' |- | style="text-align: left;"| '''UART8_M1''' | style="text-align: left;"| '''40号引脚''' | style="text-align: left;"| '''35号引脚''' | style="text-align: left;"| '''uart8-m1''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的UART的配置</p> <p>[[File:plus5-561.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:5plus-54.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:5plus-55.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li></ol> </li> <li><p>进入linux系统后,先确认下/dev下是否存在对应uart的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/ttyS*'''</p> |} </li> <li><p>然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx引脚</p></li> <li><p>然后使用'''wiringOP-Python/examples'''中的'''serialTest.py'''程序测试串口的回环功能。如下所示,如果能看到下面的打印,说明串口通信正常。</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''/dev/ttySX需要替换是具体的uart设备节点的序号。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~/wiringOP-Python/examples# '''python3 serialTest.py --device "/dev/ttySX"'''</p> <p>Out: 0: -> 0</p> <p>Out: 1: -> 1</p> <p>Out: 2: -> 2</p> <p>Out: 3: -> 3</p> <p>Out: 4:^C</p> <p>exit</p> |} </li></ol> == 硬件看门狗测试 == Orange Pi发布的linux系统中预装了watchdog_test程序,可以直接测试。 运行watchdog_test程序的方法如下所示: <ol style="list-style-type: lower-alpha;"> <li><p>第二个参数10表示看门狗的计数时间,如果这个时间内没有喂狗,系统会重启</p></li> <li><p>我们可以通过按下键盘上的任意键(ESC除外)来喂狗,喂狗后,程序会打印一行keep alive表示喂狗成功</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo watchdog_test 10'''</p> <p>open success</p> <p>options is 33152,identity is sunxi-wdt</p> <p>put_usr return,if 0,success:0</p> <p>The old reset time is: 16</p> <p>return ENOTTY,if -1,success:0</p> <p>return ENOTTY,if -1,success:0</p> <p>put_user return,if 0,success:0</p> <p>put_usr return,if 0,success:0</p> <p>keep alive</p> <p>keep alive</p> <p>keep alive</p> |} </li></ol> <span id="查看rk3588芯片的序列号"></span> == 查看RK3588芯片的序列号 == 查看RK3588芯片序列号的命令如下所示,每个芯片的序列号都是不同的,所以可以使用序列号来区分多个开发板。 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''cat_serial.sh''' Serial : '''<span style="color:blue">1404a7682e86830c</span>''' |} <span id="安装docker的方法"></span> == 安装Docker的方法 == <ol style="list-style-type: decimal;"> <li><p>Orange Pi提供的linux镜像已经预装了Docker,只是Docker服务默认没有打开</p></li> <li><p>使用'''enable_docker.sh'''脚本可以使能docker服务,然后就可以开始使用docker命令了,并且在下次启动系统时也会自动启动docker服务</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''enable_docker.sh'''</p> |} </li> <li><p>然后可以使用下面的命令测试下docker,如果能运行hello-world说明docker能正常使用了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''docker run hello-world'''</p> <p>Unable to find image 'hello-world:latest' locally</p> <p>latest: Pulling from library/hello-world</p> <p>256ab8fe8778: Pull complete</p> <p>Digest: sha256:7f0a9f93b4aa3022c3a4c147a449ef11e0941a1fd0bf4a8e6c9408b2600777c5</p> <p>Status: Downloaded newer image for hello-world:latest</p> <p>'''<span style="color:#FF0000">Hello from Docker!</span>'''</p> <p>'''<span style="color:#FF0000">This message shows that your installation appears to be working correctly.</span>'''</p> <p>'''.….'''</p> |} </li></ol> <span id="下载安装arm64版本balenaetcher的方法"></span> == 下载安装arm64版本balenaEtcher的方法 == <ol style="list-style-type: decimal;"> <li><p>balenaEtcher arm64版本的下载地址为:</p> <ol style="list-style-type: lower-alpha;"> <li><p>deb安装包的下载地址如下所示,需要安装才能使用</p> {| class="wikitable" style="width:800px;" |- | <big>'''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''</big> |} </li> <li><p>无需安装的AppImage版本的下载地址如下所示:</p> {| class="wikitable" style="width:800px;" |- | <big>'''https://github.com/Itai-Nelken/BalenaEtcher-arm/releases/download/v1.7.9/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''</big> |} </li> <div class="figure"> [[File:plus-5-565.png|1000px]] </div></ol> </li></ol> <ol start="2" style="list-style-type: decimal;"> <li><p>deb版本balenaEtcher的安装使用方法:</p> <ol style="list-style-type: lower-alpha;"> <li><p>deb版本的balenaEtcher安装命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo apt install -y \'''</p> <p>'''--fix-broken ./balena-etcher-electron_1.7.9+5945ab1f_arm64.deb'''</p> |} </li> <li><p>deb版本的balenaEtcher安装完成后,在Application中就可以打开了</p> <div class="figure"> [[File:plus-5-117.png|1200px]] </div></li> <li><p>balenaEtcher打开后的界面如下所示:</p></li> <div class="figure"> [[File:plus-5-567.png]] </div></ol> </li></ol> <ol start="3" style="list-style-type: decimal;"> <li><p>AppImage版本的balenaEtcher的使用方法:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先给balenaEtcher添加权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/Desktop$ '''chmod +x balenaEtcher-1.7.9+5945ab1f-arm64.AppImage'''</p> |} </li> <li><p>然后选中AppImage版本balenaEtcher,再点击鼠标右键,再点击Execute就可以打开balenaEtcher了</p> <p>[[File:plus-5-568.png]]</p></li></ol> </li></ol> <span id="宝塔linux面板的安装方法"></span> == 宝塔Linux面板的安装方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能(摘抄自[https://www.bt.cn/ 宝塔官网])'''</big> |} <ol style="list-style-type: decimal;"> <li><p>宝塔Linux系统兼容性推荐的顺序为</p> {| class="wikitable" style="width:800px;" |- | <p>'''Debian11 > Ubuntu 22.04'''</p> |} </li> <li><p>然后在linux系统中输入下面的命令就可以开始宝塔的安装</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo install_bt_panel.sh'''</p> |} </li> <li><p>然后宝塔安装程序会提醒是否安装'''Bt-Panel'''到'''/www'''文件夹,此时输入'''y'''即可</p> {| class="wikitable" style="width:800px;" |- | <p>+----------------------------------------------------------------------</p> <p>| Bt-WebPanel FOR CentOS/Ubuntu/Debian</p> <p>+----------------------------------------------------------------------</p> <p>| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.</p> <p>+----------------------------------------------------------------------</p> <p>| The WebPanel URL will be http://SERVER_IP:8888 when installed.</p> <p>+----------------------------------------------------------------------</p> <p>Do you want to install Bt-Panel to the /www directory now?(y/n): '''<span style="color:#FF0000">y</span>'''</p> |} </li> <li><p>然后要做的就是耐心等待,当看到终端输出下面的打印信息时,说明宝塔已经安装完成,整个安装过程大约耗时9分钟,根据网络速度的不同可能会有一些差别</p> <p>[[File:plus-5-569.png]]</p></li> <li><p>此时在浏览器中输入上面显示的'''面板地址'''就可以打开宝塔Linux面板的登录界面,然后在对应的位置输入上图显示的'''username'''和'''password'''就可以登录进宝塔</p> <p>[[File:plus-5-570.png]]</p></li> <li><p>成功登录宝塔后的会弹出下面的欢迎界面,首先请将中间的用户须知阅读完拖到最下面,然后就可以选择”我已同意并阅读《用户协议》“,接着点击”进入面板”就可以进入宝塔了</p> <p>[[File:plus-5-571.png]]</p></li> <li><p>进入宝塔后首先会提示需要绑定宝塔官网的账号,如果没有账号可以去宝塔的官网('''https://www.bt.cn''')注册一个</p> <p>[[File:plus-5-572.png]]</p></li> <li><p>最终显示的界面如下图所示,可以很直观的看到开发板Linux系统的一些状态信息,比如负载状态、CPU的使用率、内存使用率和存储空间的使用情况等</p> <p>[[File:plus-5-573.png]]</p></li> <li><p>测试宝塔的SSH终端登录</p> <ol style="list-style-type: lower-alpha;"> <li><p>打开宝塔的SSH终端后首先会提示需要输入开发板系统的密码,此时在密码框中输入'''orangepi'''(默认密码,如果有修改请填写修改后的)即可</p> <p>[[File:plus-5-574.png]]</p></li> <li><p>成功登录后的显示如下图所示</p> <p>[[File:plus-5-575.png]]</p></li></ol> </li> <li><p>在宝塔的软件商店中可以安装Apache、MySQL和PHP等软件,也可以一键部署各种应用程序,这部分功能请自行探索,这里就不一一演示了</p> <p>[[File:plus-5-576.png]]</p></li> <li><p>宝塔命令行工具测试</p> <div class="figure"> [[File:plus-5-577.png]] </div></li> <li><p>宝塔的更多功能可以参考下面资料自行探索</p> {| class="wikitable" style="width:800px;" |- | <p>使用手册:[http://docs.bt.cn '''http://docs.bt.cn''']</p> <p>论坛地址:[https://www.bt.cn/bbs '''https://www.bt.cn/bbs''']</p> <p>GitHub链接:'''https://github.com/aaPanel/BaoTa'''</p> |} </li></ol> == 设置中文环境以及安装中文输入法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,安装中文输入法前请确保开发板使用的Linux系统为桌面版系统。'''</big> |} <span id="debian-11系统的安装方法"></span> === Debian 11系统的安装方法 === <ol style="list-style-type: decimal;"> <li><p>首先设置默认'''locale'''为中文</p> <ol style="list-style-type: lower-alpha;"> <li><p>输入下面的命令可以开始配置'''locale'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</p> |} </li> <li><p>然后在弹出的界面中选择'''zh_CN.UTF-8 UTF-8'''(通过键盘上的上下方向按键来上下移动,通过空格键来选择,最后通过Tab键可以将光标移动到'''<OK>''',然后回车即可)</p> <p>[[File:plus-5-578.png]]</p></li> <li><p>然后设置默认'''locale'''为'''zh_CN.UTF-8'''</p> <p>[[File:plus-5-579.png]]</p></li> <li><p>退出界面后就会开始'''locale'''的设置,命令行显示的输出如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo dpkg-reconfigure locales'''</p> <p>Generating locales (this might take a while)...</p> :<p>en_US.UTF-8... done</p> :<p>zh_CN.UTF-8... done</p> <p>Generation complete.</p> |} </li></ol> </li> <li><p>然后打开'''Input Method'''</p> <p>[[File:plus-5-580.png]]</p></li> <li><p>然后选择'''OK'''</p> <p>[[File:plus-5-581.png]]</p></li> <li><p>然后选择'''Yes'''</p> <p>[[File:plus-5-582.png]]</p></li> <li><p>然后选择'''fcitx'''</p> <p>[[File:plus-5-583.png]]</p></li> <li><p>然后选择'''OK'''</p> <p>[[File:plus-5-584.png]]</p></li> <li><p>'''<span style="color:#FF0000">然后重启Linux系统才能使配置生效</span>'''</p></li> <li><p>然后打开'''Fcitx configuration'''</p> <p>[[File:plus-5-585.png]]</p></li> <li><p>然后点击下图所示位置的'''+'''号</p> <p>[[File:plus-5-586.png]]</p></li> <li><p>然后搜索'''Google Pinyin'''再点击'''OK'''</p> <p>[[File:plus-5-587.png]]</p></li> <li><p>然后将'''Google Pinyin'''放到最前面</p> <p>[[File:plus-5-588.png]]</p> <p>[[File:plus-5-589.png]]</p></li> <li><p>然后打开'''Geany'''这个编辑器测试下中文输入法</p> <p>[[File:plus-5-590.png]]</p></li> <li><p>中文输入法测试如下所示</p> <p>[[File:plus-5-591.png]]</p></li> <li><p>通过'''Ctrl+Space'''快捷键可以切换中英文输入法</p></li> <li><p>如果需要整个系统都显示为中文,可以将'''/etc/default/locale'''中的变量都设置为'''zh_CN.UTF-8'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo vim /etc/default/locale'''</p> <p># File generated by update-locale</p> <p>LC_MESSAGES='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''</p> <p>LANG='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''</p> <p>LANGUAGE='''<span style="color:#FF0000">zh_CN.UTF-8</span>'''</p> |} </li> <li><p>然后'''<span style="color:#FF0000">重启系统</span>'''就能看到系统显示为中文了</p> <p>[[File:plus-5-592.png]]</p></li></ol> <span id="ubuntu-20.04系统的安装方法"></span> === Ubuntu 20.04系统的安装方法 === <ol style="list-style-type: decimal;"> <li><p>首先打开'''Language Support'''</p> <p>[[File:plus-5-593.png]]</p></li> <li><p>然后找到'''汉语(中国)'''选项</p> <p>[[File:plus-5-594.png]]</p></li> <li><p>然后请使用鼠标左键选中'''汉语(中国)'''并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:</p> <p>[[File:plus-5-595.png]]</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这一步不是很好拖动的,请耐心多试几次。'''</big> |} </ol> <ol start="4" style="list-style-type: decimal;"> <li><p>然后选择'''Apply System-Wide'''将中文设置应用到整个系统</p> <p>[[File:plus-5-596.png]]</p></li> <li><p>然后设置'''Keyboard input method system'''为'''fcitx'''</p> <p>[[File:plus-5-597.png]]</p></li> <li><p>'''<span style="color:#FF0000">然后重启Linux系统使配置生效</span>'''</p></li> <li><p>重新进入系统后,在下面的界面请选择'''不要再次询问我''',然后请根据自己的喜好决定标准文件夹是否也要更新为中文</p> <p>[[File:plus-5-598.png]]</p></li> <li><p>然后可以看到桌面都显示为中文了</p> <p>[[File:plus-5-599.png]]</p></li> <li><p>然后我们可以打开'''Geany'''测试下中文输入法,打开方式如下图所示</p> <p>[[File:plus-5-600.png]]</p></li> <li><p>打开'''Geany'''后,默认还是英文输入法,我们可以通过'''Ctrl+Space'''快捷键来切换成中文输入法,然后就能输入中文了</p> <p>[[File:plus-5-601.png]]</p></li></ol> <span id="ubuntu-22.04系统的安装方法"></span> === Ubuntu 22.04系统的安装方法 === <ol style="list-style-type: decimal;"> <li><p>首先打开'''Language Support'''</p> <p>[[File:plus-5-593.png]]</p></li> <li><p>然后找到'''汉语(中国)'''选项</p> <p>[[File:plus-5-603.png]]</p></li> <li><p>然后请使用鼠标左键选中'''汉语(中国)'''并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:</p> <p>[[File:plus-5-604.png]]</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这一步不是很好拖动的,请耐心多试几次。'''</big> |} </ol> <ol start="4" style="list-style-type: decimal;"> <li><p>然后选择'''Apply System-Wide'''将中文设置应用到整个系统</p> <p>[[File:plus-5-605.png]]</p></li> <li><p>'''<span style="color:#FF0000">然后重启Linux系统使配置生效</span>'''</p></li> <li><p>重新进入系统后,在下面的界面请选择'''不要再次询问我''',然后请根据自己的喜好决定标准文件夹是否也要更新为中文</p> <p>[[File:plus-5-598.png]]</p></li> <li><p>然后可以看到桌面都显示为中文了</p> <p>[[File:plus-5-599.png]]</p></li> <li><p>然后打开Fcitx5配置程序</p> <p>[[File:plus-5-608.png]]</p></li> <li><p>然后选择使用拼音输入法</p> <p>[[File:plus-5-609.png]]</p></li> <li><p>选择后的界面如下所示,再点击确定即可</p> <p>[[File:plus-5-610.png]]</p></li> <li><p>然后我们可以打开'''Geany'''测试下中文输入法,打开方式如下图所示</p> <p>[[File:plus-5-600.png]]</p></li> <li><p>打开'''Geany'''后,默认还是英文输入法,我们可以通过'''Ctrl+Space'''快捷键来切换成中文输入法,然后就能输入中文了</p> <p>[[File:plus-5-612.png]]</p></li></ol> <span id="远程登录linux系统桌面的方法"></span> == 远程登录Linux系统桌面的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''Ubuntu Gnome Wayland镜像不支持使用此处介绍的Nomachine和VNC来远程登录桌面。'''</big> |} <span id="使用nomachine远程登录"></span> === 使用NoMachine远程登录 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请确保开发板安装的Ubuntu或者Debian系统为桌面版本的系统。另外NoMachine也提供了详细的使用文档,强烈建议通读此文档来熟悉NoMachine的使用,文档链接如下所示:''' '''https://knowledgebase.nomachine.com/DT10R00166'''</big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''NoMachine支持Windows、Mac、Linux、iOS和安卓平台,所以我们可以在多种设备上通过NoMachine来远程登录控制Orange Pi开发板。下面演示下在Windows中通过NoMachine来远程登录Orange Pi开发板的Linux系统桌面。其他平台的安装方法请参考下NoMachine的官方文档。'''</big> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先下载NoMachine软件Linux '''<span style="color:#FF0000">arm64</span>''' deb版本的安装包,然后安装到开发板的Linux系统中</p> <ol style="list-style-type: lower-alpha;"> <li>由于RK3588是ARMv8架构的SOC,我们使用的系统为Ubuntu或者Debian,所以这里需要下载'''NoMachine for ARM ARMv8 DEB'''安装包,下载链接如下所示:</li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这个下载链接可能会变,请认准Armv8/Arm64版本的deb包。'''</big> |} {| class="wikitable" style="width:800px;" |- | <big>'''https://www.nomachine.com/download/download&id=112&s=ARM'''</big> |} [[File:plus-5-613.png]]</ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>另外在'''官方工具'''中也可以下载到'''NoMachine'''的安装包</p> <p>[[File:plus-5-614.png]]</p> <p>先进入'''远程登录软件-NoMachine'''文件夹</p> <p>[[File:plus-5-615.png]]</p> <p>然后下载arm64版本的deb安装包</p> <p>[[File:plus-5-616.png]]</p></li> <li><p>然后将下载的'''nomachine_x.x.x_x_arm64.deb'''上传到开发板的Linux系统中</p></li> <li><p>然后使用下面的命令在开发板的Linux系统中安装'''NoMachine'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo dpkg -i nomachine_x.x.x_x_arm64_arm64.deb'''</p> |} </li></ol> </li></ol> <!-- --> <ol start="2" style="list-style-type: decimal;"> <li>然后下载NoMachine软件Windows版本的安装包,下载地址如下所示</li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,这个下载链接可能会变。'''</big> |} {| class="wikitable" style="width:800px;" |- | <big>'''https://downloads.nomachine.com/download/?id=9'''</big> |} [[File:plus-5-617.png]] </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>然后在Windows中安装NoMachine,'''安装完后请重启下电脑'''</p></li> <li><p>然后在Window中打开'''NoMachine'''</p> <p>[[File:plus-5-618.png]]</p></li> <li><p>NoMachine启动后会自动扫描局域网内其他安装有NoMachine的设备,进入NoMachine的主界面后就可以看到开发板已经在可连接的设备列表里了,然后点击下图红色方框所示的位置即可开始登录开发板的Linux系统桌面</p> <p>[[File:plus-5-619.png]]</p></li> <li><p>然后点击'''OK'''</p> <p>[[File:plus-5-620.png]]</p></li> <li><p>然后在下图对应的位置输入开发板Linux系统的用户名和密码,再点击'''OK'''开始登陆</p> <p>[[File:plus-5-621.png]]</p></li> <li><p>然后在接下来的界面中都点击OK</p></li> <li><p>最后就能看到开发板Linux系统的桌面了</p> <p>[[File:plus-5-622.png]]</p></li></ol> <span id="使用vnc远程登录"></span> === 使用VNC远程登录 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。''' '''<span style="color:#FF0000">Ubuntu20.04测试VNC很多问题,请不要使用这种方法。</span>'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先运行'''set_vnc.sh'''脚本设置下vnc,'''<span style="color:#FF0000">记得加sudo权限</span>'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo set_vnc.sh'''</p> <p>You will require a password to access your desktops.</p> <p>Password: '''<span style="color:#FF0000">#在这里设置vnc的密码,8位字符</span>'''</p> <p>Verify: '''<span style="color:#FF0000">#在这里设置vnc的密码,8位字符</span>'''</p> <p>Would you like to enter a view-only password (y/n)? '''<span style="color:#FF0000">n</span>'''</p> <p>xauth: file /root/.Xauthority does not exist</p> <p>New 'X' desktop is orangepi:1</p> <p>Creating default startup script /root/.vnc/xstartup</p> <p>Starting applications specified in /root/.vnc/xstartup</p> <p>Log file is /root/.vnc/orangepi:1.log</p> <p>Killing Xtightvnc process ID 3047</p> <p>New 'X' desktop is orangepi:1</p> <p>Starting applications specified in /root/.vnc/xstartup</p> <p>Log file is /root/.vnc/orangepi:1.log</p> |} </li> <li><p>使用MobaXterm软件连接开发板linux系统桌面的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li>首先点击Session,然后选择VNC,再填写开发板的IP地址和端口,最后点击OK确认</li> </li> [[File:plus-5-623.png]] </ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>然后输入前面设置的VNC的密码</p> <p>[[File:plus-5-624.png]]</p></li> <li><p>登录成功后的界面显示如下图所示,然后就可以远程操作开发板linux系统的桌面了</p></li> [[File:plus-5-625.png]] </ol></ol> <span id="linux系统支持的部分编程语言测试"></span> == Linux系统支持的部分编程语言测试 == <span id="debian-bullseye系统"></span> === Debian Bullseye系统 === <ol style="list-style-type: decimal;"> <li><p>Debian Bullseye默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> <ol style="list-style-type: lower-alpha;"> <li><p>gcc的版本如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''gcc --version'''</p> <p>gcc (Debian 10.2.1-6) 10.2.1 20210110</p> <p>Copyright (C) 2020 Free Software Foundation, Inc.</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> |} </li> <li><p>编写C语言的'''hello_world.c'''程序</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vim hello_world.c'''</p> <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>Debian Bullseye默认安装有Python3</p> <ol style="list-style-type: lower-alpha;"> <li><p>Python具体版本如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''python3'''</p> <p>'''Python 3.9.2''' (default, Feb 28 2021, 17:03:44)</p> <p>[GCC 10.2.1 20210110] on linux</p> <p>Type "help", "copyright", "credits" or "license" for more information.</p> <p>>>></p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big> |} </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>Debian Bullseye默认没有安装Java的编译工具和运行环境</p> <ol style="list-style-type: lower-alpha;"> <li><p>可以使用下面的命令安装openjdk,Debian > Bullseye中最新版本为openjdk-17</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p> |} </li> <li><p>安装完后可以查看下Java的版本</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''java --version'''</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> === Debian Bookworm系统 === <ol style="list-style-type: decimal;"> <li><p>Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> <ol style="list-style-type: lower-alpha;"> <li><p>gcc的版本如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''gcc --version'''</p> <p>gcc (Debian 12.2.0-14) 12.2.0</p> <p>Copyright (C) 2020 Free Software Foundation, Inc.</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> |} </li> <li><p>编写C语言的'''hello_world.c'''程序</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vim hello_world.c'''</p> <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>Debian Bookworm默认安装有Python3</p> <ol style="list-style-type: lower-alpha;"> <li><p>Python具体版本如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''python3'''</p> <p>'''Python 3.11.2''' (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux</p> <p>Type "help", "copyright", "credits" or "license" for more information.</p> <p>>>></p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big> |} </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>Debian Bookworm默认没有安装Java的编译工具和运行环境</p> <ol style="list-style-type: lower-alpha;"> <li><p>可以使用下面的命令安装openjdk,Debian Bookworm中最新版本为openjdk-17</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p> |} </li> <li><p>安装完后可以查看下Java的版本</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''java --version'''</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="ubuntu-focal系统"></span> === Ubuntu Focal系统 === <ol style="list-style-type: decimal;"> <li><p>Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> <ol style="list-style-type: lower-alpha;"> <li><p>gcc的版本如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''gcc --version'''</p> <p>gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0</p> <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>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p> |} </li> <li><p>编写C语言的'''hello_world.c'''程序</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vim hello_world.c'''</p> <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 Focal默认安装有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.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>>>></p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big> |} </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 Focal默认没有安装Java的编译工具和运行环境</p> <ol style="list-style-type: lower-alpha;"> <li><p>可以使用下面的命令安装openjdk-17</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-17-jdk'''</p> |} </li> <li><p>安装完后可以查看下Java的版本</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''java --version'''</p> <p>openjdk 17.0.2 2022-01-18</p> <p>OpenJDK Runtime Environment (build 17.0.2+8-Ubuntu-120.04)</p> <p>OpenJDK 64-Bit Server VM (build 17.0.2+8-Ubuntu-120.04, 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="ubuntu-jammy系统"></span> === Ubuntu Jammy系统 === <ol start="1" style="list-style-type: decimal;"> <li><p>Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p> <ol style="list-style-type: lower-alpha;"> <li><p>gcc的版本如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''gcc --version'''</p> <p>gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.0'''</p> <p>Copyright (C) 2021 Free Software Foundation, Inc.</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> |} </li> <li><p>编写C语言的'''hello_world.c'''程序</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vim hello_world.c'''</p> <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> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''使用Ctrl+D快捷键可退出python的交互模式。'''</p></big> |} </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> {| 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.15.3</span>''' in /usr/lib/aarch64-linux-gnu</p> |} </li> <li><p>Debian11自带的QT版本为'''5.15.2'''</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.15.2</span>''' in /usr/lib/aarch64-linux-gnu</p> |} </li> <li><p>Debian12自带的QT版本为'''5.15.8'''</p> {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''install_qt.sh''' ...... QMake version 3.1 Using Qt version '''<span style="color:#FF0000">5.15.8</span>''' in /usr/lib/aarch64-linux-gnu |} </li></ol> </li> <li><p>然后在'''Applications'''中就可以看到QT Creator的启动图标</p> <p>[[File:plus-5-626.png]]</p> <p>也可以使用下面的命令打开QT Creator</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''qtcreator'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<p>'''在QT和QT应用的启动过程中,如果提示下面的错误,请直接忽略,此错误对应用的运行不会有影响。'''</p> <p>'''libGL error: failed to create dri screen'''</p> <p>'''libGL error: failed to load driver: rockchip'''</p> <p>'''libGL error: failed to create dri screen'''</p> <p>'''libGL error: failed to load driver: rockchip'''</p></big> |} </li> <li><p>QT Creator打开后的界面如下所示</p> <p>[[File:plus-5-627.png]]</p></li> <li><p>QT Creator的版本如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>QT Creator在'''Ubuntu20.04'''中的默认版本如下所示</p> <p>[[File:plus-5-628.png]]</p></li> <li><p>QT Creator在'''Ubuntu22.04'''中的默认版本如下所示</p> <p>[[File:plus-5-629.png]]</p></li> <li><p>QT Creator在'''Debian11'''中的默认版本如下所示</p> <p>[[File:plus-5-630.png]]</p></li> <li><p>QT Creator在'''Debian12'''中的默认版本如下所示</p> <p>[[File:plus-5-630-1.png]]</p></li></ol> </li> <li><p>然后设置下QT</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先打开'''Help'''->'''About Plugins...'''</p> <p>[[File:plus-5-631.png]]</p></li> <li><p>然后去掉'''ClangCodeModel'''的那个勾</p> <p>[[File:plus-5-632.png]]</p></li> <li><p>'''<span style="color:#FF0000">设置完后需要重启下QT Creator</span>'''</p></li> <li><p>然后确保QT Creator使用的GCC编译器,如果默认为Clang,请修改为GCC</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''Debian12请跳过这步。'''</big> |} <p>[[File:plus-5-633.png]]</p> <p>[[File:plus-5-634.png]]</p></li></ol> </li> <li><p>然后就可以打开一个示例代码</p> <p>[[File:plus-5-635.png]]</p></li> <li><p>点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明</p> <p>[[File:plus-5-636.png]]</p></li> <li><p>然后点击下'''Configure Project'''</p> <p>[[File:plus-5-637.png]]</p></li> <li><p>然后点击左下角的绿色三角形编译运行下示例代码</p> <p>[[File:plus-5-638.png]]</p></li> <li><p>等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行</p> <p>[[File:plus-5-639.png]]</p></li> <li><p>参考资料</p> {| class="wikitable" style="width:800px;" |- | '''https://wiki.qt.io/Install_Qt_5_on_Ubuntu''' '''https://download.qt.io/archive/qtcreator''' '''https://download.qt.io/archive/qt''' |} </li></ol> <span id="ros安装方法"></span> == ROS安装方法 == <span id="ubuntu20.04安装ros-1-noetic的方法"></span> === Ubuntu20.04安装ROS 1 Noetic的方法 === # ROS 1当前活跃的版本如下所示,推荐版本为'''Noetic Ninjemys''' ::[[File:plus-5-640.png]] ::[[File:plus-5-641.png]] ::{| class="wikitable" style="width:800px;" |- | '''http://docs.ros.org''' '''https://wiki.ros.org/Distributions''' |} <ol start="2" style="list-style-type: decimal;"> <li><p>ROS 1 '''Noetic Ninjemys'''官方安装文档链接如下所示:</p> {| class="wikitable" style="width:800px;" |- | '''http://wiki.ros.org/noetic/Installation/Ubuntu''' |} </li> <li><p>ROS '''Noetic Ninjemys'''官方安装文档中Ubuntu推荐使用Ubuntu20.04,所以请确保开发板使用的系统为'''Ubuntu20.04桌面版系统'''</p> {| class="wikitable" style="width:800px;" |- | '''http://wiki.ros.org/noetic/Installation''' |} <p>[[File:plus-5-642.png]]</p></li> <li><p>然后使用下面的脚本安装ros1</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi5plus:~$ '''install_ros.sh ros1'''</p> |} </li> <li><p>使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件</p></li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。</span>''' '''install_ros.sh脚本会尝试修改/etc/hosts并自动运行下面的命令。但是这种方法无法保证每次都能正常访问github,如果install_ros.sh安装完ros1后有提示下面的错误,请自己想其它办法让开发板的linux系统能正常访问github,然后再手动运行下面的命令。''' '''https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml''' '''Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml''' '''<span style="color:#FF0000">ERROR: error loading sources list:</span>''' ::'''<span style="color:#FF0000">The read operation timed out</span>'''</big> |} {| class="wikitable" style="width:800px;" |- | 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 ::rosdep update 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 |} </ol> <ol start="6" style="list-style-type: decimal;"> <li><p>然后在'''桌面'''中打开一个命令行终端窗口,再使用'''test_ros.sh'''脚本可以启动一个小海龟的例程来测试下ROS是否能正常使用</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''test_ros.sh'''</p> |} </li> <li><p>运行完'''test_ros.sh'''脚本后,会弹出下图所示的一个小海龟</p> <p>[[File:plus-5-643.png]]</p></li> <li><p>然后请保持刚才打开终端窗口在最上面</p></li> [[File:plus-5-644.png]] </ol> <ol start="9" style="list-style-type: decimal;"> <li><p>此时按下键盘上的方向按键就可以控制小海龟上下左右移动了</p> <p>[[File:plus-5-645.png]]</p></li></ol> <span id="ubuntu20.04安装ros-2-galactic的方法"></span> === Ubuntu20.04安装ROS 2 Galactic的方法 === <ol style="list-style-type: decimal;"> <li><p>ROS 2当前活跃的版本如下所示,推荐版本为'''Galactic Geochelone'''</p> <p>[[File:plus-5-646.png]]</p> <p>[[File:plus-5-647.png]]</p> {| class="wikitable" style="width:800px;" |- | '''http://docs.ros.org''' '''http://docs.ros.org/en/galactic/Releases.html''' |} </li> <li><p>ROS 2 '''Galactic Geochelone'''官方安装文档链接如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>'''docs.ros.org/en/galactic/Installation.html'''</p> <p>'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html'''</p> |} </li> <li><p>ROS 2 '''Galactic Geochelone'''官方安装文档中Ubuntu Linux推荐使用Ubuntu20.04,所以请确保开发板使用的系统为'''<span style="color:#FF0000">Ubuntu20.04桌面版系统</span>'''。安装ROS 2有几种方法,下面演示下通过'''Debian packages'''的方式来安装ROS 2 '''Galactic Geochelone'''</p></li> <li><p>使用'''install_ros.sh'''脚本可以安装ros2</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p> |} </li> <li><p>'''install_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 -h'''命令,如果能看到下面的打印,说明ros2安装完成</p> {| class="wikitable" style="width:800px;" |- | <p>usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...</p> <p>ros2 is an extensible command-line tool for ROS 2.</p> <p>optional arguments:</p> :<p>-h, --help show this help message and exit</p> <p>Commands:</p> :<p>action Various action related sub-commands</p> :<p>bag Various rosbag related sub-commands</p> :<p>component Various component related sub-commands</p> :<p>daemon Various daemon related sub-commands</p> :<p>doctor Check ROS setup and other potential issues</p> :<p>interface Show information about ROS interfaces</p> :<p>launch Run a launch file</p> :<p>lifecycle Various lifecycle related sub-commands</p> :<p>multicast Various multicast related sub-commands</p> :<p>node Various node related sub-commands</p> :<p>param Various param related sub-commands</p> :<p>pkg Various package related sub-commands</p> :<p>run Run a package specific executable</p> :<p>security Various security related sub-commands</p> :<p>service Various service related sub-commands</p> :<p>topic Various topic related sub-commands</p> :<p>wtf Use `wtf` as alias to `doctor`</p> :<p>Call `ros2 <command> -h` for more detailed usage.</p> |} </li> <li><p>然后可以使用 '''test_ros.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p> <p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p> <p>[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]</p> <p>[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'</p> <p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p> <p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p> <p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p> |} </li> <li><p>运行下面的命令可以打开rviz2</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''source /opt/ros/galactic/setup.bash'''</p> <p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p> |} <div class="figure"> [[File:plus-5-648.png]] </div></li> <li><p>ROS的使用方法请参考下ROS 2的文档</p> {| class="wikitable" style="width:800px;" |- | '''http://docs.ros.org/en/galactic/Tutorials.html''' |} </li></ol> <span id="ubuntu22.04安装ros-2-humble的方法"></span> === Ubuntu22.04安装ROS 2 Humble的方法 === <ol style="list-style-type: decimal;"> <li><p>使用'''install_ros.sh'''脚本可以安装ros2</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p> |} </li> <li><p>'''install_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 -h'''命令,如果能看到下面的打印,说明ros2安装完成</p> {| class="wikitable" style="width:800px;" |- | <p>usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...</p> <p>ros2 is an extensible command-line tool for ROS 2.</p> <p>optional arguments:</p> :<p>-h, --help show this help message and exit</p> <p>Commands:</p> :<p>action Various action related sub-commands</p> :<p>bag Various rosbag related sub-commands</p> :<p>component Various component related sub-commands</p> :<p>daemon Various daemon related sub-commands</p> :<p>doctor Check ROS setup and other potential issues</p> :<p>interface Show information about ROS interfaces</p> :<p>launch Run a launch file</p> :<p>lifecycle Various lifecycle related sub-commands</p> :<p>multicast Various multicast related sub-commands</p> :<p>node Various node related sub-commands</p> :<p>param Various param related sub-commands</p> :<p>pkg Various package related sub-commands</p> :<p>run Run a package specific executable</p> :<p>security Various security related sub-commands</p> :<p>service Various service related sub-commands</p> :<p>topic Various topic related sub-commands</p> :<p>wtf Use `wtf` as alias to `doctor`</p> :<p>Call `ros2 <command> -h` for more detailed usage.</p> |} </li> <li><p>然后可以使用 '''test_ros.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p> <p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p> <p>[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]</p> <p>[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'</p> <p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p> <p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p> <p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p> |} </li> <li><p>运行下面的命令可以打开rviz2</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''</p> <p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p> |} <div class="figure"> [[File:plus-5-649.png]] </div></li> <li><p>参考文档</p> {| class="wikitable" style="width:800px;" |- | <p>'''http://docs.ros.org/en/humble/index.html'''</p> <p>'''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html'''</p> |} </li></ol> == 安装内核头文件的方法 == <ol style="list-style-type: decimal;"> <li><p>OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为'''/opt/'''</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi5plus:~$ '''ls /opt/linux-headers*'''</p> <p>/opt/linux-headers-legacy-rockchip-rk3588_x.x.x_arm64.deb</p> |} </li> <li><p>使用下面的命令可以安装内核头文件的deb包</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''内核头文件deb包的名字需要替换为实际的名字,请不要照抄。'''</p></big> |} {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo dpkg -i /opt/linux-headers-legacy-rockchip-rk3588_1.x.x_arm64.deb'''</p> |} </li> <li><p>安装完后在'''/usr/src'''下就能看到内核头文件所在的文件夹</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /usr/src'''</p> <p>linux-headers-5.10.110-rockchip-rk3588</p> |} </li> <li><p>然后可以编写一个hello内核模块测试下内核头文件</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先编写hello内核模块的代码,如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vim hello.c'''</p> <p>#include <linux/init.h></p> <p>#include <linux/module.h></p> <p>static int hello_init(void)</p> <p>{</p> ::<p>printk("Hello Orange Pi -- init\n");</p> ::<p>return 0;</p> <p>}</p> <p>static void hello_exit(void)</p> <p>{</p> ::<p>printk("Hello Orange Pi -- exit\n");</p> ::<p>return;</p> <p>}</p> <p>module_init(hello_init);</p> <p>module_exit(hello_exit);</p> <p>MODULE_LICENSE("GPL");</p> |} </li> <li><p>然后编写编译hello内核模块的Makefile文件,如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vim Makefile'''</p> <p>ifneq ($(KERNELRELEASE),)</p> <p>obj-m:=hello.o</p> <p>else</p> <p>KDIR :=/lib/modules/$(shell uname -r)/build</p> <p>PWD :=$(shell pwd)</p> <p>all:</p> :<p>make -C $(KDIR) M=$(PWD) modules</p> <p>clean:</p> :<p>rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order</p> <p>endif</p> |} </li> <li><p>然后使用make命令编译hello内核模块,编译过程的输出如下所示:</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''如果自己复制的代码这里编译如果有问题,请去[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html 官方工具]中下载源码然后上传到开发板的Linux系统中测试。'''</p></big> <p>[[File:plus-5-650.png]]</p> |} {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''make'''</p> <p>make -C /lib/modules/5.10.110-rockchip-rk3588/build M=/home/orangepi modules</p> <p>make[1]: Entering directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'</p> :<p>CC [M] /home/orangepi/hello.o</p> :<p>MODPOST /home/orangepi/Module.symvers</p> :<p>CC [M] /home/orangepi/hello.mod.o</p> :<p>LD [M] /home/orangepi/hello.ko</p> <p>make[1]: Leaving directory '/usr/src/linux-headers-5.10.110-rockchip-rk3588'</p> |} </li> <li><p>编译完后会生成'''hello.ko'''内核模块</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls *.ko'''</p> <p>hello.ko</p> |} </li> <li><p>使用'''insmod'''命令可以将'''hello.ko'''内核模块插入内核中</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo insmod hello.ko'''</p> |} </li> <li><p>然后使用'''demsg'''命令可以查看下'''hello.ko'''内核模块的输出,如果能看到下面的输出说明'''hello.ko'''内核模块加载正确</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''dmesg | grep "Hello"'''</p> <p>[ 2871.893988] '''Hello Orange Pi -- init'''</p> |} </li> <li><p>使用'''rmmod'''命令可以卸载'''hello.ko'''内核模块</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo rmmod hello'''</p> <p>orangepi@orangepi:~$ '''dmesg | grep "Hello"'''</p> <p>[ 2871.893988] Hello Orange Pi -- init</p> <p>[ 3173.800892] '''Hello Orange Pi -- exit'''</p> |} </li></ol> </li></ol> <span id="寸mipi-lcd屏幕的使用方法"></span> == 10.1寸MIPI LCD屏幕的使用方法 == <span id="寸mipi-屏幕的组装方法"></span> === 10.1寸MIPI 屏幕的组装方法 === <ol style="list-style-type: decimal;"> <li><p>首先准备需要的配件</p> <ol style="list-style-type: lower-alpha;"> <li><p>10.1寸MIPI LCD显示屏+触摸屏(此屏幕和OPi5/OPi5B通用)</p> <p>[[File:plus-5-651.png]]</p></li> <li><p>屏幕转接板+31pin转40pin排线</p> <div class="figure"> [[File:plus-5-652.png]] </div></li> <li><p>30pin MIPI排线</p> <div class="figure"> [[File:plus-5-653.png]] </div></li> <li><p>12pin 触摸屏排线</p> <p>[[File:plus-5-654.png]]</p></li></ol> </li> <li><p>按照下图将12pin 触摸屏排线、31pin转40pin排线、30pin MIPI排线接到屏幕转接板上,注意'''<span style="color:#FF0000">触摸屏排线蓝色的绝缘面朝下</span>''',其它两根排线绝缘面朝上,如果接错会导致无显示或者不能触摸的问题</p> <p>[[File:plus-5-655.png]]</p></li> <li><p>按照下图将连接好排线的转接板置于MIPI LCD屏上面,并通过31pin转40pin排线连接MIPI LCD屏与转接板</p></li> [[File:plus-5-656.png]] </ol> <ol start="4" style="list-style-type: decimal;"> <li><p>然后通过12pin触摸屏排线连接触摸屏与转接板,注意绝缘面的朝向</p> <p>[[File:plus-5-657.png]]</p></li> <li><p>最后通过30pin MIPI排线连接到开发板的LCD接口上</p> <p>[[File:plus-5-658.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,下面的触摸接口不是给LCD MIPI屏幕使用的,目前为备用接口,使用不到。'''</p></big> <p>[[File:plus-5-659.png]]</p> |} </li></ol> <span id="打开10.1寸mipi-lcd屏幕配置的方法"></span> === 打开10.1寸MIPI LCD屏幕配置的方法 === <ol style="list-style-type: decimal;"> <li><p>linux镜像默认是没有打开mipi lcd屏幕的配置的,如果需要使用mipi lcd屏幕,需要手动打开才行。</p></li> <li><p>开发板mipi lcd屏幕接口的位置如下所示:</p> <p>[[File:plus-5-660.png]]</p></li> <li><p>打开mipi lcd配置的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用键盘的方向键定位到'''opi5plus-lcd''',再使用'''空格'''选中</p> <p>[[File:plus-5-663-1.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:plus-5-664.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:plus-5-665.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:plus-5-666.png]]</p></li></ol> </li> <li><p>启动后可以看到lcd屏幕的显示如下所示(默认为竖屏):</p></li> [[File:plus-5-667.png]] </ol> === 服务器版镜像旋转显示方向的方法 === <ol style="list-style-type: decimal;"> <li><p>在'''/boot/orangepiEnv.txt'''中加入'''extraargs=fbcon=rotate:要旋转的方向'''这句配置就可以设置服务器版本的linux系统显示的方向,其中'''fbcon=rotate:'''后面的数字可以设置为:</p> <ol style="list-style-type: lower-alpha;"> <li><p>0: 正常屏(默认为竖屏)</p></li> <li><p>1: 顺时钟转90度</p></li> <li><p>2: 翻转180度</p></li> <li><p>3: 顺时钟转270度</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p> <p>overlays=opi5plus-lcd</p> <p>'''<span style="color:#FF0000">extraargs=cma=128M fbcon=rotate:3</span>'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,/boot/orangepiEnv.txt中如果默认有extraargs=cma=128M这行配置,fbcon=rotate:3这个配置添加到extraargs=cma=128M的后面即可(需要用空格隔开)。'''</p></big> |} </li></ol> </li> <li><p>然后'''<span style="color:#FF0000">重启</span>'''linux系统就能看到lcd屏幕显示的方向已经旋转了</p></li></ol> === 桌面版镜像旋转显示和触摸方向的方法 === <ol style="list-style-type: decimal;"> <li><p>首先在linux系统中打开'''Display'''设置</p> <p>[[File:plus-5-668.png]]</p></li> <li><p>然后在'''Rotation'''中选择想要旋转的方向</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''None''': 不旋转</p></li> <li><p>'''Left''': 向左旋转90度</p></li> <li><p>'''Inverted''': 上下翻转,相当于旋转180度</p></li> <li><p>'''Right''': 向右旋转90度</p> <p>[[File:plus-5-669.png]]</p></li></ol> </li> <li><p>然后点击'''Apply'''</p> <p>[[File:plus-5-670.png]]</p></li> <li><p>然后选择'''Keep this configuration'''</p> <p>[[File:plus-5-671.png]]</p></li> <li><p>此时屏幕显示就已旋转完成,然后关闭掉'''Display'''程序即可</p></li> <li><p>上面的步骤只会选择显示方向,并不会旋转触摸的方向,使用'''set_lcd_rotate.sh'''脚本可以旋转下触摸的方向,此脚本设置完后会自动重启,然后就可以测试触摸是否已经能正常使用了</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''None''': 不旋转</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''set_lcd_rotate.sh none'''</p> |} </li> <li><p>'''Left''': 向左旋转90度</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''set_lcd_rotate.sh left'''</p> |} </li> <li><p>'''Inverted''': 上下翻转,相当于旋转180度</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''set_lcd_rotate.sh inverted'''</p> |} </li> <li><p>'''Right''': 向右旋转90度</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big> <p>'''set_lcd_rotate.sh脚本主要做四件事:'''</p> <ol style="list-style-type: decimal;"> <li><p>'''旋转framebuffer显示的方向'''</p></li> <li><p>'''旋转触摸的方向'''</p></li> <li><p>'''关闭开机logo'''</p></li> <li><p>'''重启系统'''</p> </li></ol> <p>'''旋转触摸的方向是通过在/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"不同的方向配置不同。'''</p></big> |} </li></ol> </li></ol> <!-- --> <ol start="7" style="list-style-type: decimal;"> <li><p>触摸旋转参考资料</p> {| class="wikitable" style="width:800px;" |- | '''https://wiki.ubuntu.com/X/InputCoordinateTransformation''' |}</li></ol> == 开关机logo使用说明 == <ol style="list-style-type: decimal;"> <li><p>开关机logo默认只在桌面版的系统中才会显示</p></li> <li><p>在'''/boot/orangepiEnv.txt'''中设置'''bootlogo'''变量为'''false'''可以关闭开关机logo</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p> <p>verbosity=1</p> <p>'''<span style="color:#FF0000">bootlogo=false</span>'''</p> |} </li> <li><p>在'''/boot/orangepiEnv.txt'''中设置'''bootlogo'''变量为'''true'''可以开启开关机logo</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo vim /boot/orangepiEnv.txt'''</p> <p>verbosity=1</p> <p>'''<span style="color:#FF0000">bootlogo=false</span>'''</p> |} </li> <li><p>开机logo图片在linux系统中的位置为</p> {| class="wikitable" style="width:800px;" |- | <p>'''/usr/share/plymouth/themes/orangepi/watermark.png'''</p> |} </li> <li><p>替换开机logo图片后需要运行下命令才能生效</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo update-initramfs -u'''</p> |} </li></ol> <span id="ov13850和ov13855-mipi摄像头的测试方法"></span> == OV13850和OV13855 MIPI摄像头的测试方法 == 目前开发板支持两款MIPI摄像头,OV13850和OV13855,具体的图片如下所示: <ol style="list-style-type: lower-alpha;"> <li><p>1300万MIPI接口的OV13850摄像头</p> <p>[[File:plus-5-19.png]]</p></li> <li><p>1300万MIPI接口的OV13855摄像头</p> <p>[[File:plus-5-20.png]]</p></li></ol> <p>OV13850和OV13855摄像头使用的转接板和FPC排线是一样的,只是两款摄像头接在转接板上的位置不一样。FPC排线如下图所示,请注意FPC排线是有方向的,标注'''TO MB'''那端需要插到开发板的摄像头接口中,标注'''TO CAMERA'''那端需要插到摄像头转接板上。</p> [[File:plus-5-674.png]] 摄像头转接板上总共有3个摄像头的接口,同一时间只能接一个使用,如下图所示,其中: <ol style="list-style-type: lower-alpha;"> <li><p>'''1号接口接OV13850摄像头'''</p></li> <li><p>'''2号接口接OV13855摄像头'''</p></li> <li><p>3号接口未使用,忽略即可</p></li> [[File:plus-5-675.png]] </ol> Orange Pi 5 Plus开发板上总共有1个摄像头接口,位置如下所示: [[File:plus-5-676.png]] 摄像头插在开发板的摄像头接口的方法如下所示: [[File:plus-5-677.png]] 连接好摄像头到开发板上后,我们可以使用下面的方法来测试下摄像头: <ol style="list-style-type: lower-alpha;"> <li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo orangepi-config'''</p> |} </li> <li><p>然后选择'''System'''</p> <p>[[File:5plus-51.png]]</p></li> <li><p>然后选择'''Hardware'''</p> <p>[[File:5plus-52.png]]</p></li> <li><p>然后使用使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的摄像头,其中'''opi5plus-ov13850'''表示使用ov13850摄像头,'''opi5plus-ov13855'''表示使用ov13855摄像头。</p> <p>[[File:plus-5-680.png]]</p></li> <li><p>然后选择'''<Save>'''保存</p> <p>[[File:plus-5-681.png]]</p></li> <li><p>然后选择'''<Back>'''</p> <p>[[File:plus-5-682.png]]</p></li> <li><p>然后选择'''<Reboot>'''重启系统使配置生效</p> <p>[[File:5plus-56.png]]</p></li> <li><p>然后在桌面系统中打开一个终端,再运行下面的脚本</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''test_camera.sh'''</p> |} </li> <li><p>然后就能看到摄像头的预览画面了</p> <div class="figure"> [[File:plus-5-684.png]] </div></li></ol> == 红外接收的测试方法 == 开发板上自带一个红外接收器,连接到'''PWM15_IR_M1'''引脚上。查看红外接收到的键值的方法如下所示: <ol style="list-style-type: decimal;"> <li><p>首先在命令行中运行'''evtest'''命令,然后选择'''febf0030.pwm'''对应的设备序号</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''evtest'''</p> <p>No device specified, trying to scan all of /dev/input/event*</p> <p>Not running as root, no devices may be available.</p> <p>Available devices:</p> <p>'''<span style="color:#FF0000">/dev/input/event0: febf0030.pwm</span>'''</p> <p>/dev/input/event1: rk805 pwrkey</p> <p>/dev/input/event2: rockchip,dp0 rockchip,dp0</p> <p>/dev/input/event3: rockchip-hdmi0 rockchip-hdmi0</p> <p>/dev/input/event4: rockchip-hdmi1 rockchip-hdmi1</p> <p>/dev/input/event5: headset-keys</p> <p>/dev/input/event6: rockchip,es8388 Headset</p> <p>/dev/input/event7: adc-keys</p> <p>/dev/input/event8: SONiX USB Keyboard</p> <p>/dev/input/event9: SONiX USB Keyboard Consumer Control</p> <p>/dev/input/event10: SONiX USB Keyboard System Control</p> <p>/dev/input/event11: PixArt USB Optical Mouse</p> <p>Select the device event number [0-11]: '''<span style="color:#FF0000">0 #这里选择febf0030.pwm对应的序号</span>'''</p> <p>Input driver version is 1.0.1</p> <p>Input device ID: bus 0x19 vendor 0x524b product 0x6 version 0x100</p> <p>Input device name: "febf0030.pwm"</p> <p>Supported events:</p> :<p>Event type 0 (EV_SYN)</p> :<p>Event type 1 (EV_KEY)</p> :<p>Event code 2 (KEY_1)</p> :<p>Event code 3 (KEY_2)</p> :<p>Event code 4 (KEY_3)</p> :<p>Event code 5 (KEY_4)</p> :<p>Event code 6 (KEY_5)</p> :<p>Event code 7 (KEY_6)</p> :<p>Event code 8 (KEY_7)</p> :<p>Event code 9 (KEY_8)</p> :<p>Event code 10 (KEY_9)</p> :<p>Event code 11 (KEY_0)</p> :<p>Event code 28 (KEY_ENTER)</p> :<p>Event code 102 (KEY_HOME)</p> :<p>Event code 103 (KEY_UP)</p> :<p>Event code 105 (KEY_LEFT)</p> :<p>Event code 106 (KEY_RIGHT)</p> :<p>Event code 108 (KEY_DOWN)</p> :<p>Event code 113 (KEY_MUTE)</p> :<p>Event code 114 (KEY_VOLUMEDOWN)</p> :<p>Event code 115 (KEY_VOLUMEUP)</p> :<p>Event code 116 (KEY_POWER)</p> :<p>Event code 139 (KEY_MENU)</p> :<p>Event code 143 (KEY_WAKEUP)</p> :<p>Event code 158 (KEY_BACK)</p> :<p>Event code 217 (KEY_SEARCH)</p> :<p>Event code 388 (KEY_TEXT)</p> <p>Properties:</p> <p>Testing ... (interrupt to exit)</p> |} </li> <li><p>然后需要准备一个下图所示的红外遥控器</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p style="color:#FF0000">'''注意:香橙派提供的Linux系统默认只支持香橙派提供的遥控器,电视或者空调的遥控器是不能用的。'''</p></big> |} <div class="figure"> [[File:plus-5-685.png]] </div></li> <li><p>然后对着开发板上的红外接收器按下遥控器上的按键,红外接收器在开发板上的位置如下图所示:</p> <p>[[File:plus-5-686.png]]</p></li> <li><p>然后就能看到'''evtest'''会打印接收到的键值了</p> {| class="wikitable" style="width:800px;" |- | <p>......</p> :<p>Event code 217 (KEY_SEARCH)</p> :<p>Event code 388 (KEY_TEXT)</p> <p>Properties:</p> <p>Testing ... (interrupt to exit)</p> <p>Event: time 1684152321.834907, type 1 (EV_KEY), code 2 (KEY_1), value 1</p> <p>Event: time 1684152321.834907, -------------- SYN_REPORT ------------</p> <p>Event: time 1684152322.017512, type 1 (EV_KEY), code 2 (KEY_1), value 0</p> <p>Event: time 1684152324.630961, -------------- SYN_REPORT ------------</p> <p>Event: time 1684152326.482359, type 1 (EV_KEY), code 106 (KEY_RIGHT), value 1</p> <p>Event: time 1684152326.482359, -------------- SYN_REPORT ------------</p> <p>Event: time 1684152326.667633, type 1 (EV_KEY), code 106 (KEY_RIGHT), value 0</p> <p>Event: time 1684152328.427632, -------------- SYN_REPORT ------------</p> <p>Event: time 1684152330.761986, type 1 (EV_KEY), code 116 (KEY_POWER), value 1</p> <p>Event: time 1684152330.761986, -------------- SYN_REPORT ------------</p> <p>Event: time 1684152330.944243, type 1 (EV_KEY), code 116 (KEY_POWER), value 0</p> <p>Event: time 1684152330.944243, -------------- SYN_REPORT ------------</p> |} </li></ol> <span id="rtc的使用方法"></span> == RTC的使用方法 == <ol style="list-style-type: decimal;"> <li><p>开发板上预留了一个RTC电池的接口,位置如下所示:</p> <p>[[File:plus-5-24.png]]</p></li> <li><p>需要购买的RTC电池如下所示,接口为2pin,1.25mm间距</p> <p>[[File:plus-5-23.png]]</p></li> <li><p>开发板上使用的RTC芯片为HYM8563TS,此芯片的特点有:</p> <ol style="list-style-type: lower-alpha;"> <li><p>宽工作电压范围:1.0~5.5v</p></li> <li><p>低休眠电流:典型值为0.25μA(VDD =3.0V, TA =25°C)</p></li></ol> </li> <li><p>在开发板上接好RTC电池后,使用下面的方法可以测试下RTC是否已正常工作:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先开机进入系统,然后记录下系统的当前时间</p></li> <li><p>然后使用poweroff命令正常关闭系统</p></li> <li><p>然后拔掉电源,确保开发板没有接入网线和无线WIFI,再等待几分钟</p></li> <li><p>然后再次开机启动系统,如果进入系统后看到时间向前走了几分钟,就说明RTC模块和电池正常工作了</p></li></ol> </li> <li><p>通过Linux系统的procfs接口查看RTC信息的命令为</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''cat /proc/driver/rtc'''</p> <p>rtc_time : 06:07:40</p> <p>rtc_date : 2023-05-22</p> <p>alrm_time : 03:36:00</p> <p>alrm_date : 2023-05-23</p> <p>alarm_IRQ : no</p> <p>alrm_pending : no</p> <p>update IRQ enabled : no</p> <p>periodic IRQ enabled : no</p> <p>periodic IRQ frequency : 1</p> <p>max user IRQ frequency : 64</p> <p>24hr : yes</p> |} </li></ol> <span id="pwm散热风扇的使用方法"></span> == PWM散热风扇的使用方法 == <ol style="list-style-type: decimal;"> <li><p>开发板上有用于接散热风扇的接口,接口规格为'''2pin 1.25mm间距''','''5V电压驱动''',风扇接口的位置如下图所示:</p> <p>[[File:plus5-689.png]]</p></li> <li><p>开发板上的风扇可以通过PWM来调节转速和开关,使用的PWM引脚为'''PWM3_IR_M1'''</p></li> <li><p>Linux系统默认使用[https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-5.10-rk3588/drivers/hwmon/pwm-fan.c '''pwm-fan''']驱动来控制风扇,所使用的dts配置如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>'''orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts'''</p> :<p>fan: pwm-fan {</p> ::<p>compatible = "pwm-fan";</p> ::<p>#cooling-cells = <2>;</p> ::<p>pwms = <&pwm3 0 50000 0>;</p> ::<p>cooling-levels = <0 50 100 150 200 255>;</p> ::<p>rockchip,temp-trips = <</p> :::<p>50000 1</p> :::<p>55000 2</p> :::<p>60000 3</p> :::<p>65000 4</p> :::<p>70000 5</p> ::<p>>;</p> ::<p>status = "okay";</p> :<p>};</p> |} <p>其中:</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''pwms = <&pwm3 0 50000 0>''':表示控制风扇的pwm为pwm3。</p></li> <li><p>'''cooling-levels = <0 50 100 150 200 > 255>''':用来配置转速(pwm的占空比)的档位,档位数量和大小可以自己定义,这里配置6个档位,转速的范围是0-255。</p></li> <li><p>'''rockchip,temp-trips''':用来配置CPU温度和风扇转速档位的对应关系,可以根据实际需要进行调整,上面的配置50度对应档位1,70度对对应档位5。</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''开机后如果发现风扇没有转是正常的,因为开机后CPU的温度一般都低于50度,只有当CPU的温度达到50度后,风扇才会开始转。'''</p> <p>'''使用下面的命令可以让所有CPU都跑满,然后就能看到风扇会开始工作了:'''</p> <p>orangepi@orangepi:~$ '''for i in $(seq 0 $(( $(nproc --all) - 1)) ); do (taskset -c $i yes > /dev/null &); done'''</p></big> |} </li></ol> </li></ol> == 关机和重启开发板的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''最新版本的Ubuntu20.04、Ubuntu22.04、Debian11和Debian12桌面版系统中已经预装了zfs,直接使用即可。''' '''在Ubuntu20.04、Ubuntu22.04桌面版系统中预装的zfs版本是2.1.6。''' '''在Debian11和Debian12桌面版系统中预装的zfs版本是2.1.11。''' '''系统启动后,首先请确认下zfs的内核模块有没有被加载,如果使用lsmod命令可以看到zfs相关的内容,就说明系统已经预装了zfs。''' orangepi@orangepi:~$ '''lsmod | grep "zfs"'''</big> 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 |} === 安装ZFS的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''安装zfs前,请先确保使用的linux镜像为最新版本。另外,如果系统中已经安装了zfs,就无需重复安装了。'''</big> |} 安装zfs前首先需要安装内核头文件,安装内核头文件的方法请参考[[Orange Pi 5 Plus#安装内核头文件的方法|安装内核头文件的方法]]小节的说明。 在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包,请下载需要的版本。 <p>[[File:5plus-3.png]]</p> 下载完对应版本的zfs deb包后,请将它们上传到开发板的Linux系统中。上传方法请参考[[Orange Pi 5 Plus#上传文件到开发板Linux系统中的方法|上传文件到开发板Linux系统中的方法]]小节的说明。 上传完成后,再在开发板linux系统的命令行中使用'''cd'''命令进入deb包的目录,然后使用下面的命令就可以安装zfs的deb包。 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo apt install ./*.deb''' |} 安装完成后,使用下面的命令可以看到zfs相关的内核模块: {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''ls /lib/modules/5.10.110-rockchip-rk3588/updates/dkms/icp.ko spl.ko zavl.ko zcommon.ko zfs.ko zlua.ko znvpair.ko zunicode.ko zzstd.ko''' |} 然后重启下linux系统就能看到zfs内核模块会自动加载了: {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | 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包。 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo apt install -y zfsutils-linux zfs-dkms''' |} === 创建ZFS池的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''ZFS是基于存储池的,我们可以将多个物理存储设备添加到池中,然后从这个池中分配存储空间。''' '''下面的内容是基于开发板接了一个NVMe SSD和一个U盘来演示的。'''</big> |} 1) 首先我们可以通过'''lsblk'''命令查看下开发板所有的存储设备,当前开发板接了一个NVMe SSD以及一个U盘,输出如下所示: <p>[[File:5plus-4.png]]</p> 2) 然后输入下面的命令可以创建一个ZFS池,包含NVMe SSD和U盘两个存储设备 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo zpool create -f pool1 /dev/nvme0n1 /dev/sda''' |} 3) 然后使用'''zpool list'''命令可以看到系统已经创建了一个名为pool1的ZFS池,并且ZFS池pool1的大小是NVME SSD的大小加上U盘的大小 <p>[[File:5plus-5.png]]</p> 4) 然后执行'''df -h'''可以看到'''pool1'''被挂载到了'''/pool1'''目录 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''df -h''' <br> Filesystem Size Used Avail Use% Mounted on <br> tmpfs 1.6G 18M 1.6G 2% /run <br> /dev/mmcblk0p2 29G 6.0G 22G 22% / <br> tmpfs 7.7G 46M 7.7G 1% /dev/shm <br> tmpfs 5.0M 4.0K 5.0M 1% /run/lock <br> tmpfs 7.7G 944K 7.7G 1% /tmp <br> /dev/mmcblk0p1 1022M 115M 908M 12% /boot <br> /dev/zram1 188M 4.5M 169M 3% /var/log <br> tmpfs 1.6G 80K 1.6G 1% /run/user/1000 <br> '''pool1 489G 9.3M 489G 1% /pool1''' <br> |} 5) 使用下面的命令可以看到pool1的文件系统类型为zfs {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''mount | grep pool1''' pool1 on /pool1 type '''zfs''' (rw,xattr,noacl) |} 6) 然后我们可以测试下拷贝一个文件到ZFS池中 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo cp -v /usr/local/test.mp4 /pool1/''' '/usr/local/test.mp4' -> '/pool1/test.mp4' |} === 测试ZFS的数据去重功能 === 1) ZFS的数据去重功能默认是关闭的,我们需要执行下面的命令打开 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''sudo zfs set dedup=on pool1''' |} 2) 然后做一个简单的测试,首先进入pool1中,再执行下面的命令生成1个1G大小的随机文件 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''cd /pool1/ '''<br> root@orangepi:/pool1$ '''sudo dd if=/dev/urandom of=test.1g bs=1M count=1024''' <br> 1024+0 records in <br> 1024+0 records out <br> 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.04367 s, 213 MB/s <br> |} 3) 然后使用下面的命令将1G大小的随机文件拷贝1000份 {| class="wikitable" style="width:800px;" |- | root@orangepi:/pool1$ '''for ((i=0; i<1000; i++)); do sudo cp test.1g $i.test.1g; done''' |} 4) 然后用'''du -lh'''可以看到目前池中总共有1002G的数据,但实际上ZFS池的大小只有'''504GB'''(SSD+U盘的总容量),是装不下那么大的数据的 {| class="wikitable" style="width:800px;" |- | root@orangepi:/pool1$ '''du -lh''' 1002G |} 5) 然后用'''zpool list'''命令可以看到实际只占用了1.01G,因为这1001个文件都是重复的,说明数据去重功能有效。 <p>[[File:5plus-6.png]]</p> === 测试ZFS的数据压缩功能 === 1) 因为存储的数据不同,压缩节省的磁盘空间也会有所不同,所以我们选择压缩比较大的纯文本文件来进行压缩测试,执行下面的命令将'''/var/log/'''和'''/etc/'''目录打包成tar包 {| class="wikitable" style="width:800px;" |- | orangepi@orangepi:~$ '''cd /pool1/''' root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/''' |} 2) 然后通过'''ls -lh'''命令可以看到的文件大小以及在ZFS池中占用的空间都是'''27M''' <p>[[File:5plus-7.png]]</p> 3) 然后我们在ZFS池pool1中启用压缩功能 {| class="wikitable" style="width:800px;" |- | root@orangepi:/pool1$ '''sudo zfs set compression=lz4 pool1''' |} 4) 然后再次执行下面的命令将'''/var/log/'''和'''/etc/'''目录打包成tar包 {| class="wikitable" style="width:800px;" |- | root@orangepi:/pool1$ '''sudo tar -cf text.tar /var/log/ /etc/''' |} 5) 这时可以看到'''text.tar'''文件大小还是27M,但是在ZFS池中只占用9.47M的空间,说明文件被压缩了 <p>[[File:5plus-8.png]]</p> == 关机和重启开发板的方法 == <ol style="list-style-type: decimal;"> <li><p>在Linux系统运行的过程中,如果直接拔掉Type-C电源断电,可能会导致文件系统丢失某些数据或者损坏,所以在断电前请先使用'''poweroff'''命令关闭开发板的Linux系统,然后再拔掉电源。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo poweroff'''</p> |} </li> <li><p>另外开发板配有开关机按键,还可以'''短按'''开发板上的开关机按键来关机。</p> <p>[[File:plus-5-690.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,Linux桌面版系统按下开关机按键后会弹出下图所示的确认框,需要点击Shut Down选项后才会关机。'''</big> [[File:plus-5-691.png]] |} </li></ol> <ol start="3" style="list-style-type: decimal;"> <li><p>关机后短按开发板上的开关机按键即可开机。</p> <p>[[File:plus-5-690.png]]</p></li> <li><p>重启linux系统的命令为</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''sudo''' '''reboot'''</p> |} </li></ol> <span id="ubuntu22.04-gnome-wayland桌面系统使用说明"></span> = '''Ubuntu22.04 Gnome Wayland桌面系统使用说明''' = {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''ubuntu22.04 gnome镜像默认预装panfork mesa用户空间库,预装的kodi播放器和chromium浏览器支持硬解播放视频。''' '''需要注意的是此镜像需要在wayland下使用,如果需要使用x11,请选择xfce类型的镜像。'''</big> |} <span id="ubuntu22.04-gnome桌面系统适配情况"></span> == Ubuntu22.04 Gnome桌面系统适配情况 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''功能''' | style="text-align: left;"| '''Ubuntu22.04 Gnome Wayland''' |- | style="text-align: left;"| '''HDMI TX1视频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2视频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX视频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB2.0X2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB3.0X2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口X2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口灯''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''调试串口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTC芯片''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''FAN风扇接口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''eMMC扩展接口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-BT''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-BT''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX210-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX210-BT''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-BT''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MaskROM按键''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C转USB3.0''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C ADB功能''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C DP视频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C DP音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''开关机按键''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''红外功能''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''三色LED灯''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''板载MIC''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机播放''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机录音''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPK喇叭''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN GPIO''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN I2C''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN SPI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN UART''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN CAN''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN PWM''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''TF卡启动''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPI+NVME启动''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13850摄像头''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13855摄像头''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''GPU''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''VPU''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''NPU''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''REBOOT命令重启''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Poweroff命令关机''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD显示''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD触摸''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''看门狗测试''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Chromium硬解视频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MPV硬解视频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Kodi硬解视频''' | style="text-align: left;"| '''OK''' |} == 确认系统当前使用的窗口系统为wayland的方法 == <ol style="list-style-type: decimal;"> <li><p>系统默认使用的窗口系统为wayland,确认方法如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先打开设置</p> <p>[[File:plus-5-693.png]]</p></li> <li><p>然后选择'''About''',如果'''Windowing System'''一栏显示的'''wayland'''说明设置正确</p> <p>[[File:plus-5-694.png]]</p></li></ol> </li> <li><p>当'''Log Out'''出系统后会进入下面的登录界面</p> <p>[[File:plus-5-695.png]]</p></li> <li><p>再次登录系统前请先点击下图所示的位置</p> <p>[[File:plus-5-696.png]]</p></li> <li><p>然后选择'''Ubuntu on Wayland''',再输入密码登录系统</p> <p>[[File:plus-5-697.png]]</p></li></ol> == 切换默认音频设备的方法 == <ol style="list-style-type: decimal;"> <li><p>首先打开设置</p> <p>[[File:plus-5-693.png]]</p></li> <li><p>然后选择'''Sound''',然后在'''Output Device'''中选择想要使用的音频设备即可</p> <p>[[File:plus-5-699.png]]</p></li></ol> <span id="gpu的测试方法"></span> == GPU的测试方法 == <ol style="list-style-type: decimal;"> <li><p>在桌面中打开一个终端,然后输入 '''glmark2'''命令,如果能看到'''GL_VERDOR'''后面显示为'''Panfrost'''说明有使用到GPU</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''glmark2'''</p> |} <p>[[File:plus-5-700.png]]</p></li> <li><p>glmark2跑分测试一般为1000多分</p> <p>[[File:plus-5-701.png]]</p></li> <li><p>运行'''gpu_load.sh'''脚本可以查看GPU当前的负载情况</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''gpu_load.sh'''</p> |} <p>[[File:plus-5-702.png]]</p></li></ol> <span id="chromium浏览器硬解播放视频的测试方法"></span> == Chromium浏览器硬解播放视频的测试方法 == <ol style="list-style-type: decimal;"> <li><p>首先打开Chromium浏览器</p> <p>[[File:plus-5-703.png]]</p></li> <li><p>然后在Chromium浏览器中输入'''chrome://gpu'''可以查看下GPU和视频解码的支持情况</p> <p>[[File:plus-5-704.png]]</p></li> <li><p>然后可以打开视频网站播放一个视频文件,或者在浏览器中输入下面的路径名播放系统自带的一个测试视频文件</p> {| class="wikitable" style="width:800px;" |- | <p>'''/usr/local/test.mp4'''</p> |} </li> <li><p>播放视频的时候可以在终端中运行下'''vpu_debug.sh'''脚本,如果有下图右下角的打印输出,说明有使用硬件来解码视频</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vpu_debug.sh'''</p> |} <div class="figure"> [[File:plus-5-705.png]] </div></li></ol> <span id="kodi硬解播放视频的测试方法"></span> == Kodi硬解播放视频的测试方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,在Wayland桌面中直接打开Kodi显示会有有问题,请严格按照下面的方法打开Kodi。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先登出系统</p> <p>[[File:plus-5-706.png]] [[File:plus-5-707.png]]</p></li> <li><p>当登出系统后会进入下面的登录界面</p> <p>[[File:plus-5-695.png]]</p></li> <li><p>然后点击下图所示的位置</p> <p>[[File:plus-5-696.png]]</p></li> <li><p>然后选择'''Kodi Wayland''',再输入密码登录系统</p> <p>[[File:plus-5-710.png]]</p></li> <li><p>Kodi打开后的界面显示如下所示</p> <div class="figure"> [[File:plus-5-711.png]] </div></li> <li><p>然后点击设置</p> <p>[[File:plus-5-712.png]]</p></li> <li><p>然后选择'''Player'''</p> <p>[[File:plus-5-713.png]]</p></li> <li><p>然后选择'''Videos''',然后点击左下角的'''Standard'''</p> <p>[[File:plus-5-714.png]]</p></li> <li><p>点击两次后会切换成'''Expert'''模式,具体显示如下图所示</p> <p>[[File:plus-5-715.png]]</p></li> <li><p>然后在'''Processing'''设置中打开'''Allow using DRM PRIME decoder'''</p> <p>[[File:plus-5-716.png]]</p></li> <li><p>然后我们来导入一个系统自带的测试视频测试下,你也可以上传想要播放的视频到系统中,然后导入播放</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先进入主界面,然后选择'''Movies'''</p> <p>[[File:plus-5-717.png]]</p></li> <li><p>然后选择'''Add videos...'''</p> <p>[[File:plus-5-718.png]]</p></li> <li><p>然后选择'''Browse'''</p> <p>[[File:plus-5-719.png]]</p></li> <li><p>然后选择'''Root filesystem'''</p> <p>[[File:plus-5-720.png]]</p></li> <li><p>然后选择'''usr'''</p> <p>[[File:plus-5-721.png]]</p></li> <li><p>然后选择'''local'''</p> <p>[[File:plus-5-722.png]]</p></li> <li><p>然后选择'''OK'''</p> <p>[[File:plus-5-723.png]]</p></li> <li><p>然后选择'''OK'''</p> <p>[[File:plus-5-724.png]]</p></li> <li><p>然后选择OK</p> <p>[[File:plus-5-725.png]]</p></li> <li><p>然后进入local文件夹中</p> <p>[[File:plus-5-726.png]]</p></li> <li><p>然后就可以播放'''test.mp4'''测试视频了</p> <p>[[File:plus-5-727.png]]</p></li></ol> </li> <li><p>播放视频的时候可以在命令行中(通过ssh或者串口)运行下'''vpu_debug.sh'''脚本,如果有下面的打印输出,说明有使用硬件来解码视频</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''vpu_debug.sh'''</p> <p>[ 1830.938378] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2728 us</p> <p>[ 1830.938461] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2617 us</p> <p>[ 1830.941179] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2661 us</p> <p>[ 1830.941777] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2708 us</p> <p>[ 1830.944727] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 3444 us</p> <p>[ 1830.945211] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 3331 us</p> <p>[ 1830.970563] rk_vcodec: fdc48100.rkvdec-core:1 session 3573:2 time: 2547 us</p> <p>[ 1831.199650] rk_vcodec: fdc38100.rkvdec-core:0 session 3573:2 time: 2703 us</p> |} </li> <li><p>播放'''test.mp4'''视频文件CPU的占用率在'''20%~30%'''左右。</p> <p>[[File:plus-5-728.png]]</p></li></ol> <span id="ubuntu22.04-gnome安装ros-2-humble的方法"></span> == Ubuntu22.04 Gnome安装ROS 2 Humble的方法 == <ol style="list-style-type: decimal;"> <li><p>使用'''install_ros.sh'''脚本可以安装ros2</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''install_ros.sh ros2'''</p> |} </li> <li><p>install'''_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 -h'''命令,如果能看到下面的打印,说明ros2安装完成</p> {| class="wikitable" style="width:800px;" |- | <p>usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...</p> <p>ros2 is an extensible command-line tool for ROS 2.</p> <p>optional arguments:</p> :<p>-h, --help show this help message and exit</p> <p>Commands:</p> :<p>action Various action related sub-commands</p> :<p>bag Various rosbag related sub-commands</p> :<p>component Various component related sub-commands</p> :<p>daemon Various daemon related sub-commands</p> :<p>doctor Check ROS setup and other potential issues</p> :<p>interface Show information about ROS interfaces</p> :<p>launch Run a launch file</p> :<p>lifecycle Various lifecycle related sub-commands</p> :<p>multicast Various multicast related sub-commands</p> :<p>node Various node related sub-commands</p> :<p>param Various param related sub-commands</p> :<p>pkg Various package related sub-commands</p> :<p>run Run a package specific executable</p> :<p>security Various security related sub-commands</p> :<p>service Various service related sub-commands</p> :<p>topic Various topic related sub-commands</p> :<p>wtf Use `wtf` as alias to `doctor`</p> :<p>Call `ros2 <command> -h` for more detailed usage.</p> |} </li> <li><p>然后可以使用 '''test_ros.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi5plus:~$ '''test_ros.sh'''</p> <p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p> <p>[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]</p> <p>[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'</p> <p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]</p> <p>[INFO] [1671174103.199580322] [talker]: Publishing: 'Hello World: 3'</p> <p>[INFO] [1671174103.204019965] [listener]: I heard: [Hello World: 3]</p> |} </li> <li><p>运行下面的命令可以打开rviz2</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''</p> <p>orangepi@orangepi:~$ '''ros2 run rviz2 rviz2'''</p> |} <div class="figure"> [[File:plus-5-729.png]] </div></li> <li><p>参考文档</p> {| class="wikitable" style="width:800px;" |- | <p>'''http://docs.ros.org/en/humble/index.html'''</p> <p>[http://docs.ros.org/en/galactic/Tutorials.html '''http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html''']</p> |} </li></ol> == 设置中文环境以及安装中文输入法的方法 == <ol style="list-style-type: decimal;"> <li><p>首先打开设置</p> <p>[[File:plus-5-693.png]]</p></li> <li><p>然后找到'''Region & Language'''选项,然后点击'''Manage Installed Languages'''选项</p> <p>[[File:plus-5-731.png]]</p></li> <li><p>然后请使用鼠标左键选中'''汉语(中国)'''并按住不动,然后往上将其拖到最开始的位置,拖完后的显示如下图所示:</p> <p>[[File:plus-5-732.png]]</p></li> <li><p>然后选择'''Apply System-Wide'''将中文设置应用到整个系统</p> <p>[[File:plus-5-733.png]]</p></li> <li><p>'''<span style="color:#FF0000">然后重启Linux系统使配置生效</span>'''</p></li> <li><p>重新进入系统后,在下面的界面请选择'''不要再次询问我''',然后请根据自己的喜好决定标准文件夹是否也要更新为中文</p> <p>[[File:plus-5-734.png]]</p></li> <li><p>然后可以看到桌面都显示为中文了</p> <div class="figure"> [[File:plus-5-735.png]] </div></li> <li><p>然后打开Fcitx5配置程序</p> <p>[[File:plus-5-736.png]]</p></li> <li><p>然后选择使用拼音输入法</p> <p>[[File:plus-5-737.png]]</p></li> <li><p>选择后的界面如下所示,再点击确定即可</p> <p>[[File:plus-5-738.png]]</p></li> <li><p>然后我们可以打开'''Geany'''测试下中文输入法,打开方式如下图所示</p> <p>[[File:plus-5-739.png]]</p></li> <li><p>打开'''Geany'''后,默认还是英文输入法,我们可以通过'''Ctrl+Space'''快捷键来切换成中文输入法,然后就能输入中文了</p> <p>[[File:plus-5-740.png]]</p></li></ol> <span id="orange-pi-os-arch系统使用说明"></span> = '''Orange Pi OS Arch系统使用说明''' = <span id="orange-pi-os-arch系统适配情况"></span> == Orange Pi OS Arch系统适配情况 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''功能''' | '''OPi OS Arch Gnome''' | style="text-align: left;"| '''OPi OS Arch Xfce<span style="color:#FF0000">(待发布)</span>''' |- | style="text-align: left;"| '''HDMI TX1视频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1音频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2视频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2音频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX视频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX音频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB2.0X2''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB3.0X2''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口X2''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口灯''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''调试串口''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTC芯片''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''FAN风扇接口''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''eMMC扩展接口''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-WIFI''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-BT''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-BT''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX210-WIFI''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX210-BT''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-WIFI''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-BT''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MaskROM按键''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C转USB3.0''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C DP视频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C DP音频''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''开关机按键''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''红外功能''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''三色LED灯''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''板载MIC''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机播放''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机录音''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPK喇叭''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN GPIO''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN I2C''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN SPI''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN UART''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN CAN''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN PWM''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''TF卡启动''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPI+NVME启动''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13850摄像头''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13855摄像头''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''GPU''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''VPU''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''NPU''' | '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''REBOOT命令重启''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Poweroff命令关机''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD显示''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD触摸''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''看门狗测试''' | '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Chromium硬解视频''' | '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''MPV硬解视频''' | '''OK''' | style="text-align: left;"| '''OK''' |} <span id="m.2-e-key-pcie-wifi6蓝牙模块的使用方法-1"></span> == M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法 == # 首先需要购买一个PCIe WIFI6+蓝牙模块 ::{| class="wikitable" style="width:800px;" |- | '''序 号''' | '''型号''' | '''实物图片''' | '''已支持的OS''' |- | '''1''' | '''AX200''' '''(PCIE+USB接口)''' | [[File:plus-5-389.png]] | '''Debian''' '''Ubuntu''' '''OpenWRT''' '''<span style="color:#FF0000">OPi OS Arch</span>''' |- | '''2''' | '''AX210''' '''(PCIE+USB接口)''' | [[File:plus-5-390.png]] | '''Debian''' '''Ubuntu''' '''OpenWRT''' '''<span style="color:#FF0000">OPi OS Arch</span>''' |- | '''3''' | '''RTL8852BE''' '''(PCIE+USB接口)''' | [[File:plus-5-391.png]] | '''Debian''' '''Ubuntu''' '''Android12''' '''<span style="color:#FF0000">OPi OS Arch</span>''' '''OPi OS Droid''' |} <ol start="2" style="list-style-type: decimal;"> <li><p>然后将WIFI模块插入开发板的M.2 E-Key接口中并固定好</p> <p>[[File:plus-5-392.png]]</p></li> <li><p>然后在OPi OS Arch系统中打开WIFI模块的配置,步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中添加一行下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-wifi-pcie.dtbo #需要添加的</span>'''</p> |} </li> <li><p>'''<span style="color:#FF0000">然后重启OPi OS Arch系统</span>'''</p></li></ol> </li> <li><p>重启系统后如果一切正常,此时使用下面的命令就能看到WIFI设备节点了。如果看不到,请先检查前面的配置是否有问题</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''ip addr show wlan0'''</p> <p>......</p> <p>4: '''wlan0''': <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000</p> :<p>link/ether 38:7a:0e:e3:80:05 brd ff:ff:ff:ff:ff:ff</p> :<p>inet 192.168.1.237/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0</p> ::<p>valid_lft 42938sec preferred_lft 42938sec</p> :<p>inet6 fe80::a098:5942:16e:e817/64 scope link noprefixroute</p> ::<p>valid_lft forever preferred_lft forever</p> |} </li> <li><p>连接WIFI的步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先点击桌面右上角的这块区域</p> <p>[[File:plus-5-745-1.png]]</p></li> <li><p>然后选择Wi-Fi</p> <p>[[File:plus-5-746-1.png]]</p></li> <li><p>然后选择想要连接的WIFI</p> <p>[[File:plus-5-747.png]]</p></li> <li><p>然后输入WIFI的密码,再点击'''Connect'''</p> <p>[[File:plus-5-748.png]]</p></li> <li><p>然后再次进入下面的界面就能看到WIFI已连接</p> <p>[[File:plus-5-749.png]]</p></li></ol> </li> <li><p>蓝牙的使用示例:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先点击桌面右上角的这块区域</p> <p>[[File:plus-5-745-1.png]]</p></li> <li><p>然后打开设置</p> <p>[[File:plus-5-751-1.png]]</p></li> <li><p>然后在设置中选择蓝牙,并确保蓝牙右上角的开关按钮已打开</p> <p>[[File:plus-5-752.png]]</p></li> <li><p>然后选择想要配置对的蓝牙设备,比如和安卓手机配对</p> <p>[[File:plus-5-753.png]]</p></li> <li><p>然后点击'''Confirm''',手机端也需要确认配对</p> <p>[[File:plus-5-754.png]]</p></li> <li><p>蓝牙和安卓手机连接后的显示如下所示:</p> <p>[[File:plus-5-755.png]]</p></li> <li><p>然后点击已配对的蓝牙设备会弹出下图所示的操作界面</p> <p>[[File:plus-5-756.png]]</p></li> <li><p>此时点击'''Send Files...'''就可给手机发送一个文件</p></li> [[File:plus-5-757.png]] </ol> <ol style="list-style-type: lower-roman;"> <li><p>蓝牙发送图片给手机的示意图如下所示:</p> <div class="figure"> [[File:plus-5-758.png]] </div></li></ol> </li></ol> <span id="寸mipi-lcd屏幕的使用方法-1"></span> == 10.1寸MIPI LCD屏幕的使用方法 == <span id="寸mipi-屏幕的组装方法-1"></span> === 10.1寸MIPI 屏幕的组装方法 === <ol style="list-style-type: decimal;"> <li><p>首先准备需要的配件</p> <ol style="list-style-type: lower-alpha;"> <li><p>10.1寸MIPI LCD显示屏+触摸屏(和OPi5/OPi5B通用)</p> <p>[[File:plus-5-651.png]]</p></li> <li><p>屏幕转接板+31pin转40pin排线</p> <div class="figure"> [[File:plus-5-652.png]] </div></li> <li><p>30pin MIPI排线</p> <div class="figure"> [[File:plus-5-653.png]] </div></li> <li><p>12pin 触摸屏排线</p> <p>[[File:plus-5-654.png]]</p></li></ol> </li> <li><p>按照下图将12pin 触摸屏排线、31pin转40pin排线、30pin MIPI排线接到屏幕转接板上,注意'''<span style="color:#FF0000">触摸屏排线蓝色的绝缘面朝下</span>''',其它两根排线绝缘面朝上,如果接错会导致无显示或者不能触摸的问题</p> <p>[[File:plus-5-655.png]]</p></li> <li><p>按照下图将连接好排线的转接板置于MIPI LCD屏上面,并通过31pin转40pin排线连接MIPI LCD屏与转接板</p></li> [[File:plus-5-656.png]] </ol> <ol start="4" style="list-style-type: decimal;"> <li><p>然后通过12pin触摸屏排线连接触摸屏与转接板,注意绝缘面的朝向</p> <p>[[File:plus-5-657.png]]</p></li> <li><p>最后通过30pin MIPI排线连接到开发板的LCD接口上</p> <p>[[File:plus-5-658.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,下面的触摸接口不是给LCD MIPI屏幕使用的,目前为备用接口,使用不到。'''</p></big> <p>[[File:plus-5-659.png]]</p> |} </li></ol> <span id="打开10.1寸mipi-lcd屏幕配置的方法-1"></span> === 打开10.1寸MIPI LCD屏幕配置的方法 === <ol style="list-style-type: decimal;"> <li><p>开发板上mipi lcd屏幕的接口的位置如下图所示</p> <p>[[File:plus5-768.png]]</p></li> <li><p>OPi OS Arch镜像默认是没有打开mipi lcd屏幕配置的,如果需要使用mipi lcd屏幕,需要手动打开才行。打开mipi lcd配置的方法如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加入下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-lcd.dtbo #需要添加的配置</span>'''</p> |} </li> <li><p>'''<span style="color:#FF0000">然后重启OPi OS Arch系统</span>'''</p></li></ol> </li> <li><p>重启后可以看到lcd屏幕的显示如下所示(默认为竖屏):</p></li> [[File:plus-5-769.png]] </ol> === 旋转显示和触摸方向的方法 === <ol style="list-style-type: decimal;"> <li><p>首先点击桌面右上角的这块区域</p> <p>[[File:plus-5-745-1.png]]</p></li> <li><p>然后打开设置</p> <p>[[File:plus-5-751-1.png]]</p></li> <li><p>然后选择'''Displays'''</p> <p>[[File:plus-5-772.png]]</p></li> <li><p>然后在'''Displays'''的'''Orientation'''中选择想要旋转的方向</p> <p>[[File:plus-5-773.png]]</p></li> <li><p>然后选择'''Apply'''</p> <p>[[File:plus-5-774.png]]</p></li> <li><p>然后就能看到屏幕已经旋转好了,此时还需要选择'''Keep Changes'''来最后确定旋转</p> <p>[[File:plus-5-775.png]]</p></li> <li><p>LCD屏幕旋转90度后的显示如下所示:</p> <p>[[File:plus-5-776.png]]</p></li> <li><p>'''OPi OS Arch系统LCD屏幕的触摸功能会随着显示方向的旋转而旋转,无需其他设置。'''</p></li></ol> <span id="ov13850和ov13855-mipi摄像头的测试方法-1"></span> == OV13850和OV13855 MIPI摄像头的测试方法 == 目前开发板支持两款MIPI摄像头,OV13850和OV13855,具体的图片如下所示: <ol style="list-style-type: lower-alpha;"> <li><p>1300万MIPI接口的OV13850摄像头</p> <p>[[File:plus-5-19.png]]</p></li> <li><p>1300万MIPI接口的OV13855摄像头</p> <p>[[File:plus-5-20.png]]</p></li></ol> <p>OV13850和OV13855摄像头使用的转接板和FPC排线是一样的,只是两款摄像头接在转接板上的位置不一样。FPC排线如下图所示,请注意FPC排线是有方向的,标注'''TO MB'''那端需要插到开发板的摄像头接口中,标注'''TO CAMERA'''那端需要插到摄像头转接板上。</p> [[File:plus-5-674.png]] 摄像头转接板上总共有3个摄像头的接口,同一时间只能接一个使用,如下图所示,其中: <ol style="list-style-type: lower-alpha;"> <li><p>'''1号接口接OV13850摄像头'''</p></li> <li><p>'''2号接口接OV13855摄像头'''</p></li> <li><p>3号接口未使用,忽略即可</p> [[File:plus-5-675.png]] </li></ol> Orange Pi 5 Plus开发板上总共有1个摄像头接口,位置如下所示: [[File:plus-5-676.png]] 摄像头插在开发板的摄像头接口的方法如下所示: [[File:plus-5-677.png]] 连接好摄像头到开发板上后,我们可以使用下面的方法来测试下摄像头: <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-opi5plus-ov13850.dtbo</span>'''</p> |} <p>上面红色字体演示的是摄像头接口接'''ov13850'''的配置,其他的配置如下表所示,将对应的dtbo配置添加到'''<span style="color:#FF0000">FDTOVERLAYS</span>'''后面即可。</p> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''摄像头''' | style="text-align: left;"| '''dtbo的配置''' |- | style="text-align: left;"| '''接ov13850''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-opi5plus-ov13850.dtbo''' |- | style="text-align: left;"| '''接ov13855''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-opi5plus-ov13855.dtbo''' |} </li></ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>'''<span style="color:#FF0000">然后重启OPi OS Arch系统</span>'''</p></li> <li><p>然后在桌面系统中打开一个终端,再运行下面的脚本</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''test_camera.sh'''</p> |} </li> <li><p>然后就能看到摄像头的预览画面了</p> <div class="figure"> [[File:plus-5-783.png]] </div></li></ol> <span id="设置中文环境以及安装中文输入法的方法-1"></span> == 设置中文环境以及安装中文输入法的方法 == <ol style="list-style-type: decimal;"> <li><p>首先点击桌面右上角的这块区域</p> <p>[[File:plus-5-745-1.png]]</p></li> <li><p>然后打开设置</p> <p>[[File:plus-5-785.png]]</p></li> <li><p>然后找到'''Region & Language'''选项</p> <p>[[File:plus-5-786.png]]</p></li> <li><p>然后选择'''Language'''</p> <p>[[File:plus-5-787.png]]</p></li> <li><p>然后选择汉语</p> <p>[[File:plus-5-788.png]]</p></li> <li><p>然后点击'''Select'''</p> <p>[[File:plus-5-789.png]]</p></li> <li><p>然后点击'''Logout...'''登出系统,再重新登入系统</p> <p>[[File:plus-5-790.png]]</p></li> <li><p>然后可以看到桌面都显示为中文了</p> <div class="figure"> [[File:plus-5-791.png]] </div></li> <li><p>然后安装下'''fcitx-im'''和'''fcitx-configtool'''</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo pacman -S fcitx-im fcitx-configtool'''</p> <p>:: 在组 fcitx-im 中有 3 成员:</p> <p>:: 软件仓库 community</p> :<p>1) fcitx 2) fcitx-qt5 3) fcitx-qt6</p> <p>输入某个选择 ( 默认=全部选定 ): '''1'''</p> |} </li> <li><p>然后打开Fcitx配置程序</p> <p>[[File:plus-5-792.png]]</p> <p>[[File:plus-5-793.png]]</p></li> <li><p>然后添加'''Google拼音'''输入法</p> <p>[[File:plus-5-794.png]]</p> <p>[[File:plus-5-795.png]]</p></li> <li><p>然后我们可以打开一个终端测试下中文输入法,打开终端后,如果默认还是英文输入法,我们可以通过'''Ctrl+Space'''快捷键来切换成中文输入法,然后就能输入中文了</p> <div class="figure"> [[File:plus-5-796.png]] </div></li></ol> <span id="hdmi-in的测试方法-1"></span> == HDMI IN的测试方法 == <ol start="1" style="list-style-type: decimal;"> <li><p>开发板HDMI In接口的所在位置如下所示:</p> <p>[[File:plus-5-432.png]]</p></li> <li><p>首先使用下图所示的HDMI转HDMI线将其它设备的HDMI输出接到开发板的HDMI In接口上</p> <p>[[File:plus-5-7.png]]</p></li> <li><p>OPi OS Arch系统HDMI In功能默认是关闭的,打开方法如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-hdmirx.dtbo #需要添加的配置</span>'''</p> |} </li> <li><p>'''<span style="color:#FF0000">然后重启OPi OS Arch系统</span>'''</p></li></ol> </li> <li><p>重启进入系统后再在桌面上打开一个终端,然后运行下'''test_hdmiin.sh'''脚本</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''test_hdmiin.sh'''</p> |} </li> <li><p>然后就能看到HDMI In的输入画面了(下图中HDMI In显示的是opi5开发板HDMI输出的画面,此时正在播放一个视频)。'''test_hdmiin.sh'''脚本默认会将HDMI In输入的音频播放到开发板的HDMI_TX1、HDMI_TX2和ES8388(代表喇叭或者耳机)中去。</p> <p>[[File:plus-5-799.png]]</p></li> <li><p>除了使用'''test_hdmiin.sh'''脚本来测试HDMI In外,我们还可以使用'''Qt V4L2 test Utility'''来测试HDMI In的视频('''<span style="color:#FF0000">此方法目前无法测试音频</span>''')。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>先进入应用程序列表中</p> <p>[[File:plus-5-800.png]]</p></li> <li><p>然后找到'''Qt V4L2 test Utility'''并打开</p> <p>[[File:plus-5-801.png]]</p></li> <li><p>然后请确保'''Qt V4L2 test Utility'''识别到了HDMI In设备</p> <p>[[File:plus-5-802.png]]</p></li> <li><p>然后点击下图所示的位置就可以看到HDMI In输入的视频</p> <p>[[File:plus-5-803.png]]</p></li> <li><p>HDMI In输入的视频窗口如下所示:</p> <div class="figure"> [[File:plus-5-804.png]] </div></li></ol> </li></ol> <span id="安装wiringop的方法-1"></span> == 安装wiringOP的方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,Orange Pi发布的OPi OS Arch镜像中已经预装了wiringOP,除非wiringOP的代码有更新,否则无需重新下载编译安装,直接使用即可。''' '''进入系统后可以运行下gpio readall命令,如果能看到下面的输出,说明wiringOP已经预装并且能正常使用。'''</big> [[File:plus-5-805.png]] <big>'''wiringOP目前主要适配了设置GPIO口输入输出,设置GPIO口输出高低电平以及设置上下拉电阻的功能,像硬件PWM这样的功能是用不了的。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>下载wiringOP的代码</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo pacman -Syy git'''</p> <p>[orangepi@orangepi ~]$ '''git clone https://github.com/orangepi-xunlong/wiringOP.git -b next'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,Orange Pi 5 Plus需要下载wiringOP next分支的代码,请别漏了-b next这个参数。'''</p> <p>'''如果从GitHub下载代码有问题,可以去[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html Orange Pi 5 Plus资料下载页面的官方工具]中下载wiringOP.tar.gz的源码压缩包。'''</p></big> <p>[[File:plus-5-806.png]]</p> |} </li> <li><p>编译安装wiringOP</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo pacman -Syy make gcc'''</p> <p>[orangepi@orangepi ~]$ '''cd wiringOP'''</p> <p>[orangepi@orangepi wiringOP]$ '''sudo ./build clean'''</p> <p>[orangepi@orangepi wiringOP]$ '''sudo ./build'''</p> |} </li> <li><p>测试gpio readall命令的输出如下</p> <p>[[File:plus-5-807.png]]</p></li></ol> <span id="pin接口gpioi2cuartspican和pwm测试-1"></span> == 40 pin接口GPIO、I2C、UART、SPI、CAN和PWM测试 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,如果需要设置fdt overlays同时打开多个配置,请像下面红色字体配置那样使用空格隔开写在一行即可。'''</big> [orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf''' LABEL Orange Pi LINUX /Image FDT /dtbs/rockchip/rk3588s-orangepi-5.dtb '''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c1-m2.dtbo /dtbs/rockchip/overlay/rk3588-uart0-m2.dtbo</span>''' |} <span id="pin-gpio口测试-2"></span> === 40 pin GPIO口测试 === <ol style="list-style-type: decimal;"> <li><p>开发板40 pin中总共有'''28'''个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO1_D6 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平</p> <p>[[File:plus5-808.png]]</p></li> <li><p>首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> out'''</p> |} </li> <li><p>然后设置GPIO口输出低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为0v,说明设置低电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio write 2 <span style="color:#FF0000">0</span>'''</p> |} </li> <li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio write 2 <span style="color:#FF0000">1</span>'''</p> |} </li> <li><p>其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可</p></li></ol> <span id="pin-gpio口上下拉电阻的设置方法-1"></span> === 40 pin GPIO口上下拉电阻的设置方法 === <ol style="list-style-type: decimal;"> <li><p>下面以7号引脚——对应GPIO为GPIO1_D6 ——对应wPi序号为2——为例演示如何设置GPIO口的上下拉电阻</p> <p>[[File:plus5-809.png]]</p></li> <li><p>首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> in'''</p> |} </li> <li><p>设置为输入模式后,执行下面的命令可以设置GPIO口为上拉模式</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> up'''</p> |} </li> <li><p>然后输入下面的命令读取GPIO口的电平,如果电平为1,说明上拉模式设置成功</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio read <span style="color:#FF0000">2</span>'''</p> <p>'''1'''</p> |} </li> <li><p>然后执行下面的命令可以设置GPIO口为下拉模式</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio mode <span style="color:#FF0000">2</span> down'''</p> |} </li> <li><p>然后输入下面的命令读取GPIO口的电平,如果电平为0,说明下拉模式设置成功</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''gpio read <span style="color:#FF0000">2</span>'''</p> <p>'''0'''</p> |} </li></ol> <span id="pin-spi测试-2"></span> === 40 pin SPI测试 === <ol style="list-style-type: decimal;"> <li><p>由下图可知,Orange Pi 5 Plus可用的SPI为SPI0和SPI4</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>SPI0和SPI4在40pin中对应的引脚如下表所示。SPI4_M1和SPI4_M2同一时间只能使用其中一组,不能同时使用,它们都是同一个SPI4,只是接到不同的引脚上去了而已,请不要以为它们是两组不同的SPI总线。</p></li> {| class="wikitable" style="width:800px;" |- | | style="text-align: left;"| '''SPI0_M2对应40pin''' | style="text-align: left;"| '''SPI4_M1对应40pin''' | style="text-align: left;"| '''SPI4_M2对应40pin''' |- | '''MOSI''' | style="text-align: left;"| '''19号引脚''' | style="text-align: left;"| '''12号引脚''' | style="text-align: left;"| '''8号引脚''' |- | '''MISO''' | style="text-align: left;"| '''21号引脚''' | style="text-align: left;"| '''31号引脚''' | style="text-align: left;"| '''10号引脚''' |- | '''CLK''' | style="text-align: left;"| '''23号引脚''' | style="text-align: left;"| '''35号引脚''' | style="text-align: left;"| '''22号引脚''' |- | '''CS0''' | style="text-align: left;"| '''24号引脚''' | style="text-align: left;"| '''40号引脚''' | style="text-align: left;"| '''31号引脚''' |- | '''CS1''' | style="text-align: left;"| '''26号引脚''' | style="text-align: left;"| '''38号引脚''' | style="text-align: left;"| '''无''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-cs1-spidev.dtbo</span>'''</p> |} <p>上面红色字体演示的是打开'''spi0-m2并使用cs0和cs1引脚'''的配置,其他的配置如下表所示,将对应的dtbo配置添加到'''<span style="color:#FF0000">FDTOVERLAYS</span>'''后面即可。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''SPI总线''' | style="text-align: left;"| '''dtbo的配置''' |- | style="text-align: left;"| '''SPI0_M2-cs0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-spidev.dtbo''' |- | style="text-align: left;"| '''SPI0_M2-cs1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi0-m2-cs1-spidev.dtbo''' |- | style="text-align: left;"| '''SPI0_M2-cs0-cs1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi0-m2-cs0-cs1-spidev.dtbo''' |- | style="text-align: left;"| '''SPI4_M1-cs0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi4-m1-cs0-spidev.dtbo''' |- | style="text-align: left;"| '''SPI4_M1-cs1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi4-m1-cs1-spidev.dtbo''' |- | style="text-align: left;"| '''SPI4_M1-cs0-cs1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi4-m1-cs0-cs1-spidev.dtbo''' |- | style="text-align: left;"| '''SPI4_M2-cs0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-spi4-m2-cs0-spidev.dtbo''' |} </ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后'''<span style="color:#FF0000">重启OPi OS Arch系统</span>'''</li></ol> </li></ol> <!-- --> <ol start="4" style="list-style-type: decimal;"> <li><p>重启后进入系统先查看下linux系统中是否存在'''spidevx.x'''的设备节点,如果存在,说明SPI已经设置好了,可以直接使用。</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''ls /dev/spidev*'''</p> <p>/dev/spidev0.0 /dev/spidev0.1 /dev/spidev4.0 /dev/spidev4.1</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''上面是打开spi0-m2-cs0-cs1-spidev和spi4-m1-cs0-cs1-spidev后显示的结果。'''</p></big> |} </li> <li><p>然后先不短接SPI0或者SPI4的MOSI和MISO两个引脚,运行spidev_test的输出结果如下所示,可以看到TX和RX的数据不一致</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p> <p>'''或者'''</p> <p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev0.0'''</p> <p>spi mode: 0x0</p> <p>bits per word: 8</p> <p>max speed: 500000 Hz (500 KHz)</p> <p>TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p> <p>RX | FF FF FF FF FF FF '''<span style="color:#FF0000">FF FF FF FF FF FF</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ............................….</p> |} </li> <li><p>然后短接SPI0或者SPI4的MOSI和MISO两个引脚再运行spidev_test的输出如下,可以看到发送和接收的数据一样,说明SPI回环测试正常。</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev4.0'''</p> <p>'''或者'''</p> <p>[orangepi@orangepi ~]$ '''sudo spidev_test -v -D /dev/spidev0.0'''</p> <p>spi mode: 0x0</p> <p>bits per word: 8</p> <p>max speed: 500000 Hz (500 KHz)</p> <p>TX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p> <p>RX | FF FF FF FF FF FF '''<span style="color:#FF0000">40 00 00 00 00 95</span>''' FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.…▒..................▒.</p> |} </li></ol> <span id="pin-i2c测试-2"></span> === 40 pin I2C测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的i2c为i2c2、i2c4、i2c5和i2c8共四组 i2c总线。</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>4组I2C总线在40pin中对应的引脚如下表所示。I2C2_M0和I2C2_M4同一时间只能使用其中一组,不能同时使用,它们都是同一个I2C2,只是接到不同的引脚上去了而已,请不要以为它们是两组不同的I2C2总线。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''I2C总线''' | style="text-align: left;"| '''SDA对应40pin''' | style="text-align: left;"| '''SCL对应40pin''' |- | style="text-align: left;"| '''I2C2_M0''' | style="text-align: left;"| '''3号引脚''' | style="text-align: left;"| '''5号引脚''' |- | style="text-align: left;"| '''I2C2_M4''' | style="text-align: left;"| '''10号引脚''' | style="text-align: left;"| '''8号引脚''' |- | style="text-align: left;"| '''I2C4_M3''' | style="text-align: left;"| '''22号引脚''' | style="text-align: left;"| '''32号引脚''' |- | style="text-align: left;"| '''I2C5_M3''' | style="text-align: left;"| '''27号引脚''' | style="text-align: left;"| '''28号引脚''' |- | style="text-align: left;"| '''I2C8_M2''' | style="text-align: left;"| '''29号引脚''' | style="text-align: left;"| '''7号引脚''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-i2c2-m0.dtbo</span>'''</p> |} <p>上面红色字体演示的是打开'''i2c2-m0'''的配置,其他的配置如下表所示,将对应的dtbo配置添加到'''<span style="color:#FF0000">FDTOVERLAYS</span>'''后面即可。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''I2C总线''' | style="text-align: left;"| '''dtbo的配置''' |- | style="text-align: left;"| '''I2C2_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c2-m0.dtbo''' |- | style="text-align: left;"| '''I2C2_M4''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c2-m4.dtbo''' |- | style="text-align: left;"| '''I2C4_M3''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c4-m3.dtbo''' |- | style="text-align: left;"| '''I2C5_M3''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c5-m3.dtbo''' |- | style="text-align: left;"| '''I2C8_M2''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-i2c8-m2.dtbo''' |} </ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后'''<span style="color:#FF0000">重启OPi OS Arch系统</span>'''</li></ol> </li></ol> <!-- --> <ol start="4" style="list-style-type: decimal;"> <li><p>启动linux系统后,先确认下'''/dev'''下存在需要使用I2C的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''ls /dev/i2c-*'''</p> |} </li> <li><p>然后在40 pin接口对应的I2C引脚上接一个I2C设备</p></li> <li><p>然后使用'''i2cdetect -y'''命令如果能检测到连接的i2c设备的地址,就说明i2c能正常使用</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo pacman -S i2c-tools''' #首先现在i2c工具</p> <p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 2''' #i2c2的测试命令</p> <p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 4''' #i2c4的测试命令</p> <p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 5''' #i2c5的测试命令</p> <p>[orangepi@orangepi ~]$ '''sudo i2cdetect -y 8''' #i2c8的测试命令</p> |} </li></ol> <span id="pin的uart测试-2"></span> === 40 pin的UART测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的uart为uart1、uart3、uart4、uart6、uart7和uart8共6组uart总线</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-uart1-m1.dtbo</span>'''</p> |} <p>上面红色字体演示的是打开'''uart1-m1'''的配置,其他的配置如下表所示,将对应的dtbo配置添加到'''<span style="color:#FF0000">FDTOVERLAYS</span>'''后面即可。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''UART总线''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''UART1_M1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart1-m1.dtbo''' |- | style="text-align: left;"| '''UART3_M1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart3-m1.dtbo''' |- | style="text-align: left;"| '''UART4_M2''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart4-m2.dtbo''' |- | style="text-align: left;"| '''UART6_M1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart6-m1.dtbo''' |- | style="text-align: left;"| '''UART7_M2''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart7-m2.dtbo''' |- | style="text-align: left;"| '''UART8_M1''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-uart8-m1.dtbo''' |}</ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后'''<span style="color:#FF0000">重启OPi OS Arch系统</span>'''</li></ol> </li></ol> <!-- --> <ol start="3" style="list-style-type: decimal;"> <li><p>进入linux系统后,先确认下'''/dev'''下是否存在对应uart的设备节点</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''ls /dev/ttyS*'''</p> |} </li> <li><p>然后开始测试uart接口,先使用杜邦线短接要测试的uart接口的rx和tx引脚</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''UART总线''' | style="text-align: left;"| '''RX对应40pin''' | style="text-align: left;"| '''TX对应40pin''' |- | style="text-align: left;"| '''UART1_M1''' | style="text-align: left;"| '''27号引脚''' | style="text-align: left;"| '''28号引脚''' |- | style="text-align: left;"| '''UART3_M1''' | style="text-align: left;"| '''18号引脚''' | style="text-align: left;"| '''16号引脚''' |- | style="text-align: left;"| '''UART4_M2''' | style="text-align: left;"| '''19号引脚''' | style="text-align: left;"| '''23号引脚''' |- | style="text-align: left;"| '''UART6_M1''' | style="text-align: left;"| '''10号引脚''' | style="text-align: left;"| '''8号引脚''' |- | style="text-align: left;"| '''UART7_M2''' | style="text-align: left;"| '''24号引脚''' | style="text-align: left;"| '''26号引脚''' |- | style="text-align: left;"| '''UART8_M1''' | style="text-align: left;"| '''40号引脚''' | style="text-align: left;"| '''35号引脚''' |} </ol> <ol start="5" style="list-style-type: decimal;"> <li><p>使用'''gpio serial'''命令测试串口的回环功能如下所示,如果能看到下面的打印,说明串口通信正常(ttySX需要替换为对应uart的节点名,请不要照抄)</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo gpio serial /dev/ttySX'''</p> <p>[sudo] password for orangepi: #在这里输入密码</p> <p>Out: 0: -> 0</p> <p>Out: 1: -> 1</p> <p>Out: 2: -> 2</p> <p>Out: 3: -> 3</p> <p>Out: 4: -> 4</p> <p>Out: 5: -> 5^C</p> |} </li></ol> <span id="pwm的测试方法-1"></span> === PWM的测试方法 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的PWM有pwm0、pwm1、pwm11、pwm12、pwm13和pwm14共六路pwm</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>PWM在40pin中对应的引脚如下表所示。PWM0_M0和PWM0_M2、PWM1_M0和PWM1_M2、PWM14_M0和PWM14_M2同一时间只能使用其中一个,不能同时使用,它们都是同一个PWM,只是接到不同的引脚上去了而已,请不要以为它们是两个不同的PWM总线。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''PWM总线''' | style="text-align: left;"| '''对应40pin''' |- | style="text-align: left;"| '''PWM0_M0''' | style="text-align: left;"| '''5号引脚''' |- | style="text-align: left;"| '''PWM0_M2''' | style="text-align: left;"| '''22号引脚''' |- | style="text-align: left;"| '''PWM1_M0''' | style="text-align: left;"| '''3号引脚''' |- | style="text-align: left;"| '''PWM1_M2''' | style="text-align: left;"| '''32号引脚''' |- | style="text-align: left;"| '''PWM11_M0''' | style="text-align: left;"| '''12号引脚''' |- | style="text-align: left;"| '''PWM12_M0''' | style="text-align: left;"| '''14号引脚''' |- | style="text-align: left;"| '''PWM13_M0''' | style="text-align: left;"| '''16号引脚''' |- | style="text-align: left;"| '''PWM14_M0''' | style="text-align: left;"| '''33号引脚''' |- | style="text-align: left;"| '''PWM14_M2''' | style="text-align: left;"| '''7号引脚''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在linux系统中,40 pin中的PWM默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-pwm0-m0.dtbo</span>'''</p> |} <p>上面红色字体演示的是打开'''pwm0-m0'''的配置,其他的配置如下表所示,将对应的dtbo配置添加到'''<span style="color:#FF0000">FDTOVERLAYS</span>'''后面即可。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''PWM总线''' | style="text-align: left;"| '''dtbo对应配置''' |- | style="text-align: left;"| '''PWM0_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm0-m0.dtbo''' |- | style="text-align: left;"| '''PWM0_M2''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm0-m2.dtbo''' |- | style="text-align: left;"| '''PWM1_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm1-m0.dtbo''' |- | style="text-align: left;"| '''PWM1_M2''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm1-m2.dtbo''' |- | style="text-align: left;"| '''PWM11_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm11-m0.dtbo''' |- | style="text-align: left;"| '''PWM12_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm12-m0.dtbo''' |- | style="text-align: left;"| '''PWM13_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm13-m0.dtbo''' |- | style="text-align: left;"| '''PWM14_M0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm14-m0.dtbo''' |- | style="text-align: left;"| '''PWM14_M2''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-pwm14-m2.dtbo''' |}</ol> <ol style="list-style-type: lower-alpha;"> <li>然后'''<span style="color:#FF0000">重启OPi OS Arch系统</span>'''</li></ol> </li></ol> <!-- --> <ol start="4" style="list-style-type: decimal;"> <li><p>当打开一个pwm后,在'''/sys/class/pwm/'''中就会多出一个pwmchipX(X为具体的的数字),比如打开pwm14后,查看'''/sys/class/pwm/'''下的pwmchipX会由两个变成了三个</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''ls /sys/class/pwm/'''</p> <p>pwmchip0 pwmchip1 pwmchip2</p> |} </li> <li><p>上面哪个pwmchip对应pwm14呢,我们先查看下 '''ls /sys/class/pwm/ -l'''命令的输出,如下所示:</p> <div class="figure"> [[File:plus5-814.png]] </div></li> <li><p>然后由下表可知,pwm14寄存器的基地址为febf0020,再看 '''ls /sys/class/pwm/ -l'''命令的输出,可以看到pwmchip2中链接到了febf0020.pwm,所以pwm14对应pwmchip为pwmchip2</p> <p>[[File:plus5-815.png]]</p></li> <li><p>然后使用下面的命令可以让pwm14输出一个50Hz的方波(请先切换到root用户,再执行下面的命令)</p></li> {| class="wikitable" style="width:800px;" |- | [root@orangepi ~]# '''echo 0 > /sys/class/pwm/pwmchip2/export''' [root@orangepi ~]# '''echo 20000000 > /sys/class/pwm/pwmchip2/pwm0/period''' [root@orangepi ~]# '''echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle''' [root@orangepi ~]# '''echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable''' |} [[File:plus5-816.png]] </ol> <ol start="8" style="list-style-type: decimal;"> <li>上面演示的pwm14的测试方法,其他pwm测试方法都是类似的。</li></ol> <span id="can的测试方法-1"></span> === CAN的测试方法 === <span id="打开can的方法-1"></span> ==== 打开CAN的方法 ==== <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的CAN总线为CAN0和CAN1共两组CAN总线</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>在linux系统中,40 pin中的CAN默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>首先在'''/boot/extlinux/extlinux.conf'''中加上下面的配置</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo vim /boot/extlinux/extlinux.conf'''</p> <p>LABEL Orange Pi</p> <p>LINUX /Image</p> <p>FDT /dtbs/rockchip/rk3588-orangepi-5-plus.dtb</p> <p>'''<span style="color:#FF0000">FDTOVERLAYS /dtbs/rockchip/overlay/rk3588-can0-m0.dtbo</span>'''</p> |} <p>上面红色字体演示的是打开'''can0-m0'''的配置,其他的配置如下表所示,将对应的dtbo配置添加到'''<span style="color:#FF0000">FDTOVERLAYS</span>'''后面即可。</p></li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''CAN总线''' | style="text-align: left;"| '''dtbo的配置''' |- | style="text-align: left;"| '''can0-m0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-can0-m0.dtbo''' |- | style="text-align: left;"| '''can1-m0''' | style="text-align: left;"| '''/dtbs/rockchip/overlay/rk3588-can1-m0.dtbo''' |}</ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>然后'''<span style="color:#FF0000">重启OPi OS Arch系统</span>'''</li></ol> </li></ol> <!-- --> <ol start="3" style="list-style-type: decimal;"> <li><p>进入linux系统后,使用'''sudo ifconfig -a'''命令如果能看到CAN的设备节点,就说明CAN已正确打开了</p> {| class="wikitable" style="width:800px;" |- | <p>[orangepi@orangepi ~]$ '''sudo pacman -Syy net-tools'''</p> <p>[orangepi@orangepi ~]$ '''sudo ifconfig -a'''</p> <p>can0: flags=128<NOARP> mtu 16</p> ::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p> ::<p>RX packets 0 bytes 0 (0.0 B)</p> ::<p>RX errors 0 dropped 0 overruns 0 frame 0</p> ::<p>TX packets 0 bytes 0 (0.0 B)</p> ::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p> ::<p>device interrupt 94</p> <p>can1: flags=128<NOARP> mtu 16</p> ::<p>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)</p> ::<p>RX packets 0 bytes 0 (0.0 B)</p> ::<p>RX errors 0 dropped 0 overruns 0 frame 0</p> ::<p>TX packets 0 bytes 0 (0.0 B)</p> ::<p>TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</p> ::<p>device interrupt 95</p> |} </li> <li><p>CAN0和CAN1对应的引脚为</p></li> {| class="wikitable" style="width:800px;" |- | | style="text-align: left;"| '''CAN0''' | style="text-align: left;"| '''CAN1''' |- | '''TX引脚''' | style="text-align: left;"| '''对应40pin的5号引脚''' | style="text-align: left;"| '''对应40pin的18号引脚''' |- | '''RX引脚''' | style="text-align: left;"| '''对应40pin的3号引脚''' | style="text-align: left;"| '''对应40pin的16号引脚''' |} </ol> <ol start="5" style="list-style-type: decimal;"> <li>使用CANalyst-II分析仪测试CAN收发消息的方法请参考下[[Orange Pi 5 Plus#使用CANalyst-II分析仪测试收发消息|'''使用CANalyst-II分析仪测试收发消息''']]一小节的内容。</li></ol> <span id="linux-sdkorangepi-build使用说明"></span> = '''Linux SDK——orangepi-build使用说明''' = == 编译系统需求 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''我们可以在x64的电脑中交叉编译开发板的Linux镜像,也可以在开发板的Ubuntu22.04系统中来编译开发板的Linux镜像,请根据自己的喜好二选一。''' '''如果是在开发板的Ubuntu22.04系统中使用orangepi-build来编译Linux镜像,请做好散热(尤其是SSD启动时)。如果散热没做好,容易出现文件系统跑飞的错误。'''</big> |} <span id="使用开发板的ubuntu22.04系统编译"></span> === 使用开发板的Ubuntu22.04系统编译 === <ol style="list-style-type: decimal;"> <li><p>Linux SDK,即'''orangepi-build''',支持在开发板的'''<span style="color:#FF0000">Ubuntu 22.04</span>'''的上运行(其它系统没有测试过),所以下载orangepi-build前,请首先确保开发板已安装的Ubuntu版本是Ubuntu 22.04。查看开发板已安装的Ubuntu版本的命令如下所示,如果Release字段显示的不是'''<span style="color:#FF0000">22.04</span>''',说明当前使用的Ubuntu版本不符合要求,请更换系统后再进行下面的操作。</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''lsb_release -a'''</p> <p>No LSB modules are available.</p> <p>Distributor ID: Ubuntu</p> <p>Description: Ubuntu 22.04.1 LTS</p> <p>Release: '''<span style="color:#FF0000">22.04</span>'''</p> <p>Codename: jammy</p> |} </li> <li><p>'''<span style="color:#FF0000">由于内核和U-boot等源码都是存放在GitHub上的,所以编译镜像的时候请确保开发板能正常从GitHub下载代码,这点是非常重要的。</span>'''</p></li></ol> <span id="使用x64的ubuntu22.04电脑编译"></span> === 使用x64的Ubuntu22.04电脑编译 === <ol style="list-style-type: decimal;"> <li><p>Linux SDK,即'''orangepi-build''',支持在安装有'''<span style="color:#FF0000">Ubuntu 22.04</span>'''的电脑上运行,所以下载orangepi-build前,请首先确保自己电脑已安装的Ubuntu版本是Ubuntu 22.04。查看电脑已安装的Ubuntu版本的命令如下所示,如果Release字段显示的不是'''<span style="color:#FF0000">22.04</span>''',说明当前使用的Ubuntu版本不符合要求,请更换系统后再进行下面的操作。</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''lsb_release -a'''</p> <p>No LSB modules are available.</p> <p>Distributor ID: Ubuntu</p> <p>Description: Ubuntu 22.04 LTS</p> <p>Release: '''<span style="color:#FF0000">22.04</span>'''</p> <p>Codename: jammy</p> |} </li> <li><p>如果电脑安装的是Windows系统,没有安装有Ubuntu 22.04的电脑,可以考虑使用'''VirtualBox'''或者'''VMware'''来在Windows系统中安装一个Ubuntu 22.04虚拟机。但是请注意,不要在WSL虚拟机上编译orangepi-build,因为orangepi-build没有在WSL虚拟机中测试过,所以无法确保能正常在WSL中使用orangepi-build。</p></li> <li><p>Ubuntu 22.04 '''<span style="color:#FF0000">amd64</span>'''版本的安装镜像下载地址为:</p> {| class="wikitable" style="width:800px;" |- | <p>'''https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04-desktop-amd64.iso'''</p> <p>或者</p> <p>'''https://repo.huaweicloud.com/ubuntu-releases/22.04/ubuntu-22.04.1-desktop-amd64.iso'''</p> |} </li> <li><p>在电脑中或者虚拟机中安装完Ubuntu 22.04后,请先设置Ubuntu 22.04的软件源为清华源,不然后面安装软件的时候很容易由于网络原因而出错</p> <ol style="list-style-type: lower-alpha;"> <li>替换清华源的方法参考这个网页的说明即可</li> {| class="wikitable" style="width:800px;" |- | '''https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/''' |}</ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>注意Ubuntu版本需要切换到22.04</p> <p>[[File:plus-5-818.png]]</p></li> <li><p>需要替换的'''/etc/apt/sources.list'''文件的内容为</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak'''</p> <p>test@test:~$ '''sudo vim /etc/apt/sources.list'''</p> <p># 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释</p> <p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse</p> <p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse</p> <p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse</p> <p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse</p> <p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse</p> <p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse</p> <p>deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p> <p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse</p> <p># 预发布软件源,不建议启用</p> <p># deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p> <p># deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse</p> |} </li> <li><p>替换完后需要更新下包信息,并确保没有报错</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt update'''</p> |} </li> <li><p>'''<span style="color:#FF0000">另外,由于内核和U-boot等源码都是存放在GitHub上的,所以编译镜像的时候请确保电脑能正常从GitHub下载代码,这点是非常重要的。</span>'''</p></li></ol> </li></ol> <span id="获取linux-sdk的源码"></span> == 获取linux sdk的源码 == === 从github下载orangepi-build === # linux sdk其实指的就是orangepi-build这套代码,orangepi-build是基于armbian build编译系统修改而来的,使用orangepi-build可以编译出多个版本的linux镜像。首先下载orangepi-build的代码,命令如下所示: ::{| class="wikitable" style="width:800px;" |- | 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 <span style="color:#FF0000">-b next</span>''' |} ::{| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意,Orange Pi 5 Plus开发板是需要下载orangepi-build的<span style="color:#FF0000">next</span>分支源码的,上面的git clone命令需要指定orangepi-build源码的分支为next。''' [[File:plus-5-819.png]] '''通过git clone命令下载orangepi-build的代码是不需要输入github账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入git clone命令后Ubuntu PC提示需要输入github账号的用户名和密码,一般都是git clone后面的orangepi-build仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供github账号的用户名和密码。'''</big> |} <ol start="2" style="list-style-type: decimal;"> <li>开发板当前使用的u-boot和linux内核版本如下所示</li> {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''分支''' | style="text-align: left;"| '''u-boot版本''' | style="text-align: left;"| '''linux内核版本''' |- | style="text-align: left;"| '''legacy''' | style="text-align: left;"| '''u-boot 2017.09''' | style="text-align: left;"| '''linux5.10''' |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''这里所说的分支和orangepi-build源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的。''' '''目前RK提供的linux5.10 bsp内核我们定义为legacy分支。如果以后支持主线内核了,就会添加一个current分支。'''</big> |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>orangepi-build下载完后会包含下面的文件和文件夹</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''build.sh''': 编译启动脚本</p></li> <li><p>'''external''': 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等</p></li> <li><p>'''LICENSE''': GPL 2许可证文件</p></li> <li><p>'''README.md''': orangepi-build说明文件</p></li> <li><p>'''scripts''': 编译linux镜像的通用脚本</p></li></ol> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''ls'''</p> <p>'''build.sh external LICENSE README.md scripts'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''如果是从github下载的orangepi-build的代码,下载完后你可能会发现orangepi-build中并没有包含u-boot和linux内核的源码,也没有编译u-boot和linux内核需要用到交叉编译工具链,这是正常的,因为这些东西都存放在其它单独的github仓库或者某些服务器上了(下文会详述其地址)。orangepi-build在脚本和配置文件中会指定u-boot、linux内核和交叉编译工具链的地址,运行orangepi-build时,当其发现本地没有这些东西,会自动去相应的地方下载的。'''</p></big> |} </li></ol> === 下载交叉编译工具链 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''只有在x64的电脑中使用orangepi-build编译镜像才会下载交叉编译工具链。在开发板的Ubuntu22.04中编译开发板的linux镜像是不会下载交叉编译工具链的,此时orangepi-build/toolchains会是一个空文件夹。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>orangepi-build第一次运行的时候会自动下载交叉编译工具链放在'''toolchains'''文件夹中,每次运行orangepi-build的build.sh脚本后,都会检查'''toolchains'''中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载。</p> <div class="figure"> [[File:plus-5-820.png]] </div></li> <li><p>交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站</p> {| class="wikitable" style="width:800px;" |- | <p>'''https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/'''</p> |} </li> <li><p>'''toolchains'''下载完后会包含多个版本的交叉编译工具链,开发板只会使用其中的两个</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''ls toolchains/'''</p> <p>gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu</p> <p>gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf</p> <p>gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu</p> <p>gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf</p> <p>gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi</p> <p>gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf</p> <p>gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu</p> <p>gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi</p> <p>gcc-linaro-aarch64-none-elf-4.8-2013.11_linux</p> <p>gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux</p> <p>gcc-linaro-arm-none-eabi-4.8-2014.04_linux</p> |} </li> <li><p>编译linux内核源码使用的交叉编译工具链为</p> <ol style="list-style-type: lower-alpha;"> <li><p>linux5.10</p> {| class="wikitable" style="width:800px;" |- | <p>'''gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu'''</p> |} </li></ol> </li> <li><p>编译u-boot源码使用的交叉编译工具链为</p> <ol style="list-style-type: lower-alpha;"> <li><p>v2017.09</p> {| class="wikitable" style="width:800px;" |- | <p>'''gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu'''</p> |} </li></ol> </li></ol> === orangepi-build完整目录结构说明 === <ol style="list-style-type: decimal;"> <li><p>orangepi-build仓库下载完后并不包含linux内核、u-boot的源码以及交叉编译工具链,linux内核和u-boot的源码存放在独立的git仓库中</p> <ol style="list-style-type: lower-alpha;"> <li><p>linux内核源码存放的git仓库如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>'''https://github.com/orangepi-xunlong/linux-orangepi/tree/orange-pi-5.10-rk3588'''</p> |} </li> <li><p>u-boot源码存放的git仓库如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>'''https://github.com/orangepi-xunlong/u-boot-orangepi/tree/v2017.09-rk3588'''</p> |} </li></ol> </li> <li><p>orangepi-build第一次运行的时候会去下载交叉编译工具链、u-boot和linux内核源码,成功编译完一次linux镜像后在orangepi-build中可以看到的文件和文件夹有</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''build.sh''': 编译启动脚本</p></li> <li><p>'''external''': 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的rootfs压缩包也存放在external中</p></li> <li><p>'''kernel''': 存放linux内核的源码,里面名为'''orange-pi-5.10-rk3588'''的文件夹存放的就是RK3588/RK3588S系列开发板legacy分支的内核源码,内核源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载内核源码</p></li> <li><p>'''LICENSE''': GPL 2许可证文件</p></li> <li><p>'''README.md''': orangepi-build说明文件</p></li> <li><p>'''output''': 存放编译生成的u-boot、linux等deb包、编译日志以及编译生成的镜像等文件</p></li> <li><p>'''scripts''': 编译linux镜像的通用脚本</p></li> <li><p>'''toolchains''': 存放交叉编译工具链</p></li> <li><p>'''u-boot''': 存放u-boot的源码,里面名为'''v2017.09-rk3588'''的文件夹存放的就是RK3588/RK3588S系列开发板legacy分支的u-boot源码,u-boot源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载u-boot源码</p></li> <li><p>'''userpatches''': 存放编译脚本需要用到的配置文件</p></li></ol> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''ls'''</p> <p>'''build.sh external kernel LICENSE output README.md scripts toolchains u-boot userpatches'''</p> |} </li></ol> == 编译u-boot == <ol style="list-style-type: decimal;"> <li><p>运行build.sh脚本,记得加sudo权限</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p> |} </li> <li><p>选择'''U-boot package''',然后回车</p> <div class="figure"> [[File:plus5-821.png]] </div></li> <li><p>接着选择开发板的型号</p> <div class="figure"> [[File:plus5-822.png]] </div></li> <li><p>然后就会开始编译u-boot,编译时提示的部分信息说明如下</p> <ol style="list-style-type: lower-alpha;"> <li><p>u-boot源码的版本</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Compiling u-boot [ '''v2017.09''' ]</p> |} </li> <li><p>交叉编译工具链的版本</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Compiler version [ '''aarch64-linux-gnu-gcc 7.4.1''' ]</p> |} </li> <li><p>编译生成的u-boot deb包的路径</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/u-boot''' ]</p> |} </li> <li><p>编译生成的u-boot deb包的包名</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] File name [ '''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb''' ]</p> |} </li> <li><p>编译使用的时间</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Runtime [ '''1 min''' ]</p> |} </li> <li><p>重复编译u-boot的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译u-boot</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no''' ]</p> |} </li></ol> </li> <li><p>查看编译生成的u-boot deb包</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''ls output/debs/u-boot/'''</p> <p>linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb</p> |} </li> <li><p>生成的u-boot的deb包包含的文件如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>使用下面的命令可以解压deb包</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p> <p>test@test:~/orangepi_build/output/debs/u-boot$ $ '''sudo dpkg -x''' \</p> <p>'''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb . (注意命令最后有个”.”)'''</p> <p>test@test:~/orangepi_build/output/debs/u-boot$ '''ls'''</p> <p>linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb '''usr'''</p> |} </li> <li><p>解压后的文件如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build/output/debs/u-boot$ '''tree usr'''</p> <p>usr</p> <p>└── lib</p> :<p>├── linux-u-boot-legacy-orangepi5plus_1.0.0_arm64</p> :<p>│ ├── idbloader.img</p> :<p>│ ├── rkspi_loader.img</p> :<p>│ └── u-boot.itb</p> :<p>└── u-boot</p> ::<p>├── LICENSE</p> ::<p>├── orangepi_5_plus_defconfig</p> ::<p>└── platform_install.sh</p> <p>3 directories, 6 files</p> |} </li></ol> </li> <li><p>orangepi-bulid编译系统编译u-boot源码时首先会将u-boot的源码和github服务器的u-boot源码进行同步,所以如果想修改u-boot的源码,首先需要关闭源码的下载更新功能('''需要完整编译过一次u-boot后才能关闭这个功能,否则会提示找不到u-boot的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为u-boot的源码都已缓存好了'''),否则所作的修改都会被还原,方法如下:</p> <p>设置userpatches/config-default.conf中的IGNORE_UPDATES变量为”yes”</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p> <p>IGNORE_UPDATES="'''<span style="color:#FF0000">yes</span>'''"</p> |} </li> <li><p>调试u-boot代码时,可以使用下面的方法来更新linux镜像中的u-boot进行测试</p> <ol style="list-style-type: lower-alpha;"> <li><p>将编译好的u-boot的deb包上传到开发板的linux系统中</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''cd output/debs/u-boot'''</p> <p>test@test:~/orangepi_build/output/debs/u-boot$ '''scp \'''</p> <p>'''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb [mailto:root@192.168.1.xxx:/root root@192.168.1.xxx:/root]'''</p> |} </li> <li><p>然后登录到开发板,卸载已安装的u-boot的deb包</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''apt purge -y linux-u-boot-orangepi5plus-legacy'''</p> |} </li> <li><p>再安装刚才上传的新的u-boot的deb包</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''dpkg -i''' '''linux-u-boot-legacy-orangepi5plus_1.0.0_arm64.deb'''</p> |} </li> <li><p>然后运行 nand-sata-install脚本</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''nand-sata-install'''</p> |} </li> <li><p>然后选择'''5 Install/Update the bootloader on SD/eMM'''来更新TF卡中的u-boot或者'''7 Install/Update the bootloader on SPI Flash'''来更新SPI Flash中的u-boot</p> <p>[[File:plus5-823.png]]</p></li> <li><p>按下回车键后首先会弹出一个Warning</p> <p>[[File:plus5-824.png]]</p></li> <li><p>再按下回车键就会开始更新u-boot,更新完后会显示下面的信息</p> <p>[[File:plus5-825.png]]</p></li> <li><p>然后就可以重启开发板来测试u-boot的修改是否生效了</p></li></ol> </li> <li><p>其它有用的信息</p> <ol style="list-style-type: lower-alpha;"> <li><p>u-boot 2017.09源码中,开发板使用的defconfig配置文件为</p></li> {| class="wikitable" style="width:800px;" |- | '''orangepi-build/u-boot/v2017.09-rk3588/configs/orangepi_5_plus_defconfig''' |} <li><p>u-boot 2017.09源码中,开发板使用dts文件为</p></li> {| class="wikitable" style="width:800px;" |- | '''orangepi-build/u-boot/v2017.09-rk3588/arch/arm/dts/rk3588-orangepi-5-plus.dts''' |} </ol> </li></ol> <span id="编译linux内核"></span> == 编译linux内核 == <ol style="list-style-type: decimal;"> <li><p>运行build.sh脚本,记得加sudo权限</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p> |} </li> <li><p>选择'''Kernel package''',然后回车</p> <div class="figure"> [[File:plus5-826.png]] </div></li> <li><p>接着选择开发板的型号</p> <div class="figure"> [[File:plus5-827.png]] </div></li> <li><p>然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个</p> <p>[[File:plus5-828.png]]</p></li> <li><p>如果第4) 步选择了需要显示内核配置菜单(第二个选项),则会弹出通过'''make menuconfig'''打开的内核配置的界面,此时可以直接修改内核的配置,修改完后再保存退出即可,退出后会开始编译内核源码</p> <p>[[File:plus5-829.png]]</p></li></ol> <!-- --> <ol style="list-style-type: lower-alpha;"> <li><p>如果不需要修改内核的配置选项,在运行build.sh脚本时,传入'''KERNEL_CONFIGURE=no'''就可临时屏蔽弹出内核的配置界面了</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''sudo ./build.sh KERNEL_CONFIGURE=no'''</p> |} </li> <li><p>也可以设置'''orangepi-build/userpatches/config-default.conf'''配置文件中的'''KERNEL_CONFIGURE=no''',这样可以永久禁用这个功能</p></li> <li><p>编译内核的时候如果提示下面的错误,这是由于Ubuntu PC的终端界面太小,导致'''make menuconfig'''的界面无法显示,请把Ubuntu PC的终端调到最大,然后重新运行build.sh脚本</p> <p>[[File:plus5-830.png]]</p></li></ol> <!-- --> <ol start="6" style="list-style-type: decimal;"> <li><p>编译内核源码时提示的部分信息说明如下</p> <ol style="list-style-type: lower-alpha;"> <li><p>linux内核源码的版本</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Compiling current kernel [ '''5.10.110''' ]</p> |} </li> <li><p>使用的交叉编译工具链的版本</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Compiler version [ '''aarch64-none-linux-gnu-gcc 11.2.1''' ]</p> |} </li> <li><p>内核默认使用的配置文件以及它存放的路径</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Using kernel config file [ '''config/kernel/linux-rockchip-rk3588-legacy.config''' ]</p> |} </li> <li><p>编译生成的内核相关的deb包的路径</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Target directory [ '''orangepi-build/output/debs/''' ]</p> |} </li> <li><p>编译生成的内核镜像deb包的包名</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] File name [ '''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb''' ]</p> |} </li> <li><p>编译使用的时间</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Runtime [ '''5 min''' ]</p> |} </li> <li><p>最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no''' ]</p> |} </li></ol> </li> <li><p>查看编译生成的内核相关的deb包</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb'''包含内核使用的dtb文件</p></li> <li><p>'''linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb'''包含内核头文件</p></li> <li><p>'''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb'''包含内核镜像和内核模块</p></li></ol> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''ls output/debs/linux-*'''</p> <p>output/debs/linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb</p> <p>output/debs/linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb</p> <p>output/debs/linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb</p> |} </li> <li><p>生成的linux-image的deb包包含的文件如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>使用下面的命令可以解压deb包</p></li> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''cd output/debs'''</p> test@test:~/orangepi_build/output/debs$ '''mkdir test''' test@test:~/orangepi_build/output/debs$ '''cp \''' '''linux-image-legacy-rockchip-rk3588_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-rk3588_1.0.0_arm64.deb .''' test@test:~/orangepi_build/output/debs/test$ '''ls''' '''boot etc lib''' linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb '''usr''' |}</ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>解压后的文件如下所示</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build/output/debs/test$ '''tree -L 2'''</p> <p>.</p> <p>├── boot</p> <p>│ ├── config-5.10.110-rockchip-rk3588</p> <p>│ ├── System.map-5.10.110-rockchip-rk3588</p> <p>│ └── vmlinuz-5.10.110-rockchip-rk3588</p> <p>├── etc</p> <p>│ └── kernel</p> <p>├── lib</p> <p>│ └── modules</p> <p>├── linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb</p> <p>└── usr</p> :<p>├── lib</p> :<p>└── share</p> |} </li></ol> </li></ol> <!-- --> <ol start="9" style="list-style-type: decimal;"> <li><p>orangepi-bulid编译系统编译linux内核源码时首先会将linux内核源码和github服务器的linux内核源码进行同步,所以如果想修改linux内核的源码,首先需要关闭源码的更新功能('''需要完整编译过一次linux内核源码后才能关闭这个功能,否则会提示找不到linux内核的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为linux的源码都已缓存好了'''),否则所作的修改都会被还原,方法如下:</p> <p>设置'''userpatches/config-default.conf'''中的IGNORE_UPDATES变量为”yes”</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''vim userpatches/config-default.conf'''</p> <p>IGNORE_UPDATES="'''<span style="color:#FF0000">yes</span>'''"</p> |} </li> <li><p>如果对内核做了修改,可以使用下面的方法来更新开发板linux系统的内核和内核模块</p> <ol style="list-style-type: lower-alpha;"> <li><p>将编译好的linux内核的deb包上传到开发板的linux系统中</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''cd output/debs'''</p> <p>test@test:~/orangepi-build/output/debs$ '''scp \'''</p> <p>'''linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb root@192.168.1.xxx:/root'''</p> |} </li> <li><p>然后登录到开发板,卸载已安装的linux内核的deb包</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''apt purge -y linux-image-legacy-rockchip-rk3588'''</p> |} </li> <li><p>再安装刚才上传的新的linux内核的deb包</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''dpkg -i linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb'''</p> |} </li> <li><p>然后重启开发板,再查看内核相关的修改是否已生效</p> {| class="wikitable" style="width:800px;" |- | <p>root@orangepi:~# '''reboot'''</p> |} </li></ol> </li> <li><p>其它有用的信息</p> <ol style="list-style-type: lower-alpha;"> <li><p>内核配置文件存放位置如下所示,请不要到内核源码中去找开发板所使用的内核配置文件</p></li> {| class="wikitable" style="width:800px;" |- | '''orangepi-build/external/config/kernel/linux-rockchip-rk3588-legacy.config''' |} <li><p>开发板使用的dts文件所在的位置为</p></li> {| class="wikitable" style="width:800px;" |- | '''orangepi-build/kernel/orange-pi-5.10-rk3588/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts''' |} </ol> </li></ol> <span id="orangepi-buildkernelorange-pi-5.10-rk3588archarm64bootdtsrockchiprk3588-orangepi-5-plus.dts编译rootfs"></span> == 编译rootfs == <ol style="list-style-type: decimal;"> <li><p>运行build.sh脚本,记得加sudo权限</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p> |} </li> <li><p>选择'''Rootfs and all deb packages''',然后回车</p></li> <div class="figure"> [[File:plus5-831.png]] </div></ol> <ol start="3" style="list-style-type: decimal;"> <li><p>接着选择开发板的型号</p> <div class="figure"> [[File:plus5-832.png]] </div></li> <li><p>然后选择rootfs的类型(目前主要维护'''bullseye/focal/jammy''')</p> <div class="figure"> [[File:plus5-833.png]] </div></li> <li><p>然后选择镜像的类型</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''Image with console interface > (server)'''表示服务器版的镜像,体积比较小</p></li> <li><p>'''Image with desktop environment'''表示带桌面的镜像,体积比较大</p> <div class="figure"> [[File:plus5-834.png]] </div></li></ol> </li> <li><p>如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多('''没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了''')</p> <div class="figure"> [[File:plus5-835.png]] </div></li> <li><p>如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前Ubuntu Jammy主要维护XFCE和Gnome两种桌面,Ubuntu Focal只维护XFCE桌面,Debian Bullseye主要维护XFCE和KDE桌面</p> <div class="figure"> [[File:plus5-836.png]] </div> <p>[[File:plus5-837.png]]</p> <p>然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。</p> <p>[[File:plus5-838.png]]</p></li> <li><p>然后就会开始编译rootfs,编译时提示的部分信息说明如下所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>rootfs的类型</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] local not found [ Creating new rootfs cache for '''jammy''']</p> |} </li> <li><p>编译生成的rootfs压缩包的存放路径</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Target directory [ '''external/cache/rootfs''' ]</p> |} </li> <li><p>编译生成的rootfs压缩包的名字</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] File name [ '''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4''' ]</p> |} </li> <li><p>编译使用的时间</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Runtime [ '''13 min''' ]</p> |} </li></ol> </li> <li><p>查看编译生成的rootfs压缩包</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''是rootfs的压缩包,名字各字段的含义为</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''jammy'''表示rootfs的linux发行版的类型</p></li> <li><p>'''xfce'''表示rootfs为桌面版的类型,如果为'''cli'''则表示服务器版类型</p></li> <li><p>'''arm64'''表示rootfs的架构类型</p></li> <li><p>'''f930ff6ebbac1a72108a2e100762b18f'''是由rootfs安装的所有软件包的包名生成的MD5哈希值,只要没有修改rootfs安装的软件包的列表,那么这个值就不会变,编译脚本会通过这个MD5哈希值来判断是否需要重新编译rootfs</p></li></ol> </li> <li><p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list'''列出了rootfs安装的所有软件包的包名</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''ls external/cache/rootfs/'''</p> <p>'''jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4'''</p> <p>jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.current</p> <p>jammy-xfce-arm64.f930ff6ebbac1a72108a2e100762b18f.tar.lz4.list</p> |} </li></ol> </li> <li><p>如果需要的rootfs在'''external/cache/rootfs'''下已经存在,那么再次编译rootfs就会直接跳过编译过程,不会重新开始编译,编译镜像的时候也会去'''external/cache/rootfs'''下查找是否已经有缓存可用的rootfs,如果有就直接使用,这样可以节省大量的下载编译时间。</p></li></ol> == 编译linux镜像 == <ol style="list-style-type: decimal;"> <li><p>运行build.sh脚本,记得加sudo权限</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/orangepi-build$ '''sudo ./build.sh'''</p> |} </li> <li><p>选择'''Full OS image for flashing''',然后回车</p></li> <div class="figure"> [[File:plus5-839.png]] </div></ol> <ol start="3" style="list-style-type: decimal;"> <li><p>然后选择开发板的型号</p> <div class="figure"> [[File:plus5-840.png]] </div></li> <li><p>然后选择rootfs的类型(目前主要维护'''bullseye/focal/jammy''')</p> <div class="figure"> [[File:plus5-841.png]] </div></li> <li><p>然后选择镜像的类型</p> <ol style="list-style-type: lower-alpha;"> <li><p>'''Image with console interface (server)'''表示服务器版的镜像,体积比较小</p></li> <li><p>'''Image with desktop environment'''表示带桌面的镜像,体积比较大</p> <div class="figure"> [[File:plus5-842.png]] </div></li></ol> </li> <li><p>如果是编译服务器版的镜像,还可以选择编译Standard版本或者Minimal版本,Minimal版本预装的软件会比Standard版本少很多('''没特殊需求请不要选择Minimal版本,因为很多东西默认没有预装,部分功能可能用不了''')</p> <div class="figure"> [[File:plus5-843.png]] </div></li> <li><p>如果是编译桌面版本的镜像还需要选择桌面环境的类型,目前Ubuntu Jammy主要维护XFCE和Gnome两种桌面,Ubuntu Focal只维护XFCE桌面,Debian Bullseye主要维护XFCE和KDE桌面</p> <div class="figure"> [[File:plus5-844.png]] </div> <p>[[File:plus5-845.png]]</p> <p>然后可以选择需要安装的额外的软件包。这里请按下回车键直接跳过。</p> <p>[[File:plus5-846.png]]</p></li> <li><p>然后就会开始编译linux镜像,编译的大致流程如下</p> <ol style="list-style-type: lower-alpha;"> <li><p>初始化Ubuntu PC的编译环境,安装编译过程需要的软件包</p></li> <li><p>下载u-boot和linux内核的源码(如果已经缓存,则只更新代码)</p></li> <li><p>编译u-boot源码,生成u-boot的deb包</p></li> <li><p>编译linux源码,生成linux相关的deb包</p></li> <li><p>制作linux firmware的deb包</p></li> <li><p>制作orangepi-config工具的deb包</p></li> <li><p>制作板级支持的deb包</p></li> <li><p>如果是编译desktop版镜像,还会制作desktop相关的deb包</p></li> <li><p>检查rootfs是否已经缓存,如果没有缓存,则重新制作rootfs,如果已经缓存,则直接解压使用</p></li> <li><p>安装前面生成的deb包到rootfs中</p></li> <li><p>对不同的开发板和不同类型镜像做一些特定的设置,如预装额外的软件包,修改系统配置等</p></li> <li><p>然后制作镜像文件,并格式化分区,默认类型为ext4</p></li> <li><p>再将配置好的rootfs拷贝到镜像的分区中</p></li> <li><p>然后更新initramfs</p></li> <li><p>最后将u-boot的bin文件通过dd命令写入到镜像中</p></li></ol> </li> <li><p>编译完镜像后会提示下面的信息</p> <ol style="list-style-type: lower-alpha;"> <li><p>编译生成的镜像的存放路径</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Done building [ '''output/images/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop/orangepi5plus_1.0.0_debian_bullseye_linux5.10.110_xfce_desktop.img''' ]</p> |} </li> <li><p>编译使用的时间</p></li> {| class="wikitable" style="width:800px;" |- | '''[ o.k. ] Runtime [ 19 min ]''' |} </ol> <ol style="list-style-type: lower-alpha;"> <li><p>重复编译镜像的命令,使用下面的命令无需通过图形界面选择,可以直接开始编译镜像</p> {| class="wikitable" style="width:800px;" |- | <p>[ o.k. ] Repeat Build Options [ '''sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=image RELEASE=bullseye BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=yes''' ]</p> |} </li></ol> </li></ol> <span id="linux开发手册"></span> = '''Linux开发手册''' = == 在开发板的linux系统中单独编译内核源码的方法 == <ol style="list-style-type: decimal;"> <li><p>首先下载开发板的Linux内核源码</p> {| class="wikitable" style="width:800px;" |- | <p>'''orangepi@orangepi:~$ git clone --depth=1 -b orange-pi-5.10-rk3588 https://github.com/orangepi-xunlong/linux-orangepi'''</p> |} </li> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''如果从github下载代码有问题,可以去开发板的[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html 官方工具]中下载内核源码压缩包,然后上传到开发板的linux系统中,再解压即可。'''</big> [[File:plus5-847.png]] [[File:plus5-848.png]] <big>'''解压内核源码压缩包的命令为:'''</big> orangepi@orangepi:~$ '''tar zxf orange-pi-5.10-rk3588.tar.gz''' orangepi@orangepi:~$ '''mv orange-pi-5.10-rk3588 linux-orangepi''' <big>'''解压后请执行下面的命令和github同步下源码,确保源码为最新的状态:'''</big> orangepi@orangepi:~$ '''cd linux-orangepi''' orangepi@orangepi:~/linux-orangepi$ '''git pull''' |} </ol> <ol start="2" style="list-style-type: decimal;"> <li><p>然后配置下默认的内核配置</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''cd linux-orangepi'''</p> <p>orangepi@orangepi:~/linux-orangepi$ '''make rockchip_linux_defconfig'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''rockchip_linux_defconfig在内核源码中的路径为arch/arm64/configs/'''</big> |} </li></ol> <ol start="3" style="list-style-type: decimal;"> <li><p>然后编译内核源码</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/linux-orangepi$ '''make -j10'''</p> |} </li> <li><p>然后安装下内核模块</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/linux-orangepi$ '''sudo make modules_install'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''内核模块的安装路径为:/lib/modules''' '''执行完sudo make modules_install命令后可以看到/lib/modules/下会多了一个内核模块的文件夹:''' orangepi@orangepi5plus:~$ '''ls /lib/modules''' '''<span style="color:#FF0000">5.10.110+</span>''' 5.10.110-rockchip-rk3588</big> |} </li></ol> <ol start="5" style="list-style-type: decimal;"> <li><p>然后安装内核镜像和uInitrd</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/linux-orangepi$ '''sudo make install'''</p> |} {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''内核镜像和uInitrd的安装路径为:/boot/''' '''执行完 sudo make install命令后可以看到/boot/下会多了一个内核文件:''' orangepi@orangepi5plus:~/orange-pi-5.10-rk3588$ '''ls /boot/vmlinuz*''' '''<span style="color:#FF0000">/boot/vmlinuz-5.10.110+</span>''' /boot/vmlinuz-5.10.110-rockchip-rk3588<br /> <br /> '''系统启动时实际加载的是/boot/Image这个文件,Image是vmlinuz文件的拷贝。'''</big> |} </li></ol> <ol start="6" style="list-style-type: decimal;"> <li><p>然后安装dtb文件到'''/boot/dtb'''中</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~/linux-orangepi$ '''sudo make dtbs_install INSTALL_DTBS_PATH=/boot/dtb/'''</p> |} </li> <li><p>然后重启Linux系统就会加载新编译的内核了</p> {| class="wikitable" style="width:800px;" |- | <p>orangepi@orangepi:~$ '''uname -r'''</p> <p>'''5.10.110+'''</p> |} </li></ol> <span id="openwrt系统使用说明"></span> = '''OpenWRT系统使用说明''' = <span id="openwrt版本"></span> == OpenWRT版本 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''OpenWRT版本''' | style="text-align: left;"| '''内核版本''' |- | style="text-align: left;"| '''v22.03.4''' | style="text-align: left;"| '''Linux5.10.110''' |} <span id="openwrt适配情况"></span> == OpenWRT适配情况 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''功能''' | style="text-align: left;"| '''OpenWRT''' |- | style="text-align: left;"| '''USB2.0x2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB3.0x2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB Type-C 3.0''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''3pin调试串口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''TF卡启动''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPIFlash+NVMe SSD启动''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPIFlash启动完整的系统''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口X2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''网口状态灯''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''LED灯''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''FAN风扇接口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''eMMC扩展接口''' | style="text-align: left;"| '''OK''' |} == 第一次启动扩容rootfs == <ol style="list-style-type: decimal;"> <li><p>第一次启动OpenWRT系统时会执行'''resize-rootfs.sh'''脚本进行 rootfs 的扩容,并且扩容完成后会自动重启</p></li> <li><p>登录系统后可以通过 '''df -h''' 命令来查看 rootfs 的大小,如果和存储设备(TF卡、eMMC或者NVME SSD)实际容量一致,说明自动扩容运行正确</p> {| class="wikitable" style="width:800px;" |- | <p>root@OpenWrt:~# df -h</p> <span style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Available </span><span style="margin-right: 50px;">Use% Mounted on</span><br> <span style="margin-right: 80px;color:#FF0000">'''/dev/root'''</span><span style="margin-right: 50px;color:#FF0000">'''14.8G'''</span><span style="margin-right: 30px;color:#FF0000">'''14.7G'''</span><span style="margin-right: 70px;color:#FF0000">'''91.6M'''</span><span style="margin-right: 90px;color:#FF0000">'''99% /'''</span><br> <span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">495.5M</span><span style="margin-right: 30px;">6.1M</span><span style="margin-right: 70px;">489.4M</span><span style="margin-right: 90px;">1% /tmp</span><br> <span style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">512.0K</span><span style="margin-right: 50px;">0</span><span style="margin-right: 70px;">512.0K</span><span style="margin-right: 90px;">0% /dev</span><br> <span style="margin-right: 80px;">/dev/root</span><span style="margin-right: 50px;">14.8G</span><span style="margin-right: 30px;">14.7G </span><span style="margin-right: 70px;">91.6M</span><span style="margin-right: 90px;">99% /opt/docker</span><br> |} </li></ol> == 登录系统的方法 == === 通过串口登录 === <ol style="list-style-type: decimal;"> <li><p>首先调试串口的使用可以参考[[Orange Pi 5 Plus#调试串口的使用方法|'''调试串口的使用方法''']]章节</p></li> <li><p>OpenWrt系统默认会以 '''root''' 用户自动登录,显示界面如下</p> <div class="figure"> [[File:plus5-849.png]] </div></li></ol> <span id="通过ssh登录系统"></span> === 通过SSH登录系统 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请注意,在Orange Pi 5 Plus的OpenWrt系统中,默认将靠近typeC电源接口的网口配置成WAN口功能,靠近HDMI接口的网口配置为LAN口功能'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先用网线连接板子的LAN口到电脑的网口,以便电脑的网口能通过DHCP获取到IP地址</p></li> <li><p>默认板子的LAN口IP是设置为'''192.168.2.1'''的,所以此时电脑可以获取到以'''192.168.2'''开头的IP地址</p></li> <li><p>如果电脑安装的Ubuntu系统,可以执行下列命令通过SSH登录系统,默认是不需要密码直接就可以登录的</p> {| class="wikitable" style="width:800px;" |- | <p>test@ubuntu:~$ '''ssh root@192.168.2.1'''</p> |} </li> <li><p>成功登录系统后的显示如下图所示</p> <p>[[File:plus5-850.png]]</p></li> <li><p>如果电脑装的Windows系统,可以参考[[Orange Pi 5 Plus#Windows下SSH远程登录开发板|'''Windows下SSH远程登录开发板''']]一小节介绍的方法进行登录。</p></li></ol> <span id="登录luci管理界面"></span> === 登录LuCI管理界面 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请注意,OpenWRT系统默认将靠近Type-C电源接口的网口配置成WAN口功能,靠近HDMI接口的网口配置为LAN口功能。'''</big> [[File:plus5-851.png]] |} # 首先用网线连接板子的LAN口到电脑的网口,以便电脑的网口能通过DHCP获取到IP地址 # 默认板子的LAN口IP是设置为'''192.168.2.1'''的,所以此时电脑可以获取到以'''192.168.2'''开头的IP地址 # 在电脑上的浏览器中输入IP地址'''192.168.2.1'''就可以登录LuCI界面了 <div class="figure"> ::[[File:plus5-852.png]] </div> <ol start="4" style="list-style-type: decimal;"> <li><p>'''<span style="color:#FF0000">OpenWrt系统默认是没有设置密码的</span>''',所以直接点击'''登录'''按钮即可,登录成功后界面显示如下图所示</p> <p>[[File:plus5-853.png]]</p></li></ol> <span id="通过luci管理界面登录终端"></span> === 通过LuCI管理界面登录终端 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请注意,OpenWRT系统默认将靠近Type-C电源接口的网口配置成WAN口功能,靠近HDMI接口的网口配置为LAN口功能。'''</big> [[File:plus5-854.png]] |} # 首先用网线连接板子的LAN口到电脑的网口,以便电脑的网口能通过DHCP获取到IP地址 # 默认板子的LAN口IP是设置为'''192.168.2.1'''的,所以此时电脑可以获取到以'''192.168.2'''开头的IP地址 # 在电脑上的浏览器中输入IP地址'''192.168.2.1'''就可以登录LuCI界面了 <div class="figure"> ::[[File:plus5-855.png]] </div> <ol start="4" style="list-style-type: decimal;"> <li>在导航栏的'''“服务”'''一栏中选择'''“终端”'''并点击进入</li> [[File:plus5-856.png]] </ol> <ol start="5" style="list-style-type: decimal;"> <li><p>此时终端界面如下图所示</p> <p>[[File:plus5-857.png]]</p></li> <li><p>输入用户名root即可登录</p> <p>[[File:plus5-858.png]]</p></li></ol> <span id="使用ip地址端口号方式登录终端"></span> === 使用IP地址+端口号方式登录终端 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请注意,OpenWRT系统默认将靠近Type-C电源接口的网口配置成WAN口功能,靠近HDMI接口的网口配置为LAN口功能。'''</big> [[File:plus5-859.png]] |} # 首先用网线连接板子的LAN口到电脑的网口,以便电脑的网口能通过DHCP获取到IP地址 # 默认板子的LAN口IP是设置为'''192.168.2.1'''的,所以此时电脑可以获取到以'''192.168.2'''开头的IP地址 # 然后在浏览器输入'''192.168.2.1:7681'''即可登录OpenWRT的终端 <div class="figure"> ::[[File:plus5-860.png]] </div> <span id="通过命令行修改lan口ip地址的方法"></span> == 通过命令行修改LAN口IP地址的方法 == # 在OpenWrt系统中,提供了一个命令行工具uci,它可以很方便地对配置文件中的内容进行修改、添加、删除和读取,详细说明请参考[https://openwrt.org/docs/guide-user/base-system/uci '''官方文档'''] # 首先使用以下命令获取网络配置,对应的配置文件是'''/etc/config/network,'''可以看到'''network.lan.ipaddr'''这一项的值是'''192.168.2.1''' ::{| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''uci show network''' ... network.lan=interface network.lan.device='br-lan' network.lan.proto='static' '''<span style="color:#FF0000">network.lan.ipaddr='192.168.2.1'</span>''' network.lan.netmask='255.255.255.0' network.lan.ip6assign='60' .… |} <ol start="3" style="list-style-type: decimal;"> <li>然后输入以下命令修改'''network.lan.ipaddr'''这一项</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''uci set network.lan.ipaddr='192.168.100.1'''' |} </ol> <ol start="4" style="list-style-type: decimal;"> <li>然后输入以下命令完成提交,即写入到配置文件</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''uci commit''' |} 如果红色字体的IP地址与要设置的一致,说明修改成功 {| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''cat /etc/config/network''' '''...''' config interface 'lan' option device 'br-lan' option proto 'static' option netmask '255.255.255.0' option ip6assign '60' '''<span style="color:#FF0000">option ipaddr '192.168.100.1'</span>''' ... |} </ol> <ol start="5" style="list-style-type: decimal;"> <li>通过ubus重启网络,ubus的使用说明请参考[https://openwrt.org/docs/guide-developer/ubus '''官方文档''']</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''ubus call network restart''' |} </ol> <ol start="6" style="list-style-type: decimal;"> <li><p>此时,输入命令可以看到LAN口的IP已经是'''192.168.100.1'''</p> {| class="wikitable" style="width:800px;" |- | <p>root@OpenWrt:~# '''ifconfig br-lan'''</p> <p>br-lan Link encap:Ethernet HWaddr FE:55:13:A3:EF:E7</p> ::<p>inet addr:'''192.168.100.1''' Bcast:192.168.100.255 Mask:255.255.255.0</p> ::<p>inet6 addr: fd60:c4cd:1033::1/60 Scope:Global</p> ::<p>UP BROADCAST MULTICAST MTU:1500 Metric:1</p> ::<p>RX packets:0 errors:0 dropped:0 overruns:0 frame:0</p> ::<p>TX packets:3 errors:0 dropped:0 overruns:0 carrier:0</p> ::<p>collisions:0 txqueuelen:1000</p> ::<p>RX bytes:0 (0.0 B) TX bytes:370 (370.0 B)</p> |} </li></ol> == 修改root密码的方法 == === 通过命令行修改 === # 首先在系统的命令行输入passwd root,会出现以下提示信息,此时可以输入想要设置的密码,按下回车键确认 ::{| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''passwd root''' '''Enter new UNIX password:''' |} <ol start="2" style="list-style-type: decimal;"> <li>接着会提示重新输入密码,此时再次输入密码确认并回车即可</li> {| class="wikitable" style="width:800px;" |- | '''Retype password:''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li>修改成功的显示如下</li> {| class="wikitable" style="width:800px;" |- | '''passwd: password for root changed by root''' |} </ol> <span id="通过luci管理界面修改"></span> === 通过LuCI管理界面修改 === <ol style="list-style-type: decimal;"> <li><p>首先参考[[Orange Pi 5 Plus#登录LuCI管理界面|'''登录LuCI管理界面''']]进入OpenWRT的管理界面</p></li> <li><p>然后按照下面的步骤修改密码</p> <ol style="list-style-type: lower-alpha;"> <li><p>在导航栏中找到”'''系统'''”选项并点击</p></li> <li><p>在系统下方的竖栏选项中,选择”'''管理权'''”并点击</p> <p>[[File:plus5-861.png]]</p></li> <li><p>在Tab页中选择”'''路由器密码'''”选项</p> <p>[[File:plus5-862.png]]</p></li></ol> </li> <li><p>修改并保存路由器密码</p> <ol style="list-style-type: lower-alpha;"> <li><p>在”'''密码'''”和”'''确认密码'''”的对话框中输入自己设定的密码(如果不确定密码是否输入正确,可点击对话框后面的”'''*'''”图标以显示输入字符)</p></li> <li><p>点击”'''保存'''”即可保存新修改的密码</p> <p>[[File:plus5-863.png]]</p></li> </li></ol> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注:在”密码”和”确认密码”的对话框中,需要两次输入的密码保持一致。'''</big> |} </ol> <ol start="4" style="list-style-type: decimal;"> <li><p>密码修改成功之后,会弹出”'''系统密码已更改成功'''”的弹框,此时登录OpenWRT就需要密码才能登录</p> <p>[[File:plus5-864.png]]</p></li></ol> <span id="usb接口测试-1"></span> == USB接口测试 == <span id="在命令行下挂载usb存储设备"></span> === 在命令行下挂载USB存储设备 === # 首先将U盘插入Orange Pi开发板的USB接口中 # 执行下面的命令如果能看到sdX的输出说明U盘识别成功 ::{| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''cat /proc/partitions | grep "sd*"'''<br> <span style="margin-right: 50px;">major</span><span style="margin-right: 50px;">minor </span><span style="margin-right: 55px;">#blocks</span><span style="margin-right: 50px;">name</span><br> <span style="margin-right: 70px;margin-left: 20px;">8</span><span style="margin-right: 70px;">0</span><span style="margin-right: 40px;">15126528 </span><span style="margin-right: 50px;color:#FF0000">'''sda'''</span><br> |} <ol start="3" style="list-style-type: decimal;"> <li>使用mount命令可以将U盘挂载到/mnt中,然后就能查看U盘中的文件了</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''mount /dev/sda /mnt/''' root@OpenWrt:~# '''ls /mnt/''' test.txt |} </ol> <ol start="4" style="list-style-type: decimal;"> <li>挂载完后通过df -h命令就能查看U盘的容量使用情况和挂载点</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:~# '''df -h | grep "sd"''' <span style="margin-right: 20px;">/dev/sda</span><span style="margin-right: 20px;">14.4G</span><span style="margin-right: 20px;">187.2M</span><span style="margin-right: 20px;">14.2G</span><span style="margin-right: 50px;">1% /mnt</span><br> |} </ol> <span id="在luci管理界面挂载usb存储设备"></span> === 在LuCI管理界面挂载USB存储设备 === <ol style="list-style-type: decimal;"> <li><p>首先将U盘(或者其它存储设备)通过USB2.0连接到开发板</p></li> <li><p>然后按照[[Orange Pi 5 Plus#登录LuCI管理界面|'''登录LuCI管理界面''']]进入LuCI管理界面</p></li> <li><p>然后在LuCI管理界面中,点击”系统->挂载点”进入挂载点的配置界面</p> <p>[[File:plus5-865.png]]</p></li> <li><p>然后按照下面的步骤新增一个挂载点</p> <ol style="list-style-type: lower-alpha;"> <li><p>在挂载点'''全局设置界面'''下方找到”'''挂载点'''”</p></li> <li><p>在'''挂载点'''下方,选择”添加”按钮并点击进入</p></li> [[File:plus5-866.png]] </ol> <ol start="3" style="list-style-type: lower-alpha;"> <li><p>接着会弹出下面的弹窗界面</p> <p>[[File:plus5-867.png]]</p></li> <li><p>然后就可以开始挂载存储设备</p> <ol style="list-style-type: lower-alpha;"> <li><p>勾选”'''已启用'''”</p></li> <li><p>在常规设置UUID一栏中选择实际接入的设备/dev/sda(根据自己的设备选择)</p></li> <li><p>在挂载点一栏中选择”'''自定义'''”,并填入要挂载到的目标目录,这里以'''/mnt'''目录为例,填好后'''回车'''确认</p></li> <li><p>然后点击右下角的”'''保存'''”按钮</p></li></ol> [[File:plus5-868.png]] </li></ol> </li></ol> <ol start="5" style="list-style-type: decimal;"> <li>然后会回到挂载点全局设置页面,在页面的左下角点击”'''保存并应用'''”使挂载点生效</li> [[File:plus5-869.png]] </ol> <ol start="6" style="list-style-type: decimal;"> <li>保存完后可以看到”'''已挂载的文件系统'''”中,该存储设备已经挂载成功</li> [[File:plus5-870.png]] </ol> <span id="m.2-e-key-pcie无线网卡的使用方法"></span> == M.2 E-Key PCIe无线网卡的使用方法 == # 目前OpenWRT镜像镜像目前适配的PCIe无线网卡型号如下所示: ::{| class="wikitable" style="width:800px;" |- | '''序号''' | '''型号''' | '''实物图片''' | '''已支持的OS''' |- | '''1''' | '''AX200''' '''(PCIE+USB接口)''' | [[File:plus5-871.png]] | '''Debian''' '''Ubuntu''' '''<span style="color:#FF0000">OpenWRT</span>''' '''OPi OS Arch''' |- | '''2''' | '''AX210''' '''(PCIE+USB接口)''' | [[File:plus5-872.png]] | '''Debian''' '''Ubuntu''' '''<span style="color:#FF0000">OpenWRT</span>''' '''OPi OS Arch''' |- | '''3''' | '''RTL8852BE''' '''(PCIE+USB接口)''' | [[File:plus5-873.png]] | '''Debian''' '''Ubuntu''' '''<span style="color:#FF0000">不支持OpenWRT</span>''' '''Android12''' '''OPi OS Arch''' '''OPi OS Droid''' |} <span id="创建wifi热点的方法"></span> === 创建WIFI热点的方法 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''注意AX200和AX210目前仅支持2.4G频段热点,5G频段模式下会出现无线网卡修改配置后无法应用的错误。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先将PCIe无线网卡插入开发板的M.2 E-KEY端口,然后接上Type-C电源给开发板上电。</p> <p>[[File:plus5-874.png]]</p></li> <li><p>系统启动完成,点击 '''网络 -> 无线''' 进入无线WiFi配置界面。</p> <p>[[File:plus5-875.png]]</p></li> <li><p>OpenWRT系统默认的无线配置是'''Master''' 模式,这里为了方便接下来的操作,我们将默认的无线连接移除。</p> <p>[[File:plus5-876.png]]</p></li> <li><p>然后点击页面的右下角 '''保存''' 让配置生效。</p> <p>[[File:plus5-877.png]]</p></li> <li><p>然后点击右侧的 '''添加''' 按钮。</p> <p>[[File:plus5-878.png]]</p></li> <li><p>在弹出标签页 '''设备配置''' 中,我们设置参数如下图所示。</p> <p>[[File:plus5-879.png]]</p></li> <li><p>然后在 '''接口配置 -> 常规设置''' 中,将模式设置成 '''接入点AP''' ,'''ESSID'''(无线网络名称)设置为'''OpenWrt''' ,网络指定为''' lan'''</p> <p>[[File:plus5-880.png]]</p></li> <li><p>然后在 '''接口配置 -> 无线安全''' 中,加密算法选择''' WPA2-PSK''' ;密钥(无线密码)设置为 '''password'''</p> <p>[[File:plus5-881.png]]</p></li> <li><p>以上设置完成后,点击页面右下角''' 保存''',之后会退出标签页</p> <p>[[File:plus5-882.png]]</p></li> <li><p>然后点击页面右下角 '''保存并应用''' 等待配置被应用完成。</p> <p>[[File:plus5-883.png]]</p></li> <li><p>成功创建热点的显示界面如下图所示</p> <p>[[File:plus5-884.png]]</p></li> <li><p>然后使用手机或电脑搜索对应SSID的WiFi进行连接,连接成功后如下图所示</p> <p>[[File:plus5-885.png]]</p></li></ol> <span id="连接wifi热点的方法"></span> === 连接WIFI热点的方法 === <ol style="list-style-type: decimal;"> <li><p>将PCIe无线网卡插入开发板的M.2 E-KEY端口,然后接上Type-C电源给开发板上电。</p> <p>[[File:plus5-886.png]]</p></li> <li><p>系统启动完成后,点击 '''网络 -> 无线''' 进入配置无线WiFi界面。</p> <p>[[File:plus5-887.png]]</p></li> <li><p>OpenWRT系统默认的无线配置是'''Master''' 模式,这里为了方便接下来的操作,我们将默认的无线连接移除。</p> <p>[[File:plus5-888.png]]</p></li> <li><p>然后点击页面的右下角 '''保存''' 让配置生效。</p> <p>[[File:plus5-889.png]]</p></li> <li><p>然后点击 '''扫描''' 按钮扫描周围的WiFi热点。</p> <p>[[File:plus5-890.png]]</p></li> <li><p>然后会弹出下面的窗口显示可用的WiFi热点,这时点击想要连接的WiFi热点右边的 '''加入网络''' 按钮来连接WiFi热点。</p> <p>[[File:plus5-891.png]]</p></li> <li><p>然后会弹出一个连接WiFi热点的界面,我们在下图所示的位置输入热点的密码,再点击 '''提交''' 按钮。</p> <p>[[File:plus5-892.png]]</p></li> <li><p>然后会弹出下面的界面,点击右下角的 '''保存''' 按钮即可。</p> <p>[[File:plus5-893.png]]</p></li> <li><p>最后会回到无线配置的主界面,点击 '''保存并应用''' 等待配置被应用完成。</p> <p>[[File:plus5-894.png]]</p></li> <li><p>成功连接到WiFi热点后,界面显示如下图所示。</p> <p>[[File:plus5-895.png]]</p></li></ol> == 通过命令行安装软件包 == === 在终端通过opkg安装 === # 更新可获取的软件包列表 ::{| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''opkg update''' |} <ol start="2" style="list-style-type: decimal;"> <li>获取软件列表</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''opkg list''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li>安装指定的软件包</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''opkg install <包名称>''' |} </ol> <ol start="4" style="list-style-type: decimal;"> <li>查看已经安装的软件</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''opkg list-installed''' |} </ol> <ol start="5" style="list-style-type: decimal;"> <li>卸载软件</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''opkg remove <包名称>''' |} </ol> <span id="openwrt管理界面安装软件包"></span> == OpenWRT管理界面安装软件包 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''若需要新增软件包,可通过OpenWRT的管理界面进行安装。'''</big> |} === 查看系统可用软件包列表 === <ol style="list-style-type: decimal;"> <li><p>首先进入软件包管理页面</p> <ol style="list-style-type: lower-alpha;"> <li><p>在导航栏中找到”'''系统'''”选项并点击进入</p></li> <li><p>在系统下方的竖栏选项中,选择”'''软件包'''”并点击进入</p></li> [[File:plus5-896.png]]</ol> </li></ol> <ol start="2" style="list-style-type: decimal;"> <li><p>然后会出现软件包的主页面,如下图所示,获取可用的软件列表</p> <ol style="list-style-type: lower-alpha;"> <li><p>在软件包的”'''操作'''”选项中,点击”'''更新列表'''”,获取可用的软件包列表</p></li> <li><p>在Tab页中,点击”'''可用'''”,查看当前可用软件包</p></li> <li><p>查看当前可用软件包的数量</p> <p>[[File:plus5-897.png]]</p></li></ol> </li></ol> === 安装软件包示例 === <ol style="list-style-type: decimal;"> <li><p>以安装软件包”'''luci-app-acl'''”为例</p> <ol style="list-style-type: lower-alpha;"> <li><p>在OpenWRT的软件包管理界面下,点击筛选器的对话框并输入”'''luci-app-acl'''”</p></li> <li><p>在软件包的列表中可以看到”'''luci-app-acl'''”软件包的版本、软件包大小以及描述信息,然后点击”'''安装'''”按钮</p> <p>[[File:plus5-898.png]]</p></li> <li><p>然后会出现以下弹窗,点击”'''安装'''”即可</p> <p>[[File:plus5-899.png]]</p></li> <li><p>然后等待安装完成</p> <p>[[File:plus5-900.png]]</p></li> <li><p>安装完成的显示如下</p> <p>[[File:plus5-901.png]]</p></li></ol> </li> <li><p>查看软件包是否安装成功</p> <ol style="list-style-type: lower-alpha;"> <li><p>在OpenWRT的软件包管理界面下,点击筛选器的对话框并输入”'''luci-app-acl'''”</p></li> <li><p>在Tab页选择点击”'''可用'''”</p></li> <li><p>在软件包列表中会显示”'''luci-app-acl'''”软件包,并更新状态为”'''已安装'''”</p> <p>[[File:plus5-902.png]]</p></li></ol> </li></ol> === 移除软件包示例 === <ol style="list-style-type: decimal;"> <li><p>以移除软件包”'''luci-app-acl'''”为例</p> <ol style="list-style-type: lower-alpha;"> <li><p>在OpenWRT的软件包管理界面下,点击筛选器的对话框并输入”'''luci-app-acl'''”</p></li> <li><p>在Tab页中选择”'''已安装'''”,显示已安装的软件包列表</p></li> <li><p>点击右边的”'''移除'''”,即可移除相应的软件包</p> <p>[[File:plus5-903.png]]</p></li> <li><p>然后会显示下面弹窗,点击”'''移除'''”即可</p> <p>[[File:plus5-904.png]]</p></li> <li><p>移除成功后,显示界面如下</p> <p>[[File:plus5-905.png]]</p></li></ol> </li> <li><p>查看软件包是否移除成功</p> <ol style="list-style-type: lower-alpha;"> <li><p>在OpenWRT的软件包管理界面下,点击筛选器的对话框并输入”'''luci-app-acl'''”</p></li> <li><p>在Tab页选择点击”'''已安装'''”</p></li> <li><p>在软件包列表中不会显示”'''luci-app-acl'''”软件包,此时”'''luci-app-acl'''”软件包已移除成功</p> <p>[[File:plus5-906.png]]</p></li></ol> </li></ol> <span id="使用samba网络共享"></span> == 使用Samba网络共享 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''OpenWRT局域网文件共享实现主要有两个软件选择,Samba和NFS。Samba系统兼容性较好,NFS则性能表现占优。对于需要使用Windows设备的用户来说,建议选择Samba。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>进入Samba网络共享的管理页面</p> <ol style="list-style-type: lower-alpha;"> <li><p>在导航栏中找到”'''服务'''”选项并点击进入</p></li> <li><p>在服务下方的竖栏选项中,选择”'''网络共享'''”并点击进入</p></li></ol> <p>[[File:plus5-907.png]]</p> </li> <li><p>选择Samba服务需要监听的接口</p> <ol style="list-style-type: lower-alpha;"> <li><p>在网络共享的导航栏中选择”'''常规设置'''”并点击进入</p></li> <li><p>接口根据实际需求指定,如果想通过”wan口”访问,则设置为”'''wan'''”</p></li></ol> <p>[[File:plus5-908.png]]</p> </li> <li><p>设置网络共享的共享目录</p> <ol style="list-style-type: lower-alpha;"> <li><p>在网络共享的”'''常规设置'''”的”'''共享目录'''”总点击”'''新增'''”共享目录地址</p></li> <li><p>在名称下面输入共享文件夹的名称为”'''mmt'''”</p></li> <li><p>在共享目录的路径下,选择设置共享的目录位置”'''/mnt'''”</p></li> <li><p>勾选”'''可浏览'''”和”'''运行匿名用户'''”</p></li> <li><p>点击”'''保存并应用'''”,保存配置</p></li></ol> <p>[[File:plus5-909.png]]</p> </li> <li><p>window10启动网络发现与共享</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注:在windows10系统下访问Samba,共享需要先确认window10是否已经启动网络发现与共享,如未启动,先进行如下设置。'''</p></big> |} </li> <ol style="list-style-type: lower-alpha;"> <li><p>启用Samba v1/v2的访问</p> <ol style="list-style-type: lower-alpha;"> <li><p>进入windows10的”控制面板”</p></li> <li><p>在控制面板的左侧导航栏点击”程序”</p></li> <li><p>在程序和功能中选择”启用或关闭Windows功能”</p></li> <li><p>在启用或关闭Windows功能的弹框中勾选”SMB 1.0/CIFS文件共享支持”</p></li> <li><p>点击”确定”,配置应用</p></li></ol> [[File:plus5-910.png]] </li></ol> <ol start="2" style="list-style-type: lower-alpha;"> <li><p>打开Windows10的网络发现</p> <ol style="list-style-type: lower-alpha;"> <li><p>进入windows10的”控制面板”</p></li> <li><p>在控制面板中选择”网络和Internet”</p></li> <li><p>然后打开”网络和共享中心”</p></li> <li><p>点击|“高级共享设置”</p></li> <li><p>打开”'''启用网络发现'''”和”'''启用文件和打印机共享'''”</p></li> <li><p>点击”保存更改”,保存Windows10的网络发现配置</p></li></ol> [[File:plus5-911.png]] </li></ol></ol> <ol start="5" style="list-style-type: decimal;"> <li>设置完成后,在资源管理器的地址栏输入\\OpenWrt即可访问共享目录,用户名为root,密码为开发板主机设定的密码</li> [[File:plus5-912.png]] </ol> == zerotier使用说明 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''OpenWRT系统已经预装了zerotier客户端,在zerotier官网创建虚拟局域网后,在客户端可以通过Network ID直接加入其中,具体操作如下文所示。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>登录zerotier官网[https://my.zerotier.com/network '''https://my.zerotier.com/network'''],注册登录后点击Network->Create A Network,创建一个虚拟局域网</p> <p>[[File:plus5-913.png]]</p> <p>[[File:plus5-914.png]]</p></li> <li><p>点击进入网络控制台页面,可以把隐私选项设置为公共,这样加入的网络节点就不需要验证</p> <p>[[File:plus5-915.png]]</p></li> <li><p>下面自动分配地址这里可以自己选择网段,此处选择的是172.27.*.*</p> <p>[[File:plus5-916.png]]</p></li> <li><p>在OpenWRT终端输入下面命令就可以加入到上面创建的虚拟局域网,'''<span style="color:#FF0000">其中8286ac0e47d53bb5是上面创建的虚拟局域网的Network ID</span>'''</p> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''zerotier-one -d''' #启动zerotier客户端 root@OpenWrt:/# '''zerotier-cli join 8286ac0e47d53bb5''' #加入网络 |} </li></ol> <ol start="5" style="list-style-type: decimal;"> <li>在终端输入ifconfig可以看到已经有个新增的'''ztks54inm2'''设备,IP地址为'''172.27.214.213''' {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''ifconfig''' '''ztks54inm2''' Link encap:Ethernet HWaddr F6:4E:DE:BF:D8:52 ::inet addr:'''172.27.214.213''' Bcast:172.27.255.255 Mask:255.255.0.0 ::inet6 addr: fe80::e82f:d0ff:fe5a:867e/64 Scope:Link ::UP BROADCAST RUNNING MULTICAST MTU:2800 Metric:1 ::RX packets:18 errors:0 dropped:0 overruns:0 frame:0 ::TX packets:48 errors:0 dropped:0 overruns:0 carrier:0 ::collisions:0 txqueuelen:1000 ::RX bytes:1720 (1.6 KiB) TX byte81 (8.2 KiB) |} </li></ol> <ol start="6" style="list-style-type: decimal;"> <li>在另一台设备上安装zerotier客户端(此处以Ubuntu18.04为例),执行下面命令进行安装,安装完成后需要重启电脑 {| class="wikitable" style="width:800px;" |- | test@ubuntu:~$ '''curl -s https://install.zerotier.com | sudo bash''' |} </li></ol> <ol start="7" style="list-style-type: decimal;"> <li>重启后根据Network ID加入虚拟局域网,也可以看到已经获取到zerotier分配的ip地址,此时该Ubuntu PC和OrangePi R1 Plus LTS处于同一局域网中,两者可以自由通信 {| class="wikitable" style="width:800px;" |- | test@ubuntu:~$ '''sudo zerotier-cli join 8286ac0e47d53bb5''' test@ubuntu:~$ '''ifconfig''' '''ztks54inm2''': flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 2800 ::inet '''172.27.47.214''' netmask 255.255.0.0 broadcast 172.27.255.255 ::inet6 fe80::5ce1:85ff:fe2b:6918 prefixlen 64 scopeid 0x20<link> ::ether f6:fd:87:68:12:cf txqueuelen 1000 (以太网) ::RX packets 0 bytes 0 (0.0 B) ::RX errors 0 dropped 0 overruns 0 frame 0 ::TX packets 46 bytes 10006 (10.0 KB) ::TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |} </li></ol> <ol start="8" style="list-style-type: decimal;"> <li>测试两个终端是否可以通信</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''ping 172.27.47.214 -I ztks54inm2''' PING 172.27.47.214 (172.27.47.214): 56 data bytes 64 bytes from 172.27.47.214: seq=0 ttl=64 time=1.209 ms 64 bytes from 172.27.47.214: seq=1 ttl=64 time=1.136 ms 64 bytes from 172.27.47.214: seq=2 ttl=64 time=1.203 ms 64 bytes from 172.27.47.214: seq=3 ttl=64 time=1.235 ms ^C --- 172.27.47.214 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 1.136/1.195/1.235 ms |} </ol> <ol start="9" style="list-style-type: decimal;"> <li>zerotier其他常用命令</li> {| class="wikitable" style="width:800px;" |- | root@OpenWrt:/# '''zerotier-one -d''' #启动zerotier客户端 root@OpenWrt:/# '''zerotier-cli status''' #获取地址和服务状态 root@OpenWrt:/# '''zerotier-cli join # Network ID''' #加入网络 root@OpenWrt:/# '''zerotier-cli leave # Network ID''' #离开网络 root@OpenWrt:/# '''zerotier-cli listnetworks''' #列出网络 OPENWRT_DEVICE_REVISION="v0" OPENWRT_RELEASE="OpenWrt 22.03.4 r20123-38ccc47687" |} </ol> <span id="openwrt源码的编译方法"></span> = '''OpenWRT源码的编译方法''' = <span id="下载openwrt源码"></span> == 下载OpenWRT源码 == # 首先执行下面的命令下载openwrt-22.03分支代码 ::{| class="wikitable" style="width:800px;" |- | test@test:~$ '''sudo apt update''' test@test:~$ '''sudo apt install -y git''' test@test:~$ '''git clone https://github.com/orangepi-xunlong/openwrt.git -b openwrt-22.03''' |} <ol start="2" style="list-style-type: decimal;"> <li>OpenWRT代码下载完后会包含下面的文件和文件夹</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''ls''' BSDmakefile Config.in include Makefile README.md scripts toolchain Config feeds.conf.default LICENSE package rules.mk target tools |} </ol> <span id="编译openwrt源码"></span> == 编译OpenWRT源码 == <ol style="list-style-type: decimal;"> <li><p>首先安装下面这些依赖包(目前仅测试了在Ubuntu20.04上编译需要安装下列依赖包,如果在其他版本的系统上编译,请根据出错信息自行安装依赖包)</p> <ol style="list-style-type: lower-alpha;"> <li>方法1:使用脚本安装依赖包的命令如下所示:</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''sudo ./install_dep.sh''' |} </ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>方法2:直接使用下面的命令安装依赖包</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''sudo apt update''' test@test:~/openwrt$ '''sudo apt install -y ack antlr3 asciidoc autoconf \''' '''automake autopoint binutils bison build-essential \''' '''bzip2 ccache cmake cpio curl device-tree-compiler fastjar \''' '''flex gawk gettext gcc-multilib g++-multilib git gperf haveged \''' '''help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev \''' '''libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev \''' '''libncurses5-dev \libncursesw5-dev libreadline-dev libssl-dev \''' '''libtool lrzsz mkisofs msmtp nano ninja-build p7zip p7zip-full \''' '''patch pkgconf python2.7 python3 python3-pyelftools \''' '''libpython3-dev qemu-utils rsync scons squashfs-tools \''' '''subversion swig texinfo uglifyjs upx-ucl unzip \''' '''vim wget xmlto xxd zlib1g-dev''' |} </ol></li></ol> <ol start="2" style="list-style-type: decimal;"> <li>然后执行'''./scripts/feeds update -a'''和'''./scripts/feeds install -a'''下载依赖包</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''./scripts/feeds update -a''' test@test:~/openwrt$ '''./scripts/feeds install -a''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>然后选择使用OrangePi 5 Plus的配置文件</p> <ol style="list-style-type: lower-alpha;"> <li>编译支持TF卡、eMMC、NVMe启动的镜像,选择如下的配置</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''cp configs/orangepi-5-plus-rk3588_defconfig .config''' |} </ol> <ol start="2" style="list-style-type: lower-alpha;"> <li>编译支持SPIFlash启动的镜像,选择如下的配置</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''cp configs/orangepi-5-plus-rk3588-spi_defconfig .config''' |}</ol> </li></ol> <ol start="4" style="list-style-type: decimal;"> <li>然后执行下面的命令使配置生效</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''make defconfig''' |} </ol> <ol start="5" style="list-style-type: decimal;"> <li>执行下面的命令开始编译openwrt源码</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''make V=s''' |} </ol> <ol start="6" style="list-style-type: decimal;"> <li>编译完成后,镜像生成所在的路径为:</li> {| class="wikitable" style="width:800px;" |- | test@test:~/openwrt$ '''tree -L 1 bin/targets/rockchip/armv8/''' bin/targets/rockchip/armv8/ ├── config.buildinfo ├── feeds.buildinfo ├── openwrt-rockchip-armv8-xunlong_orangepi-5-plus-ext4-sysupgrade.img.gz ├── openwrt-rockchip-armv8-xunlong_orangepi-5-plus.manifest ├── openwrt-rockchip-armv8-xunlong_orangepi-5-plus-squashfs-sysupgrade.img.gz ├── packages ├── profiles.json ├── sha256sums └── version.buildinfo 1 directory, 9 files |} </ol> <span id="android-12系统的使用说明"></span> = '''Android 12系统的使用说明''' = <span id="已支持的android版本"></span> == 已支持的Android版本 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''Android版本''' | style="text-align: left;"| '''内核版本''' |- | style="text-align: left;"| '''Android 12''' | style="text-align: left;"| '''Linux5.10''' |- | style="text-align: left;"| '''Android 12 Box''' | style="text-align: left;"| '''Linux5.10''' |} <span id="android功能适配情况"></span> == Android功能适配情况 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''功能''' | style="text-align: left;"| '''Android 12''' | style="text-align: left;"| '''Android12 Box''' |- | style="text-align: left;"| '''HDMI TX1显示-1080p''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1显示-4K 120HZ''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1显示-8K 60HZ''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2显示-1080p''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2显示-4K 120HZ''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2显示-8K 60HZ''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX显示''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX音频''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB2.0X2''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口X2''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口灯''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''调试串口''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTC''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''FAN风扇接口''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''eMMC扩展接口''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-WIFI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-BT''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''AX200-BT''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''AX210-WIFI''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''AX210-BT''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''RTL8852BE-WIFI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-BT''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Recovery按键''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口USB3.0功能''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口ADB功能''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口DP显示功能''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口DP音频播放''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB3.0 Hub''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''开关机按键''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''红外功能''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''LED灯''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''板载MIC''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机播放''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机录音''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPK喇叭''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN GPIO''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN I2C''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN SPI''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN UART''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN PWM''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''TF卡启动''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPI Flash+NVME固态启动''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13850摄像头''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13855摄像头''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''GPU''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''VPU''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''NPU''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD显示''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD触摸''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD背光''' | style="text-align: left;"| '''OK''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI CEC功能''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' | style="text-align: left;"| '''OK''' |} <span id="usb无线网卡的使用方法"></span> == USB无线网卡的使用方法 == # 目前Android镜像适配的USB无线网卡型号如下所示: ::{| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''芯片型号''' | style="text-align: left;"| '''功能''' | style="text-align: left;"| '''VID&PID''' | style="text-align: left;"| '''适配情况''' |- | style="text-align: left;"| '''RTL8723BU''' | style="text-align: left;"| '''2.4G WIFI+BT4.0''' | style="text-align: left;"| '''0bda:b720''' | style="text-align: left;"| '''支持WIFI和蓝牙功能,不支持开热点''' |- | style="text-align: left;"| '''RTL8811CU''' | style="text-align: left;"| '''2.4G +5G WIFI''' | style="text-align: left;"| '''0bda:c811''' | style="text-align: left;"| '''支持WIFI功能和开热点''' |} <ol start="2" style="list-style-type: decimal;"> <li><p>上面两款USB无线网卡的图片如下所示:</p> <ol style="list-style-type: lower-alpha;"> <li><p>RTL8723BU USB无线网卡模块的图片如下所示:</p> <div class="figure"> [[File:plus5-917.png]] </div></li> <li><p>RTL8811CU USB无线网卡模块的图片如下所示:</p> <p>[[File:plus5-918.png]]</p></li></ol> </li> <li><p>以上2种型号的USB无线网卡的测试方法都是相同的,首先需要将USB网卡插入开发板的USB接口</p></li> <li><p>然后WIFI的连接和测试方法请参考[[Orange Pi 5 Plus#WIFI的连接测试方法|'''WIFI的连接测试方法''']]一节的内容</p></li> <li><p>蓝牙的测试请参考[[Orange Pi 5 Plus#蓝牙的测试方法|'''蓝牙的测试方法''']]一节的内容</p></li></ol> <span id="m.2-e-key-pcie-wifi6蓝牙模块的使用方法-2"></span> == M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法 == # 目前Android12适配的PCIe无线网卡型号如下所示: ::{| class="wikitable" style="width:800px;" |- | '''序号''' | '''型号''' | '''实物图片''' |- | '''1''' | '''RTL8852BE''' '''(PCIE+USB接口)''' | [[File:plus5-919.png]] |} <ol start="2" style="list-style-type: decimal;"> <li><p>首先将PCIe无线网卡插入开发板的M.2 E-KEY接口中并固定好</p> <p>[[File:plus5-920.png]]</p></li> <li><p>然后给开发板接上Type-C接口的电源,并上电</p></li> <li><p>系统启动后,WIFI的连接和测试方法请参考[[Orange Pi 5 Plus#WIFI的连接测试方法|'''WIFI的连接测试方法''']]一节的内容</p></li> <li><p>蓝牙的测试请参考[[Orange Pi 5 Plus#蓝牙的测试方法|'''蓝牙的测试方法''']]一节的内容</p></li></ol> <span id="wifi的连接测试方法"></span> == WIFI的连接测试方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">首先请注意Orange Pi 5 Plus开发板上是没有WIFI模块的,需要外接PCIe网卡或者USB网卡才能使用WIFI功能。</span>''' '''外接PCIe网卡的使用说明请参考[[Orange Pi 5 Plus#M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法|M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法]]一小节。''' '''外接USB网卡的使用说明请参考[[Orange Pi 5 Plus#USB无线网卡的使用方法|USB无线网卡的使用方法]]一小节。'''</big> |} # 首先点击进入'''Setting''' ::[[File:plus5-921.png]] <ol start="2" style="list-style-type: decimal;"> <li>然后选择'''Network & internet'''</li> [[File:plus5-922.png]] </ol> <ol start="3" style="list-style-type: decimal;"> <li>然后选择'''Internet'''</li> [[File:plus5-923.png]] </ol> <ol start="4" style="list-style-type: decimal;"> <li>然后打开'''Wi-Fi'''开关</li> [[File:plus5-924.png]] </ol> <ol start="5" style="list-style-type: decimal;"> <li><p>打开'''Wi-Fi'''后如果一切正常,就可以扫描到附近的Wi-Fi热点了</p> <p>[[File:plus5-925.png]]</p></li> <li><p>然后选择想连接的Wi-Fi后会弹出下图所示的密码输入界面</p> <p>[[File:plus5-926.png]]</p></li> <li><p>然后使用键盘输入Wi-Fi对应的密码,再使用鼠标点击虚拟键盘中的回车按钮就会开始连接Wi-Fi了</p> <p>[[File:plus5-927.png]]</p></li> <li><p>Wi-Fi连接成功后的显示如下图所示:</p> <p>[[File:plus5-928.png]]</p></li></ol> <span id="wi-fi-hotspot的使用方法"></span> == Wi-Fi hotspot的使用方法 == <ol style="list-style-type: decimal;"> <li><p>首先请确保以太网口已连接网线,并且能正常上网</p></li> <li><p>然后选择'''Settings'''</p> <p>[[File:plus5-929.png]]</p></li> <li><p>然后选择'''Network & internet'''</p> <p>[[File:plus5-930.png]]</p></li> <li><p>然后选择'''Hotspot & tethering'''</p> <p>[[File:plus5-931.png]]</p></li> <li><p>然后选择'''Wi-Fi hotspot'''</p> <p>[[File:plus5-932.png]]</p></li> <li><p>然后打开'''Wi-Fi hotspot''',下图中还可以看到生成的热点的名字和密码,记住它们,在连接热点的时候要用到('''如果需要修改热点的名字和密码,需要先关闭Wi-Fi hotspot,然后才能修改''')</p> <p>[[File:plus5-933.png]]</p></li> <li><p>此时可以拿出你的手机,如果一切正常,在手机搜索到的WI-FI列表中就能找到上图'''Hotspot name'''下面显示的同名('''这里为 AndroidAP_6953''')的WIFI热点了。然后可以点击'''AndroidAP_6953'''连接热点,密码在上图的'''Hotspot password''' 下面可以看到</p></li> [[File:plus5-934.png]] </ol> <ol start="8" style="list-style-type: decimal;"> <li>连接成功后显示如下图所示(不同手机界面会有区别,具体界面以你手机显示的为准)。此时就可以在手机上打开一个网页看下能否上网了,如果能正常打开网页, 说明开发板的'''WI-FI Hotspot''' 能正常使用</li> [[File:plus5-935.png]] </ol> == 蓝牙的测试方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">请注意,Orange Pi 5 Plus开发板上是没有蓝牙模块的,需要外接带蓝牙的PCIe网卡或者带蓝牙的USB网卡才能使用蓝牙功能。</span>''' '''外接PCIe网卡的使用说明请参考[[Orange Pi 5 Plus#M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法|M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法]]一小节。''' '''外接USB网卡的使用说明请参考[[Orange Pi 5 Plus#USB无线网卡的使用方法|USB无线网卡的使用方法]]一小节。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先点击进入'''Setting'''</p> <p>[[File:plus5-936.png]]</p></li> <li><p>然后选择'''Connected devices'''</p> <p>[[File:plus5-937.png]]</p></li> <li><p>然后点击'''Pair new device'''打开蓝牙并开始扫描周围的蓝牙设备</p> <p>[[File:plus5-938.png]]</p></li> <li><p>搜索到的蓝牙设备会在'''Available devices'''下面显示出来</p> <p>[[File:plus5-939.png]]</p></li> <li><p>然后点击想要连接的蓝牙设备就可以开始配对了,当弹出下面的界面时,请使用鼠标选择'''Pair'''选项</p> <p>[[File:plus5-940.png]]</p></li> <li><p>这里测试的是开发板和安卓手机蓝牙的配置过程,此时在手机上会弹出下面的确认界面,在手机上也点击配对按钮后就会开始配对过程</p> <p>[[File:plus5-941.png]]</p></li> <li><p>配对完成后,可以看到如下图所示的已配对的蓝牙设备</p> <p>[[File:plus5-942.png]]</p></li> <li><p>此时可以使用手机蓝牙给开发板发送一张图片,发送后,在开发板的安卓系统中可以看到下面的确认界面,然后点击'''Accept'''就可以开始接收手机发过来的图片了</p> <p>[[File:plus5-943.png]]</p></li> <li><p>开发板Android系统蓝牙接收到的图片可以在文件管理器中打开'''Download'''目录查看</p> <p>[[File:plus5-944.png]]</p></li></ol> <span id="hdmi-in的测试方法-2"></span> == HDMI In的测试方法 == <ol style="list-style-type: decimal;"> <li><p>开发板HDMI In接口的所在位置如下所示:</p> <p>[[File:plus5-945.png]]</p></li> <li><p>然后使用下图所示的HDMI转HDMI线将其它设备的HDMI输出接到开发板的HDMI In接口上</p> <p>[[File:plus5-946.png]]</p></li> <li><p>确保连接到HDMI In接口的设备的HDMI输出是正常的,然后打开HDMI In测试APP</p> <p>[[File:plus5-947.png]]</p></li> <li><p>然后就可以看到HDMI In的视频输入了,同时HDMI In的音频输入也会从开发板的HDMI TX接口或者耳机接口输出。下图显示的是通过HDMI In输入的OPi5开发板Linux系统的桌面。</p> <p>[[File:plus5-948.png]]</p></li></ol> <span id="寸mipi-屏幕的使用方法"></span> == 10.1寸MIPI 屏幕的使用方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''请确保使用的Android镜像为下面的两个版本的镜像:''' '''OrangePi5Plus_RK3588_Android12_lcd_v1.x.x.img''' '''OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.x.x.img'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先需要组装好屏幕,请参考[[Orange Pi 5 Plus#10.1寸MIPI 屏幕的组装方法|'''10.1寸MIPI屏幕的组装方法''']]</p></li> <li><p>开发板上LCD的接口位置如下图所示:</p> <p>[[File:plus5-949.png]]</p> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''注意,下面的触摸接口不是给LCD MIPI屏幕使用的,目前为备用接口,使用不到。'''</p></big> <p>[[File:plus5-950.png]]</p> |} </li> <li><p>将组装好的屏幕接到LCD接口,给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示</p> <p>[[File:plus5-951.png]]</p></li></ol> <span id="ov13850和ov13855-mipi摄像头的测试方法-2"></span> == OV13850和OV13855 MIPI摄像头的测试方法 == 目前开发板支持两款MIPI摄像头,OV13850和OV13855,具体的图片如下所示: <ol style="list-style-type: lower-alpha;"> <li><p>1300万MIPI接口的OV13850摄像头</p> <p>[[File:plus5-952.png]]</p></li> <li><p>1300万MIPI接口的OV13855摄像头</p> <p>[[File:plus5-953.png]]</p></li></ol> <p>OV13850和OV13855摄像头使用的转接板和FPC排线是一样的,只是两款摄像头接在转接板上的位置不一样。FPC排线如下图所示,请注意FPC排线是有方向的,标注'''TO MB'''那端需要插到开发板的摄像头接口中,标注'''TO CAMERA'''那端需要插到摄像头转接板上。</p> [[File:plus5-954.png]] 摄像头转接板上总共有3个摄像头的接口,同一时间只能接一个使用,如下图所示,其中: <ol style="list-style-type: lower-alpha;"> <li><p>'''1号接口接OV13850摄像头'''</p></li> <li><p>'''2号接口接OV13855摄像头'''</p></li> <li><p>3号接口未使用,忽略即可</p></li> [[File:plus5-955.png]] </ol> Orange Pi 5 Plus开发板摄像头接口的位置如下图所示: [[File:plus5-956.png]] 摄像头插在开发板CAM接口的方法如下所示: [[File:plus5-957.png]] 连接好摄像头到开发板上后,我们可以使用下面的方法来测试下摄像头: <ol style="list-style-type: lower-alpha;"> <li><p>在桌面中打开相机APP</p> <p>[[File:plus5-958.png]]</p></li> <li><p>然后就能看到摄像头的预览画面了</p> <div class="figure"> [[File:plus5-959.png]] </div> <p>在摄像头APP下图红框所示的区域中按住鼠标然后向右拖动可以调出拍照和摄像的切换界面</p> <p>[[File:plus5-960.png]]</p> <p>拍照和摄像的切换界面如下所示,点击'''Video'''即可切换到录像模式</p> <div class="figure"> [[File:plus5-961.png]] </div> <p>点击下图所示的位置可以进入摄像头的设置界面</p> <p>[[File:plus5-962.png]]</p> <p>摄像头的设置界面如下所示:</p> <div class="figure"> [[File:plus5-963.png]] </div></li></ol> <span id="pin-接口-gpiouartspi-和-pwm-测试"></span> == 26pin 接口 GPIO、UART、SPI 和 PWM 测试 == <span id="pin-gpio-口测试"></span> === 40pin GPIO 口测试 === <ol style="list-style-type: decimal;"> <li><p>首先点击wiringOP图标打开wiringOP APP</p> <p>[[File:plus5-964.png]]</p></li> <li><p>wiringOP APP的主界面显示如下图所示,然后点击'''GPIO_TEST'''按钮打开GPIO测试界面</p> <p>[[File:plus5-965.png]]</p></li> <li><p>GPIO测试界面如下图所示,左边的两排'''CheckBox'''按钮跟26pin引脚是一一对应的关系。当勾选'''CheckBox'''按钮时,对应的GPIO引脚会被设置为'''OUT'''模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的'''GPIO READALL'''按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息。</p> <p>[[File:plus5-966.png]]</p></li> <li><p>然后点击'''GPIO READALL'''按钮,输出信息如下图所示:</p> <p>[[File:plus5-967.png]]</p></li> <li><p>开发板40pin中总共有28个GPIO口可以使用,下面以11号引脚——对应GPIO为GPIO1_A4 ——对应wPi序号为5——为例演示如何设置GPIO口的高低电平。首先点击11号引脚对应的'''CheckBox'''按钮,当按钮为选中状态时,11号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''3.3v''',说明设置高电平成功</p> <p>[[File:plus5-968.png]]</p></li> <li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为'''OUT''',引脚电平为高电平</p> <p>[[File:plus5-969.png]]</p></li> <li><p>再次点击下图的'''CheckBox'''按钮取消勾选状态,11号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''0v''',说明设置低电平成功</p> <p>[[File:plus5-970.png]]</p></li> <li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的11号引脚模式为OUT,引脚电平为低电平</p> <p>[[File:plus5-971.png]]</p></li></ol> <span id="pin的uart测试-3"></span> === 40pin的UART测试 === <ol style="list-style-type: decimal;"> <li><p>Android中默认打开了'''UART3'''和'''UART8''',在40pin的位置如下图所示,对应的设备节点分别是'''/dev/ttyS3'''和'''/dev/ttyS8'''</p> <p>[[File:plus5-972.png]]</p></li> <li><p>首先点击wiringOP图标打开wiringOP APP</p> <p>[[File:plus5-973.png]]</p></li> <li><p>wiringOP APP的主界面显示如下图所示,然后点击'''UART_TEST'''按钮打开UART测试界面</p> <p>[[File:plus5-974.png]]</p></li> <li><p>APP的串口测试界面如下图所示</p></li> [[File:plus5-975.png]] </ol> <ol start="5" style="list-style-type: decimal;"> <li>下面以测试'''UART3'''为例,在选择框中选择'''/dev/ttyS3'''节点,在编辑框中输入想要设置的波特率,然后点击'''OPEN'''按钮打开'''/dev/ttyS3'''节点,打开成功后,'''OPEN'''按钮变为不可选中状态,'''CLOSE'''按钮和'''SEND'''按钮变为可选中状态</li> [[File:plus5-976.png]] </ol> <ol start="6" style="list-style-type: decimal;"> <li><p>然后使用杜邦线短接uart3的RXD和TXD引脚</p> <p>[[File:plus5-977.png]]</p></li> <li><p>然后可以在下面的发送编辑框中输入一段字符,点击'''SEND'''按钮开始发送</p></li> [[File:plus5-978.png]] </ol> <ol start="8" style="list-style-type: decimal;"> <li>如果一切正常,接收框内会显示已接收到的字符串</li> [[File:plus5-979.png]] </ol> <span id="pin的spi测试"></span> === 26pin的SPI测试 === <ol style="list-style-type: decimal;"> <li><p>由下表可知,Orange Pi 5 Plus可用的SPI为SPI0和SPI4</p> <p>[[File:plus-5-479.png]]</p></li> <li><p>Android系统默认打开的是SPI0的配置,这里演示下通过w25q64模块来测试SPI0接口,首先在SPI0接口接入w25q64设备</p> <p>[[File:plus5-981.png]]</p></li> <li><p>然后点击wiringOP图标打开wiringOP APP</p> <p>[[File:plus5-982.png]]</p></li> <li><p>wiringOP APP的主界面显示如下图所示,点击'''SPI_TEST'''按钮打开SPI的测试界面</p> <p>[[File:plus5-983.png]]</p></li> <li><p>然后点击'''OPEN'''按钮初始化SPI</p></li> [[File:plus5-984.png]] </ol> <ol start="6" style="list-style-type: decimal;"> <li><p>然后填充需要发送的字节,比如读取w25q64的ID信息,在data[0]中填入地址0x9f,然后点击'''TRANSFER'''按钮</p> <p>[[File:plus5-985.png]]</p></li> <li><p>最后APP会显示读取到的ID信息</p></li> [[File:plus5-986.png]] </ol> <ol start="8" style="list-style-type: decimal;"> <li><p>w25q64模块的MANUFACTURER ID为EFh,Device ID为4017h,跟上面读取到的值是对应的(h代表是16进制)</p> <p>[[File:plus5-987.png]]</p></li></ol> <span id="pin的pwm测试"></span> === 26pin的PWM测试 === <ol style="list-style-type: decimal;"> <li><p>Android默认开启了'''PWM10'''和'''PWM14''',对应的引脚在40pin的所在位置如下图所示:</p> <p>[[File:plus-5-988.png]]</p></li> <li><p>首先点击wiringOP图标打开wiringOP APP</p> <p>[[File:plus-5-989.png]]</p></li> <li><p>然后在wiringOP的主界面点击'''PWM_TEST'''按钮进入PWM的测试界面</p> <p>[[File:plus-5-990.png]]</p></li> <li><p>PWM10对应的基地址是'''febe0020''',PWM14对应的基地址是'''febf0020''',这里pwmchip0右边显示是'''fd8b0020.pwm''',这时需要点击下拉选项选择其它的pwmchip,直到右边显示'''febe0020'''或者'''febf0020'''为止。</p> <p>[[File:plus-5-991.png]]</p></li> <li><p>当下拉选项菜单选择'''pwmchip2'''时,右边对应的就是'''PWM10'''的基地址'''febe0020'''</p> <p>[[File:plus-5-992.png]]</p></li> <li><p>当下拉选项菜单选择'''pwmchip4'''时,右边对应的就是'''PWM14'''的基地址'''febe0020'''</p> <p>[[File:plus-5-993.png]]</p></li> <li><p>以测试PWM10为例,我们需要选择'''pwmchip2'''</p> <p>[[File:plus-5-994.png]]</p></li> <li><p>然后确认PWM的周期,默认的配置是'''50000ns''',转换为PWM频率是'''20KHz''',可自行修改,点击开启按钮导出'''PWM10'''</p> <p>[[File:plus-5-995.png]]</p></li> <li><p>然后拖动下面的拖动条,就可以改变PWM的占空比,然后勾选Enable就可以输出PWM波形了</p></li> [[File:plus-5-996.png]] </ol> <ol start="10" style="list-style-type: decimal;"> <li>然后使用示波器测量开发板40pin中的第31号引脚就可以看到下面的波形了</li> [[File:plus-5-997.png]] </ol> <span id="adb的使用方法-1"></span> == ADB的使用方法 == === 使用数据线连接adb调试 === <ol start="1" style="list-style-type: decimal;"> <li><p>首先准备一根品质良好的Type-C数据线</p> <p>[[File:plus-5-17.png]]</p></li> <li><p>然后通过Type-C数据线连接好开发板与Ubuntu PC,开发板Type-C接口的位置如下图所示:</p> <p>[[File:plus-5-51.png]]</p></li> <li><p>然后在Ubuntu PC上安装adb工具</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt update'''</p> <p>test@test:~$ '''sudo apt -y install adb'''</p> |} </li> <li><p>通过下面的命令可以查看识别到的ADB设备</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''adb devices'''</p> <p>List of devices attached</p> <p>S63QCF54CJ device</p> <p>test@test:~$ '''lsusb'''</p> <p>Bus 003 Device 006: ID 2207:0006</p> |} </li> <li><p>然后在Ubuntu PC上通过adb shell就可以登录到android系统了</p></li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb shell''' console:/ $ |} </ol> <ol start="6" style="list-style-type: decimal;"> <li>执行下面的命令可以重新挂载Android系统</li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb root''' test@test:~$ '''adb remount''' |} </ol> <ol start="7" style="list-style-type: decimal;"> <li>然后就可以传输文件到Android系统了</li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb push example.txt /system/''' |}</ol> === 使用网络连接adb调试 === {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''使用网络adb无需Typc-C接口的数据线来连接电脑和开发板,而是通过网络来通信,所以首先请确保开发板的有线或者无线网络已经连接好了,然后获取开发板的IP地址,后面要用到。'''</big> |} <ol style="list-style-type: decimal;"> <li><p>确保Android系统的'''service.adb.tcp.port'''设置为5555端口号</p> {| class="wikitable" style="width:800px;" |- | <p>console:/ # '''getprop | grep "adb.tcp"'''</p> <p>[service.adb.tcp.port]: ['''5555''']</p> |} </li> <li><p>如果'''service.adb.tcp.port'''没有设置,可以使用下面的命令设置网络adb的端口号</p></li> {| class="wikitable" style="width:800px;" |- | console:/ # '''setprop service.adb.tcp.port 5555''' console:/ # '''stop adbd''' console:/ # '''start adbd''' |} </ol> <ol start="3" style="list-style-type: decimal;"> <li><p>在Ubuntu PC上安装adb工具</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt update'''</p> <p>test@test:~$ '''sudo apt install -y adb'''</p> |} </li> <li><p>然后在Ubuntu PC上连接网络adb</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''adb connect 192.168.1.xxx''' '''(IP地址需要修改为开发板的IP地址)'''</p> <p>* daemon not running; starting now at tcp:5037</p> <p>* daemon started successfully</p> <p>connected to 192.168.1.xxx:5555</p> <p>test@test:~$ '''adb devices'''</p> <p>List of devices attached</p> <p>192.168.1.xxx:5555 device</p> |} </li> <li><p>然后在Ubuntu PC上通过adb shell就可以登录到android系统</p></li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''adb shell''' console:/ # |} </ol> <span id="android-box测试过的2.4g-usb遥控器"></span> == Android Box测试过的2.4G USB遥控器 == <ol style="list-style-type: decimal;"> <li><p>目前测试过的一款2.4G USB遥控器如下图所示</p> <ol style="list-style-type: lower-alpha;"> <li><p>包含一个遥控器</p> <p>[[File:plus-5-1000.png]]</p></li> <li><p>一个USB无线接收器</p> <p>[[File:plus-5-1001.png]]</p></li></ol> </li> <li><p>Android Box系统无需任何配置,插上就可以用了</p></li></ol> <span id="android-box系统红外遥控器的使用方法"></span> == Android Box系统红外遥控器的使用方法 == <ol start="1" style="list-style-type: decimal;"> <li><p>开发板自带有红外接收器,其所在位置如下图所示:</p> <p>[[File:plus-5-1002.png]]</p></li> <li><p>测试红外接收前我们需要准备一个红外遥控器</p> <div class="figure"> [[File:plus-5-1003.png]] </div> {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big><p>'''<span style="color:#FF0000">注意:香橙派提供的Android系统默认只支持香橙派提供的遥控器,电视或者空调的遥控器是不能用的。</span>'''</p></big> |} </li> <li><p>Android Box系统已经适配了这款遥控器,直接就可以使用了,无需其它的设置。</p></li></ol> <span id="android-box系统hdmi-cec功能的使用方法"></span> == Android Box系统HDMI CEC功能的使用方法 == {| class="wikitable" style="background-color:#ffffdc;width:800px;" |- | <big>'''<span style="color:#FF0000">HDMI CEC允许用户只用一个遥控器,就能通过HDMI控制所有连接的设备,基于这个功能,我们用电视机的遥控器就可以控制开发板。</span>''' '''<span style="color:#FF0000">测试此功能前,请确保您的电视机是支持HDMI CEC的。</span>'''</big> |} <ol style="list-style-type: decimal;"> <li><p>首先将开发板通过HDMI线连接到电视,然后上电启动</p></li> <li><p>然后在电视的设置中开启HDMI CEC功能,不同电视开启方式可能有差异,这里以小米电视为例,按下遥控器的菜单键,然后选中CEC遥控并按下确认键</p> <p>[[File:plus5-1004.png]]</p></li> <li><p>然后选择'''“开”'''就可以打开HDMI CEC遥控</p> <p>[[File:plus5-1005.png]]</p></li> <li><p>此时就可以通过电视的遥控器控制开发板的Android Box系统了</p></li></ol> <span id="android-12源码的编译方法"></span> = '''Android 12源码的编译方法''' = <span id="下载android-12的源码"></span> == 下载Android 12的源码 == <ol style="list-style-type: decimal;"> <li><p>首先从百度云盘或者谷歌网盘下载Android 12源码的分卷压缩包</p> <ol style="list-style-type: lower-alpha;"> <li><p>百度云盘</p> <p>[[File:plus-5-1006.png]]</p></li> <li><p>谷歌网盘</p> <p>[[File:plus-5-1007.png]]</p></li></ol> </li> <li><p>Android 12源码的分卷压缩包下载完后,请先检查下MD5校验和是否正确,如果不正确,请重新下载源码</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''md5sum -c Android_12.tar.gz.md5sum'''</p> <p style="color:#FF0000">'''Android_12.tar.gz00: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz01: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz02: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz03: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz04: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz05: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz06: 确定'''</p> <p style="color:#FF0000">'''Android_12.tar.gz07: 确定'''</p> |} </li> <li><p>然后需要将多个压缩文件合并成一个,再进行解压</p></li> {| class="wikitable" style="width:800px;" |- | test@test:~$ '''cat Android_12.tar.gz0* > Android_12.tar.gz''' test@test:~$ '''tar -xvf Android_12.tar.gz''' |} </ol> <span id="编译android-12的源码"></span> == 编译Android 12的源码 == <ol style="list-style-type: decimal;"> <li><p>首先安装编译Android12源码需要的软件包</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''sudo apt-get update'''</p> <p>test@test:~$ '''sudo apt-get install -y git gnupg flex bison gperf build-essential \'''</p> <p>'''zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \'''</p> <p>'''lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache \'''</p> <p>'''libgl1-mesa-dev libxml2-utils xsltproc unzip'''</p> <p>test@test:~$ '''sudo apt-get install -y u-boot-tools'''</p></li> |} <li><p>源码中有build.sh编译脚本,编译参数如下</p> <ol style="list-style-type: lower-alpha;"> <li><p>-'''U''':编译uboot</p></li> <li><p>-'''K''':编译kernel</p></li> <li><p>-'''A''':编译android</p></li> <li><p>-'''u''':打包生成update.img与update_spi_nvme.img</p></li> <li><p>-'''o''':编译OTA包</p></li> <li><p>-'''d''':指定kernel dts</p></li></ol> </li> <li><p>编译uboot、kernel、android并打包成update.img</p> <ol style="list-style-type: lower-alpha;"> <li><p>编译支持HDMI 8K显示镜像(默认关闭LCD)的命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''cd Android_12'''</p> <p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p> <p>test@test:~/ Android_12$ '''lunch rk3588_s-userdebug'''</p> <p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p></li> |} <li><p>编译支持LCD显示镜像的命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''cd Android_12'''</p> <p>test@test:~/ Android_12$ '''export DUAL_LCD=true'''</p> <p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p> <p>test@test:~/ Android_12$ '''lunch rk3588_s-userdebug'''</p> <p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p> |} </li> <li><p>编译Box版本的镜像的命令如下所示:</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~$ '''cd Android_12'''</p> <p>test@test:~/ Android_12$ '''export BOARD=orangepi5plus'''</p> <p>test@test:~/ Android_12$ '''source build/envsetup.sh'''</p> <p>test@test:~/ Android_12$ '''lunch rk3588_box-userdebug'''</p> <p>test@test:~/ Android_12$ '''./build.sh -AUKu'''</p> |} </li></ol> </li> <li><p>编译完成后会打印下面的信息</p> {| class="wikitable" style="width:800px;" |- | <p>********rkImageMaker ver 2.1********</p> <p>Generating new image, please wait...</p> <p>Writing head info...</p> <p>Writing boot file...</p> <p>Writing firmware...</p> <p>Generating MD5 data...</p> <p>MD5 data generated successfully!</p> <p>New image generated successfully!</p> <p>Making update.img OK.</p> <p>Make update image ok!</p> |} </li> <li><p>最终生成的镜像文件会放在'''rockdev/Image-rk3588_s'''目录下。其中'''update.img'''是支持TF卡和eMMC启动镜像,'''update_spi_nvme.img'''是NVME SSD启动镜像</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/Android_12$ '''cd rockdev/Image-rk3588s_s'''</p> <p>test@test:~/Android_12/rockdev/Image-rk3588s_s $ '''ls update*'''</p> <p>update.img update_spi_nvme.img</p> |} </li> <li><p>如果编译的是Box版本的镜像,最终生成的镜像文件会放在'''rockdev/Image-rk3588_box'''目录下</p> {| class="wikitable" style="width:800px;" |- | <p>test@test:~/Android_12$ '''cd rockdev/Image-rk3588_box'''</p> <p>test@test:~/Android_12/rockdev/Image-rk3588_box$ '''ls update*'''</p> <p>update.img update_spi_nvme.img</p> |} </li></ol> <span id="orange-pi-os-droid-系统的使用说明"></span> = '''Orange Pi OS Droid 系统的使用说明''' = <span id="opi-os-droid系统的功能适配情况"></span> == OPi OS Droid系统的功能适配情况 == {| class="wikitable" style="width:800px;" |- | style="text-align: left;"| '''功能''' | style="text-align: left;"| '''OPi OS Droid功能适配情况''' |- | style="text-align: left;"| '''HDMI TX1显示''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX1音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2显示''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI TX2音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX显示''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''HDMI RX音频''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB2.0X2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口X2''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''2.5G PCIe网口灯''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''调试串口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTC''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''FAN风扇接口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''eMMC扩展接口''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AP6275P-BT''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''AX200-WIFI''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''AX200-BT''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''AX210-WIFI''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''AX210-BT''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''RTL8852BE-WIFI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''RTL8852BE-BT''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Recovery按键''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口USB3.0功能''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口ADB功能''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口DP显示功能''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''Type-C接口DP音频播放''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''USB3.0 Hub''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''开关机按键''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''红外功能''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''LED灯''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''板载MIC''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机播放''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''耳机录音''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPK喇叭''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN GPIO''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN I2C''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN SPI''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN UART''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''40PIN PWM''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''TF卡启动''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''SPI Flash+NVME固态启动''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13850摄像头''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''OV13855摄像头''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''GPU''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''VPU''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''NPU''' | style="text-align: left;"| '''OK''' |- | style="text-align: left;"| '''MIPI LCD''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |- | style="text-align: left;"| '''HDMI CEC''' | style="text-align: left;"| '''<span style="color:#FF0000">NO</span>''' |} <span id="hdmi-in的测试方法-3"></span> == HDMI In的测试方法 == <ol style="list-style-type: decimal;"> <li><p>开发板HDMI In接口的所在位置如下所示:</p> <p>[[File:plus-5-432.png]]</p></li> <li><p>然后使用下图所示的HDMI转HDMI线将其它设备的HDMI输出接到开发板的HDMI In接口上</p> <p>[[File:plus-5-7.png]]</p></li> <li><p>确保连接到HDMI In接口的设备的HDMI输出是正常的,然后打开HDMI In测试APP</p> <p>[[File:plus-5-1010.png]]</p></li> <li><p>然后会出现如下图所示的窗口,这时是看不到HDMI In的视频输入的,需要点击下图红框标记的位置放大为全屏</p> <p>[[File:plus-5-1011.png]]</p></li> <li><p>然后就可以看到HDMI In的视频输入了,同时HDMI In的音频输入也会从开发板的HDMI TX接口或者耳机接口输出。下图显示的是通过HDMI In输入的OPi5开发板Linux系统的桌面。</p> <p>[[File:plus-5-1012.png]]</p></li></ol> = '''附录''' = == 用户手册更新历史 == {| class="wikitable" style="width:800px;" |- ! 版本 !! 日期 !! 更新说明 |- | v1.0 | 2023-05-22 | 初始版本 |- | v1.1 | 2023-05-24 | 1. Android Box系统红外遥控器的使用方法 2. Orange Pi OS Droid 系统的使用说明 |- | v1.2 | 2023-05-26 | 1. Ubuntu/Debian:HDMI IN的测试方法 2. 删除RTL8821CU USB WIFI模块的使用说明,不推荐使用此模块 |- | v1.3 | 2023-05-29 | 1. 更新使用RKDevTool烧录镜像到SPIFlash+SSD中的方法 2. 使用RKDevTool清空SPIFlash的方法 |- | v1.4 | 2023-05-31 | 1. 更新M.2 E-Key PCIe WIFI6+蓝牙模块的使用方法 2. Ubuntu/Debian:ZFS文件系统的使用方法 3. Ubuntu/Debian:开机默认关闭绿灯和蓝灯的方法 4. 添加Debian12系统的使用说明(分散在多个小节中) 5. 使用开发板40pin接口中的5v引脚供电说明 |- | v1.5 | 2023-06-07 | 1. 添加eMMC模块的图片 2. 更正散热风扇接口的图片 3. 添加查看nvme ssd温度的方法 |} == 镜像更新历史 == {| class="wikitable" |- | '''日期''' | '''更新说明''' |- | 2023-05-19 | Orangepi5plus_1.0.0_debian_bullseye_server_linux5.10.110.7z Orangepi5plus_1.0.0_debian_bullseye_desktop_xfce_linux5.10.110.7z Orangepi5plus_1.0.0_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z Orangepi5plus_1.0.0_ubuntu_focal_server_linux5.10.110.7z Orangepi5plus_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.110.7z Orangepi5plus_1.0.0_ubuntu_jammy_server_linux5.10.110.7z Orangepi5plus_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.110.7z Orangepi5plus_1.0.0_ubuntu_jammy_desktop_gnome_linux5.10.110.7z Opios-droid-aarch64-opi5plus-23.05-linux5.10.110.tar.gz Opios-droid-aarch64-opi5plus-23.05-linux5.10.110-spi-nvme.tar.gz OrangePi5Plus_RK3588_Android12_v1.0.0.tar.gz OrangePi5Plus_RK3588_Android12_lcd_v1.0.0.tar.gz OrangePi5Plus-RK3588_Android12-box_v1.0.0.tar.gz OrangePi5Plus_RK3588_Android12_spi-nvme_v1.0.0.tar.gz OrangePi5Plus_RK3588_Android12_spi-nvme_lcd_v1.0.0.tar.gz OrangePi5Plus-RK3588_Android12-box_spi-nvme_v1.0.0.tar.gz openwrt-aarch64-opi5plus-23.05-linux5.10.110-ext4.img.gz * 初始版本 |- | 2023-05-22 | Opios-arch-aarch64-gnome-opi5plus-23.05-linux5.10.110.img.xz openwrt-rockchip -armv8-xunlong_orangepi-5-plus-spi-squashfs-sysupgrade.bin * 初始版本 |- | 2023-05-24 | Orangepi5plus_1.0.2_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z * 修复桌面音频无法使用的问题 * 更新chromium浏览器为chromium-brow ser_110.0,支持h264、h265、vp8、vp9和av1格式的视频硬解播放 |- | 2023-05-26 | Opios-arch-aarch64-gnome-opi5plus-23.05.1-linux5.10.110.img.xz * 任务栏:去掉日历和音乐,添加命令行终端和浏览器的快捷方式 * 支持通过CTRL+ALT+T快捷键打开命令行终端 OrangePi5Plus_RK3588_Android12_v1.0.1.tar.gz OrangePi5Plus_RK3588_Android12_v1.0.1_lcd.tar.gz OrangePi5Plus_RK3588_Android12_v1.0.1_spi-nvme.tar.gz OrangePi5Plus_RK3588_Android12_v1.0.1_lcd_spi-nvme.tar.gz * 预装google play store Orangepi5plus_1.0.4_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z * 支持CTRL+ALT+T快捷方式打开命令行终端<br /> * 任务栏新增konsole终端和chromium浏览器的快捷方式<br /> * 优化音频设备显示的名字<br /> * 优化test_hdmiin.sh测试脚本<br /> * 修复spiflash+nvme ssd无法启动的问题 Orangepi5plus_1.0.4_debian_bullseye_desktop_xfce_linux5.10.110.7z * 支持CTRL+ALT+T快捷方式打开命令行终端<br /> * 优化音频设备显示的名字<br /> * 优化test_hdmiin.sh测试脚本<br /> * 更新chromium浏览器为chromium-brows er_110.0,支持h264、h265、vp8、vp9和av1格式的视频硬解播放<br /> * 修复spiflash+nvme ssd无法启动的问题 Orangepi5plus_1.0.4_ubuntu_focal_desktop_xfce_linux5.10.110.7z<br /> Orangepi5plus_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.110.7z<br /> Orangepi5plus_1.0.4_ubuntu_jammy_desktop_gnome_linux5.10.110.7z * 支持CTRL+ALT+T快捷方式打开命令行终端<br /> * 优化音频设备显示的名字<br /> * 优化test_hdmiin.sh测试脚本<br /> * 修复spiflash+nvme ssd无法启动的问题 Orangepi5plus_1.0.4_debian_bullseye_server_linux5.10.110.7z<br /> Orangepi5plus_1.0.4_ubuntu_focal_server_linux5.10.110.7z<br /> Orangepi5plus_1.0.4_ubuntu_jammy_server_linux5.10.110.7z * 修复spiflash+nvme ssd无法启动的问题 |- | 2023-05-29 | Opios-droid-aarch64-opi5plus-23.05.1-linux5.10.110-en.tar.gz Opios-droid-aarch64-opi5plus-23.05.1-linux5.10.110-en-spi-nvme.tar.gz * 预装google play store (上面镜像名中的en表示英文版,需要去谷歌网盘下载) |- | 2023-06-01 | Orangepi5plus_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.7z * 修复zfs文件系统无法安装的问题 * 增加rk3588-opi5plus-disable-leds.dtbo,用于关闭蓝灯和绿灯 * 更新chromium浏览器为chromium-browser_110.0,支持h264、h265、vp8、vp9和av1格式的视频硬解播放 Orangepi5plus_1.0.6_debian_bullseye_desktop_xfce_linux5.10.110.7z Orangepi5plus_1.0.6_debian_bullseye_desktop_kde-plasma_linux5.10.110.7z * 更新mpp包 * 修复zfs文件系统无法安装的问题 * 增加rk3588-opi5plus-disable-leds.dtbo,用于关闭蓝灯和绿灯 Orangepi5plus_1.0.6_ubuntu_focal_desktop_xfce_linux5.10.110.7z Orangepi5plus_1.0.6_ubuntu_jammy_desktop_gnome_linux5.10.110.7z Orangepi5plus_1.0.6_ubuntu_focal_server_linux5.10.110.7z Orangepi5plus_1.0.6_debian_bullseye_server_linux5.10.110.7z Orangepi5plus_1.0.6_ubuntu_jammy_server_linux5.10.110.7z * 增加rk3588-opi5plus-disable-leds.dtbo,用于关闭蓝灯和绿灯 * 修复zfs文件系统无法安装的问题 Orangepi5plus_1.0.6_debian_bookworm_server_linux5.10.110 Orangepi5plus_1.0.6_debian_bookworm_desktop_xfce_linux5.10.110 * 初始版本 |}
返回至
Orange Pi 5 Plus
。