繁体   English   中英

Linux中的以太网+串行端口

[英]Ethernet + Serial port in Linux

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

我不想使用串行到以太网转换器(将串行端口转换为以太网端口的外部硬件)的解决方案,而是将其安装在PC本身中。

我在串行端口上尝试了PPP,效果很好。 还告诉我可以使用PPP进行FTP,HTTP等操作。 对此的参考-http: //www.faqs.org/docs/Linux-HOWTO/Serial-Laplink-HOWTO.html

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

谢谢阿迪亚

您需要回到网络的基础知识,据我了解,您的问题是:“我有一个串行端口,并且我想使用的是以太网链接”。 抱歉,您的梦想破灭了,但是您没有真正的硬件要做,我将在此进行详细说明。

串行连接是一种物理连接,需要至少3根TX,RX和地线。 从逻辑上讲,您有一个IC,可将二进制数据转换为离散电压范围表示的信号。

以太网是第2层协议,第1层由用于传输信号(同轴电缆,上行链路,光纤等)的技术提供。如您现在所见,您需要一套不同的硬件来将逻辑以太网帧转换为一串数字号码,实际上这就是所谓的成帧。

由于以太网一直是一种易于使用的协议,因此它已被许多网络运营商用作首选协议,当然最大的协议之一就是PPPoE,您可以通过以太网链路进行PPP会话。 当然,这也不适用于您的示例,因为您正尝试相反的做法。

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

  • 您的驱动程序将无法完全支持以太网,您需要硬件级别的支持才能实现某些信令(例如,自动协商,CSMA / CD等)
  • 除非您回到115.2kbps是数据传输的最高速度,否则您的驱动程序将几乎无用。

恕我直言,还有更多激动人心的项目,您可以在网络领域中获取设备驱动程序。 例如,您可以尝试购买NIC并从头开始为其开发设备驱动程序,并且可以优化某些区域。 最后,请记住,现在大多数以太网实现都是在硬件中完成的,因此您无需执行任何操作,只需在MAC和voila上填充一些寄存器即可!

SLIPPPP已经可以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM