温州什么最出名| 脑动脉硬化是什么意思| 间质瘤是什么病| 益母草能治什么病| 就此别过是什么意思| 感冒低烧是什么原因| 西瓜能做什么美食| 用醋泡脚有什么好处| 争奇斗艳的斗是什么意思| 大脑供血不足是什么原因引起的| 孕妇便秘吃什么| 福瑞祥和是什么意思| 荸荠又叫什么| 口腔癌早期有什么征兆| 血常规主要检查什么| 巨蟹女喜欢什么样的男生| 浑身疼是什么原因| 月季花什么时候开花| 弦子为什么嫁给李茂| 木菠萝什么时候成熟| 牙疼挂什么科| 食禄痣是什么意思| 皮肤痒挂什么科| 1994年属什么| 家里为什么有蜈蚣| 查心电图挂什么科| aoc是什么牌子| 摆谱是什么意思| apgar评分是什么意思| 1996年1月属什么生肖| 师傅和师父有什么区别| 绿豆和什么一起煮好| 山楂泡酒有什么功效| 但愿人长久的下一句是什么| 手抖什么原因| 喝酒手发抖是什么原因| 辛辣食物指的是什么| 证监会是干什么的| 斜视是什么意思| 经常感觉口渴口干是什么原因| 硫酸镁注射有什么作用| 头疼恶心吃什么药| 北京生源是什么意思| 红细胞数目偏高是什么意思| 天降甘霖什么意思| 名流是什么意思| 为伊消得人憔悴什么意思| 声带息肉有什么危害| 红枣有什么功效和作用| 解酒喝什么饮料| 一什么水缸| 五十年婚姻是什么婚| 头发掉是什么原因引起的| 肛瘘是什么原因引起的| 鸠是什么鸟| 卧是什么意思| 金蝉脱壳是什么意思| 尖锐湿疣什么症状| 什么不得什么| 李子与什么食物相克| 乳房痒是什么原因| 惜字如金什么意思| 行李为什么叫行李| 吃什么可以增肥| 香醋是什么醋| 脑血管痉挛吃什么药| 果脯是什么| 面料支数是什么意思| 民不聊生是什么意思| 静推是什么意思| cc是什么单位| 难舍难分是什么意思| 气血亏虚吃什么中成药| 什么是纤维化| 体质是什么意思| 女性长期便秘挂什么科| 什么叫子宫腺肌症| 凯字五行属什么| 甘油三酯高应该注意什么| 命里缺金取什么名字好| a型血和b型血生的孩子是什么血型| 疣体是什么| 湿气重挂什么科| 5到7点是什么时辰| 姜子牙姓什么| 后宫是什么意思| 脚干裂用什么药最好| 飞舞是什么意思| 胸闷气短吃什么药疗效比较好| 潘粤明老婆现任叫什么| 9月12号是什么星座| 尿检粘液丝高什么意思| 便民门诊是做什么的| 糖类抗原199是什么意思| 菡什么意思| 1958年属狗的是什么命| 929是什么星座| 黑眼圈重是什么原因| 丙酮是什么| pdr是什么意思| 人大常委会副主任是什么级别| 多出汗是什么原因| 什么是邪淫| 脊柱侧弯是什么原因引起的| 伤口化脓用什么药| 口苦是什么原因引起的| 东南方五行属什么| 什么人不能吃秋葵| speedo是什么牌子| 嫉妒是什么意思| 女同是什么意思| 三无产品指的是什么| 什么样的菊花| 霉菌性阴道炎吃什么药| 为什么叫客家人| 湿疹吃什么中成药| 汗斑用什么药| 腺苷是什么| 香蕉可以做什么美食| 什么时候可以查高考成绩| 高位截瘫是什么意思| 结婚60年是什么婚| 什么是宫腔镜检查| 猫睡在枕头旁说明什么| 口苦口干吃什么药最好| 训练有素是什么意思| 为什么尿酸高| 吃避孕药有什么副作用| 铝中毒有什么症状| 囊肿与肿瘤有什么区别| 何五行属性是什么| 1997年属牛的是什么命| 胃痛吃什么药效果最好| 等边三角形又叫什么三角形| 身份证后六位代表什么| 六神无主是什么意思| 痄腮是什么意思| 还行吧是什么意思| 猫咪都需要打什么疫苗| 耳石症吃什么药最好| 白果是什么东西| 运钞车押运员是什么人| 更年期吃什么药好| 全身痒是什么病的前兆| 苦夏什么意思| tac是什么| 随喜是什么意思| 菩提是什么| 田五行属性是什么| 水为什么是透明的| 走马观花是什么意思| 中国什么武器世界第一| 肌酐低是什么意思啊| 芼什么意思| cpk是什么意思啊| 捌是什么数字| 粘胶是什么材质| 朋友圈为什么发不出去| 恻隐之心什么意思| 为什么会得水痘| 宝宝咳嗽流鼻涕吃什么药| 非洲人吃什么主食| 什么牌子奶粉最好| 凭什么我买单| 肚子一直响是什么原因| 小腿前侧肌肉叫什么| 湿气重是什么原因引起的| 排卵期后面是什么期| 正常的心电图是什么样的图形| 梁下放床有什么禁忌| 湿气太重吃什么药最好| 三月十二是什么星座| 眉什么目什么| 婴儿的腿为什么是弯弯的| 水瓶男和什么星座最配| 径行是什么意思| 什么是叶酸| 吃饱了胃胀是什么原因| merrell是什么牌子| tsh是什么意思| 梦见和死去的人说话是什么意思| 颌下淋巴结肿大挂什么科| 周围神经病是什么病| 哥子是什么意思| 梦见自己换衣服是什么意思| 酪朊酸钠是什么| 首鼠两端是什么意思| 浸润性癌是什么意思| 金桔什么时候开花结果| 宜家宜室什么意思| 经常熬夜吃什么好| 伤官伤尽是什么意思| 林俊杰的粉丝叫什么| 个人solo什么意思| 卧轨是什么意思| 低gi食物是什么意思| 人突然晕倒是什么原因引起的| ts是什么品牌| 悻悻然是什么意思| 什么的鞋子| 肾衰竭有什么症状| 桃子不能和什么食物一起吃| 为什么游戏| 白色属于五行属什么| 才字五行属什么| pr在医学上是什么意思| 什么纸| 男人右眼皮跳是什么预兆| 胃炎挂什么科| 积食是什么症状| 彼岸花代表什么星座| 女性安全期是什么时候| 佛光普照什么意思| 什么叫布病| 少腹是什么意思| 重阳节吃什么| 十二指肠溃疡是什么原因引起的| 宫颈肥大是什么原因| 什么是sp| 什么叫蛋白质| 徒木立信是什么意思| 办什么厂比较好| 送日子是什么意思| 绝膑而亡是什么意思| 蟑螂长什么样| 胆固醇高有什么症状| 不孕不育查什么项目| 湿罗音是什么意思| 什么是气溶胶| 今天适合穿什么衣服| 分辨率dpi是什么意思| 提成是什么| 心心相什么| 宅心仁厚是什么意思| hpd是什么意思| 呃逆吃什么药| 前列腺不能吃什么食物| 什么面膜好用| 六月二十三是什么日子| 梦见好多人是什么意思| 什么是汗疱疹| 空调不制冷是什么原因| 代价是什么意思| 死心眼什么意思| 萧邦手表什么档次| 梦见抢银行是什么意思| 欧根纱是什么面料| 勺子是什么意思| 惊醒是什么意思| 送医生什么礼物好| hpv是什么意思| 帽缨是什么意思| 249是什么意思| 蚊子最怕什么植物| 乙肝小二阳是什么意思| 怀孕前期有什么征兆| 沙僧的武器是什么| 七月二十二什么日子| 隐血阳性是什么意思| 碳酸钙是什么| 三文鱼不能和什么一起吃| 1987年出生属什么生肖| 长痘痘擦什么药膏好| iphone5什么时候出的| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式TCP/IP协议栈在单片机上的实现

