Linux简单串口上网原理
简单串口上网的实现原理如图1所示。
图 1
Linux Box A 和 Linux Box B 是两个安装有Linux操作系统的终端(可以是PC,也可以是嵌入式设备),它们通过一条串口通信线(null modem cable line)连接。控制串口通信的服务进程server读和写两个字符设备:发送字符设备sending device和接收字符设备receiving device。在内核空间,伪网络设备驱动程序pseudo network driver可以直接读写发送字符设备和接收字符设备,事实上在内核空间它们之间的通信只是对共享缓存区的读写而已。伪网络设备驱动程序具有大部分普通网卡驱动程序提供服务功能,只是没有硬件部分代码的实现而已。当用户空间的进程要发送数据的时候,其首先让数据经过Linux操作系统的TCP/IP处理层进行数据打包,然后把打包后的数据直接写入sending device,等待server进程读取,最后通过串口发送到另一个Linux Box的server进程;而当server进程发现有数据从串口传送过来时就把数据写入receiving device,伪网络驱动程序发现receiving device设备有新数据的时候,就又把数据传递到TCP/IP层处理,最终网络应用程序收到对方发来的数据。本文设计的源程序主要有三个,ed_device.c、ed_device.h、server.c。其中在ed_device.c是串口上网的内核部分的主程序,包含字符设备和伪网络接口设备程序,server.c负责串口通信。主文件ed_device.c中包括的头文件在源程序中,这里就不一一列举了。
最新评论