1

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

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

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

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

谢谢阿迪亚

4

2 回答 2

0

您需要回到网络基础知识,我理解您的问题的方式是:“我有一个串行端口,我想使用的是以太网链路”。很抱歉粉碎了你的梦想,但你没有真正的硬件来做到这一点,我会详细说明。

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

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

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

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

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

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

于 2012-08-24T06:25:17.373 回答
0

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

于 2015-11-11T15:48:48.493 回答