· 有贪官视喝年份茅台为高雅 一次喝掉30万元

作者: 时间:2025-08-04 来源:网络 收藏
百度 鼓励事业单位实行高层次人才分配激励政策,强化收入分配激励作用。

  随着嵌入式设备与网络的日益结合,在系统中引入TCP/IP协议栈,以支持接入网络,成为嵌入式领域的一个重要方向。在此对基于SST89E516RD的TCP/IP协议栈的实现方法给予讨论。选用SST89E516RD单片机实现了在线仿真和编程的功能,大大节约了开发成本。采用VB 6.0语言与Window 98/2000/XP等为软件开发平台,对系统进行了测试。经过几个月的软硬件测试表明:系统设计合理、稳定可靠,已基本实现了最初的设计目标。对其他类似系统移植该项技术奠定了基础,有很好的参考价值。

  1 系统硬件实现

  整个系统以SST89E516RD单片机为核心,通过RTL8019AS控制芯片实现远程通信。串口完成网卡参数的修改、在线仿真,在系统中还使用X5045作为外部扩展的E2PROM,用来存储IP地址、物理地址以及网卡的其他配置信息,同时X5045还具有电压监控、看门狗定时器、上电复位三种功能,使用X5045监控系统的运行过程,当系统不稳定时可以进行有效地复位。图1为系统硬件结构图。

