嵌入式TCP/IP协议栈在单片机上的实现

发布者:TechGuru123最新更新时间:2011-11-24 关键字:嵌入式  TCPIP协议栈 手机看文章 扫描二维码
随时随地手机看文章
    随着嵌入式设备与网络的日益结合,在单片机系统中引入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等。初始化过程如下:[page]

    (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协议栈的移植
    以太网帧的发送与接收属于协议层中的最底层。发送前的协议封装和接收时的协议分解都非常简单。封装时,只需在上层封装数据前面添加14 B的以太网首部就可以了;接收到数据帧之后,根据头信息中的帧类型字段判断是否属于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所示。

[page]


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个月的测试,没有出现任何丢包和堵塞的现象。

 

 

关键字:嵌入式  TCPIP协议栈 引用地址:嵌入式TCP/IP协议栈在单片机上的实现

上一篇:单片机嵌入式Internet技术的Web应用实现
下一篇:以太网接口芯片DM9000A在嵌入式系统中的应用

推荐阅读最新更新时间:2024-03-16 12:47

基于ARM720T的SEP4O2O 嵌入式处理器的动作控制MP3的设计
  动作识别是一个很热门的话题。苹果公司继推出具有轰动效应的多点触控技术后又筹备申请自己的动作识别专利。动作的识别简单的说就是利用加速度传感器,检测在空间上的速度变化,通过算法,提取动作。动作识别在很多方面都有应用,比如Wii、手机感应游戏、四桨飞行器等,但是目前很少甚至没有将其用在MP3控制上的。当今的电子产品的一大潮流就是用动作控制。试想一下一个没有任何触摸、机械按键的MP3,只要你前后左右的晃动就能进行所有最基本的控制操作,既灵动又时尚,这应当是一种全新的操作体验。本文将探讨如何设计这种通过动作来进行正常控制的MP3。   1硬件平台   1.1 SEP4020嵌入式处理器   本文所述驱动程序基于SEP4020嵌入式
[单片机]
基于ARM720T的SEP4O2O <font color='red'>嵌入式</font>处理器的动作控制MP3的设计
嵌入式系统中的JTAG接口编程技术
    摘要: 分析发嵌入式系统开发中常用的三种芯片编程方法,介绍了JTAG接口的标准,工作原理及在芯片中的实现,根据JTAG接口所提供的边界扫描功能 ,通过PC机并行接口模拟JTAG接口的时序,实现了使用目标系统中微处理器的JTAG接口对系统程序存储器FLASH的编程。     关键词: 嵌入式系统JTAG(Joint test action Group)联合测试行为组织 编程器StrongARM手持设备 随着手持式电子设备的迅猛发展,手机,PDA、掌上电脑,电子书和数码相机等正在快步走进人们的日常生活,这一类电子产品同属于嵌入式系统的范畴,都是以高性能的微机处理器为核心扩展相应的应用程序,实现电
[嵌入式]
基于ARM的嵌入式系统中从串配置FPGA的实现
1 引言 ARM(Advanced RISC Machines)既可以认为是一个公司。也可以认为是对一类微处理器的统称,还可以认为是一项技术。基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到人们生活的各个方面 。到目前为止,ARM微处理器及技术已经广泛应用到各个领域,包括工业控制领域、网络应用、消费类电子产品、成像和安全产品等。 FPGA(Field Programmable Gate Array)是一种高密度现场可编程逻辑器件,其逻辑功能是通过把设计生成的数据文件配置到器件内部的静态配置数据存储器(SRAM)来实现的。FPGA具有可重复编程性,能灵活实现各种逻辑功能。
[嵌入式]
嵌入式智能平台在医疗仪器行业的应用案例
随着人们生活水平的不断提高,人们对于自身健康的关注也提升到一个前所未有的高度。在今天,越来越多的高科技手段开始运用到医疗仪器的设计当中。心电图、脑电图等生理参数检测设备,各类型的监护仪器,超声波、X射线成影设备,核磁共振仪器,以及各式各样的物理治疗仪都开始在各地医院广泛使用。 应用背景    随着人们生活水平的不断提高,人们对于自身健康的关注也提升到一个前所未有的高度。在今天,越来越多的高科技手段开始运用到医疗仪器的设计当中。心电图、脑电图等生理参数检测设备,各类型的监护仪器,超声波、X射线成影设备,核磁共振仪器,以及各式各样的物理治疗仪都开始在各地医院广泛使用。   远程医疗、HIS、病人呼叫中心、数字化医院等先
[医疗电子]
<font color='red'>嵌入式</font>智能平台在医疗仪器行业的应用案例
TI嵌入式处理技术为VEmesh无线网状网络首选方案
日前,德州仪器 (TI) 宣布,Virtual Extension 现已选用 TI 嵌入式处理技术作为其 VEmesh 无线网状网供电的首选解决方案,从而可针对实用程序能耗监控与跟踪创建出便于安装的更可靠的低成本方案。TI 超低功耗微处理器 (MCU) 与 RF 技术有助于提高性能,最小化成本,缩小板级空间,加速 VEmesh 网络应用的上市进程。Virtual Extension 的创新 Diversity Path Mesh™ 技术专门针对自动抄表 (AMR) 等需要高性能的应用进行了优化,可同时传输多个无线电广播路径,从而可创建可靠的无线网络,确保 100% 区域覆盖。凭借该技术,实用程序可在数据收集、防盗、远程操作以
[嵌入式]
嵌入式】W801 OTA方案设计
系统分区表 W801是平头哥内核的WIFI芯片。给到的SDK里面没有找到中断向量表重定向的函数,类似于STM32的NVIC_SetVectorTable,所以中断向量表只能给主程序用,那么BootLoader就没法弄了。干脆不用BootLoader了,直接划一个分区用来存放Updater代码,用于解压或差分计算新固件并复制到主分区(存在变砖的可能性)。 国产芯片就是资料不全,规格书里面写了Flash的寻址空间为0x0800 0000 ~ 0x0FFF FFFF,但是在SDK里面,链接脚本是从0x080d0400开始的,0x080d0400是在toolsw800wconfig文件里面W800_RUN_ADDRESS选项定义的默认
[单片机]
【<font color='red'>嵌入式</font>】W801 OTA方案设计
嵌入式网络智能视频监控系统设计与实现
提出了一种新型的嵌入式网络智能视频监控系统构架方案,该方案由视频分析单元、视频服务器、一级客户端、二级客户端组成;系统地分析了各个部分的关键技术并给出了具体设计和实现方案。多级客户端的结构可以提供对多个嵌入式智能视频监控器的系统管理,可以实现对多个监控场景的全面、无缝监控。系统基于Davicn TMS320DM6446芯片实现。实验表明,该系统安全可靠,可扩充性强,应用灵活。 关键词:智能视频监控系统;嵌入式系统;网络监控;Davicn TMS320DM6446;智能视频分析 类别:嵌入式联网技术头条 0 引言 视频监控技术经历了3个主要的发展阶段:第1代是以磁带存储为主要特征的本地模拟视频监控系统(VTR时代);第2代是以I
[单片机]
<font color='red'>嵌入式</font>网络智能视频监控系统设计与实现
ARM Cortex-M3的嵌入式网络播放系统设计应用
ARM Cortex-M3的嵌入式网络播放系统设计应用 随着网络应用的普及,为普通嵌入式系统增加网络功能,能更好满足消费者对网络资源的需求。这里采用基于ARM Cortex-M3的微控制器LM3S1138实现一种具备网络功能的播放终端系统,该系统不仅具有良好的播放效果,还可从网络音乐服务器上点播音乐并实时播放。 1 网络播放系统的设计方案 该网络播放系统由服务器、用户终端和音响设备组成。其中,服务器通过以太网提供音乐资源,用户终端通过网络下载音频数据再实现音频解码,音响设备实现音乐播放。图1给出该系统设计框图。 该系统设计采用基于ARM Cortex-M3的控制器LM3Sll38作为主控制器。该控制器改进了代码密度,减少中断延
[单片机]
ARM Cortex-M3的<font color='red'>嵌入式</font>网络播放系统设计应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved