1

我正在开发一个嵌入式应用程序。它将在成熟的嵌入式 linux 上运行,但将通过来自 Windows 主机的串行端口的命令进行控制。

在调试阶段,此 Windows 主机在虚拟机中运行,嵌入式应用程序在本地运行。因此,我希望这两个能够正常通信,就好像它们之间连接了普通的 USB(到串行)电缆一样。

我该怎么做?我听说过伪端口(/dev/ptyXX)的概念,但还没有找到任何 C 教程来解决它。

我基本上期望设备节点(或 2 个)之类的东西,因此我可以将一个节点分配给 virtualbox“串行端口”设置,并将另一个节点分配给我当前在 linux 主机上运行的 linux 应用程序。

谢谢您的帮助

编辑:它看起来socat可能是这项工作的工具,但我不能完全掌握它的工作方式。我正在尝试命令:

socat -d -d PTY:link=/home/nass/acm0,raw,echo=0 UNIX-CONNECT:/home/nass/dm0 

2013/07/18 17:53:56 socat[13271] N PTY is /dev/pts/10
2013/07/18 17:53:56 socat[13271] N opening connection to AF=1 "/home/nass/dm0"
2013/07/18 17:53:56 socat[13271] E connect(5, AF=1 "/home/nass/dm0", 16): Connection refused
2013/07/18 17:53:56 socat[13271] N exit(1)

为什么连接被拒绝?如果/home/nass/dm0缺少,虚拟机将无法启动(在主机管道和主机设备情况下)

我将节点 /home/nass/dm0 预先创建为带有touch /home/nass/dm0. 我应该如何设置virtualbox?主机设备?主机管?

dm0 在启动虚拟机之前是否应该存在?如果是,它应该是使用创建的文件touch /home/nass/dm0吗?如果它应该是一个套接字,我该如何预先创建它?

4

0 回答 0