系统硬件结构图

  2 系统软件实现

  系统软件主要包括客户端和服务器端软件的设计,主要有以下几部分内容:

  (1)RTL8019AS的初始化和驱动程序的设计;

  (2)数据帧的发送和接收子程序;

  (3)TCP/IP协议栈程序的设计;

  (4)客户端和服务器端程序的设计;

  (5)X5045看门狗和E2PROM程序的设计。

  系统的主程序流程图如图2所示。

系统的主程序流程图

  由图2可知,系统首先完成对单片机定时器、串口、网卡芯片和等部分的初始化,然后进入处理部分的主程序,通过定时器中断进行网口数据的超时出错处理,并完成TCP定时器保活和ARP表生存时间的更新。

  2.1 系统初始化

  所谓初始化和驱动程序是指实模式下一组硬件芯片的驱动子程序,它们屏蔽了底层硬件处理细节,同时向上层软件提供与硬件无关的接口。主要包括定时器初始化,初始化PING表、ARP表,初始化TCP,RTL8019AS的初始化等。RTL8019AS的初始化主要包括网卡的复位和网卡寄存器的初始化。RTL8019AS的初始化主要包括网卡的复位和网卡寄存器的初始化。RTL8019AS内部寄存器有4页,与NE2000兼容的有3页,第4页不用。页选择由CR寄存器的PSl,PS0位确定。在零页寄存器中可以设置接收、发送状态配置以及发送缓存区的起始页与接收缓存区起止页地址等;在1页寄存器中可以设置以太网接口的MAC地址和组播地址。对网卡的初始化就是对相关寄存器初始化,这些寄存器包括CR,RCR,TC-R,PSTART,PSTOP,BNRY,TPSR,ISR,DCR,IMR,CURR,PAGO~PAG5,MAR0~MAR5等。初始化过程如下:

  (1)CR=0x21,选择页零的寄存器同时使芯片处于停止模式,不会发送和接收数据包;

  (2)RCR=OxE0,设置接收结构寄存器,monitor方式,所有数据包都被拒绝;

  (3)TCR=OxE2,设置发送配置寄存器,工作在内部lookback模式;

  (4)PSTART=0x4C,接收缓冲区开始页面地址;

  (5)PSTOP=0x80,接收缓冲区中止页面地址;

  (6)BNRY=0x4C,接收缓冲区最后页面指针;

  (7)TPSR=0x40,发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0x40;

  (8)ISR=0xFF,清除所有中断标志;

  (9)DCR=OxC8,设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA;

  (10)IMR=Ox00,设置中断屏蔽寄存器;屏蔽所有中断;

  (11)CR=Ox61,选择页一的寄存器;

  (12)CURR=Ox4D,网卡写内存的指针,指向当前正在写的页的下一页,初始化时指和0x4C+1=0x4D;

  (13)设置多址寄存器MAR0~MAR5,均设置为Ox00;

  (14)CR=0x22,使网卡芯片开始工作;

  (15)设置网卡地址寄存器PAR0~PAR5;

  (16)CR=Ox21,选择页零的寄存器;

  (17)RCR=OxCC,设置接收结构寄存器,设置为使用接收缓冲区,跟外部网络连接;

  (18)TCR=0xE0,设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;

  (19)CR=0x22,使网卡芯片开始工作;

  (20)ISR=0xFF,清除所有中断标志;

  2.2 TCP/IP协议栈的移植

  以太网帧的发送与接收属于协议层中的最底层。发送前的协议封装和接收时的协议分解都非常简单。封装时,只需在上层封装数据前面添加14B的以太网首部就可以了;接收到数据帧之后,根据头信息中的帧类型字段判断是否属于IP包或ARP包,若是就继续相应的协议分解,否则将被丢弃,不予处理。帧的接收工作由网卡自动完成,只需对相关的寄存器如PSTART,P8TOP,CURR和BNRY进行适当的初始化即可。以太网帧的发送过程如下:

  (1)初始化命令寄存器CR,启动RTL8019AS;

  (2)设置数据配置寄存器DCR,以字节方式通信;

  (3)设置发送配置寄存器TCR,选择RTL8019AS数据发送的工作方式;

  (4)设置远程开始地址寄存器RSAR0(低位),RSARl(高位),指明远程DMA操作时所传送数据的起始地址;

  (5)设置远程字节计数寄存器RBCR0(低位),RBCRl(高位),指明远程DMA操作时所传送的数据的字节数;

  (6)设置命令寄存器CR,开始远程DMA写操作。RTL8019AS自动将数据I/O端口的数据写入其缓冲区中;

  (7)开始向数据I/O端口传送需要发送的数据;

  (8)数据传送完毕后,设置发送页起始地址寄存器TBCR,指明待发送数据的起始地址;

  (9)设置发送字节计数寄存器TBCR0(低位),TBCRl(高位),指明待发送数据的字节数;

  (10)设置命令寄存器CR,启动本地DMA操作。把缓冲区中的数据发送到网络上;

  (11)结束。

  需要指出的是,数据在发送前必须先由上到下进行层层封装才能正确地发送出去,同时,接收到的数据包还必须自下而上层层解包才能为用户所识别,即协议分解。在协议编程实现中,数据封装与协议分解互为逆过程。这就是说,必须在数据采集子系统中实现嵌入式TCP/IP协议才能完成数据的TCP/IP处理。

  2.3 客户端和服务器端程序的设计

  分别设计客户端和服务器端程序。适应于不同的工作场合。在面向连接的TCP协议中,服务器和客户机开始通信之前必须首先建立连接。在连接之前,服务器程序必须正在运行并处于监听模式,等待客户端的连接。TCP的连接是通过3次握手协议来完成的。首先,客户端发送1个SYN标志位的TCP段给服务器,其带有所选择段的初始序号。服务器端收到该报文段后,以1个带有SYN标志的段作为应答,其中也给出根据本身情况选择的初始序号,并包含对客户端的确认。

  而客户端收到服务器端的应答后,再次送回1个报文段,其中带有对服务器端SYN的确认。这样双方的连接就建立了,以后就能开始传送数据。同样终止1条TCP连接实际上也需3次握手过程。

  3 应用系统实现

  为了验证系统的可行性,应用VB开发了接口程序,构建了软硬件测试平台,用来设置网卡的配置参数并实现数据的发送与接收。所有配置参数包括(本地IP地址、服务器端IP地址、端口号、网卡物理地址、ping的IP地址、串口号等)都能通过串口动态地更改。系统能实现Ping的功能,以方便检查以太网的状态。

  3.1 参数设置界面

  用串口线将测试板(数据采集和控制系统模块,下同)与计算机连接起来,选择好串口号,然后按“连接单片机”按钮,连接状态工具栏里出现“已经连接”,说明测试板与计算机已经连接上,然后就可以修改配置参数了。在参数设置栏中填写正确的参数值后,按“设定”按钮,接收状态栏中会提示参数设置成功,然后按测试板上的复位键,网卡的参数配置就被写到了X5045中。参数设置界面如图3所示。

