为嵌入式Linux ARM交叉编译FTDI VCP驱动程序

4

我正在尝试为我的嵌入式Arch Linux ARM设备交叉编译FTDI VCP驱动程序。我从http://www.ftdichip.com/Drivers/VCP.htm下载了源文件到我的主机上,该主机运行内核:

2.6.32-54-generic-pae

当运行Makefile时,我遇到了与内核头文件相关的错误,例如:找不到asm/thread_info.h文件。我意识到这意味着我的asm符号链接已损坏,因此我尝试将其链接到。

linux-headers-2.6.32-54/include/asm-generic

但是那个目录的内容也不包括我正在寻找的thread_info.h文件。
有没有人在使用Ubuntu作为主机的情况下,交叉编译FTDI VCP驱动程序用于嵌入式Arch Linux ARM,并可以指导我正确的方向?我新手建立内核模块和交叉编译,任何帮助都将不胜感激。
如果有人需要更多信息,我很乐意添加。

你的目标内核版本是什么?如果也是2.6.32,那么FTDI驱动程序已经存在,如果没有激活,必须通过“make menuconfig”进行激活。 - yegorich
你应该能够检查并查看它是否在源代码树中。构建已经存在的东西可能比尝试将孤立的供应商代码合并回到你的树中更容易。 - Chris Stratton
我没有使用过Arch Linux。但是在嵌入式Debian上,您可以使用gcc和其他必要的工具,因此可以直接在机器上编译内核,但这将是一个非常缓慢的过程。因此,通常您只需要在主机PC上安装工具链,并指定ARCHCROSS_COMPILE环境变量,然后执行make menuconfigmake命令。 - yegorich
@ChrisStratton 我检查了内核源代码树,FTDI驱动程序的源文件存在(在/drivers/usb/serial中)。我该如何继续构建我的Linux ARM的源文件(是否有一种方法可以从我的主机机器上配置此项)?我尝试在Linux ARM上使用make menuconfig,但它显示:“未找到make”。 - user3215598
如果你找不到 make,那么看起来你的主机没有进行基本的开发配置,更别提处理交叉编译的挑战了。在 Debian 风格的发行版中,你可以从 build-essential 包中获取 make,但是在你甚至没有对嵌入式系统进行任何更改的情况下,你将面临许多配置挑战,才能进行交叉编译。 - Chris Stratton
显示剩余3条评论
3个回答

2
基本上,您需要在主机x86计算机中交叉编译内核。首先检查源代码是否已配置和构建。如果是,请运行命令“make ARCH=arm menuconfig”,将会出现一个窗口,请在驱动程序中启用ftdi。如果源代码很干净,则需要将目标机器上的/proc/config.gz文件复制到主机上并解压缩。将其复制到源代码顶层文件夹,例如“cp config .config”。然后运行命令“make ARCH=arm menuconfig”并启用您的驱动程序。完成这些步骤之后,运行命令“make ARCH=arm CROSS_COMPILE= zImage”,例如“make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- zImage”。还需运行命令“make ARCH=arm CROSS_COMPILE= modules”,例如“make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules”。

2

FTDI的“VCP”驱动程序已经成为Linux内核的一部分很长时间了。您无需下载任何东西,除了内核本身。只要您能够交叉编译您的内核,您就可以开始使用。


2

使用命令make ARCH=arm menuconfig

编译并安装模块:make modules和make modules_install

如果需要,不要忘记使用insmod usbserial.ko和insmod ftdi_sio.ko,并使用depmod -a在电源循环后加载它们。

别忘了包含交叉编译链。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接