高成本帖子——RDK X3模组快速体验载板辅助选型

转眼,又是一年了,还记得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模组目前仅支持1920x10801280x7201024x600800x480分辨率的显示屏。因此我一般会用视频采集卡将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-ACM4-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 IDRDK X3 模组树莓派CM4模组
16Debug_Uart0_RXEthernet_SYNC_IN
18Debug_Uart0_TXEthernet_SYNC_OUT

各位在刷机前可以根据下面描述,决定自己使用哪种镜像。对于每种镜像,满足任意一项即可,如果没有满足的项,请更换使用的模组载板

  • 如果想使用带桌面的镜像Desktop:。
    • 确保载板支持HDMI模式,即有HDMI接口。
    • 确保载板+模组有网络通信功能,这样可以利用VNC远程登陆桌面。但需要确认下是否满足如下条件:
      • 如果载板支持UART模式,则可以用uart debug串口登陆开发板,通过ifconfig拿到ip地址。
      • 如果载板无UART模式,请确保自己有办法能拿到开发板的IP地址。
  • 如果想使用带桌面的镜像Server:满足下面任意一项即可
    • 确保载板有UART模式,即可以通过uart debug串口登陆开发板。这个是最保底的方案。
    • 确保载板支持网络模式,但一定要保证开发板能拿到IP地址远程登陆。

以我目前手上的三种载板为例,介绍对应的镜像选择。

  • 官方载板。由于X3模组的所有接口均被引出来,因此ServerDesktop镜像均可安全使用。
  • 微雪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电源线 😂,将这个线连接到手机上,看看手机是否有传输文件的功能。
  • 右键未知设备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 1sudo i2cdetect -y -r 3sudo 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表示自动探测。其实这个很好理解,还记得前面接线时候的CAM1CAM2吗,这个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个HDMI1个DSI输出
  • 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 IDRDK X3 模组树莓派CM4模组差异描述
19-Ethernet_nLED1有线网口上面LED灯相关,这个用于控制低速的情况,大部分载板都不会用这个了
20-EEPROM_nWPEEPROM_nWP的话就可以增加从USB启动系统的功能
73-SD_VDD_OVERRIDE控制SD卡3.3v或1.8v电平
94-AnalogIP1在CM4中,AnalogIP1与MXL7704芯片连接,可根据温度自动调频
96-AnalogIP0在CM4中,AnalogIP1与MXL7704芯片连接,可根据温度自动调频
111-VDAC_COMPVDAC_COMP引脚可以输出信号到电视

② 删除HDMI1接口,仅保留HDMI0。树莓派是支持2个HDMI的,但在X3模组中,保留了HDMI0,而HDMI1的引脚都被取消了。HDMI1相关的引脚并没有定义相关别的引脚,因此HDMI1插入设备并不会出现问题

Pin IDRDK 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 IDRDK X3 模组树莓派CM4模组差异描述
80SCL1SCL0与I2C接口相关,仅引脚名的定义不一样
82SDA1SDA0与I2C接口相关,仅引脚名的定义不一样

② PCIe部分接口与USB2.0合并为USB3.0。CM4中有PCIe (Gen2 x1)接口和USB2.0接口,X3模组是在USB2.0接口的基础上,将USB3.0接口所需的额外的相关引脚定义在PCIe接口上。因此若载板上有PCIe接口,最好不要插入设备,防止设备干坏

Pin IDRDK X3 模组树莓派CM4模组差异描述
102-PCIe_CLK_nREQ
109-PCIe_nRST
110-PCIe_CLK_P
112-PCIe_CLK_N
116USB_RX_PPCIe_RX_P
118USB_RX_NPCIe_RX_N
122USB_TX_PPCIe_TX_P
124USB_TX_NPCIe_TX_N

③ DSI接口变更为CSI接口。删掉了树莓派的DSI接口,替换为CSI接口。DSI接口用于外接液晶屏,而CSI是一般外接摄像头。

Pin IDRDK X3 模组树莓派CM4模组差异描述
157CAM2_D0_NDSI0_D0_N-
159CAM2_D0_PDSI0_D0_P-
163CAM2_D1_NDSI0_D1_N-
165CAM2_D1_PDSI0_D1_P-
169CAM2_C_NDSI0_C_N-
171CAM2_C_PDSI0_C_P-