参数设置界面

  3.2 数据收发测试界面

  分别测试客户端和服务器端软件通信是否正常。

  (1)服务器端程序的测试

  打开客户端测试界面,如图4所示,设置连接IP地址为192.168.O.44(该地址必须与服务器端的IP地址一致),设置连接端口号为3330(该端口号必须与服务器端端口号一致)。将作为服务器端的程序烧入到测试板的微处理器中,通过图3修改配置界面,将服务器端需要的参数写入X5045,参数配置包括;“单片机IP地址”(指的是测试板自身的IP地址)为192.168.O.44,“服务器端IP地址”可以不用设置(因为测试板本身就即服务器端);如果是新网卡芯片,还需要设置MAC地址,这里设为121314151617(一般选择任意的12位数即可);“服务器端口号”设为3330(必须与客户端一致);网关设为192.168.O.1(要与上位机保持在同一个网段内)。设置好所有参数后,可以进行数据的收发了。

打开客户端测试界面

  (2)客户端程序的测试

  打开服务器端测试界面,如图5所示。

打开服务器端测试界面

  设置连接IP地址为192.168.0.44(该地址指的是上位机自身的IP,必须与客户端设置的“服务器端IP地址”一致),设置连接端口号为3330(该端口号须与客户端设置的“服务器端口号”一致)。将作为客户端的程序烧人到系统的微处理器中,参数配置:“服务器IP地址”(指的是上位机的IP地址)为192.168.0.44,“单片机IP地址”可以不用设置(因为系统仅作为客户端),“服务器端口号”设为3330(必须与客户端一致),网关设为192.168.0.1(要与上位机保持在同一个网段内)。设置好所有参数之后,即可进行数据收发。服务器端的数据可以被发送到串口,同样,数据也可以从串口发送到服务器端。测试表明:上位机通过以太网与系统之间的通信正常。

  4 结语

  在此实现了TCP/IP协议栈在单片机上的移植,完成了系统的硬件电路和相关嵌入式软件的设计,应用VB开发了上位机修改参数界面,通过串口完成对网卡等参数的配置和修改,解决了数据包的超时重发、定时保活、参数配置、硬件看门狗复位等一系列问题。实验表明,整套程序比较稳定,收发数据正常,TCP超时重传效果很好。经过近1个月的测试,没有出现任何丢包和堵塞的现象。

