阅读:2040回复:12
合作移植嵌入式TCP/IP协议栈
我这里有一份ucosTCP/IP源代码,前一阶段做过移植,可是没完成,感觉内容挺多的。提个建议:大家合作完成移植,每个人移植一部分:IP,TCP,UDP,DHCP,ARP等,目标平台暂定ARM和51,如果有人愿意参加,我愿作东,做出东西来大家一起分享,不知大家意下如何。又愿意者请给我回信:
boyudongfang@21cn.com |
|
沙发#
发布于:2004-08-09 16:24
嵌入式TCP/IP已经有很多成熟的商业化产品了,并不是一个好方向。
|
|
板凳#
发布于:2004-08-09 18:13
别人的不是我们自己的。美国人早就登上月球了,可是中国还得奋斗,就是这个道理。合作搞出来,收获会超出事情本身。也算为众多的嵌入式开发者做一个贡献。
|
|
地板#
发布于:2004-08-13 15:35
呵呵,为什么说国内没有嵌入式协议栈呢?
合作搞出来,是不是也想商业化呢?如果不是,做出来好像就没啥意义了吧? 如果是,那和国外的产品在技术上比,肯定会落后很多,别人为什么会买你的呢? |
|
地下室#
发布于:2004-08-22 09:05
最关键的是由于嵌入式系统千变万化,往往要做移植之后才能在目标平台上工作,而这种移植没有源代码是不行的,也没有哪一个软件能够适应所有的情况。
|
|
5楼#
发布于:2004-08-26 14:04
hehe,看来楼上对商业化的嵌入式TCP/IP协议栈并不熟悉啊。一般提供这方面产品的公司,都是集成度很高的,往往可以独立于操作系统。如果,针对每一个项目都要移植,那就不叫商业化的产品了。
如果只是针对您自己的项目,让兄弟们凑在一起,为你白打工,那也太…… |
|
6楼#
发布于:2004-08-26 22:07
hehe,老兄果然功力超凡,本人佩服。这方面还望多多指教啊!还望对兄弟多介绍介绍,在此先谢过了!
|
|
7楼#
发布于:2004-09-02 15:34
哦,我做过TCP/IP协议栈,可是是用汇编语言的,没操作系统呀
|
|
8楼#
发布于:2004-09-02 22:47
这么牛啊!佩服!
但不知道做了几层,是不是只做了MAC层,即使只做到这一层已经很牛了! |
|
9楼#
发布于:2004-09-10 00:20
www.TeamF1.com的NetStack-RT。
|
|
|
10楼#
发布于:2004-09-10 07:26
用汇编语言其实也有很大的弊端:可移植性差。
|
|
11楼#
发布于:2004-09-16 03:49
这么牛啊!佩服! union v { uint word; struct{uchar low;uchar high;}bytes; /* 发送顺序为低位在前,高位在后 8019网卡的长度*/ } ; union w { ulong dword; struct {uint high;uint low;}words; }; /*以太网帧*/ struct socket { uint destnodeid[3]; uint destip[2]; uint destport; }; struct socket socket1, socket2; struct ethernet { uchar recievestatus; /*接收状态*/ uchar nextpage; /*下一个页*/ uint length; /*以太网长度,以字节为单位,*/ uint destnodeid[3]; /*目的网卡地址*/ uint sourcenodeid[3]; /*源网卡地址*/ uint protocal; /*下一层协议 */ uchar packet[1527]; /*包的内容*/ } ; /*IP包 仅当IHL=5时用 当不=5时作转换*/ struct ip { uint head[9]; /*以太网包头*/ uchar verandihl; /*版本与头长度*/ uchar typeofserver; /*服务类型*/ uint totallength; /*总长度*/ uint frameindex; /*IP帧序号*/ uint segment; /*分段标志*/ uchar ttl; /*生存时间*/ uchar protocal; /*下一层协议*/ uint crc; /*校验和*/ uint sourceip[2]; /*源IP*/ uint destip[2]; /*目的IP*/ uchar packet[1517]; /*IP包的内容*/ }; struct ippacket { uint head[9]; /*以太网包头*/ uint ippacket[720]; /*IP包的内容*/ }; struct arp { uint head[9]; /*以太网头 */ /*arp报文的内容总长28字节*/ uint harewaretype; /*以太网为0x0001*/ uint protocaltype; /*ip 为0X0800*/ uchar halength; /*=0X06*/ uchar palength; /*=0X04*/ uint operation; /*操作 0X0001为请求 0X0002为应答 */ /*0X0003为反向地址请求 0X0004为反向地址应答*/ uint sourcenodeid[3]; /*源网卡地址*/ uint sourceip[2]; /*源IP地址*/ uint destnodeid[3]; /*目的网卡地址*/ uint destip[2]; /*目的IP地址*/ }; struct icmp {/*包含在IP包中,是IP的上层为0X01的应用*/ uint head[9]; /*以太网头*/ uint iphead[10]; /*IP头*/ uchar type; /*0X08 PING请求 0X00 PING应答*/ uchar option; /*0X00 PING*/ uint crc; uint id; uint seq; uchar icmpdata[1513]; }; struct tcp { uint head[9]; uint iphead[10]; uint sourceport; /*源端口*/ uint destport; /*目的端口*/ union w seqnumber; /*顺序号*/ union w acknumber; /*确认号*/ uchar offset; /*数据偏移量*/ uchar control; /*连接控制*/ uint window; /*流控*/ uint crc; /*校验和 ,包括伪头部,TCP头部,数据*/ uint urg; /*紧急指针*/ uchar tcpdata[1507]; /*TCP数据*/ }; struct udp { uint head[9]; uint iphead[10]; uint sourceport; /*源端口*/ uint destport; /*目的端口*/ uint udplength; /*流控*/ uint crc; /*校验和 ,包括伪头部,TCP头部,数据*/ uchar udpdata[1507]; /*TCP数据*/ }; /*所有协议的共用体*/ union netcard {struct {uchar bytebuf[1536];}bytes; struct{ uint wordbuf[768];}words; struct ethernet etherframe; struct tcp tcpframe; struct udp udpframe; struct ip ipframe; struct arp arpframe; struct icmp icmpframe; struct ippacket ippacket; }; |
|
|
12楼#
发布于:2004-10-28 11:27
我在做这个工作。目标是在高速51上实现TCP UDP IP ARP,向上层提供API接口。目前还没有使用UCOS,但是计划采用。希望多联系。
|
|