④ 用于外部扩展EMMC的引脚变更为1个UART+1对MCLK。树莓派这些引脚我理解的是载板也可以焊接一个EMMC作为扩展,SD卡一般占用的是SD_DAT0~SD_DAT3,而EMMC可以占用SD_DAT0~SD_DAT7以达到更快的速度。大部分载板都没有使用这些引脚吗,所以X3将这些引脚变更为UART和一对时钟可以提高引脚利用率。

Pin IDRDK X3 模组树莓派CM4模组差异描述
64UART2_TXDSD_DAT5-
68UART2_RXDSD_DAT4-
70SENSOR0_MCLKSD_DAT7-
72SENSOR1_MCLKSD_DAT6-

⑤ 将PTP硬件时钟同步的引脚变更为Debug UART串口 。这里面的Debug_Uart0接口,应该就是旭日X3派中的调试串口。

Pin IDRDK X3 模组树莓派CM4模组差异描述
16Debug_Uart0_RXEthernet_SYNC_IN硬件PTP同步使用
18Debug_Uart0_TXEthernet_SYNC_OUT硬件PTP同步使用

2.3 X3中增加的引脚

Pin IDRDK X3 模组树莓派CM4模组差异描述
76SD0_DET_N-根据文档描述,这个可以识别USB接口的热插拔动作
1045V-可从这个引脚给X3供电
1065V-可从这个引脚给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_INEthernet_SYNC_OUT)只为了引出Debug Uart接口,CM4是有一些预留接口的,为什么不接在那里。
    • 打磨刷机工具。这个比较关键,我目前刷机还得用一台老笔记本😵。支持支持中文/空格路径、软件应自动识别型号、增加多种错误提示,8分钟的timeout要等很久。
    • 为了方便调用设备,个人认为应该改设备权限而不是输入sudo不需要密码了。X3派由于调用硬件需要sudo权限,这样就带来不少的麻烦。但输入sudo不输入密码,只是对这种问题的缓解,安全性低了一些,而且有sudo和无sudo的环境变量是不一样的。最好的办法当然是把BPU和多媒体等设备的调用权限改一下,当然这个算是重要不紧急的事情,目前有一些手段可以解决环境变量的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

34.利用matlab解 多变量多目标规划问题(matlab程序)

