8,460
个编辑
更改
→Orange Pi 3B的接口详情图
<span id="orange-pi-3b的硬件特性"></span>
== Orange Pi 3B的硬件特性 3B的硬件规格 ==
{| class="wikitable" style="width:800px;text-align: center;"
<div class="figure">
[[File:pi3b-img3-1.png|800px]]
</div>
<div class="figure">
[[File:pi3b-img4-1.png|800px]]
</div>
</div>
[[File:pi3b-img6-1.png|800px]]
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''四个定位孔的直径都是3四个定位孔的直径都是2.0mm,M7mm,M.2 PICE设备固定孔直径为3PICE设备固定孔直径为2.5mm。9mm。'''</big>
|}
<big><p>'''开发板上的风扇可以通过PWM来调节转速和开关。'''</p></big>
|}
<p>[[File:pi3b-img14-1.png]]</p></li>
<li><p>百兆或者千兆网线,用于将开发板连接到因特网</p>
<p>[[File:pi3b-img15.png]]</p></li>
|}
::[[File:pi3b-img19-1.png]]
<ol start="2" style="list-style-type: decimal;">
<p>'''http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html'''</p>
|}
<p>[[File:pi3b-img20-1.png]]</p></li>
<li><p>资料主要包含</p>
<ol style="list-style-type: lower-alpha;">
</div></li>
<li><p>还需要准备一张16GB或更大容量的TF卡,TF卡的传输速度必须为'''class10'''级或'''class10'''级以上,建议使用闪迪等品牌的TF卡</p></li>
<li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和'''MiniLoader'''以及烧录工具'''RKDevTool_Release_v3.15.zip'''</p>
<ol style="list-style-type: lower-alpha;">
<li><p>确保TF卡插槽没有插入TF卡</p></li>
<li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p>
<p>[[File:pi3b-img38-1.png]]</p></li>
<li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p>
<p>[[File:pi3b-img39-1.png]]</p></li>
<li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p>
<p>[[File:pi3b-img40.png]]</p></li>
<li><p>然后选择'''导入配置'''选项</p>
<p>[[File:pi3b-img43.png]]</p></li>
<li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk3588_linux_tfcardrk356x_linux_tfcard.cfg'''配置文件,再点击'''打开'''</p><p>[[File:pi3b-img44-2.png]]</p></li>
<li><p>然后点击'''确定'''</p>
<p>[[File:pi3b-img45.png]]</p></li>
<li><p>然后点击下图所示的位置</p>
<p>[[File:pi3b-img46.png]]</p></li>
<li><p>再选择前面下载的'''MiniLoader'''文件夹中'''rk3566_MiniLoaderAllMiniLoaderAll.bin''',再点击'''打开'''</p>
<div class="figure">
[[File:pi3b-img47-1.png]]
</div></li>
<li><p>确保开发板没有插入TF卡,没有连接电源</p></li>
<li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p>
<p>[[File:pi3b-img38-1.png]]</p></li>
<li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p>
<p>[[File:pi3b-img39-1.png]]</p></li>
<li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p>
<p>[[File:pi3b-img40.png]]</p></li>
<li><p>然后选择'''导入配置'''选项</p>
<p>[[File:pi3b-img43.png]]</p></li>
<li><p>然后选择前面下载的'''MiniLoader'''文件夹中的'''rk3588_linux_emmcrk356x_linux_emmc.cfg'''配置文件,再点击'''打开'''</p><p>[[File:pi3b-img66-1.png]]</p></li>
<li><p>然后点击'''确定'''</p>
<p>[[File:pi3b-img67.png]]</p></li>
<li><p>然后点击下图所示的位置</p>
<p>[[File:pi3b-img68.png]]</p></li>
<li><p>再选择前面下载的'''MiniLoader'''文件夹中'''rk3566_MiniLoaderAllMiniLoaderAll.bin''',再点击'''打开'''</p>
<div class="figure">
[[File:pi3b-img69-1.png]]
</div></li>
<p>[[File:pi3b-img76.png]]</p></li>
<li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p>
<p>[[File:pi3b-img77-1.png]]</p></li>
<li><p>然后需要准备一根品质良好的USB2.0公对公数据线</p>
<div class="figure">
<li><p>确保开发板没有连接电源和插入TF卡以及eMMC</p></li>
<li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p>
<p>[[File:pi3b-img38-1.png]]</p></li>
<li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p>
<p>[[File:pi3b-img39-1.png]]</p></li>
<li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p>
<p>[[File:pi3b-img40.png]]</p></li>
<p>[[File:pi3b-img76.png]]</p></li>
<li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p>
<p>[[File:pi3b-img77-1.png]]</p></li>
<li><p>烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见[[Orange Pi 3B#基于Windows PC将Linux镜像烧写到TF卡的方法|'''基于Windows PC将Linux镜像烧写到TF卡的方法''']]和[[Orange Pi 3B#基于Ubuntu PC将Linux镜像烧写到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧写到TF卡的方法''']]两小节的说明。</p></li>
<li><p>使用TF卡启动Linux系统后,我们首先烧录u-boot镜像到SPI Flash中</p>
<p>[[File:pi3b-img76.png]]</p></li>
<li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p>
<p>[[File:pi3b-img77-1.png]]</p></li>
<li><p>烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见[[Orange Pi 3B#基于Windows PC将Linux镜像烧写到TF卡的方法|'''基于Windows PC将Linux镜像烧写到TF卡的方法''']]和[[Orange Pi 3B#基于Ubuntu PC将Linux镜像烧写到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧写到TF卡的方法''']]两小节的说明。</p></li>
<li><p>启动进入TF卡中的Linux系统后,请先确认下NVMe SSD已经被开发板的Linux正常识别了。如果NVMe SSD正常识别了的话,使用'''sudo fdisk -l'''命令就能看到'''nvme'''相关的信息</p>
</div></li>
<li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi的资料下载页面''']下载瑞芯微驱动'''DriverAssitant_v5.12.zip'''和烧录工具'''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-3B.html '''Orange Pi的资料下载页面''']首先选择'''官方工具''',然后进入下面的文件夹中</p><p>[[File:pi3b-img126-2.png]]</p></li><li><p>然后下载下面的所有文件</p><p>[[File:pi3b-img127-2.png]]</p></li></li></ol>
<li><p>然后从[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html '''Orange Pi的资料下载页面''']下载Android的镜像。</p>
<ol style="list-style-type: lower-alpha;">
<li><p>然后确保开发板没有插入TF卡,没有连接电源</p></li>
<li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p>
<p>[[File:pi3b-img38-1.png]]</p></li>
<li><p>然后给开发板接上Type-C接口的电源,并上电</p>
<p>[[File:pi3b-img39-1.png]]</p></li>
<li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p>
<p>[[File:pi3b-img40.png]]</p></li>
<p>[[File:pi3b-img76.png]]</p></li>
<li><p>SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p>
<p>[[File:pi3b-img77-1.png]]</p></li>
<li><p>还需要准备一根品质良好的USB2.0公对公数据线</p>
<div class="figure">
<li><p>确保开发板没有插入TF卡,没有连接电源</p></li>
<li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p>
<p>[[File:pi3b-img38-1.png]]</p></li>
<li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p>
<p>[[File:pi3b-img39-1.png]]</p></li>
<li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p>
<p>[[File:pi3b-img40.png]]</p></li>
<ol style="list-style-type: decimal;">
<li><p>SPI Flash在开发板上的位置如下图所示</p>
<p>[[File:pi3b-img77-1.png]]</p></li>
<li><p>首先需要准备一根品质良好的USB2.0公对公数据线</p>
<div class="figure">
<li><p>确保开发板没有插入TF卡,没有连接电源</p></li>
<li><p>然后按住开发板的MaskROM按键不放,MaskROM按键在开发板的位置如下图所示:</p>
<p>[[File:pi3b-img38-1.png]]</p></li>
<li><p>然后给开发板接上Type-C接口的电源,并上电,然后就可以松开MaskROM按键了</p>
<p>[[File:pi3b-img39-1.png]]</p></li>
<li><p>如果前面的步骤顺利,此时开发板会进入'''MASKROM'''模式,在烧录工具的界面上会提示”'''发现一个MASKROM设备'''”</p>
<p>[[File:pi3b-img40.png]]</p></li>
# 将烧录好镜像的TF卡插入香橙派开发板的TF卡插槽中。如果SPIFlash+NVMe SSD已经烧录好镜像了,那么就不需要插入TF卡了,只需确保NVMe SSD正常插入到开发板中即可。
# 开发板有HDMI接口,可以通过HDMI转HDMI连接线把开发板连接到电视或者HDMI显示器。如果有购买LCD屏幕,也可以使用LCD屏幕来显示开发板的系统界面。如果有Type-C转HDMI的线,也可以通过Type-C接口来显示开发板的系统界面。开发板有HDMI接口,可以通过HDMI转HDMI连接线把开发板连接到电视或者HDMI显示器。如果有购买LCD屏幕,也可以使用LCD屏幕来显示开发板的系统界面。
# 接上USB鼠标和键盘,用于控制香橙派开发板。
# 开发板有以太网口,可以插入网线用来上网。
# 连接一个5V/3A或者5V/4A的USB 3A的USB Type-C接口的'''高品质'''的电源适配。C接口的高品质的电源适配。
::{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big>'''我们推荐的开发板的供电方式是使用5V/3A或者5V/4A的Type 3A的Type C接口的电源线插到开发板的Type-C电源接口来供电的。如果需要使用40pin接口中的5V引脚来给开发板供电,请确保使用的电源线和电源适配器能满足开发板的供电需求。如果有使用不稳定的情况,请换回Type-C电源供电。'''</big>
|}
<li><p>使用40pin接口中的5V引脚来给开发板供电,电源线的接法如下所示</p>
<ol style="list-style-type: lower-alpha;">
<li><p>上图所示的电源线USB A口需要插到5V/3A或者5V4A的电源适配器接头上(3A的电源适配器接头上('''<span style="color:#FF0000">请不要插到电脑的USB接口来供电</span>''')</p></li>
<li><p>红色的杜邦线需要插到开发板40pin的5V引脚上</p></li>
<li><p>黑色的杜邦线需要插到40pin接口的GND引脚上</p></li>
|-
| '''Ubuntu 22.04 - Jammy'''
| '''Linux5.10'''
| '''支持'''
| '''支持'''
|-
| '''Debian12 - Bookworm'''
| '''Linux5.10'''
| '''支持'''
| '''功能'''
| '''Debian11'''
| '''Debian12'''
| '''Ubuntu20.04'''
| '''Ubuntu22.04'''
|-
| '''USB2.0x3'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''USB3.0x1'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''M.2 NVMe SSD启动'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''WIFI'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''蓝牙'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''GPIO(40pin)'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''UART(40pin)'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''SPI(40pin)'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''I2C(40pin)'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''PWM(40pin)'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''PWM风扇接口'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''3pin调试串口'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''EMMC'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''TF卡启动'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''HDMI 视频'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''HDMI 音频'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''Camera'''
| '''OK<span style="color:#FF0000">NO</span>'''| '''OK<span style="color:#FF0000">NO</span>'''| '''OK<span style="color:#FF0000">NO</span>'''| '''<span style="color:#FF0000">NO</span>'''
|-
| '''LCD'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''eDP显示'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''千兆网口'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''网口状态灯'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''耳机播放'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''耳机录音'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''LED灯'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''RTC'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''GPU'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''NPU'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''VPU'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''看门狗测试'''
| '''OK'''
| '''OK'''
| '''OK'''
|-
| '''Chromium硬解视频'''
| '''OK'''
| '''OK'''
| '''OK'''
<ol style="list-style-type: decimal;">
<li><p>开发板上有三个LED灯,一个绿灯,一个红灯,一个PCIe指示灯,所在位置如下图所示:</p>
<p>[[File:pi3b-img176-1.png]]</p></li>
<li><p>'''<span style="color:#FF0000">只要开发板打开了电源,红色的LED灯就会常亮,这是由硬件控制的,软件无法关闭。</span>'''</p></li>
<li><p>绿色的LED灯在内核启动后会一直闪烁,这是由软件控制的。</p></li>
|-
|
<p>root@orangepi:~# '''cd /sys/class/leds/statusstatus_led'''</p>
|}
</li>
|-
|
<p>root@orangepi:/sys/class/leds/workstatus_led# '''echo none > trigger'''</p>
|}
</li>
|-
|
<p>root@orangepi:/sys/class/leds/workstatus_led# '''echo default-on > trigger'''</p>
|}
</li>
|-
|
<p>root@orangepi:/sys/class/leds/workstatus_led# '''echo heartbeat > trigger'''</p>
|}
</li></ol>
|-
|
<p>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0''' '''(-I是大写的I不是小写的L)'''</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>orangepi@orangepi:~$ '''ping www.orangepi.org -I wlan0''' '''(-I是大写的I不是小写的L)'''</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>
<div class="figure">
[[File:pi3b-img188-1.png]]
</div></li></ol>
<li><p>然后输入下面的命令,其中</p>
<ol style="list-style-type: lower-alpha;">
<li><p>'''"Wired connection 1"''' > 表示设置以太网口的静态IP地址,如果需要设置WIFI的静态IP地址,请修改为WIFI网络接口对应的名字(通过'''nmcli > con show'''命令可以获取到)</p></li>
<li><p>'''ipv4.addresses'''后面是要设置的静态IP地址,可以修改为自己想要设置的值</p></li>
<li><p>'''ipv4.gateway''' 表示网关的地址</p>
<li><p>b) --no-banner用于去除照片的水印</p></li>
<li><p>c) -r 选项用于指定照片的分辨率</p></li>
<li><p>d) -S 选项用设置于跳过前面的帧数选项用于设置跳过前面的帧数</p></li>
<li><p>e) ./image.jpg 用于设置生成的照片的名字和路径</p>
{| class="wikitable" style="width:800px;"
<ol style="list-style-type: decimal;">
<li><p>首先将耳机插入开发板的耳机孔中</p>
<p>[[File:pi3b-img255-1.png]]</p></li>
<li><p>然后可以通过'''aplay -l'''命令可以查看下Linux系统支持的声卡设备,从下面的输出可知,'''card 0'''为rk809的声卡设备,也就是耳机的声卡设备</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''aplay -l''' '''(-I是大写的I不是小写的L)'''</p>
<p>**** List of PLAYBACK Hardware Devices ****</p>
<p>'''card 0: rockchiprk809 [rockchip-rk809], device 0: dailink-multicodecs rk817-hifi-0 [dailink-multicodecs rk817-hifi-0]'''</p>
<ol style="list-style-type: lower-alpha;">
<li><p>下面是40pin完整的引脚图</p>
<p>[[File:pi3b-img257-1.png]]</p></li>
<li><p>下面的表格是上面完整表格左半边部分的图,能看得清楚点</p>
<p>[[File:pi3b-img258-1.png]]</p></li>
<li><p>下面的表格是上面完整表格右半边部分的图,能看得清楚点</p>
<p>[[File:pi3b-img259-1.png]]</p></li></ol>
</li>
<li><p>40pin接口中总共有'''<span style="color:#FF0000">28</span>'''个GPIO口,所有GPIO口的电压都是'''<span style="color:#FF0000">3.3v</span>'''</p></li></ol>
<div class="figure">
[[File:pi3b-img260-1.png|750px|center]]
</div>
<div class="figure">
[[File:pi3b-img260-1.png]]
</div></li></ol>
<ol style="list-style-type: decimal;">
<li><p>开发板40pin中总共有'''28'''个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO4_A4 个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO4_C3 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平</p><p>[[File:pi3b-img261-1.png]]</p></li>
<li><p>首先设置GPIO口为输出模式,其中第三个参数需要输入引脚对应的wPi的序号</p>
{| class="wikitable" style="width:800px;"
|}
<p>使用gpio readall可以看到7号引脚的值(V)变为了0</p>
<p>[[File:pi3b-img262-1.png]]</p></li>
<li><p>然后设置GPIO口输出高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为3.3v,说明设置高电平成功</p>
{| class="wikitable" style="width:800px;"
|}
<p>使用gpio readall可以看到7号引脚的值(V)变为了1</p>
<p>[[File:pi3b-img263-1.png]]</p></li>
<li><p>其他引脚的设置方法类似,只需修改wPi的序号为引脚对应的序号即可</p></li></ol>
<big>'''注意,Orange Pi 3B下面4个GPIO引脚因为外部有3.3V上拉,所以设置下拉是无效的,其它的引脚可以正常设置上下拉电阻功能'''</big>
[[File:pi3b-img264-1.png|750px|center]]
|}
<ol style="list-style-type: decimal;">
<li><p>下面以11号引脚——对应GPIO为GPIO3_C6 ——对应wPi序号为5——为例演示如何设置GPIO口的上下拉电阻</p>
<p>[[File:pi3b-img265-1.png]]</p></li>
<li><p>首先需要设置GPIO口为输入模式,其中第三个参数需要输入引脚对应的wPi的序号</p>
{| class="wikitable" style="width:800px;"
<ol style="list-style-type: decimal;">
<li><p>由40pin接口的原理图可知,Orange Pi 3B可用的spi为spi3</p>
<p>[[File:pi3b-img266-1.png]]</p></li><li><p>在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>先查看下Linux系统中是否存在然后选择'''System'''</p><p>[[File:pi3b-1.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:pi3b-2.png]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的SPI的配置</p><p>[[File:pi3b-3.png]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:pi3b-4.png]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:pi3b-5.png]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:pi3b-6.png]]</p></li></ol></li><li><p>重启后进入系统先查看下Linux系统中是否存在'''spidev3.0'''的设备节点,如果存在,说明SPI3已经设置好了,可以直接使用</p>
{| class="wikitable" style="width:800px;"
|-
<ol style="list-style-type: decimal;">
<li><p>由下表可知,Orange Pi 3B可用的i2c为i2c2、i2c3和i2c4共三组 i2c总线</p>
<p>[[File:pi3b-img268-1.png]]</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
<big><p>'''从上表中可以看到,i2c4_m0和spi3_m0是引脚复用的,两者不能同时打开,i2c3_m0和uart3_m0也是引脚复用的,两者不能同时打开'''</p></big>
|}
</li><li><p>在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>然后选择'''System'''</p>
<p>[[File:pi3b-1-1.png]]</p>
</li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:pi3b-2-1.png]]</p>
</li>
<li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的I2C的配置</p>
<p>[[File:pi3b-3-1.png]]</p>
</li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:pi3b-4-1.png]]</p>
</li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:pi3b-5-1.png]]</p>
</li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:pi3b-6-1.png]]</p>
</li>
</ol>
</li>
<li><p>启动Linux系统后,先确认下/dev下存在i2c的设备节点</p>
<ol style="list-style-type: decimal;">
<li><p>由下表可知,Orange Pi 3B可用的uart为uart3、uart7和uart9共三组uart总线</p>
<p>[[File:pi3b-img270-1.png]]</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
<big><p>'''从上表中可以看到,i2c3_m0和uart3_m0是引脚复用的,两者不能同时打开'''</p></big>
|}
</li><li><p>在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>然后选择'''System'''</p>
<p>[[File:pi3b-1-2.png]]</p>
</li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:pi3b-2-2.png]]</p>
</li>
<li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的UART的配置</p>
<p>[[File:pi3b-3-2.png]]</p>
</li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:pi3b-4-2.png]]</p>
</li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:pi3b-5-2.png]]</p>
</li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:pi3b-6-2.png]]</p>
</li>
</ol>
</li>
<li><p>进入Linux系统后,先确认下/dev下是否存在对应uart的设备节点</p>
| 对应27号引脚
| 对应15号引脚
| 对应7号引脚对应22号引脚
|}
[[File:pi3b-img271-1.png]]
</ol>
<ol start="4" style="list-style-type: decimal;">
<ol style="list-style-type: decimal;">
<li><p>由下表可知,Orange Pi 3B可用的pwm113B可用的pwm11和pwm15共两路pwm</p><p>[[File:pi3b-img272-1.png]]</p></li><li><p>在linux系统中,40 pin中的PWM默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>然后选择'''System'''</p><p>[[File:pi3b-1-3.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:pi3b-2-3.png]]</p></li><li><p>然后使用键盘的方向键定位到下图所示的位置,再使用空格选中想要打开的PWM的配置</p><p>[[File:pi3b-3-3.png]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:pi3b-4-3.png]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:pi3b-5-3.png]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:pi3b-6-3.png]]</p></li></ol></li><li><p>当打开一个pwm后,在'''/sys/class/pwm/'''中就会多出一个pwmchipX(X为具体的的数字)中就会多出一个pwmchipX(X为具体的的数字),比如打开pwm11后,查看/sys/class/pwm/下的pwmchipX会由一个变成了两个</p>
{| class="wikitable" style="width:800px;"
|-
</div>
</li>
<li><p>pwm11寄存器的基地址为fe6f0030,再看 然后由下表可知,pwm11寄存器的基地址为fe6f0030,再看 '''ls /sys/class/pwm/ -l'''命令的输出,可以看到pwmchip1中链接到了fe6f0030.pwm,所以pwm11对应pwmchip为pwmchip1</p>
</li>
<li><p>然后使用下面的命令可以让pwm11输出一个50Hz的方波(请先切换到root用户,再执行下面的命令)</p></li>
[[File:pi3b-img274.png]]
<li><p>上面演示的pwm11的测试方法,其他pwm测试方法都是类似的。</p></li>
</ol>
<span id="wiringop-python的安装使用方法"></span>
<div class="figure">
[[File:pi3b-img260-1.png|center]]
</div>
<ol style="list-style-type: decimal;">
<li><p>由40pin接口的原理图可知,Orange Pi 3B可用的spi为spi3</p>
<p>[[File:pi3b-img266-1.png]]</p></li><li><p>在linux系统中,40 pin中的SPI默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>然后选择'''System'''</p>
<p>[[File:pi3b-1-4.png]]</p>
</li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:pi3b-2-4.png]]</p>
</li>
<li><p>然后使用键盘的方向键定位到下图所示的位置,再使用'''空格'''选中想要打开的SPI的配置</p>
<p>[[File:pi3b-3-4.png]]</p>
</li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:pi3b-4-4.png]]</p>
</li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:pi3b-5-4.png]]</p>
</li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:pi3b-6-4.png]]</p>
</li>
</ol>
</li>
<li><p>先查看下Linux系统中是否存在'''spidev3.0'''的设备节点,如果存在,说明SPI3已经设置好了,可以直接使用</p>
<ol start="1" style="list-style-type: decimal;">
<li><p>由下表可知,Orange Pi 3B可用的i2c为i2c2、i2c3和i2c4共三组 i2c总线</p>
<p>[[File:pi3b-img268-1.png]]</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
<big><p>'''从上表中可以看到,i2c4_m0和spi3_m0是引脚复用的,两者不能同时打开,i2c3_m0和uart3_m0也是引脚复用的,两者不能同时打开'''</p></big>
|}
</li><li><p>在linux系统中,40 pin中的I2C总线默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-
|
|}
</li>
<li><p>然后选择'''System'''</p>
<p>[[File:pi3b-1-5.png]]</p>
</li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:pi3b-2-5.png]]</p>
</li>
<li><p>然后使用键盘的方向键定位到下图所示的位置,再使用空格选中想要打开的I2C的配置</p>
<p>[[File:pi3b-3-5.png]]</p>
</li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:pi3b-4-5.png]]</p>
</li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:pi3b-5-5.png]]</p>
</li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:pi3b-6-5.png]]</p>
</li>
</ol>
</li>
<li><p>启动Linux系统后,先确认下/dev下存在i2c的设备节点</p>
<ol style="list-style-type: decimal;">
<li><p>由下表可知,Orange Pi 3B可用的uart为uart3、uart7和uart9共三组uart总线</p>
<p>[[File:pi3b-img270-1.png]]</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
<big><p>'''从上表中可以看到,i2c3_m0和uart3_m0是引脚复用的,两者不能同时打开'''</p></big>
|}
</li><li><p>在linux系统中,40 pin中的UART默认都是关闭的,需要手动打开才能使用。详细步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下'''orangepi-config''',普通用户记得加'''sudo'''权限</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>然后选择'''System'''</p>
<p>[[File:pi3b-1-6.png]]</p>
</li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:pi3b-2-6.png]]</p>
</li>
<li><p>然后使用键盘的方向键定位到下图所示的位置,再使用空格选中想要打开的UART的配置</p>
<p>[[File:pi3b-3-6.png]]</p>
</li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:pi3b-4-6.png]]</p>
</li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:pi3b-5-6.png]]</p>
</li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:pi3b-6-6.png]]</p>
</li>
</ol>
</li>
<li><p>进入Linux系统后,先确认下/dev下是否存在对应uart的设备节点</p>
| 对应27号引脚
| 对应15号引脚
| 对应7号引脚对应22号引脚
|}
</ol>
|-
|
'''https://downloads.nomachine.com/download/?id=118116&distro=ARM'''
|}
|-
|
'''https://downloads.nomachine.com/download/?id=98'''
|}
|-
|
<big>'''操作前请先确保Windwos电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。操作前请先确保Windows电脑和开发板在同一局域网内,并且能正常ssh登录开发板的Ubuntu或者Debian系统。'''
'''<span style="color:#FF0000">Ubuntu20.04测试VNC很多问题,请不要使用这种方法。</span>'''</big>
<span id="ubuntu-focal系统"></span>
=== Ubuntu Focal系统 Debian Bookworm系统 ===
<ol style="list-style-type: decimal;">
<li><p>Ubuntu Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序Debian Bookworm默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p>
<ol style="list-style-type: lower-alpha;">
<li><p>gcc的版本如下所示</p>
|-
|
|}
</li>
</li></ol>
</li>
<li><p>Ubuntu Focal默认安装有Python3Debian Bookworm默认安装有Python3</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Python3具体版本如下所示Python具体版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
|}
</li>
</li></ol>
</li>
<li><p>Ubuntu Focal默认没有安装Java的编译工具和运行环境Debian Bookworm默认没有安装Java的编译工具和运行环境</p>
<ol style="list-style-type: lower-alpha;">
<li><p>可以使用下面的命令安装openjdk可以使用下面的命令安装openjdk,Debian Bookworm中最新版本为openjdk-17</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''java --version'''</p>
|}
</li>
</li></ol>
=== Ubuntu Jammy系统 Focal系统 ===
<ol start="1" style="list-style-type: decimal;"><li><p>Ubuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序Focal默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p>
<ol style="list-style-type: lower-alpha;">
<li><p>gcc的版本如下所示</p>
|
<p>orangepi@orangepi:~$ '''gcc --version'''</p>
<p>gcc (Ubuntu 119.24.0-19ubuntu11ubuntu1~20.04.1) '''119.24.0'''</p><p>Copyright (C) 2021 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></ol>
</li>
<li><p>Ubuntu Jammy默认安装有Python3Focal默认安装有Python3</p>
<ol style="list-style-type: lower-alpha;">
<li><p>Python3具体版本如下所示</p>
|
<p>orangepi@orangepi:~$ '''python3'''</p>
<p>Python '''3.8.10.4''' (maindefault, Apr 2 Nov 14 2022, 0912:0459:1947) </p><p>[GCC 119.24.0] on linux</p>
<p>Type "help", "copyright", "credits" or "license" for more information.</p>
<p>>>></p>
</li></ol>
</li>
<li><p>Ubuntu Jammy默认没有安装Java的编译工具和运行环境Focal默认没有安装Java的编译工具和运行环境</p>
<ol style="list-style-type: lower-alpha;">
<li><p>可以使用下面的命令安装openjdk-1817</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo apt install -y openjdk-1817-jdk'''</p>
|}
</li>
|
<p>orangepi@orangepi:~$ '''java --version'''</p>
<p>openjdk 18-ea 17.0.2 2022-0301-2218</p><p>OpenJDK Runtime Environment (build 18-ea17.0.2+368-Ubuntu-1120.04)</p><p>OpenJDK 64-Bit Server VM (build 18-ea17.0.2+368-Ubuntu-1120.04, mixed mode, sharing)</p>
|}
</li>
</li></ol>
<span id="qt的安装方法ubuntu-jammy系统"></span>
== QT的安装方法 = Ubuntu Jammy系统 ===
<ol start="1" style="list-style-type: decimal;"><li><p>使用下面的脚本可以安装QT5和QT CreatorUbuntu Jammy默认安装有gcc编译工具链,可以直接在开发板的Linux系统中编译C语言的程序</p><ol style="list-style-type: lower-alpha;"><li><p>gcc的版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''install_qtgcc --version'''</p><p>gcc (Ubuntu 11.2.0-19ubuntu1) '''11.2.sh0'''</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>安装完后会自动打印QT的版本号</p><ol style="list-style-type: lower-alpha;"><li><p>Ubuntu20.04自带的qt版本为编写C语言的'''5.12hello_world.8c'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''install_qtvim hello_world.shc'''</p><p>#include <stdio......h></p> <p>QMake version 3.1int main(void)</p><p>Using Qt version '''{<span style="color/p>:#FF0000"<p>5.12.8printf("Hello World!\n");</spanp> :<p>''' in return 0;</usr/lib/aarch64-linux-gnup><p>}</p>
|}
</li>
<li><p>Ubuntu22.04自带的QT版本为然后编译运行'''5.15hello_world.3c'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''install_qtgcc -o hello_world hello_world.shc'''</p><p>orangepi@orangepi:~$ '''......</p><p>QMake version 3.1hello_world'''</p><p>Using Qt version '''<span style="color:#FF0000">5.15.3</span>''' in /usr/lib/aarch64-linux-gnuHello World!</p>
|}
</li></ol>
</li>
<li><p>Debian11自带的QT版本为'''5.15.2'''Ubuntu Jammy默认安装有Python3</p><ol style="list-style-type: lower-alpha;"><li><p>Python3具体版本如下所示</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''install_qt.shpython3'''</p><p>Python '''3.10.4''' (main, Apr 2 2022, 09:04:19) [GCC 11.2...0] on linux</p><p>QMake version 3Type "help", "copyright", "credits" or "license" for more information.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版本为编写Python语言的'''5hello_world.15.8py'''程序</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''install_qtvim hello_world.shpy'''</p><p>......</p><p>QMake version 3.1</p><p>Using Qt version '''<span style="color:#FF0000">5.15.8</span>print('Hello World!'' in /usr/lib/aarch64-linux-gnu)</p>
|}
</li>
<li><p>然后在运行'''Applicationshello_world.py'''中就可以看到QT Creator的启动图标</p><p>[[File:pi3b-img329.png]]</p><p>也可以使用下面的命令打开QT Creator的结果如下所示</p>{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''qtcreatorpython3 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="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>QT Creator打开后的界面如下所示</p><p>[[File:pi3b-img330.png]]</p></li><li><p>QT Creator的版本如下所示</p><ol style="list-style-type: lower-alpha;"><li><p>QT Creator在'''Ubuntu20.04'''中的默认版本如下所示</p><p>[[File:pi3b-img331.png]]</p></li><li><p>QT Creator在'''Ubuntu22.04'''中的默认版本如下所示</p><p>[[File:pi3b-img332.png]]</p></li><li><p>QT Creator在'''Debian11'''中的默认版本如下所示</p><p>[[File:pi3b-img333.png]]</p></li><li><p>QT Creator在'''Debian12'''中的默认版本如下所示</p><p>[[File:pi3b-img334.png]]</p></li></ol></li><li><p>然后设置下QT</p><ol style="list-style-type: lower-alpha;"><li><p>首先打开'''Help'''->'''About Plugins...'''</p><p>[[File:pi3b-img335.png]]</p></li><li><p>然后去掉'''ClangCodeModel'''的那个勾</p><p>[[File:pi3b-img336.png]]</p></li><li><p>'''<span style="color:#FF0000">设置完后需要重启下QT Creator</span>'''</p></li><li><p>然后确保QT Creator使用的GCC编译器,如果默认为Clang,请修改为GCC安装完后可以查看下Java的版本</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
|}
</li>
<li><p>然后就可以打开一个示例代码编写Java版本的'''hello_world.java'''</p><p>[[File{| class="wikitable" style="width:pi3b800px;" |-img339.png]]</p></li><li>| <p>点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明orangepi@orangepi:~$ '''vim hello_world.java'''</p><p>[[File:pi3b-img340.png]]public class hello_world</p></li><li><p>然后点击下'''Configure Project'''{</p>:<p>public static void main(String[[File:pi3b-img341.png]]args)</p></li><li>:<p>然后点击左下角的绿色三角形编译运行下示例代码{</p>::<p>[[File:pi3b-img342System.out.png]]println("Hello World!");</p></li><li>:<p>等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行}</p><p>[[File:pi3b-img343.png]]}</p>|}</li><li><p>参考资料然后编译运行'''hello_world.java'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>[httpsorangepi@orangepi://wiki.qt.io/Install_Qt_5_on_Ubuntu ~$ '''https://wikijavac hello_world.qt.io/Install_Qt_5_on_Ubuntujava''']</p><p>[httpsorangepi@orangepi://download.qt.io/archive/qtcreator ~$ '''https://download.qt.io/archive/qtcreatorjava hello_world''']</p><p>[https://download.qt.io/archive/qt '''https://download.qt.io/archive/qt''']Hello World!</p>
|}
</li></ol>
</li></ol>
<span id="ros安装方法qt的安装方法"></span>
== ROS安装方法 QT的安装方法 ==
{| class="wikitable" style="width:800px;"
|-
|
<p>[httporangepi@orangepi://wiki.ros.org/noetic/Installation/Ubuntu ~$ '''http://wiki.rosinstall_qt.org/noetic/Installation/Ubuntush''']</p>
|}
</li>
<li><p>ROS '''Noetic Ninjemys'''官方安装文档中Ubuntu推荐使用Ubuntu20.04,所以请确保开发板使用的系统为'''安装完后会自动打印QT的版本号</p><span ol style="colorlist-style-type:#FF0000lower-alpha;"><li><p>Ubuntu20.04桌面版系统</span>04自带的qt版本为'''5.12.8'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>[httporangepi@orangepi:~$ '''install_qt.sh'''<//wikip><p>.....ros.org</noeticp><p>QMake version 3.1</Installation p><p>Using Qt version '''http<span style="color://wiki#FF0000">5.ros12.org8</noetic/Installationspan>''']in /usr/lib/aarch64-linux-gnu</p>
|}
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi3borangepi:~$ '''install_rosinstall_qt.sh ros1'''</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>使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件Debian11自带的QT版本为'''5.15.2'''</p></li>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<bigp>'''<span style="colororangepi@orangepi:#FF0000">注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。</span>~$ ''' install_qt.sh'''install_ros.sh脚本会尝试修改</etc/hosts并自动运行下面的命令。但是这种方法无法保证每次都能正常访问github,如果install_rosp><p>.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'''p> '''<span style="color:#FF0000"p>ERROR: error loading sources list:QMake version 3.1</spanp>''' ::<p>Using Qt version '''<span style="color:#FF0000">The read operation timed out5.15.2</span>'''in /usr/lib/aarch64-linux-gnu</bigp>
|}
</li><li><p>Debian12自带的QT版本为'''5.15.8'''</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''source install_qt.sh'''</optp><p>......</rosp><p>QMake version 3.1</noeticp><p>Using Qt version '''<span style="color:#FF0000">5.15.8</span>''' in /usr/lib/aarch64-linux-gnu</setup.bashp>|}</li></ol></li><li><p>然后在'''Applications'''中就可以看到QT Creator的启动图标</p><p>[[File:pi3b-img329.png]]</p><p>也可以使用下面的命令打开QT Creator</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo rosdep initqtcreator'''</p>|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" Wrote /etc/ros/rosdep/sources.list.d/20|-default.list| Recommended: please run<big><p>'''在QT和QT应用的启动过程中,如果提示下面的错误,请直接忽略,此错误对应用的运行不会有影响。'''</p>
<p>'''libGL error: failed to create dri screen'''</p><p>'''libGL error:failed to load driver:rosdep updaterockchip'''</p><p>'''libGL error: failed to create dri screen'''</p>orangepi@orangepi:~$ <p>'''rosdep updatelibGL error: failed to load driver: rockchip'''</p></big>|}</li><li><p>QT Creator打开后的界面如下所示</p><p>[[File:pi3b-img330.png]]</p></li><li><p>QT Creator的版本如下所示</p>reading in sources <ol style="list data from -style-type: lower-alpha;"><li><p>QT Creator在'''Ubuntu20.04'''中的默认版本如下所示</etcp><p>[[File:pi3b-img331.png]]</rosp></rosdepli><li><p>QT Creator在'''Ubuntu22.04'''中的默认版本如下所示</sourcesp><p>[[File:pi3b-img332.listpng]]</p></li><li><p>QT Creator在'''Debian11'''中的默认版本如下所示</p><p>[[File:pi3b-img333.dpng]]</p></li><li><p>QT Creator在'''Debian12'''中的默认版本如下所示</p>Hit https<p>[[File:pi3b-img334.png]]</p></li></rawol></li><li><p>然后设置下QT</p><ol style="list-style-type: lower-alpha;"><li><p>首先打开'''Help'''->'''About Plugins..githubusercontent.com'''</rosp><p>[[File:pi3b-img335.png]]</rosdistrop></masterli><li><p>然后去掉'''ClangCodeModel'''的那个勾</rosdep/osxp><p>[[File:pi3b-homebrewimg336.yamlpng]]</p></li><li><p>'''<span style="color:#FF0000">设置完后需要重启下QT Creator</span>'''</p></li><li><p>然后确保QT Creator使用的GCC编译器,如果默认为Clang,请修改为GCC</p>Hit https{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''Debian12请跳过这步。'''</p></rawbig>|}<p>[[File:pi3b-img337.githubusercontentpng]]</p><p>[[File:pi3b-img338.compng]]</rosp></rosdistroli></masterol></rosdepli><li><p>然后就可以打开一个示例代码</basep><p>[[File:pi3b-img339.yamlpng]]</p></li><li><p>点击示例代码后会自动打开对应的说明文档,可以仔细看下其中的使用说明</p>Hit https<p>[[File:pi3b-img340.png]]</p></rawli><li><p>然后点击下'''Configure Project'''</p><p>[[File:pi3b-img341.githubusercontentpng]]</p></li><li><p>然后点击左下角的绿色三角形编译运行下示例代码</p><p>[[File:pi3b-img342.compng]]</p></rosli><li><p>等待一段时间后,会弹出下图所示的界面,此时就说明QT能正常编译运行</rosdistrop><p>[[File:pi3b-img343.png]]</masterp></rosdepli><li><p>参考资料</python.yamlp>{| class="wikitable" style="width:800px;" |-| Hit <p>[https://rawwiki.githubusercontentqt.comio/rosInstall_Qt_5_on_Ubuntu '''https:/rosdistro/masterwiki.qt.io/rosdepInstall_Qt_5_on_Ubuntu''']</ruby.yamlp> Hit <p>[https://rawdownload.githubusercontentqt.comio/rosarchive/qtcreator '''https:/rosdistro/masterdownload.qt.io/releasesarchive/fuerte.yamlqtcreator''']</p>Query rosdistro index <p>[https://rawdownload.githubusercontentqt.comio/rosarchive/rosdistroqt '''https:/master/index-v4download.qt.yamlio/archive/qt''']</p>|}Skip end-of-life distro "ardent" Skip end-of-life distro "bouncy" Skip end-of-life distro "crystal"</li></ol>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi[http:~$ //wiki.ros.org/noetic/Installation/Ubuntu '''test_roshttp://wiki.ros.shorg/noetic/Installation/Ubuntu''']</p>
|}
</li>
<li><p>运行完ROS '''Noetic Ninjemys''test_ros'官方安装文档中Ubuntu推荐使用Ubuntu20.sh04,所以请确保开发板使用的系统为'''脚本后,会弹出下图所示的一个小海龟</p><p>[[File:pi3b-img347.png]]</p></li><li><p>然后请保持刚才打开终端窗口在最上面</p></li> [[File:pi3b-img348.png]]</ol><ol start="9" span style="list-style-typecolor: decimal;#FF0000"><li><p>此时按下键盘上的方向按键就可以控制小海龟上下左右移动了</p><p>[[File:pi3b-img349.png]]</p></li></ol> <span id="ubuntu20Ubuntu20.04安装ros-2-galactic的方法">04桌面版系统</span> === Ubuntu20.04安装ROS 2 Galactic的方法 === <ol style="list-style-type: decimal;"><li><p>ROS 2当前活跃的版本如下所示,推荐版本为'''Galactic Geochelone'''</p><p>[[File:pi3b-img350.png]]</p><p>[[File:pi3b-img351.png]]</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>[http://docswiki.ros.org/ '''http://docs.ros.org''']<noetic/p><p>Installation '''http://docswiki.ros.org/en/galacticnoetic/Releases.htmlInstallation''']</p>
|}
<p>[[File:pi3b-img346.png]]</p></li><li><p>ROS 2 '''Galactic Geochelone'''官方安装文档链接如下所示:然后使用下面的脚本安装ros1</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi3b:~$ '''docs.ros.org/en/galactic/Installation.html'''</p><p>'''http://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debiansinstall_ros.htmlsh ros1'''</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'''使用ROS工具前,首先需要初始化下rosdep,然后编译源码时就能快速的安装一些系统依赖和一些ROS中的核心组件</p></li><li><p>使用'''install_ros.sh'''脚本可以安装ros2</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<pbig>orangepi@orangepi'''<span style="color:~$ #FF0000">注意,运行下面的命令需要确保开发板能正常访问github,否则会由于网络问题而报错。</span>''' '''install_ros.sh ros2sh脚本会尝试修改/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>'''</pbig>
|}
{| class="wikitable" style="width:800px;"
|-
|
orangepi@orangepi:~$ '''rosdep update'''
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https:<p>Call `ros2 <command> -h` for more detailed usage.</p>|}</li><li><p>然后可以使用 '''test_rosraw.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi3b:~$ '''test_rosgithubusercontent.sh'''<com/p><p>[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'<ros/p><p>[INFO] [1671174101.235661048] [listener]: I heard: [Hello World: 1]<rosdistro/p><p>[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'<master/p><p>[INFO] [1671174102.204196299] [listener]: I heard: [Hello World: 2]<rosdep/p><p>[INFO] [1671174103ruby.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">yaml
Skip end-of-life distro "dashing"
Add distro "foxy"
Skip end-of-life distro "groovy"
Add distro "rolling"
|}
</liol><ol start="6" style="list-style-type: decimal;"><li><p>然后可以使用 然后在'''桌面'''中打开一个命令行终端窗口,再使用'''test_ros.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行脚本可以启动一个小海龟的例程来测试下ROS是否能正常使用</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi3borangepi:~$ '''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运行完'''test_ros.sh'''脚本后,会弹出下图所示的一个小海龟</p>{| class<p>[[File:pi3b-img347.png]]</p></li><li><p>然后请保持刚才打开终端窗口在最上面</p></li> [[File:pi3b-img348.png]]</ol><ol start="wikitable9" style="widthlist-style-type:800pxdecimal;" >|-| <li><p>orangepi@orangepi:~$ '''source /opt/ros/humble/setup.bash'''此时按下键盘上的方向按键就可以控制小海龟上下左右移动了</p><p>orangepi@orangepi[[File:~$ '''ros2 run rviz2 rviz2'''pi3b-img349.png]]</p>|}<div class="figure"/li></ol>
<ol style="list-style-type: decimal;">
<li><p>OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为ROS 2当前活跃的版本如下所示,推荐版本为'''/opt/Galactic Geochelone'''</p><p>[[File:pi3b-img350.png]]</p><p>[[File:pi3b-img351.png]]</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi[http:~$ //docs.ros.org/ '''ls http:/opt/linux-headers*docs.ros.org''']</p><p>'''http:/opt/linux-headers-legacy-rockchip-rk356x_xdocs.xros.x_arm64org/en/galactic/Releases.debhtml'''</p>
|}
</li>
<li><p>使用下面的命令可以安装内核头文件的deb包</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>ROS 2 '''内核头文件deb包的名字需要替换为实际的名字,请不要照抄。Galactic Geochelone'''官方安装文档链接如下所示:</p></big>|}
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo dpkg -i docs.ros.org/en/galactic/Installation.html'''</p><p>'''http://docs.ros.org/en/galactic/optInstallation/linux-headers-legacyUbuntu-rockchipInstall-rk356x_1.x.x_arm64Debians.debhtml'''</p>
|}
</li>
<li><p>安装完后在ROS 2 '''Galactic Geochelone'''官方安装文档中Ubuntu Linux推荐使用Ubuntu20.04,所以请确保开发板使用的系统为'''<span style="color:#FF0000">Ubuntu20.04桌面版系统</usrspan>'''。安装ROS 2有几种方法,下面演示下通过'''Debian packages'''的方式来安装ROS 2 '''Galactic Geochelone'''</p></srcli><li><p>使用'''install_ros.sh'''下就能看到内核头文件所在的文件夹脚本可以安装ros2</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''ls /usr/srcinstall_ros.sh ros2'''</p><p>linux-headers-5.10.160-rockchip-rk356x</p>
|}
</li>
<li><p>然后可以编写一个hello内核模块测试下内核头文件</p><ol style="list'''install_ros.sh'''脚本安装完ros2后会自动运行下'''ros2 -style-type: lower-alpha;"><li><p>首先编写hello内核模块的代码,如下所示:h'''命令,如果能看到下面的打印,说明ros2安装完成</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepiusage:~$ '''vim hello.c'''</p><p>#include ros2 [-h] Call `ros2 <linux/init.hcommand></p><p>#include <linux/module-h` for more detailed usage. ...h></p>
<p>static int hello_init(void)</p><p>{</p>:<p>printk("Hello Orange Pi ros2 is an extensible command-- init\n");line tool for ROS 2.</p>
<p>Commands:</p>:<p>return;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>module_init(hello_init);</p><p>module_exit(hello_exit);</p> <p>MODULE_LICENSE(Call `ros2 "lt;GPLcommand")gt;-h` for more detailed usage.</p>
|}
</li>
<li><p>然后编写编译hello内核模块的Makefile文件,如下所示:然后可以使用 '''test_ros.sh'''脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepiorangepi3b:~$ '''vim Makefiletest_ros.sh'''</p><p>ifneq ($(KERNELRELEASE),)[INFO] [1671174101.200091527] [talker]: Publishing: 'Hello World: 1'</p><p>obj-m[INFO] [1671174101.235661048] [listener]:=hello.oI heard: [Hello World: 1]</p><p>else[INFO] [1671174102.199572327] [talker]: Publishing: 'Hello World: 2'</p><p>KDIR [INFO] [1671174102.204196299] [listener]: I heard:=/lib/modules/$(shell uname -r)/build[Hello World: 2]</p><p>PWD [INFO] [1671174103.199580322] [talker]:=$(shell pwd)</p><p>allPublishing:</p>'Hello World:<p>make -C $(KDIR) M=$(PWD) modules3'</p><p>clean[INFO] [1671174103.204019965] [listener]:</p>I heard: [Hello World:<p>rm -f *.ko *.o *.mod.o *.mod *.symvers *.cmd *.mod.c *.order</p><p>endif3]</p>
|}
</li>
<li><p>然后使用make命令编译hello内核模块,编译过程的输出如下所示:运行下面的命令可以打开rviz2</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''如果自己复制的代码这里编译如果有问题,请去[http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3B.html 官方工具]中下载源码然后上传到开发板的Linux系统中测试。'''</p></big><p>[[File:pi3b-img354.png|center]]</p>|}
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''make'''<source /p><p>make -C opt/libros/modulesgalactic/5setup.10.160-rockchip-35xx/build M=/home/orangepi modules</p><p>make[1]: Entering directory bash''/usr/src/linux-headers-5.10.160-rockchip-rk35xx'</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 ~$ '''ros2 run rviz2 rviz2''/usr/src/linux-headers-5.10.160-rockchip-rk35xx'</p>
|}
<div class="figure"> [[File:pi3b-img352.png]] </div></li><li><p>编译完后会生成'''hello.ko'''内核模块ROS的使用方法请参考下ROS 2的文档</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi[http:~$ //docs.ros.org/en/galactic/Tutorials.html '''ls *http://docs.koros.org/en/galactic/Tutorials.html'''</p><p>hello.ko]</p>
|}
</li></ol> <span id="ubuntu22.04安装ros-2-humble的方法"></span> === Ubuntu22.04安装ROS 2 Humble的方法 === <ol style="list-style-type: decimal;"><li><p>使用'''insmod'''命令可以将'''helloinstall_ros.kosh'''内核模块插入内核中脚本可以安装ros2</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo insmod helloinstall_ros.kosh ros2'''</p>
|}
</li>
<li><p>然后使用'''demsg'''命令可以查看下'''helloinstall_ros.kosh'''内核模块的输出,如果能看到下面的输出说明脚本安装完ros2后会自动运行下'''hello.koros2 -h'''内核模块加载正确命令,如果能看到下面的打印,说明ros2安装完成</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepiusage:~$ '''dmesg | grep ros2 [-h] Call `ros2 "lt;Hellocommand"gt;'''</p><p>[ 2871-h` for more detailed usage. ...893988] '''Hello Orange Pi -- init'''</p>|}</li><li><p>使用'''rmmod'''命令可以卸载'''helloros2 is an extensible command-line tool for ROS 2.ko'''内核模块</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepioptional arguments:~$ '''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 h, -- help show this help message and exit'''</p>|}</li></ol></li></ol>
</li>
<li><p>然后将15pin MIPI排线按照下图所示的方式连接到树莓派5寸屏幕上(注意绝缘面的朝向)</p><p>[[File:pi3b-img357.png]]</p></li><li><p>最后连接到Orange Pi 3B开发板的LCD接口上</p><p>[[File:pi3b-img358.png]]</p></li></ol> === 打开树莓派5寸屏幕配置的方法 === <ol style="list-style-type: decimal;"><li><p>Linux镜像默认是没有打开树莓派5寸屏幕的配置的,如果需要使用树莓派5寸屏幕,需要手动打开才行。</p></li><li><p>打开mipi lcd配置的步骤如下所示:</p><ol style="list-style-type: lower-alpha;"><li><p>首先运行下然后可以使用 '''orangepi-config''',普通用户记得加'''sudotest_ros.sh'''权限脚本测试下ROS 2是否安装成功,如果能看到下面的打印,说明ROS 2能正常运行</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepiorangepi3b:~$ '''sudo orangepi-configtest_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>然后选择'''System'''</p><p>[[File:pi3b-img359.png]]</p></li><li><p>然后选择'''Hardware'''</p><p>[[File:pi3b-img360.png]]</p></li><li><p>然后使用键盘的方向键定位到raspi-7inch-touchscreen,再使用'''空格'''选中</p><p>[[File:pi3b-img361.png]]</p></li><li><p>然后选择'''<Save>'''保存</p><p>[[File:pi3b-img362.png]]</p></li><li><p>然后选择'''<Back>'''</p><p>[[File:pi3b-img363.png]]</p></li><li><p>然后选择'''<Reboot>'''重启系统使配置生效</p><p>[[File:pi3b-img364.png]]运行下面的命令可以打开rviz2</p>{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
[[File:pi3b-img353.png]]
</div></li><li><p>orangepi@orangepi参考文档</p>{| class="wikitable" style="width:~$ 800px;" |-| <p>'''cat http:/boot/orangepiEnvdocs.ros.txt | grep “raspi”org/en/humble/index.html'''</p><p>[http://docs.ros.org/en/galactic/Tutorials.html '''<span style="colorhttp:#FF0000">overlays=raspi//docs.ros.org/en/humble/Installation/Ubuntu-7inchInstall-touchscreen #示例配置</span>Debians.html''']</p></big>
|}
</li></ol>
<ol style="list-style-type: decimal;">
<li><p>在OPi发布的Linux镜像默认自带了内核头文件的deb包,存放的位置为'''/bootopt/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 ls /bootopt/orangepiEnv.txtlinux-headers*'''</p><p>overlays=lcd1</p><p>'''<span style="color:#FF0000">extraargs=cma=64M fbcon=rotate:3<opt/span>'''linux-headers-legacy-rockchip-rk356x_x.x.x_arm64.deb</p>
|}
</li>
<li><p>使用下面的命令可以安装内核头文件的deb包</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big><p>'''注意,/boot/orangepiEnv.txt中如果默认有extraargs=cma=64M这行配置,fbcon=rotate:3这个配置添加到extraargs=cma=64M的后面即可(需要用空格隔开)。内核头文件deb包的名字需要替换为实际的名字,请不要照抄。'''</p></big>
|}
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''set_lcd_rotatesudo dpkg -i /opt/linux-headers-legacy-rockchip-rk356x_1.sh nonex.x_arm64.deb'''</p>
|}
</li>
<li><p>安装完后在'''Left/usr/src''': 向左旋转90度下就能看到内核头文件所在的文件夹</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh leftls /usr/src'''</p><p>linux-headers-5.10.160-rockchip-rk356x</p>
|}
</li>
<li><p>'''Inverted'''然后可以编写一个hello内核模块测试下内核头文件</p><ol style="list-style-type: 上下翻转,相当于旋转180度lower-alpha;"><li><p>首先编写hello内核模块的代码,如下所示:</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''set_lcd_rotatevim hello.sh invertedc'''</p>|}<p>#include <linux/init.h></p><p>#include <linux/limodule.h></p> <lip>static int hello_init(void)</p>'''Right''': 向右旋转90度<p>{</p>{| class="wikitable" style="width:800px<p>printk("Hello Orange Pi -- init\n");" </p>|-| :<p>orangepi@orangepi:~$ '''set_lcd_rotate.sh right'''return 0;</p>|<p>}</p><p>static void hello_exit(void)</p><p>{| class="wikitable" style="background</p>:<p>printk("Hello Orange Pi -color:#ffffdc- exit\n"width:800px);" </p>|-| :<p>return;<big/p><p>'''set_lcd_rotate.sh脚本主要做四件事:'''}</p>
<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"module_init(hello_init);不同的方向配置不同。'''</p></big>|}</li></ol></li></ol><!-- --><ol start="7" style="list-style-type: decimal;"><li><p>触摸旋转参考资料</p>{| class="wikitable" style="width:800pxmodule_exit(hello_exit);" |-| <p>[https://wiki.ubuntu.com/X/InputCoordinateTransformation '''https://wiki.ubuntu.com/X/InputCoordinateTransformation''']</p>|}</li></ol>
|}
</li>
<li><p>在'''/boot/orangepiEnv.txt'''中设置'''bootlogo'''变量为'''true'''可以开启开关机logo然后编写编译hello内核模块的Makefile文件,如下所示:</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''vim Makefile'''</bootp><p>ifneq ($(KERNELRELEASE),)</orangepiEnvp><p>obj-m:=hello.txto</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-3B.html 官方工具]中下载源码然后上传到开发板的Linux系统中测试。'''</p></big><p>verbosity[[File:pi3b-img354.png|center]]</p>|}{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''make'''</p><p>make -C /lib/modules/5.10.160-rockchip-35xx/build M=/home/orangepi modules</p><p>make[1]: Entering directory '/usr/src/linux-headers-5.10.160-rockchip-rk35xx'</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.160-rockchip-rk35xx'</p>|}</li><li><p>编译完后会生成'''hello.ko'''内核模块<span /p>{| class="wikitable" style="colorwidth:#FF0000800px;"|-| <p>orangepi@orangepi:~$ '''ls *.ko'''</p><p>hello.ko</p>|}</li><li><p>使用'''insmod'''命令可以将'''hello.ko'''内核模块插入内核中</p>bootlogo{| class="wikitable" style=true"width:800px;" |-| </spanp>orangepi@orangepi:~$ '''sudo insmod hello.ko'''</p>
|}
</li>
<li><p>开机logo图片在Linux系统中的位置为然后使用'''demsg'''命令可以查看下'''hello.ko'''内核模块的输出,如果能看到下面的输出说明'''hello.ko'''内核模块加载正确</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''dmesg | grep "Hello"'''</usr/share/plymouth/themes/orangepi/watermarkp><p>[ 2871.png893988] '''Hello Orange Pi -- init'''</p>
|}
</li>
<li><p>替换开机logo图片后需要运行下命令才能生效使用'''rmmod'''命令可以卸载'''hello.ko'''内核模块</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo updatermmod hello'''</p><p>orangepi@orangepi:~$ '''dmesg | grep "Hello"'''</p><p>[ 2871.893988] Hello Orange Pi -initramfs -uinit</p><p>[ 3173.800892] '''Hello Orange Pi -- exit'''</p>
|}
</li></ol>
</li></ol>
== ZFS文件系统的使用方法 = 树莓派5寸屏幕的组装方法 ===
<ol style="list-style-type: decimal;">
<li><p>首先准备需要的配件</p>
<ol style="list-style-type: lower-alpha;">
<li><p>树莓派5寸MIPI LCD显示屏+触摸屏</p>
<p>[[File:pi3b-img355.png]]</p></li>
<li><p>15pin MIPI排线</p>
<p>[[File:pi3b-img356.png]]</p></li></ol>
</li>
<li><p>然后将15pin MIPI排线按照下图所示的方式连接到树莓派5寸屏幕上(注意绝缘面的朝向)</p>
<p>[[File:pi3b-img357.png]]</p></li>
<li><p>最后连接到Orange Pi 3B开发板的LCD接口上</p>
<p>[[File:pi3b-img358.png]]</p></li></ol>
=== 打开树莓派5寸屏幕配置的方法 ===
<ol style="list-style-type: decimal;">
<li><p>Linux镜像默认是没有打开树莓派5寸屏幕的配置的,如果需要使用树莓派5寸屏幕,需要手动打开才行。</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:pi3b-img359-1.png]]</p></li>
<li><p>然后选择'''Hardware'''</p>
<p>[[File:pi3b-img360.png]]</p></li>
<li><p>然后使用键盘的方向键定位到raspi-7inch-touchscreen,再使用'''空格'''选中</p>
<p>[[File:pi3b-img361.png]]</p></li>
<li><p>然后选择'''<Save>'''保存</p>
<p>[[File:pi3b-img362.png]]</p></li>
<li><p>然后选择'''<Back>'''</p>
<p>[[File:pi3b-img363.png]]</p></li>
<li><p>然后选择'''<Reboot>'''重启系统使配置生效</p>
<p>[[File:pi3b-img364.png]]</p>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
|-
|
<big><p>'''最新版本的Ubuntu20上面的设置最终会在/boot/orangepiEnv.04、Ubuntu22txt中加入<span style="color:#FF0000">overlays=raspi-7inch-touchscreen</span>这句配置。设置完后可以先检查下。如果不存在这句配置,那么设置就是有问题。'''</p><p>'''如果觉得使用orangepi-config比较麻烦,也可以使用vim编辑器打开/boot/orangepiEnv.04、Debian11和Debian12txt,然后加入<span style="color:#FF0000">桌面版系统overlays=raspi-7inch-touchscreen</span>中已经预装了zfs,直接使用即可。这句配置也是可以。'''</p>
<p>orangepi@orangepi:~$ '''在Debian11和Debian12桌面版系统中预装的zfs版本是2cat /boot/orangepiEnv.1.11。txt | grep "raspi"'''</p><p>'''<span style="color:#FF0000">overlays=raspi-7inch-touchscreen #示例配置</span>'''</p></big>|}</li></ol></li><li><p>启动后可以看到lcd屏幕的显示如下所示:</p></li>
zunicode 327680 1 zfs
</li>
<li><p>另外开发板配有开关机按键,还可以'''短按'''开发板上的开关机按键来关机。</p>
<p>[[File:pi3b-img376-1.png]]</p></li>
{| class="wikitable" style="background-color:#ffffdc;width:800px;"
<ol start="3" style="list-style-type: decimal;">
<li><p>关机后短按开发板上的开关机按键即可开机。</p>
<p>[[File:pi3b-img376-1.png]]</p></li>
<li><p>重启Linux系统的命令为</p>
{| class="wikitable" style="width:800px;"
<span id="使用开发板的ubuntu22.04系统编译"></span>
=== 使用x64的Ubuntu22.04电脑编译 ===
<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:pi3b-img383.png]]</p></li>
<li><p>按下回车键后首先会弹出一个Warring按下回车键后首先会弹出一个Warning</p>
<p>[[File:pi3b-img384.png]]</p></li>
<li><p>再按下回车键就会开始更新u-boot,更新完后会显示下面的信息</p>
| '''eDP显示'''
| '''OK'''
|-
| '''Camera'''
| '''<span style="color:#FF0000">NO</span>'''
|-
| '''千兆网口'''
<span id="pin-接口-gpiouartspi-和-pwm-测试"></span>
== eDP屏幕的使用方法 ==
<ol style="list-style-type: decimal;">
<li><p>目前仅适配了一款15.6寸的eDP屏幕,包含的配件如下:</p></li>
<ol style="list-style-type: lower-alpha;">
<li><p>0.5间距30pin单头同向排线</p>
<p>[[File:pi3b-26.png]]</p>
</li>
<li><p>15.6寸 eDP显示屏,分辨率为1920x1080</p>
<p>[[File:pi3b-27.png]]</p>
</li>
</ol>
<li><p>将30pin单头同向排线的FPC端连接到开发板的eDP接口,另一端连接到屏幕的eDP接口</p></li>
<p>[[File:pi3b-28.png]]</p>
<li><p>再给板子接通Type-C电源,并上电,系统启动后,就可以看到屏幕显示如下图所示</p></li>
<p>[[File:pi3b-29-1.png]]</p>
</ol>
== 40pin 接口 GPIO、UART、SPI 和 PWM 测试 ==
<p>[[File:pi3b-img421.png]]</p></li>
<li><p>GPIO测试界面如下图所示,左边的两排'''CheckBox'''按钮跟40pin引脚是一一对应的关系。当勾选'''CheckBox'''按钮时,对应的GPIO引脚会被设置为'''OUT'''模式,引脚电平设置为高电平;当取消勾选时,GPIO引脚电平设置为低电平;当点击右边的'''GPIO READALL'''按钮时,可以获取到wPi号、GPIO模式、引脚电平等信息;当点击'''BLINK ALL GPIO'''按钮时,程序会控制28个GPIO口不停的切换高低电平</p>
<p>[[File:pi3b-img422-1.png]]</p></li>
<li><p>然后点击'''GPIO READALL'''按钮,输出信息如下图所示:</p>
<p>[[File:pi3b-img423-1.png]]</p></li><li><p>开发板40pin中总共有28个GPIO口可以使用,下面以7号引脚——对应GPIO为GPIO4_A4 ——对应wPi序号为2——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的开发板40pin中总共有28个GPIO口可以使用,下面以11号引脚——对应GPIO为GPIO3_C6 ——对应wPi序号为5——为例演示如何设置GPIO口的高低电平。首先点击7号引脚对应的'''CheckBox'''按钮,当按钮为选中状态时,7号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为按钮,当按钮为选中状态时,11号引脚会设置为高电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''3.3v''',说明设置高电平成功</p><p>[[File:pi3b-img424-1.png]]</p></li>
<li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为'''OUT''',引脚电平为高电平</p>
<p>[[File:pi3b-img425.png]]</p></li>
<li><p>再次点击下图的'''CheckBox'''按钮取消勾选状态,7号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为按钮取消勾选状态,11号引脚会设置为低电平,设置完后可以使用万用表测量引脚的电压的数值,如果为'''0v''',说明设置低电平成功</p><p>[[File:pi3b-img426-1.png]]</p></li>
<li><p>然后点击'''GPIO READALL'''按钮,可以看到当前的7号引脚模式为OUT,引脚电平为低电平</p>
<p>[[File:pi3b-img427-1.png]]</p></li></ol>
<span id="pin的uart测试-2"></span>
=== 40pin的UART测试 ===
<ol style="list-style-type: decimal;">
<li><p>Android中默认打开了UART7和UART9,在40pin的位置如下图所示,对应的设备节点分别是'''/dev/ttyS7'''和'''/dev/ttyS9'''</p>
<p>[[File:pi3b-img271-1.png]]</p></li>
<li><p>首先点击wiringOP图标打开wiringOP APP</p>
<p>[[File:pi3b-img420.png]]</p></li>
<ol style="list-style-type: decimal;">
<li><p>由 40pin 接口的原理图可知,Orange Pi 3B可用的 spi 为 spi3</p>
<p>[[File:pi3b-img266-1.png]]</p></li>
<li><p>这里通过w25q64模块来测试SPI接口,首先在SPI3接口接入w25q64设备</p>
<p>[[File:pi3b-img434.png]]</p></li>
<ol style="list-style-type: decimal;">
<li><p>Android默认开启了'''PWM11''',对应的引脚在40pin的所在位置如下图所示</p>
<p>[[File:pi3b-img440-1.png]]</p></li>
<li><p>首先点击wiringOP图标打开wiringOP APP</p>
<p>[[File:pi3b-img420.png]]</p></li>
<li><p>然后在wiringOP的主界面点击'''PWM_TEST'''按钮进入PWM的测试界面</p>
<p>[[File:pi3b-img441.png]]</p></li>
<li><p>PWM11对应的基地址是'''fe6f0030''',PWM15对应的基地址是'''fe700030''',这里pwmchip0右边显示是'''fdd70020.pwm''', 这时需要点击下拉选项选择其它的pwmchip,直到右边显示'''febf0030fe6f0030.pwm'''或者'''fe700030.pwm'''为止</p>
<p>[[File:pi3b-img442.png]]</p></li>
<li><p>当下拉选项选择'''pwmchip3'''时,右边对应的就是PWM11对应的基地址'''fe6f0030'''</p>
| '''更新说明'''
|-
| v0v1.10| 2023-0708-1917
| 初始版本
|}
| style="text-align:center;" |'''更新说明'''
|-
| style="text-align:center;" |2023-0708-1917
|
Orangepi3b_1.0.0_ubuntu_focal_server_linux5.10.160.7z
Orangepi3b_1.0.0_ubuntu_jammy_server_linux5.10.160.7z
Orangepi3b_1.0.0_debian_bullseye_server_linux5.10.160.7z
Orangepi3b_1.0.0_debian_bookworm_server_linux5.10.160.7z
Orangepi3b_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160.7z
Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160.7z
Orangepi3b_1.0.0_debian_bullseye_desktop_xfce_linux5.10.160.7z
Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux50_debian_bookworm_desktop_xfce_linux5.10.160.7z
OrangePi3B_RK3566_Android11_v1.0.0.tar.gz
OrangePi3B_RK3566_Android11_lcd_spi-nvme_v1.0.0.tar.gz
* 初始版本
|}