![CDC-ACM 驱动程序返回垃圾数据](https://linux22.com/image/93074/CDC-ACM%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E8%BF%94%E5%9B%9E%E5%9E%83%E5%9C%BE%E6%95%B0%E6%8D%AE.png)
我正在尝试将 u-Blox USB GPS 设备连接到基于 BusyBox 的嵌入式 (armel) Linux 2.6.32 系统。该设备具有本机 CDC ACM USB 接口。系统没有自带cdc_acm,所以我交叉编译了它,传输并安装它,并且它加载成功(由 确认dmesg
)。
我插入设备,USB 驱动程序正确地枚举了该设备的地址001:003
,并将其分配给cdc_acm
创建该/dev/ttyACM0
文件的驱动程序。但是,使用串行终端甚至使用命令打开设备cat
会导致打印垃圾,而应打印 ASCII NMEA 命令(已确认这可以在其他两个系统上工作)。
stty
在文件上运行没有错误(但是报告的数据显然是无效/任意的,因为该设备是 USB 设备而不是串行设备)。lsusb -v -s 1:3
还报告设备的正确信息。
我不知道如何进一步调试该问题。我可以采取哪些步骤来找出问题并解决它?
答案1
看起来问题出在终端设置上。
通过手动设置正确的波特率和原始模式,我开始从设备获取有意义的数据:
stty -F /dev/ttyACM0 57600
stty -F /dev/ttyACM0 raw