tcp/ip相关文章:tcp/ip是什么




评论


相关推荐

技术专区

关闭
尿酸高说明什么问题 舌苔厚黄是什么原因 蛐蛐进屋有什么预兆 一个壳一个心念什么 月经有黑色血块是什么原因
伤口溃烂不愈合用什么药 孕妇血糖高可以吃什么水果 gummy是什么意思 tct检查是什么检查 吃什么可以增强记忆力
男生回复嗯嗯代表什么 汽车五行属什么 春天像什么的比喻句 八月一号是什么星座 沈阳有什么特产
猫字五行属什么 swan是什么意思 急火攻心是什么生肖 香草是什么 办理生育津贴需要什么资料
三合局是什么意思hcv8jop1ns2r.cn 脾胃不好吃什么药好hcv8jop8ns8r.cn 明前茶什么意思hcv7jop5ns3r.cn 芒果有什么营养价值hcv7jop6ns1r.cn 吃中药不能吃什么东西hcv7jop6ns5r.cn
黑豆熟地水功效是什么hcv8jop8ns6r.cn 卤牛肉用什么部位hcv9jop4ns3r.cn 低密度脂蛋白偏高是什么意思bjcbxg.com 处男是什么hcv7jop9ns1r.cn 冠脉造影是什么意思hcv9jop0ns5r.cn
为什么多喝水反而胖了imcecn.com 97年出生属什么hcv8jop5ns7r.cn 每天早上起来口苦是什么原因hcv8jop0ns5r.cn 正常的包皮什么样子hcv7jop5ns2r.cn 博文是什么意思hcv9jop5ns4r.cn
什么是月子病hcv8jop3ns5r.cn 腿部发痒是什么原因引起的hcv9jop5ns2r.cn 奔是什么生肖dajiketang.com pg是什么单位hcv8jop2ns0r.cn 睡醒后口苦是什么原因hcv8jop2ns4r.cn
百度