由于这更多的是一个软件/驱动程序问题,所以我在 SuperUser 而不是 EE Exchange 上发布了这个问题。
我在网上搜索了一下,找到了一个非常有用的USART 至 USB 转换桥. CP2102 是一种可编程设备,在数据帧方面具有许多设置。因此,必须使用该设备的驱动程序来连接和修改这些参数。
在Silabs网站上我发现这Linux 驱动程序(Arch Linux 上的内核 3.14.4-1)。问题是这个司机只是一个没有文档的 C 程序。include制作文件中的一行在运行时(对我来说)会失败,因此它非常有用。
obj-m = cp210x.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
驱动程序源可以找到这里。
我的 make 错误在哪里
make -C /lib/modules/3.14.4-1-ARCH/build M=/home/branden/Desktop/Linux_3.x.x_VCP_Driver_Source modules
make[ 1 ]: Entering directory '/usr/lib/modules/3.14.4-1-ARCH/build'
make[ 1 ]: *** No rule to make target 'modules. Stop.
make[ 1 ]: Leaving directory '/usr/lib/modules/3.14.4-1-ARCH/build'
Makefile:4: recipe for target 'all' failed
make: *** [all] Error 2
除此以外没有其他文件:
- 制作(你的 cp210x 驱动程序)
- 将 cp210x.ko 复制到 /lib/modules//kernel/drivers/usb/serial
- insmod /lib/模块/
- 修改cp210x.ko
这实际上是针对 Ubuntu 的。我使用的操作系统是 Arch Linux,所以我意识到可能存在一些差异,但我无法解决它们。
有人能提供一些关于安装此驱动程序的步骤的指导吗(或者至少在哪里查找)以及为什么缺乏文档?这里是否有我不知道的假设?有人应该如何使用它?如果你查看源代码,你会发现一些结构被用作函数的参数,据我所知,这些函数从未定义过。也许它们是顶部包含的头文件的一部分,但我在我的机器上也找不到其中一些。
答案1
您只是还没有加载 Linux 标头:
sudo pacman -S linux-headers
解决了您的问题。您的错误消息表明 /linux/modules/$(uname -r)/build 中没有用于创建模块的规则。如果您此时查看该目录,您将找不到任何内容,或者可能找不到 vmlinux 文件。使用上述命令更新后,您将找到所需的所有模块。
该问题并非 Arch 所特有,而是所有 Linux 发行版都存在的问题。
答案2
安装 linux-headers 时我遇到了同样的问题。pacman
从较新的内核安装了软件包。我通过在更新所有内容后立即重新编译模块解决了我的问题:
pacman -Syu && pacman -S linux-headers