我想在Linux中实现一个驱动程序,它有一个以太网堆栈,但是硬件上输出的数据将是一个串行端口。基本上,我想将我的串行端口注册为以太网驱动程序。有人知道这是否可能吗?
我希望能够将ipv6和/或udp数据包推出串行端口,并以类似的方式通过串行端口接收数据包并将其传递到以太网堆栈。
我不想使用串行到以太网转换器(将串行端口转换为以太网端口的外部硬件)的解决方案,但我的电脑本身就有这种解决方案。
我在串行端口上尝试了ppp,效果很好。我还被告知,我可以做ftp,http等使用ppp。参考本-http://www.faqs.org/docs/Linux-HOWTO/Serial-Laplink-HOWTO.html
我曾尝试用串行驱动程序从Realtek以太网驱动程序中破解代码,但未能获得多大成功。更确切地说,我不知道这两个堆栈实际上做任何有意义的事情。任何建议、指导或辅导都会有帮助。
谢谢
阿迪亚

最佳答案

你需要回到网络的基础知识,我理解你的问题是:“我有一个串行端口,我想使用的是一个以太网链接”。很抱歉粉碎了你的梦想,但你没有真正的硬件来实现,我会详细说明的。
串行连接是一种物理连接,需要三根线(至少)TX、RX和接地。在逻辑方面,你有一个集成电路,将二进制数据转换成由离散电压范围表示的信号。
以太网是第2层协议,第1层由用于传输信号(同轴电缆、上行电缆、光纤等)的技术提供,正如您现在可能看到的,您需要一组不同的硬件来将逻辑以太网帧转换为数字流,实际上这是呼叫帧。
由于以太网是一种易于使用的协议,它已经被许多网络运营商作为首选协议来实现,当然,最大的协议之一是pppoe,在pppoe中,您可以通过以太网链路进行ppp会话。当然,这也不适用于你的例子,因为你在尝试相反的方法。
如果你只是在学习,并在世界上有所有的时间,你可以尝试编写自己的以太网帧通过串行线。这意味着您需要在驱动程序中实现ieee802.3,然后您需要序列化数据,将其作为串行线上的比特流推送。当然要注意以下缺点:
您的驱动程序将无法完全支持以太网,您需要在硬件级别提供一些支持以实现某些信令(例如,自动协商、CSMA/CD等)
你的驱动程序将非常无用,除非你回到了115.2kbps是数据传输最高速度的时代。
在网络领域,你可以为设备驱动程序选择更多令人兴奋的项目。例如,您可以尝试购买一个nic并从头开始为它开发设备驱动程序,您可以优化某些区域。最后,请记住,大多数以太网实现现在都是在硬件中完成的,所以除了在mac和voila上填充一些寄存器之外,您不必做任何事情!

关于linux - Linux中的以太网+串行端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12064735/

10-13 07:32