Linux中的以太网+串口

时间:2012-08-22 00:05:16

标签: linux serial-port linux-device-driver ethernet

我想在Linux中实现一个具有以太网堆栈的驱动程序,但是硬件上的数据将是一个串行端口。基本上,我想将我的串口注册为以太网驱动程序。有没有人知道这是否可能? 我希望能够将IPv6和/或UDP数据包从串行端口推出,并以类似的方式通过串行端口接收数据包并将其传递到以太网堆栈。

我不想使用串口转以太网转换器(将串口转换为以太网端口的外部硬件)的解决方案,但在我的电脑本身就有。

我在串口尝试了PPP,效果很好。我也被告知我可以使用PPP进行FTP,HTTP等。参考这个 - http://www.faqs.org/docs/Linux-HOWTO/Serial-Laplink-HOWTO.html

我曾尝试使用串行驱动程序从RealTek以太网驱动程序中破解代码但无法取得很大成功。相反,我不知道要么实际做任何有意义的事情。任何建议,指导或教程都会有所帮助。

由于 阿迪亚

2 个答案:

答案 0 :(得分:0)

你需要回到关于网络的基础知识,我理解你的问题是:“我有一个串口,我想使用的是以太网链接”。抱歉粉碎你的梦想,但你没有真正的硬件这样做,我会详细说明。

串行连接是一种物理连接,需要3根线(至少)tx,rx和地。在逻辑方面,您有一个IC,它将二进制数据转换为由离散电压范围表示的信号。

以太网是第2层协议,第1层由用于传输信号的技术(同轴电缆,向上传输,光纤等)提供。正如您现在所看到的,您需要一组不同的硬件来转换逻辑以太网帧成为数字流,实际上这就是呼叫成帧。

由于以太网是一种易于使用的协议,因此它已成为许多网络运营商的首选协议,当然最大的一个是PPPoE,您可以通过以太网链路进行PPP会话。当然,这不适用于你的例子,因为你正在尝试相反的事情。

如果您只是在学习并且在世界上有所有时间,您可以尝试通过串行线路编写自己的以太网成帧器。这意味着您需要在驱动程序中实现IEEE802.3,然后您需要序列化数据以将其作为串行线上的位流推送。当然要注意以下缺点:

  • 您的驱动程序将无法完全支持以太网,您需要在硬件级别提供一些支持以实现某些信令(例如,自动协商,CSMA / CD等)
  • 除非你及时回到115.2kbps的数据传输最高速度,否则你的驱动程序将毫无用处

恕我直言,您可以在设备驱动程序的网络领域中获取更多令人兴奋的项目。例如,您可以尝试购买NIC并从头开始为其开发设备驱动程序,您可以优化某些区域。最后,请记住,大多数以太网实现现在都是在硬件中完成的,因此您不必做任何事情,只需在MAC上填写几个寄存器即可!

答案 1 :(得分:0)

SLIPPPP已经做了你想做的事。