1.简述 学习目标:适合解 多变量多目标规划问题,例如 收益最大,风险最小 主要目标法,线性加权法,权值我们可以自己设定。 收益函数是 70*x(1)66*x(2) ; 风险函数是 0.02*x(1)^20.01*x(2)^20.04*(x…

Tcp的粘包和半包问题及解决方案

目录 粘包: 半包: 应用进程如何解读字节流?如何解决粘包和半包问题? ①:固定长度 ②:分隔符 ③:固定长度字段存储内容的长度信息 粘包: 一次接收到多个消息,粘包 应…

第4章 变量、作用域与内存

引言 由于js是一门只有在声明变量后才能明确类型的语言,并且在任意时刻都可以改变数据类型。这也引起了一些问题 原始值与引用值 原始值就是基本数据类型,引言值就是复杂数据类型 变量在赋值的时候。js会判断如果是原始值,访问时就是按值访问…

1、sparkStreaming概述

1、sparkStreaming概述 1.1 SparkStreaming是什么 它是一个可扩展,高吞吐具有容错性的流式计算框架 吞吐量:单位时间内成功传输数据的数量 之前我们接触的spark-core和spark-sql都是处理属于离线批处理任务,数据一般都是在固定位置上&…

python简单知识点大全

python简单知识点大全 一、变量二、字符串三、比较运算符四、随机数4.1、随机整数4.2、随机浮点数4.3、随机数重现 五、数字类型5.1、整数5.2、浮点数5.3、复数 六、数字运算七、内置函数八、布尔类型八、逻辑运算符九、短路逻辑和运算符优先级十、分支和循环10.1、if语句10.2、…

相机传感器格式与镜头光圈参数

相机靶面大小 CCD/CMOS图像传感器尺寸(sensor format)1/2’‘、1/3’‘、1/4’实际是多大 1英寸——靶面尺寸为宽12.7mm*高9.6mm,对角线16mm。 2/3英寸——靶面尺寸为宽8.8mm*高6.6mm,对角线11mm。 1/2英寸——靶面尺寸为宽6.…

maven安装(windows)

环境 maven:Apache Maven 3.5.2 jdk环境:jdk 1.8.0_192 系统版本:win10 一、安装 apache官网下载需要的版本,然后解压缩,解压路径尽量不要有空格和中文 官网下载地址 https://maven.apache.org/download.cgihttps:…

微信小程序animation动画,微信小程序animation动画无限循环播放

需求是酱紫的: 页面顶部的喇叭通知,内容不固定,宽度不固定,就是做走马灯(轮播)效果,从左到右的走马灯(轮播),每播放一遍暂停 1500ms ~ 2000ms 刚…

ARCGIS地理配准出现的问题

第一种。已有省级行政区矢量数据,在网上随便找一个相同省级行政区图片,利用地理配准工具给图片添加坐标信息。 依次添加省级行政区选择矢量数据、浙江省图片。 此时,图层默认的坐标系与第一个加载进来的省级行政区选择矢量数据的坐标系一致…

【TypeScript】TS接口interface类型(三)

【TypeScript】TS接口interface类型(三) 【TypeScript】TS接口interface类型(三)一、接口类型二、实践使用2.1 常规类型2.2 设置属性只读 readonly2.3 设置索引签名2.4 设置可选属性2.5 函数类型接口 一、接口类型 TypeScript中的…

【Linux操作系统】Vim:提升你的编辑效率

Vim是一款功能强大的文本编辑器,它具有高度可定制性和灵活性,可以帮助程序员和文本编辑者提高编辑效率。本文将介绍Vim的基本使用方法、常用功能和一些实用技巧。 文章目录 1. Vim的基本使用方法:2. 常用功能:2.1 文件操作&#…

linux的目录结构和文件类型

p:同一台主机之间不同程序/进程间通信要用的文件 s:不同主机之间不同程序/进程间通信要用的文件

Vue-组件二次封装

本次对el-input进行简单封装进行演示 封装很简单,就给激活样式的边框(主要是功能) 本次封装主要使用到vue自带的几个对象 $attrs:获取绑定在组件上的所有属性$listeners: 获取绑定在组件上的所有函数方法$slots: 获取应用在组件内的所有插槽 …

微服务——DSL查询文档+搜索结果处理

DSL Query分类 DSL Query的基本语法 全文检索查询 常用场景 match查询 要填一个存在的字段,已经要检索的内容 匹配度越高排名越前,这里all字段包含三个字段在里面。 multi_match查询 精确查询 不分词的查询 查询语法 term查询 range查询 gte是大于等…

Python web实战之 Django 的 MVC 设计模式详解

技术栈:Python、Django、HTML、CSS、JavaScript。 概要 在 Web 开发中,MVC(Model-View-Controller)模式是一种非常常见的设计模式,它可以帮助我们更好地管理代码,提高代码的可维护性。今天就介绍如何使用 …

【Linux】【预】配置网络IP,挂载网络目录

【Linux】【预】配置网络IP,挂载网络目录 1. 配置查看IP2.配置Linux中的IP3. 串口连接开发板,配置 1. 配置查看IP a . 查看ipifconfig如下操作,其中的:192.168.252.140就是它的IP b . 使用xmodem 连接到虚拟机,最后点…

小研究 - MySQL 数据库下存储过程的综合运用研究

信息系统工程领域对数据安全的要求比较高,MySQL 数据库管理系统普遍应用于各种信息系统应用软件的开发之中,而角色与权限设计不仅关乎数据库中数据保密性的性能高低,也关系到用户使用数据库的最低要求。在对数据库的安全性进行设计时&#xf…

C#与C/C++交互(1)——需要了解的基础知识

【前言】 C#中用于实现调用C/C的方案是P/Invoke(Platform Invoke),让托管代码可以调用库中的函数。类似的功能,JAVA中叫JNI,Python中叫Ctypes。 常见的代码用法如下: [DllImport("Test.dll", E…

【笔记】湖仓一体架构演进与发展

https://www.bilibili.com/video/BV1oF411F7rQ/?spm_id_from333.788.recommend_more_video.0&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf

小程序的 weiui的使用以及引入

https://wechat-miniprogram.github.io/weui/docs/quickstart.html 网址 1.点进去,在app.json里面配置 在你需要的 页面的 json里面配置,按需引入 然后看文档,再在你的 wxml里面使用就好了