在Raspbian Soft-float上将FTDI D2XX驱动程序与Raspberry Pi中的Python一起使用

问题描述 投票:6回答:3

我们有一个由FTDI的D2XX驱动程序控制的USB设备。目前,它是从Windows机器通过Python界面控制的,作为一个有趣的项目,我尝试将控件移至Raspberry Pi(大约是PC成本的1/10,不包括OS成本)。

有许多障碍需要清除,但是几周后,我终于找到了所有答案,并使它起作用。答案分散在多个论坛上,以感谢Stack Overflow社区,我想我会在这里合并它们。]

首先,需要的项目:

  • [操作系统:我从"Wheezy"中获取了最新的Raspberry Pi webpage Raspbian(2012年12月16日上线)。这包括Python。
  • 与我们的FTDI设备通话的FTDI D2XX drivers。>
  • D2XX驱动程序的Python接口。我使用了PyUSB
  • 我们的Python脚本
  • 我下载了Wheezy发行版,并使用Win32DiskImager写入4 GB SD卡。 Raspberry Pi可以顺利启动。然后,我解压缩D2XX库(libftd2xx.so)并将其安装到/usr/local/lib

    PyUSB(1.6)当前仅针对Windows进行了测试,但它们提供了源代码。为Raspberry Pi编译副本非常简单。基本上,修改setup.py以链接到libftd2xx.so库(无需复制)。还编辑d2xx / _d2xx.c以注释掉没有Linux实现的例程(当前为ftobj_Rescan,ftobj_Reload ftobj_GetComPortNumber)。从FTDI D2XX驱动程序下载目录(在发行版中)将WinTypes.h和ftd2xx.h复制到ftdi-win32,然后运行python setup.py install,它将编译并安装Python模块。

完成所有操作后,我编写了一个简单的Python脚本与FTDI芯片进行通讯。请注意,您需要通过sudo运行。

import d2xx
jd = d2xx.open(0)
pd = jd.eeRead()
print pd

d2xx模块似乎找不到libftd2xx.so文件。因此,我调整了setup.py脚本以链接到库libftd2xx.a的静态副本。瞧,我有了这个问题的第一个线索:D2XX库是使用软浮动构建的,而我的Wheezy发行版配置为使用浮点寄存器。也就是说,我系统上的gcc生成的代码与D2XX库二进制不兼容,并且不允许将它们链接到。

为了解决此问题,我下载了soft-float debian "wheezy" distribution(2012-08-08),并写入了4 GB SD卡。这次映像无法启动。环顾四周后,我发现了这个helpful answer。简而言之,软浮动的启动映像存在问题,因此对于某些Raspberry Pi板来说,它不会启动。解决方案是将软浮动发行版上的start.elf文件替换为可以正常运行的文件。浮动Raspbian映像的副本。幸运的是,SD卡具有两个分区:FAT分区和ext3(?)分区。引导映像位于FAT分区上,因此将硬浮动SD卡弹出到Windows框,复制start.elf文件,弹出软浮动SD卡并用硬硬盘更新其start.elf并不容易。 -浮动一。之后,Raspberry Pi便启动了。

安装FTDI的D2XX驱动程序并从PyUSB构建d2xx Python模块后,我再次尝试了测试脚本。再次失败。 d2xx模块可以读取libftd2xx.so库没有问题,但是由于某种原因无法与设备通信。

我们有一个由FTDI的D2XX驱动程序控制的USB设备。目前,它是从Windows计算机通过Python界面进行控制的,作为一个有趣的项目,我尝试将控件移至Raspberry Pi(大约...

python usb raspberry-pi ftdi raspbian
3个回答
3
投票

我不确定问题出在哪里:是PyUSB,FTDI的libftd2xx.so问题还是Debian发行版问题?

使用FTDI软件包,在release/examples/EEPROM/read下进行了测试。您必须构建它,但这只是键入make的问题。运行它(通过sudo),它无法打开USB设备,因此显然不是PyUSB。闲逛之后,我发现了对驱动程序ftdi_sio的引用,它可能与其他D2XX驱动程序冲突。因此,使用lsmod,我看到默认情况下已经安装了ftdi_sio,因此我运行了rmmod ftdi_sio。之后,一切正常。 read命令应显示以下内容:


1
投票

存在libftd2xx 1.1.12的特殊版本,该版本解决了Raspberry pi上的问题。那可能会解决您的问题。


0
投票

带有Python和nodered的[youtu.be/YQPRAA5roJU

© www.soinside.com 2019 - 2024. All rights reserved.