linux下的怎么连接单目相机

linux下的怎么连接单目相机,第1张

串口 应该是 tty 吧

比如 下面是 usb转串口的情况

首先,将我的mini2440开发板通过USB转232串口线与PC机连接,这时候咱们的linux系统自动安转了驱动程序,可以使用命令:dmesg 来查看安装驱动的信息,如下图

从上图可以看出咱们的串口设备是0,

你也可以使用命令: ls -l /dev/ttyUSB来查看相关的信息,如下图

至此,我们已经顺利的将串口连接到Ubuntu系统上了,也查看到自己开发板连接的是USB转串口设备/dev/ttyUSB0,如果是普通的串口设备会是/dev/ttyS

在ZYNQ上使用gigE Vision协议的网络接口相机。

第一步:调通PS侧网口GEM0(Xilinx BSP默认配好)。

第二步:调通PS侧网口GEM1(见前一篇文档:开发笔记(1))。

第三步:调通PL侧网口(本文阐述)。

第四步:在PL侧网口上验证Jumbo Frame特性,并在应用层适配gigE Vision协议。

根据《xapp1082》可知,PL侧的PHY支持1000Base-X和SGMII两种配置,这两种配置对应两种不同的PHY引脚接口(连接到MAC)。而我们的hdf文件使用的是1000Base-X的配置。

关于网口的Linux驱动,我们在官网找到一份资料: Xilinx Wiki - Zynq PL Ethernet 。资料很长,我们只看与我们相关的241 PL Ethernet BSP installation for 1000Base-X”这一章节就可以了。

首先导入FPGA设计同事提供的hdf文件:

在d出的图形界面里,进入Subsystem AUTO Hardware Settings——Ethernet Settings——Primary Ethernet,确认可以看到PL侧网络设备axi_ethernet_0,说明hdf文件里已包含了必要的网口硬件信息:

上图中被选中的网口将成为Linux上的设备eth0。这里我们默认选择ps7_ethernet_0,即使用GEM0作为首选网口。

启用Xilinx AXI Ethernet驱动

进入Device Drivers -- Network device support – 选中Xilinx AXI Ethernet(以及Xilinx Ethernet GEM,这是PS侧网口的驱动)

进入Networking support – 选中 Random ethaddr if unset

进入Device Drivers -- Network device support -- PHY Device support and infrastructure – 启用Drivers for xilinx PHYs

进入~~~~Device Drivers -- DMA Engine Support -– 禁用~~~~Xilinx AXI DMAS Engine~~~ (对应的配置项名为 ~~ CONFIG_XILINX_DMA ~~~)

注意: Xilinx Wiki里对设备树节点的引用有误(&axi_ethernet),导致编译报错,应改为&axi_ethernet_0。

注:PL-ETH驱动所在路径:<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_mainc和xilinx_axienet_mdioc。对应的内核配置项为CONFIG_NET_VENDOR_XILINX和CONFIG_XILINX_AXI_EMAC。

启用ethtool和tcpdump(调试用,非必须):

然后将生成的BOOTBIN和imageub拷贝到SD卡根目录下,将SD卡插入板子上,上电运行。

上电后,使用ifconfig eth1查看网口信息,观察MAC地址与设置的一致,且ifconfig eth1 192168111 up没有报错。

测试网络通路:ping PC是通的。说明网口工作正常。

Linux下eth1(即PL-ETH)的MAC地址有误

问题描述:

开机打印:

注意:

MAC地址是错的,驱动里解析出的是GEM0的MAC地址。

试验发现,即使在system-userdtsi里不写local-mac-address,也照样解析出的是GEM0的MAC。

而将system-userdtsi里的local-mac-address改名为pl-mac-address,并将驱动里解析的字符串也对应更改为pl-mac-address,则可以正确解析出来:

Passing MAC address to kernel via Device Tree Blob and U-Boot:

>

nvcc 编译代码

nvcc -o squareSum squareSumcu运行结果:

CUDA initialized

(GPU) sum:29909398 time:787124792

(CPU) sum:29909398 time:10000

从执行的结果可以看出, GPU 中运行的程序居然要比 CPU 中的消耗的时钟周期还要多得多。这是有原因的。

因为程序之中并没有使用 CUDA 并行执行的优势。

这里分析一下 GPU 运行的性能。

此 GPU 消耗的时钟周期: 787124792 cycles

GeForce G 103M 的 clockRate: 16 GHz

所以可以计算出 GPU 上运行时间是: 时钟周期 / clockRate = 049195 s

1 M 个 int 型数据有 4M Byte 的数据量,实际使用的 GPU 内存带宽是:数据量 / 运行时间 = 813 MB/s

可见这个程序没有很好的发挥 GPU 的性能,使用的内存带宽很小。

没有有效利用 GPU 性能的原因???

在 CUDA 中,一般的数据复制到的显卡内存的部份,称为 global memory。这些内存是没有 cache 的,而且,存取 global memory 所需要的时间(即 latency)是非常长的,通常是数百个 cycles。

由于我们的程序只有一个 thread,所以每次它读取 global memory 的内容,就要等到实际读取到数据、累加到 sum 之后,才能进行下一步。这就是为什么它的表现会这么的差。实际上 GPU 一直在等待上一个数据运行的结束,然后再拷贝一个内存数据,所以使用的时钟周期自然就长了。

由于 global memory 没有 cache,所以要避开巨大的 latency 的方法,就是要利用大量的 threads。假设现在有大量的 threads 在同时执行,那么当一个 thread 读取内存,开始等待结果的时候,GPU 就可以立刻切换到下一个 thread,并读取下一个内存位置。因此,理想上当 thread 的数目够多的时候,就可以完全把 global memory 的巨大 latency 隐藏起来了。

以上就是关于linux下的怎么连接单目相机全部的内容,包括:linux下的怎么连接单目相机、ZYNQ+linux网口调试笔记(3)PL-ETH、linux中哪些工具可以测试cuda程序,监控gpu内存性能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10107685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存