写在前面
声明:笔者使用的ARM平台是orangepi4平台,Ubuntu,aarch64,D2XX Drivers :libftd2xx-arm-v8-1.4.8。
x64平台分别是:台式电脑和笔记本电脑,Ubuntu,x86_64,D2XX Drivers :libftd2xx-x86_64-1.4.8。
笔者按照FTDI官网:D2XX Drivers,安装D2XX驱动程序允许通过DLL直接访问USB设备,在x64平台上按照官网 ReadMe.txt提示如期进行,毫无问题,在ARM平台上出现了问题,最终在不懈探索尝试下,得到解决。
笔者经历的过程应该可以解决的通用平台存在的问题,下面把在这个过程出现的问题及解决过程做一个分享,希望能够为遇到该问题的同志们提供思路!
1.问题概述
ftdi d2xx与linux上的ftdi_sio冲突,linux自动加载了ftdi_sio驱动程序,需要删除ftdi_sio驱动程序。
sudo rmmod ftdi_sio
rmmod: ERROR: Module ftdi_sio is builtin.
sudo rmmod usbserial
rmmod: ERROR: Module ftdi_sio is builtin.
出现Module ftdi_sio is builtin的问题,内置了无法删除。
2.解决方法
2.1 查看VCP串口信息
ls -l /dev/ttyUSB0
FTDI usb串行设备转换器映射到ttyUSB0
sudo dmesg | grep ttyUSB0
得到如下信息:
2.2 查看驱动信息
tree /sys/bus/usb/drivers/ftdi_sio/
/sys/bus/usb/drivers/ftdi_sio/
├── 5-1:1.0 -> …/…/…/…/devices/platform/usb1/fe900000.dwc3/xhci-hcd.11.auto/usb5/5-1/5-1:1.0
├── bind
├── uevent
└── unbind
1 directory, 3 files
然后在超级用户下使用该命令
注:sudo -s 或者 su 命令进入超级用户
echo -n "5-1:1.0" > /sys/bus/usb/drivers/ftdi_sio/unbind
注:5-1:1.0 需要修改成上条命令查看对应的结果
查看VCP串口信息不存在了,大功告成!
下面就可以通过D2XX驱动程序从DLL直接访问USB设备,应用程序软件可以通过一系列DLL函数调用来访问USB设备。
感谢阅读,我是智科创玩,希望文章能够解决您的问题。
事为之,须极致!