如何在 Ubuntu 17 上安装 USB 转串行驱动程序?

如何在 Ubuntu 17 上安装 USB 转串行驱动程序?

我的任务是使用 Pelco-D 协议(使用 RS485(2 线))为 PTZ 云台编写一些代码。该代码旨在在 Raspi 上运行,因此我首先弄清楚了如何运行它。一旦我确信我可以在 Pi 和 PTZ 之间交换数据,我就坐在笔记本电脑前编写一些实际代码,并通过防爆-1333V我们为此目的购买了 USB 转串行适配器。它可以处理 RS232、422 和 485。它似乎只使用标准 Ubuntu 驱动程序就可以很好地工作,至少它的两个端口都可以正确识别。

但我无法将数据发送到头部。适配器上的传输指示灯亮了,但头部没有移动。为了进行诊断,我将笔记本电脑连接到 Pi。指示灯再次亮了,但 Pi 没有收到任何内容。所以我尝试了另一种方法,从 Pi 发送并在笔记本电脑上接收。这没有问题。我开始摆弄配置,最终意识到当适配器设置为 RS232 时,Pi 正在接收信号。当然,数据是乱码,但至少有些东西正在通过。

所以我开始考虑适配器附带的驱动程序 CD。驱动程序可能在通过 USB 发送数据之前转换数据,而不是在适配器上转换数据?这当然不会由标准驱动程序处理。无论如何,这是我目前正在进行的假设。

于是我得到了 CD 上的 Linux 驱动程序,结果发现它是一个包含 c 文件、头文件和 makefile 的 tar。我对低级 Linux 的东西不是很熟悉,所以我有点困惑。当然,我可以构建它,但然后呢?转向适配器手册的拙劣借口,我唯一能找到的就是一个好心的建议“请按照说明在您的特定 Linux 发行版上安装 USB 端口驱动程序”。所以我去寻找它,结果……什么也没找到。

这让我想到了这里。我坦白承认这是我第一次使用串行,所以这里可能还有其他我不明白的地方,你应该随意指出它们。但目前我认为这些驱动程序是我最好的选择,所以有人能向我解释如何安装它们吗?

附录:

我上面写道,我以为我可以很容易地构建 C 项目,但我实际上并没有尝试。如果不知道之后该做什么,就觉得这样做毫无意义。事实证明我的假设是错误的,因为构建会产生错误。以下是 make 输出:

gcc -Wall -D__KERNEL__ -DMODULE -I/lib/modules/4.13.0-37-generic/build/include -D__SMP__ -DSMP -I/usr/src/linux-4.13.0-37-generic/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c
In file included from /lib/modules/4.13.0-37-generic/build/include/linux/kernel.h:6:0,
                 from ftdi_sio.c:251:
/lib/modules/4.13.0-37-generic/build/include/linux/linkage.h:7:10: fatal error: asm/linkage.h: No such file or directory
 #include <asm/linkage.h>

我已经在 Google 上搜索了错误,但无法确定该怎么做。显然,此处应该有一个指向某些系统标头的符号链接,但实际上没有,但我无法确定该链接应该指向哪个标头。如果我正确理解了 makefile(真的不熟悉 makefile,从未超越“make this-project-i-downloaded”,这通常有效),它只是试图构建一个对象 (.o) 文件:

# This Makefile has been simplified as much as possible, by putting all
# generic material, independent of this specific directory, into
# ../Rules.make. Read that file for details

# The usb serial headers
INCLUDEUSBSER := $(shell echo "/usr/src/linux-`uname -r`/drivers/usb/serial/")

TOPDIR  := $(shell pwd)
#TOPDIR = .
include $(TOPDIR)/Rules.make

CFLAGS += -I$(INCLUDEUSBSER) -O

OBJS = ftdi.o

all: $(OBJS)

ftdi.o: ftdi_sio.o
    $(LD) -r $^ -o $@

install:
    install -d $(INSTALLDIR)
    install -c $(OBJS) $(INSTALLDIR)

clean:
    rm -f *.o *~ core

还有一个相当长的规则文件,但我怀疑如果我发布整个文件,它不会有太大帮助。根据其标题,它似乎是从一本书中摘录并修改的:

# This file is part of the sample code for the book "Linux Device Drivers",
# second edition. It is meant to be generic and is designed to be recycled
# by other drivers. The comments should be clear enough.
# It partly comes from Linux Makefile, and needs GNU make. 

所以也许有人已经知道它是什么样子的。

相关内容