转眼,又是一年了,还记得22年6月自己第一次体验X3开发板 [首发] 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 。至今还记得拿到手的新奇与兴奋,还记得第一次玩BPU就遇到了大坑,第一次发帖就把论坛搞崩。如今,当初对我来说很难的BPU也结束了,在开发交流的这段时间,也认识了壮哥、Arui、Rex等很多朋友。本贴成本巨大→_→,我目前一共有4组模组+载板,这些就2k多,去深圳参加发布会就块2.5k了 😵,还不快快点赞收藏关注。
今年,地平线又出了新品RDK X3模组,相比与之前的X3派,其实就是把X3独立为一个模组,计算性能是一样的,但可以自己根据需求选择合适的载板,也可以根据自己的需求动手做载板。很多人在遇到模组都会产生疑惑,那么借助下面这组图(5块板子,真的是真爱粉了 ❤️),我从项目的角度说一下为什么要有模组这个需求:
需求是具有多样性的,也就是有的需求会要用到X3的所有接口,也会有需求仅利用X3的计算功能。
- 部分应用不需要hdmi/dsi等接口来降低载重/功耗。比如无人机在线计算平台,桌面/图像可视化等相关功能往往用于调试。那么可以
- 删掉
hdmi/dsi
接口,系统安装server版本,这样既可以节省计算资源,又可以降低功耗,以及相关硬件的配重。 - 将hdmi接口更换为
micro hdmi
接口。大hdmi接口是很重的,比如X3派,官方载板,微雪Base载板等,在无人机的一些应用,重量越轻越好,更换为micro hdmi就可以减少无用的重量。
- 删掉
- 机器人应用串口多种多样,定制相关载板可利用已有接口进行扩展,提高安全性并降低重量。X3只有两个uart接口,但机器人经常会需要rs232/485等串口类型,这时候我们可以引入一些芯片进行转换。如果我们在已有的载板上,往往需要添置如下几个模块:usb hub、ttl转rs232、usb转多路ttl来满足我们的需求,如果将这些模块都接在板子上,会极大增加重量,对于有载重需求的应用是不现实的,而且若场景存在大量震动,则会出现接触不良的问题。定制化的载板就不会有这些问题。
- 仅利用X3的计算能力。在一些集群任务中,我们就可以只利用x3的网口,其他接口都用不上。这种极致的重量,不到30g就可以搭建一个小小的计算Node,是不是很酷炫。而且也可以定制一个小小的集群板。后面有机会我会尝试搭建个小小的集群。
- WIFI模块的选配,可以自由增减wifi性能。
- 有的项目不需要wifi,那么就可以不要带wifi的模组。
- 有的项目需要特殊wifi,那么可以利用usb wifi模块来实现相关的功能。在之前的博客《在旭日X3派开发板上使用USB Wifi来提高网络速度》中已经详细介绍如何在X3上编译wifi驱动了。
- 如果对wifi无特殊要求,直接选择带wifi的模组即可。自带模组是2.4/5gwifi双频,5gwifi传输速度是很快的,效果可以参考《体验极速——在旭日X3派上使用双频1300M USB无线网卡》。
新品RDK X3模组,相比于之前的X3派,价格更低,选型自由度更高(内存:2G/4G、emmc: 16G/32G/64G、有无wifi)。同样的2g内存,X3派480左右,而X3模组才319,价格便宜了160,而且顶配4g+64G是439。这些配置几乎可以覆盖了大部分的项目需求,而且也可以接入SD卡,将数据保存在这里来扩展空间。此外,模组需要配合一个载板(也叫扩展版)才可以使用,模组接口跟树莓派CM4接口一致,因此可以兼容大部分的CM4载板。
这个模组跟X3派的芯片是一样的,大部分的操作内容跟之前的博客是一样的,重复测试没有意义,只要进了系统,一些编译安装的操作跟正常linux没啥区别了(结合《多方位玩转“旭日X3派”》 来使用体验更佳哦)。因此这个博客重点会介绍与X3派操作不一样的地方,在文章的后面也会介绍下自己在地平线分享日的感受😏。
文章目录
- 一 快速体验
- 1.1 系统刷机
- 1.1.1 镜像选择
- 1.1.2 驱动安装(配置一次即可)
- 1.1.3 系统烧录(当前镜像版本2.0.0)
- 1.1.4 刷机错误分析及其解决办法
- 1.2 USB Wifi 驱动编译
- 1.3 双路mipi摄像头采集
- 1.3.1 检查MIPI相机是否接入
- 1.3.2 图像采集
- 1.4 BPU测试:跟踪算法DCMT
- 二 引脚差异&载板选型
- 2.1 X3中删除的引脚
- 2.2 X3中变更的引脚
- 2.3 X3中增加的引脚
- 三 坐标深圳:地平线2023机器人开发者创享日
- 总结
一 快速体验
由于X3模组与X3派的主要操作不同点可参考下表,差异点的优劣点我分别用绿色和红色标注出来。
差异点 | 旭日X3派 | RDK X3 模组 | 评价 |
---|---|---|---|
刷机方式 | 系统从SD卡启动 | 系统可从SD卡/EMMC启动 | EMMC刷机依赖官方工具,但该工具不够稳定 |
USB Wifi | 编译驱动需要联网 | 驱动编译不需要联网&&操作简化 | 编译驱动问题更少了👍 |
MIPI 相机 | CSI只引1个,接入树莓派相机需要转接板 | 官方载板引出2个2lane和1个4lane | 树莓派和官方的相机都可以用了👍 |
先给一些notes,后面操作可能会用到:
- 如果有可视化需求,可以通过hdmi接口外接显示器,但X3模组目前仅支持
1920x1080
,1280x720
,1024x600
,800x480
分辨率的显示屏。因此我一般会用视频采集卡将HDMI通过USB输出到笔记本上。当然,也可以在获取开发板的IP地址之后,利用VNC远程登陆。 - 官方载板使用uart debug串口登陆板子的话,需要安装一个串口驱动CH340,但官方并未提供下载地址。我把驱动放在百度云(提取码:0a09 )中的文件夹1 - BPU开发/软件/CH34x_Install_Windows_v3_4.zip 。
下面针对这些差异点,给出操作流程以及体验总结。
1.1 系统刷机
刷机永远是开发板最基本的操作。X3模组主要是将系统刷到emmc上,刷机流程参考《开发手册:烧录系统到eMMC》。当然也可以将系统烧录到SD卡上,从SD卡启动系统,SD卡烧录可以参考博客 旭日X3派使用体验 。系统镜像X3镜像下载地址,分为Server(无桌面)和Desktop(有桌面)两个版本。Server适用于无可视化需求相关的应用,由于无桌面,因此可以节省一些计算资源和功耗。
在本节,我将给出基于微雪的扩展版CM4-IO-BASE-A
(CM4-IO-BASE-B
也可)以及官方载板,引导各位如何选择适合的镜像,并完成刷机。另外,我刷机的时候遇到了一些坑,因此完善了下刷机流程,并总结几种烧录错误的解决办法。
PS:微雪载板和官方载板的Boot模式接线如下所示,先配置好boot的接线,再接通电源。
1.1.1 镜像选择
刷机第一步就是镜像的选择,镜像种类的选择有一些讲究,X3模组载板的选择,直接影响了个人电脑与开发板的远程登陆方式,目前远程登陆方式有3种:
- UART模式。uart模式是利用载板上的debug串口,直接通过命令行进行调试。目前该模式调试是灵活度最高的,但该模式目前只能使用官方载板。
- HDMI模式。这种模式算不上远程登陆,这个实际上是利用这个可视化桌面,这样就算没有uart调试接口也可以进行调试。该模式只能使用Desktop镜像,且载板必须有hdmi接口,前面展示的微雪NANO载板就没有hdmi接口。
- 网络模式。这种模式就是利用ssh远程登陆进行调试,但一定要保证开发板连接到网络,且能获取板端的IP地址。如果选择的载板不支持uart模式和hdmi模式,拿不到开发板的IP地址,就彻底没法远程登录到开发板了。
为什么树莓派的载板,无法使用uart debug串口远程登陆开发板呢?利用下表对比树莓派和X3的引脚,很清晰知道,树莓派的引脚其实没有debug 串口这个引脚,因此树莓派的扩展板也自然不会带uart调试功能。
Pin ID | RDK X3 模组 | 树莓派CM4模组 |
---|---|---|
16 | Debug_Uart0_RX | Ethernet_SYNC_IN |
18 | Debug_Uart0_TX | Ethernet_SYNC_OUT |
各位在刷机前可以根据下面描述,决定自己使用哪种镜像。对于每种镜像,满足任意一项即可,如果没有满足的项,请更换使用的模组载板。
- 如果想使用带桌面的镜像
Desktop
:。- 确保载板支持HDMI模式,即有HDMI接口。
- 确保载板+模组有网络通信功能,这样可以利用VNC远程登陆桌面。但需要确认下是否满足如下条件:
- 如果载板支持UART模式,则可以用uart debug串口登陆开发板,通过
ifconfig
拿到ip地址。 - 如果载板无UART模式,请确保自己有办法能拿到开发板的IP地址。
- 如果载板支持UART模式,则可以用uart debug串口登陆开发板,通过
- 如果想使用带桌面的镜像
Server
:满足下面任意一项即可- 确保载板有UART模式,即可以通过uart debug串口登陆开发板。这个是最保底的方案。
- 确保载板支持网络模式,但一定要保证开发板能拿到IP地址远程登陆。
以我目前手上的三种载板为例,介绍对应的镜像选择。
- 官方载板。由于X3模组的所有接口均被引出来,因此
Server
和Desktop
镜像均可安全使用。 - 微雪Base-A载板。仅有HDMI和网络接口,由于无法保证自己稳定拿到IP地址,因此推荐使用
Desktop
镜像。 - 微雪Nano-A载板。载板没有能调试的一切接口,只能使用X3模组自带的Wifi模块,因此该载板推荐使用
Server
镜像,并且通过其他手段比如固定ip地址,或者将ip地址通过串口返回等其他手段获取IP地址。
1.1.2 驱动安装(配置一次即可)
首先要下载驱动包android_hobot并解压,之后按照如下顺序处理
5-runasadmin_register-CA-cer.cmd
文件右键管理员权限运行;- X3模组的扩展版处于boot模式(见本节开头部分的介绍),并用Type C数据线接在开发板上上电。调出设备管理器,一般会在其他设备里出现一个未知设备
USB download gadget
。- 如果没出现上述未知设备,检查下在Android Device中是否有
Android Bootloader Interface
,如果有说明自己安装过类似驱动。可以直接刷机。 - 如果什么都没有,检查下自己是不是拿了一个
type c电源线
😂,将这个线连接到手机上,看看手机是否有传输文件的功能。
- 如果没出现上述未知设备,检查下在Android Device中是否有
- 右键未知设备
USB download gadget
→更新驱动程序→浏览我得电脑查找驱动程序→选择android_hobot
根目录,之后即可完成驱动的安装 - 安装成功后,可以发现这个未知设备变为了
Android Bootloader Interface
。
走完这些流程,即可快乐刷机。
1.1.3 系统烧录(当前镜像版本2.0.0)
在烧入系统之前,需要注意一个非常重要的一点,X3的系统是有Server版本和Desktop版本的,在使用Server版本时,我一般会使用开发板自带的Debug串口配置wifi,获取到wifi后,再利用ssh远程连接。扩展版上面有有线网的接口,可能会利用这个远程连接,但是若网络除了问题,这个系统就再也无法连接上了。
系统刷机比较简单
- 选择开发板型号,模组是包含MD的这个不要选错了(期望后续更新能自动识别开发板型号,Jetson已经有这个功能了)
- 选择下载的镜像文件,切记不要包含空格/中文,否则会出问题。
- 点击右侧Start开始刷机。
- 等待一段时间后,进度100%即可刷机完成。
1.1.4 刷机错误分析及其解决办法
这里总结下刷机会遇到的问题,方便各位排查下。在排查错误前,请确保自己的type c是数据线而不是电源线;并且载板处于boot模式。
① burn flash failed,而且未出现remaining time相关字段。
若出现下面这种错误的话,基本是镜像文件路径出现中文/空格/特殊字符等问题,尽可能保证自己的镜像路径是全英文。
② 刷机错误并出现fastboot timeout。
若刷机时候出现如下错误,基本上是刷机工具兼容性问题,换个笔记本,系统版本低一点基本可解决。(这里非常感谢晟哥、飞哥的帮助😍)
1.2 USB Wifi 驱动编译
对于某些需要使用自己wifi的需求,这里基于《在旭日X3派上使用双频1300M USB无线网卡》在新系统上编译下驱动,检查下相关编译操作是否有优化。内核编译的相关操作可以参考官方文档:《6.4 内核头文件》。
对于server
镜像,老样子,需要安装一些依赖包sudo apt-get install dkms bc
,但在desktop
镜像下就不需要安装。这个包建议还是先预装到系统里吧,毕竟有不带网卡的模组,免得一些驱动无法安装。
利用前面的博客,下载驱动包RTL8812BU.tar.gz
,并替换Makefile
,进入文件夹RTL8812BU_for_Raspbian
,输入make -j4
开始编译驱动。
之后输入下面的指令,完成驱动的拷贝、注册、激活。处理完之后,该驱动已经是开机自启的了。
# 当前路径:RTL8812BU_for_Raspbian
sudo cp 88x2bu.ko /lib/modules/4.14.87/
sudo hobot-sign-file /lib/modules/4.14.87/88x2bu.ko
sudo /sbin/depmod -a 4.14.87
sudo insmod /lib/modules/4.14.87/88x2bu.ko
sudo reboot
相比于之前的系统版本,该系统版本简化了内核编译激活的操作,不再像之前需要手动配置添加一些信息了。。
PS:编译这个驱动前期,由于个人操作不规范,导致添加驱动后系统无法启动,刷机刷了4次才发现这个问题,因此把自己令人窒息的操作摆出来,防止大家走我一样的坑。
问题就是发生在拷贝激活驱动这些步骤上,我拷贝88x2bu.ko
到系统目录下之后,后面激活的内核是88x2bu.ko
,而不是/lib/modules/4.14.87/88x2bu.ko
,所以在lib下的内核没有签名。
# 当前路径:RTL8812BU_for_Raspbian
sudo cp 88x2bu.ko /lib/modules/4.14.87/
sudo hobot-sign-file 88x2bu.ko
sudo /sbin/depmod -a 4.14.87
sudo insmod 88x2bu.ko
sudo reboot
如果在sudo vim /etc/modules
添加了这个驱动之后,就会导致系统无法启动(因为驱动没签名不可用),出现下面这个错误,各位以后使用内核相关时可以注意下文件路径。
1.3 双路mipi摄像头采集
官方的载板引出了3个摄像头接口:CAM0和CAM2是2lane CSI接口,可以接入树莓派相机。CAM1是4laneCSI接口,可以接入X3派相机。之前买了微雪的机器狗,给的是树莓派接口的相机,没法接在旭日X3派开发板上。正好官方载板都支持这两种接口,因此借着这个机会,我给一个双路MIPI相机采集Demo。具体接线方式如下:
1.3.1 检查MIPI相机是否接入
一定要在开发板不通电时候接好相机,插电开机后可以通过i2cdetect命令确认模组I2C地址能否正常检测到。首先输入sudo i2cdetect -l
检查看当前系统的I2C总线。
对于X3模组来说,输入sudo i2cdetect -y -r 0
可以查看相机的接入情况,当然你也可以输入sudo i2cdetect -y -r 1
,sudo i2cdetect -y -r 3
,sudo i2cdetect -y -r 5
分别查看对应总线上的所有从设备。下图是接入相机前后的I2C设备情况。
1.3.2 图像采集
mipi相机的采集主要依赖from hobot_vio import libsrcampy as srcampy
,可视化部分需要用到类ImageShow
,具体定义参考博客 旭日X3派使用体验 中 “ 3.2 HDMI可视化图像数据 ” 部分。
双路同时可视化需要考虑的一个部分就是相机初始化参数的设置open_cam
方法,这里面相关函数的定义可以参考文档《4.5 多媒体接口说明》
open_cam
的声明是:Camera.open_cam(pipe_id, video_index, fps, width, height)
,关联多路参数设置的参数主要有两个:
pipe_id
:camera对应的pipeline通道号,取值范围0-7。每个相机只能占用一个通道,因此我给两个相机的通道分别指定0, 1
,不冲突就可以。video_index
:camera对应的host编号,-1表示自动探测。其实这个很好理解,还记得前面接线时候的CAM1
和CAM2
吗,这个1,2就是对应这个参数。我的树莓派相机接在CAM2
上,因此这里的video_index=2
,X3派相机接在CAM1
上,这里的video_index=1
.
res_raspi = cam_raspi.open_cam(0, 2, 30, 1920, 1080) # 设置树莓派相机参数
res_x3pi = cam_x3pi.open_cam(1, 1, 30, 1920, 1080) # 设置X3派相机参数
具体代码可以参考examples/MIPI/show_2way_camera.py,在OpenWanderary根目录下输入sudo python3 examples/MIPI/show_2way_camera.py
即可在显示屏上看到双路相机展示的图像。
为了在sudo
下依然能够使用PYTHONPATH
这个环境变量,我们需要配置一下系统文件:
- 输入
sudo vim /etc/sudoers.d/wanderary
- 在里面添加
Defaults env_keep += "PYTHONPATH"
,然后保存退出。
下面是双路可视化的代码细节:
from wanderary.visualization import ImageShow
import numpy as np
import cv2
from hobot_vio import libsrcampy as srcampyim_show = ImageShow() # 可视化工具初始化cam_raspi = srcampy.Camera()
res_raspi = cam_raspi.open_cam(0, 2, 30, 1920, 1080) # 设置树莓派相机参数cam_x3pi = srcampy.Camera()
res_x3pi = cam_x3pi.open_cam(1, 1, 30, 1920, 1080) # 设置X3派相机参数if res_raspi != 0 or res_x3pi != 0:raise(Exception(f"Camera Open Failed. res_raspi: {res_raspi}, res_x3pi: {res_x3pi}"))
else:print("All Cameras are open.")for idx in range(20):print(idx)origin_image_raspi = cam_raspi.get_img(2, 1920, 1080) # 获取相机数据流origin_nv12_raspi = np.frombuffer(origin_image_raspi, dtype=np.uint8).reshape(1620, 1920)origin_bgr_raspi = cv2.cvtColor(origin_nv12_raspi, cv2.COLOR_YUV420SP2RGB) cv2.putText(origin_bgr_raspi, "Camera CAM2 [RasPi]", (30, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 2) origin_image_x3pi = cam_x3pi.get_img(2, 1920, 1080) # 获取相机数据流origin_nv12_x3pi = np.frombuffer(origin_image_x3pi, dtype=np.uint8).reshape(1620, 1920)origin_bgr_x3pi = cv2.cvtColor(origin_nv12_x3pi, cv2.COLOR_YUV420SP2RGB) cv2.putText(origin_bgr_x3pi, "Camera CAM1 [X3Pi]", (30, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 2) imgshow = cv2.hconcat([origin_bgr_raspi, origin_bgr_x3pi])im_show.show(imgshow)im_show.close()
cam_raspi.close_cam()
cam_x3pi.close_cam()
1.4 BPU测试:跟踪算法DCMT
这个部分的目的是测试X3BPU模组是否稳定,这里测试的算法使用的是天琦师弟正在研发的DCMT跟踪算法。代码项目存放在OpenWanderary/projects/torchdnn文件夹下,依赖的文件存放在百度云(提取码:0a09 )中的文件夹1 - BPU开发/OpenWanderary/projects/torchdnn/data/dcmt/ 。代码这里我就不解读了,依赖文件放置在torchdnn/data/dcmt/
之后,输入如下指令可以得到目标跟踪结果。
sudo python3 demos/DCMT/running_on_X3.py \--cfg data/dcmt/Retrain.yaml \--inference data/dcmt/DCMT.bin \--video data/dcmt/ChasingDrones \--saveroot data/dcmt/
二 引脚差异&载板选型
X3模组虽然兼容CM4载板,但又未完全兼容,因此在选型的时候,存在X3无法支持载板所有功能的问题。因此,如果我们在选用载板时候,一定要检查下X3模组是否支持这些。一般载板很难退货,所以买到不支持的载板就血亏了。
我先简要列出X3模组缺少的功能:
- 可视化相关:
- X3模组无
VDAC_COMP
引脚,这个引脚一般与TV_OUT
连接,用于输出信号到电视。 - X3模组仅支持
1个HDMI
和1个DSI
输出
- X3模组无
- X3模组无PCIe接口。
- X3模组不支持通过载板来外部扩展emmc(引脚不足)。
- X3模组不支持PTP硬件时间同步。
下面简要列出X3模组增加的功能:
- X3模组上有额外的两个5V输入。这个可以关联多供电模式。
- X3上的USB是3.0,而树莓派是USB2.0。
- X3增加了一个CSI 2lane接口,实际上就是将树莓派的一个DSI接口变更为CSI接口。
模组的引脚以及功能参数可以参考下列文档,后面我给出这两个模组的具体引脚差异,我只给出名字有差异Pin引脚,部分Pin有一样的名字,但其内部使用的电阻不一样,这点要注意下。
- RDK X3模组引脚文档:《RDK X3 Module Design Guide》
- 树莓派CM4引脚文档:《Raspberry Pi Compute Module 4》
2.1 X3中删除的引脚
① 小功能相关,这些接口对应的都是一些小配置相关。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
19 | - | Ethernet_nLED1 | 有线网口上面LED灯相关,这个用于控制低速的情况,大部分载板都不会用这个了 |
20 | - | EEPROM_nWP | 有EEPROM_nWP 的话就可以增加从USB启动系统的功能 |
73 | - | SD_VDD_OVERRIDE | 控制SD卡3.3v或1.8v电平 |
94 | - | AnalogIP1 | 在CM4中,AnalogIP1与MXL7704芯片连接,可根据温度自动调频 |
96 | - | AnalogIP0 | 在CM4中,AnalogIP1与MXL7704芯片连接,可根据温度自动调频 |
111 | - | VDAC_COMP | 有VDAC_COMP 引脚可以输出信号到电视 |
② 删除HDMI1接口,仅保留HDMI0。树莓派是支持2个HDMI的,但在X3模组中,保留了HDMI0,而HDMI1的引脚都被取消了。HDMI1相关的引脚并没有定义相关别的引脚,因此HDMI1插入设备并不会出现问题。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
143 | - | HDMI1_HOTPLUG | - |
145 | - | HDMI1_SDA | - |
147 | - | HDMI1_SCL | - |
149 | - | HDMI1_CEC | - |
146 | - | HDMI1_TX2_P | - |
148 | - | HDMI1_TX2_N | - |
152 | - | HDMI1_TX1_P | - |
154 | - | HDMI1_TX1_N | - |
158 | - | HDMI1_TX0_P | - |
160 | - | HDMI1_TX0_N | - |
164 | - | HDMI1_CLK_P | - |
166 | - | HDMI1_CLK_N | - |
2.2 X3中变更的引脚
① 仅变更引脚名,功能没啥差异。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
80 | SCL1 | SCL0 | 与I2C接口相关,仅引脚名的定义不一样 |
82 | SDA1 | SDA0 | 与I2C接口相关,仅引脚名的定义不一样 |
② PCIe部分接口与USB2.0合并为USB3.0。CM4中有PCIe (Gen2 x1)接口和USB2.0接口,X3模组是在USB2.0接口的基础上,将USB3.0接口所需的额外的相关引脚定义在PCIe接口上。因此若载板上有PCIe接口,最好不要插入设备,防止设备干坏。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
102 | - | PCIe_CLK_nREQ | |
109 | - | PCIe_nRST | |
110 | - | PCIe_CLK_P | |
112 | - | PCIe_CLK_N | |
116 | USB_RX_P | PCIe_RX_P | |
118 | USB_RX_N | PCIe_RX_N | |
122 | USB_TX_P | PCIe_TX_P | |
124 | USB_TX_N | PCIe_TX_N |
③ DSI接口变更为CSI接口。删掉了树莓派的DSI接口,替换为CSI接口。DSI接口用于外接液晶屏,而CSI是一般外接摄像头。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
157 | CAM2_D0_N | DSI0_D0_N | - |
159 | CAM2_D0_P | DSI0_D0_P | - |
163 | CAM2_D1_N | DSI0_D1_N | - |
165 | CAM2_D1_P | DSI0_D1_P | - |
169 | CAM2_C_N | DSI0_C_N | - |
171 | CAM2_C_P | DSI0_C_P | - |
④ 用于外部扩展EMMC的引脚变更为1个UART+1对MCLK。树莓派这些引脚我理解的是载板也可以焊接一个EMMC作为扩展,SD卡一般占用的是SD_DAT0~SD_DAT3
,而EMMC可以占用SD_DAT0~SD_DAT7
以达到更快的速度。大部分载板都没有使用这些引脚吗,所以X3将这些引脚变更为UART和一对时钟可以提高引脚利用率。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
64 | UART2_TXD | SD_DAT5 | - |
68 | UART2_RXD | SD_DAT4 | - |
70 | SENSOR0_MCLK | SD_DAT7 | - |
72 | SENSOR1_MCLK | SD_DAT6 | - |
⑤ 将PTP硬件时钟同步的引脚变更为Debug UART串口 。这里面的Debug_Uart0接口,应该就是旭日X3派中的调试串口。
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
16 | Debug_Uart0_RX | Ethernet_SYNC_IN | 硬件PTP同步使用 |
18 | Debug_Uart0_TX | Ethernet_SYNC_OUT | 硬件PTP同步使用 |
2.3 X3中增加的引脚
Pin ID | RDK X3 模组 | 树莓派CM4模组 | 差异描述 |
---|---|---|---|
76 | SD0_DET_N | - | 根据文档描述,这个可以识别USB接口的热插拔动作 |
104 | 5V | - | 可从这个引脚给X3供电 |
106 | 5V | - | 可从这个引脚给X3供电 |
三 坐标深圳:地平线2023机器人开发者创享日
7月25日,从北京飞往深圳,第一次线下体验开发者的会议,亮点多多,玩的很尽兴。
- 发布会:发布了X3模组(就是我现在玩的这个)以及RDK Ultra开发板,96TOPS的算力真的很香。发布会现场展示Nodehub真的很大胆!!!晚上可以一遍吃自助餐一遍听大佬在前面唠嗑。
- 多种基于X3的合作产品:机器狗、无人机、机械臂、陪伴玩具等等,蛮有趣的,期待能看到更大型的项目。可以跟负责人唠嗑讨论技术细节。
- Nodehub:快速部署机器人方案,有个研习会,晟哥哥亲自带各位学习Nodehub,部署完全无压力,课件可以参考《NodeHub 开发者研习会》。
- 多种礼品可以拿:伴手礼,参加活动还送了一个小礼物,我选的是番茄种子,等花盆到了就种上!!!
Arui的机器人做了两年半→_→,大家可以看他的视频《何如开发一台零部件完全国产化的智能机器人?》。我也算是终于看到真人了,听他的分享介绍,当然晚上少不了约饭喝酒。
下面是一些自己比较喜欢的产品,总体来说,目前产品仍然以家庭服务为主,多数还是为了娱乐。个人比较喜欢机器狗、机械臂、无人机等相关产品。轮足我关注了一年了,也终于能在现场体验了一下,跟飞机遥感控制差不多,好希望他们的成本能下来,这样可以自己多玩玩。
简单总结下这一天,很有趣,有种去环球影城的感觉,各种体验各种逛。
- Nodehub我认为是很好的想法,目前需要多多集成更多的node。避免大家造轮子,期待官方能抓住这个好的idea,多多产出。
- 机器人市场还是以服务/娱乐为主,蛋糕太小了。真正的机器人应该可以减轻家庭压力,比如我回家就可以帮我端茶倒水做饭等等→_→。
- 见到了古月居胡老师!也跟很多群里的开发者面基了,比如Arui,小怼怼,主要是这次太匆忙,期待下次再团聚!
总结
总的来说,X3模组是一个不错的产品,重量很轻,功耗很低,算力与X3派等价,自己可以在上面做很多DIY,可以说是个成熟的产品,下面老样子,小小总结下目前存在的优缺点:
-
板子优点多多,这里列几个比较深刻的:
- 文档丰富了很多:每个功能有视频片段展示。我开发时候,遇到的问题可以直接先搜一遍文档找答案,一些不好解决的,也可以将X3问题转换为通用问题,再去网站检索问题,问题debug效率高了不少。文档结构有点小乱,希望后面能整理下。
- 官方载板集成了usb转uart模块:这样我调试时候就可以直接使用usb数据线了,不用像X3派一样,需要插一个usb转uart模块。但是期待后续能将这个micro usb线改为type c接口,毕竟这种老式usb线不好找了😭。
- 部分引脚变更可提高引脚利用率。比如dsi转csi,usb变更为3.0,删掉hdmi1保留dhmi0等我觉得都是不错的设计。当然也有一些引脚变更的不太理解,后面说。
-
下面这些是我希望官方能够支持的:
- CH340串口驱动为何不在官网提供:找这个驱动,很容易从一些网站下载出全家桶。
- server和desktop预安装的包不太一样。有一些包没安装,比如
dkms bc
这两个包,在desktop
上是安装的,但在server
上并没有,如果用户使用的是无wifi的模组,编译驱动时候会比较麻烦。 - 期待发出更小的载板。这个板子比X3派都大,希望能出个更小的板子。
- 散热片:我目前用的是
14x14x5mm
的散热片,虽然轻,但是散热能力不足,程序运行多了容易降频。希望官方能够平衡重量和散热能力,提供一个散热皮规格。 - 实时操作系统RTOS适配。这个应该算是重要不紧急的事情,我目前没这个需求。但目前RTOS比较热门,可以花费一些时间探索下。
-
下面这些是认为比较关键的问题:
- 对PCIe接口和网络硬件PTP同步的取消,存在疑惑。一些需要高速传输的设备都是接在PCIe上的,比如采集卡、Wifi网卡、部分医疗设备等。RDK Ultra是带3路PCIe的,我理解是X3主要还是面向于计算,不适合大型项目上。但如果有类似需求可以找转接板接在USB上。但是PTP(引脚
Ethernet_SYNC_IN
和Ethernet_SYNC_OUT
)只为了引出Debug Uart接口,CM4是有一些预留接口的,为什么不接在那里。 - 打磨刷机工具。这个比较关键,我目前刷机还得用一台老笔记本😵。支持支持中文/空格路径、软件应自动识别型号、增加多种错误提示,8分钟的timeout要等很久。
- 为了方便调用设备,个人认为应该改设备权限而不是输入sudo不需要密码了。X3派由于调用硬件需要sudo权限,这样就带来不少的麻烦。但输入sudo不输入密码,只是对这种问题的缓解,安全性低了一些,而且有sudo和无sudo的环境变量是不一样的。最好的办法当然是把BPU和多媒体等设备的调用权限改一下,当然这个算是重要不紧急的事情,目前有一些手段可以解决环境变量的问题。
- 对PCIe接口和网络硬件PTP同步的取消,存在疑惑。一些需要高速传输的设备都是接在PCIe上的,比如采集卡、Wifi网卡、部分医疗设备等。RDK Ultra是带3路PCIe的,我理解是X3主要还是面向于计算,不适合大型项目上。但如果有类似需求可以找转接板接在USB上。但是PTP(引脚