5625|8

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

我想做一个网口转串口驱动,请大家给点思路 [复制链接]

目前有一个项目,需要做一个小设备实现网口转多路串口,硬件方案为ARM9+网口芯片+多串口芯片,现在对具体怎么做有点不太清楚。
我知道需要在网络协议部分进行解析,解包后发往指定串口,串口发往网口时需要按照TCP/IP协议进行打包然后加上串口标签发往网口,另外还有工作模式和访问机制,这个就不是很清楚了,因为我没做过TCP/IP相关的东西。
现在我的思路是:
1.可以不上linux系统,因为linux下驱动编程不是很有把握
2.需要移植TCP/IP协议栈,然后调用其API接口实现TCP/IP功能,移植TCP/IP栈可以在网上找找,应该有的
现在存在的问题是:
1.工作模式和访问机制这些在哪里实现?如何实现?
2.所谓的串口特性功能比如超时、诊断、事件是什么意思,这些如何实现
3.这样一个设备难点在哪里?
请有类似经验的大虾给些指导,谢谢。

最新回复

uping  详情 回复 发表于 2009-4-30 10:37
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
感觉主要是协议栈上要处理好 这方面没做过 帮你顶
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
对了  通过51上的串口可以转网口的  有类似的芯片或模块
如果兄弟是要做项目的话  可以在网上找找相关的信息
如果想学习一下的话 这个活倒是个很不错的机会  
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
多谢Heaven_Redsky兄
另外还有其他大虾做过类似项目没?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
    感觉有点像是路由器或者交换机的存储-转发工作方式。我觉得首先要定义一个自己的协议,相当于OSI的应用层协议,TCP输中真正的数据部分要根据这个协议来存储。比如说定义数据开头1个字节表示目标串口号,后511个字节是数据段,网卡获得数据后根据TCP协议格式解包获得真正的数据,而这部分数据其实是根据你自己的协议封包了的。arm读取第一个字符得到目标串口号,然后把后面511个字符发往这个串口。从串口获得数据的话每511个字符分段加上串口号作为数据包再经过TCP封包传输。最近我也准备写和网卡相关的一点东西,我用的8019网卡,感觉还是实现网卡驱动和TCP协议编写是比较重头的地方。我也不是大虾,随便说说我的想法。
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 cokewei 的回复:
    感觉有点像是路由器或者交换机的存储-转发工作方式。我觉得首先要定义一个自己的协议,相当于OSI的应用层协议,TCP输中真正的数据部分要根据这个协议来存储。比如说定义数据开头1个字节表示目标串口号,后511个字节是数据段,网卡获得数据后根据TCP协议格式解包获得真正的数据,而这部分数据其实是根据你自己的协议封包了的。arm读取第一个字符得到目标串口号,然后把后面511个字符发往这个串口。从串口获得数据的话每511个字…


   个人觉得该项目的工程完全能够在Linux下面完成,做一个简单的字符设备驱动就能实现这样的功能。既然采用了arm9的硬件,为什么不利用linux的完善的网络性能来达到简化呢。要移植一个TCP/IP协议,个人觉得很麻烦,得不偿失。如果能用linux下的套接字来实现,只需要在定义包结构的时候,添加一个标明串口号的标识,应该就好了。这个协议实现很简单,而且你串口的速率不会很高,网口能完全应付得了
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
如果只是网口转串口,个人觉得根本不需要协议栈,完全是大材小用了

正如你说的,关键是拆包、组包的过程,还是一个串口数据流的转换

知道包的格式是什么样的就行了,用协议栈就还复杂了
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
使用Linux系统好些吧,你可以精简它的内核。主要好处有:
1、TCP/IP协议栈有现成的;
2、至于驱动程序,如果你用的网卡芯片和多串口芯片都是常见的,Linux内核中应该会有相应的驱动源代码,或者去芯片厂家网站下载Linux驱动也可;
3、驱动搞定后,你可以设计一个应用程序,实现网卡和多串口之间数据的存储转发,完全可以自己控制的。

另外,怎么感觉你这个项目 像是要做个“终端服务器”。是吗?
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

9
 
uping
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表