创建模拟调制解调器的伪串行端口



我对linux编程及其基于文件的通信很陌生。我需要在linux机器上创建一个虚拟调制解调器(或调制解调器模拟器)。这个想法是,将命令发送到FPGA上的硬件调制解调器的软件模块,

在FPGA上:

软件模块<=ttyACM=>硬件调制解调器

我需要在电脑上实现的目标:

软件模块<>MyModemEmulator就像一个假的UART

目的是可以在linux机器上测试软件模块,我有一个假的软件调制解调器UART(?)端口。因此,软件模块发送调制解调器命令,我的假调制解调器模块捕获并相应响应。所以我的模块实际上会像一个硬件调制解调器。

为此,我需要采取哪些措施?我对使用串行端口还很陌生,对linux或硬件方面的知识还不深入。

我遇到过"socat",但我不确定这是否真的能达到目的。到目前为止,我只学会了如何使用FUSE创建一个基本的文件系统(正如有人建议的那样),但我不确定如何将其用于我的目的。我不是在寻找专有的解决方案,也不是在寻找基于windows的解决方案
请指引我正确的方向。非常感谢。

创建模拟调制解调器的伪串行端口

您所说的">串行端口";在Linux中实际上是一个具有许多软件层的串行终端
研究Linux串行驱动程序和termiosman页面,了解需要模拟的重要功能
您甚至没有考虑如何考虑通信路径的USB组件。

在FPGA上:

软件模块<=ttyACM=>硬件调制解调器

我的ubuntu计算机没有ttyACM

/dev/ttyACMx设备节点仅在USB串行小工具连接到主机时创建
因此,找不到这样的设备节点并不奇怪。

我需要在计算机上实现的目标:

软件模块<>MyModemEmulator就像一个假的UART

你对这个问题的陈述很糟糕,因为你(错误地)认为伪UART";(与"MyModemEmulator">集成)是合适的解决方案。

不要试图在Ubuntu主机上模拟串行终端和外部调制解调器,因为你是"对在linux和串行端口编程来说是相当新的&,并且精确地模拟串行终端的任务是危险且昂贵的
您的目标应该是:

软件模块<==>MyModemEmulator

并且问题是";中间需要什么来连接这两个单元&">
IOW您发布了XY问题。


有很多SBC(单板计算机)具有USB小工具端口,可以配置为使用CDC ACM的USB串行小工具
由于实际的"FPGA上的硬件调制解调器">将使用USB CDC ACM连接,您应该考虑使用实际的/dev/ttyACMx串行终端,并使用SBC仅模拟外部设备("硬件调制解调器">)。

换句话说,与其试图实现:

软件模块<>MyModemEmulator+伪USB串行终端

使用现有接口和实现应该容易得多

软件模块<=USB=>模拟硬件调制解调器

使用SBC运行Linux应用程序,使用/dev/ttyGS0(小工具端的USB串行终端)进行调制解调器模拟
通过使用实际的USB CDC ACM连接;伪USB串行终端";,这种方法消除了整个SW+HW仿真层及其可能的错误测试结果。


附录

如果SBC上嵌入式Linux的使用和/或成本与您有关,那么有一种替代方案来模拟";硬件调制解调器">在Ubuntu PC主机上,而不是使用USB-to-RS232-to-USB连接的SBC上。

  1. 获取一对(即数量2)USB-to-RS232适配器和一根(极短)零调制解调器电缆。

  2. 将适配器的DB-9端连接到零调制解调器电缆,形成一根两端都有USB a型公接头的电缆。

  3. 将一个适配器插入PC以创建/dev/ttyUSB0设备节点。将其视为与SoftwareModule/dev/ttyACM0等效。

  4. 将另一个适配器插入PC以创建/dev/ttyUSB1设备节点。将其视为模拟的"的/dev/ttyGS0等价物;硬件调制解调器">

  5. 开发、执行和调试您的模拟"硬件调制解调器">在Ubuntu PC主机上(没有创建伪串行端口的不必要任务)。

最新更新