Linux系统串口上网的简单实现(上) (1)

发布时间:2019-09-11 15:29:53 编辑:笔名

本文主要说明某些简易 Linux 环境或者嵌入式 Linux 中实现串口上网的简单实现,这在工业控制中有着广泛的应用。希望对实现无网卡设备上网的方法有抛砖引玉的作用。 Linux 为串口上网提供了丰富的支持,比如PPP(Peer-to-Peer Protocol, 端对端协议)和SLIP(Serial Line Interface Protocol, 非常老的串行线路接口协议),这里所说的"上网"是指把串口当成一个香港赌场-老挝赌场-信誉赌场|千亿巨资-亚洲娱乐平台世界级的网投...接口,通过封装香港赌场-老挝赌场-信誉赌场|千亿巨资-亚洲娱乐平台世界级的网投...数据包(如IP包)以达到无网卡的终端可以通过串口进行香港赌场-老挝赌场-信誉赌场|千亿巨资-亚洲娱乐平台世界级的网投...通信。但是使用这两种协议必须得到内核的支持。例如,如果在没有配置PPP的Linux环境中使用PPP,除了安装PPP应用层软件外,还必须重新编译内核。SLIP是一个比较老的简单的协议,现在的Linux内核缺省配置都支持,不需要重新编译内核,尽管如此,其源代码看上去有点"古怪而复杂"。在嵌入式Linux系统使用过程中,如果内核已经被烧入Flash中,而为了节省空间内核又没有提供诸如PPP或者SLIP的支持,当然就没有办法在不重新烧写 Flash的情况下直接使用PPP或者SLIP了,事实上用户必须动态加载PPP和SLIP的内核实现模块。对某些嵌入式应用来说移植或者修改PPP源代码变成了乏味和繁锁的工作。这里介绍一种非常经济而且实用的实现串口上网的简单方法。 Linux简单串口上网原理 简单串口上网的实现原理如图1所示。 图 1Linux 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中包括的头文件在源程序中,这里就不一一列举了。

孩子咽喉肿痛
宝宝上火吃什么
小孩脾胃虚弱吃什么好
新生儿能喝四磨汤吗
友情链接