当前位置:首页 > ip
  • TCP/IP协议栈在嵌入式异构网络互联中的应用

      摘要:随着测控技术与网络技术日益紧密的结合,测控系统接入互联网已经成为大势所趋。本文阐述在一种异构网络互联——CAN总线与以太网互联系统设计方案中嵌入式TCP/IP协议栈的设计与实现。从而实现了将基于TCP/IP协议的计算机网络设备与基于CAN总线协议的底层现场网络连通。     关键词:TCP/IP协议栈 CAN总线 以太网 互联网 异构结构 引言 Internet现已成为社会重要的信息流通渠道。如果嵌入式系统能够连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。可以预言,嵌入式设备与Internet的结合代表着嵌入式系统和网络技术的真正未来。随着IPv6的应用,设备都可能获得一个全球唯一的IP地址,通过IP地址和互联网相连成为一个网络设备。但是传统的TCP/IP协议在实现实时性方面做得不够好,它把大量的精力花在保证数据传送的可靠性以及数据流量的控制上。而在实时性要求比较高的嵌入式领域中,传统的TCP/IP不能满足其实时要求。另外,传统TCP/IP的实现过于复杂,需占用大量系统资源,而嵌入式应用的系统资源往往都很有限。因此,需要把传统TCP/IP在不违背协议标准的前提下加以改进实现,使其实现性得到提高,占用的存储空间尽可能少,以满足嵌入式应用的要求。 在大型企业自动化系统中,上层企业管理层和生产监控层一般采用的都是以太网和PC机,而在下层车间现场都是采用现场总线和单片机测控设备。上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡和并行打印口EPP接口卡来实现。这种连接方式成本高,开发周期长。针对这些情况,本文提出了一种单独的嵌入式CAN-以太网网关互连系统的设计方案,成功地实现以太网和现有的CAN总线网的直接数据传输。1 异构网络互联系统结构设计 CAN总线是一个设备互连总线型控制网络。在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层就要通过一种数据网关。 这里设计了一个SX52网关,用于CAN总线与以太网的互连。图1所示的系统总体结构分为三部分:现场测控网络(CAN网络)、嵌入式透明SX52网关和以太网信息管理终端(如监控平台和网络数据库等)。以太网信息管理终端与CAN总线上的CAN节点通过Ethernet、SX52网关、CAN总线相互通信,其中SX52网关起核心异构网络的互连作用。 协议转换是异构网络互连的技术关键和难点。协议转换一般遥相呼应采用分层转换的方法,自低向上逐层进行。目前互连大都是在网络层或网络层展开的,因而必须对互连层以下各层协议逐层向上转换。这种转换方法的依据是协议分层的基本原理,即低层支持高层,高层调用低层,低层断开连接后,高层连接也随之断开,但高层断开连接却不会影响低层。从网络的分层结构上来看我们设计的互连系统具有如图2所示的分层结构。以太网上运行TCP/IP协议,它具有应用层、传输层、网络层以太网数据链路层和物理层;CAN总线具有应用层、数据链路层和物理层,其中应用层由用户自己定义,数据链路层和物理层由CAN协议所定义;SX52数据网关具有物理层、数据链路层和应用层,其应用层也就是Ethernet与CAN的信息数据交换层,SX52微控制器在此层相互解释并转发这两种不同协议的数据。 在本设计中,SX52网关被设计成了一个透明数据网关。也就是在以太网应用层构建和解析完整的CAN协议数据包。CAN协议数据包作为TCP/IP网络的应用层的数据进行传输。对通信数据的具体实际意义不做任何解释。 透明式网关由通信处理器、CAN总线控制器和以太网控制器三个部分组成。其中SX52单片机为核心处理器,实现CAN控制网络与以太网之间的协议转换。以太网信息管理 层的控制指令发送到嵌入式透明SX52网关,经过它将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。 2 SX52中TCP/IP协议栈的设计 按照层次结构思想,对计算机网络模块化的研究结果是,形成了一组从上到下单向依赖关系的协议栈(protocol stack),也叫协议族。在标准的TCP/IP协议族中有很多协议。这里SX52中TCP/IP协议栈层次结构如图3所示。 2.1 SX52 ARP协议的设计与实现 地址解析协议ARP(Address Resolution Protocol)可以实现逻辑地址到物理地址的动态映射。它提供了一种使以太网络节点可以传输一个IP数据包到目的地址的映射机制。 在SX52中,ARP协议是通过一个“IP地址对应以太网地址”的单登记实现的。当远程主机需要知道它的物理地址时,远程主机会向它发送ARP请求。这时它就会响应这个远程主机的请求,告诉对方自己的物理地址。当然,当应用层需要传输IP数据包时,SX52 ARP协议也可以请求远程目的物理地址。    要传输的Internet数据包在以太网控制器的发送缓冲区中被构建,它使用最近接收到的数据包的目的以太网地址作为发送数据包的目的地址。当然,这可能不是正确的以太网地址,因此,在实际发送数据包之前,ARP协议将检查发送数据包中的IP地址是否存在于ARP核中。如果发送数据中包中的IP地址在这个核中,在以太网发送缓冲区中的数据包将使用ARP核中的以太网地址更新;如果不在,ARP协议将发送一个ARP请求包,然后等待一个应答。一旦这个ARP应答接收到,这个ARP核将使用刚接收到的目标以太网地址更新,接着,等待发送的数据包也将使用这个以太网地址更新,然后被发送出去。如果发送的ARP请求包没有应答,导致ARP定时器超时,这时等待发送的数据包将被废弃,正常的协议栈继续运行。使用的变量有:ARP核中的IP地址{hostlIP3,hostlIP2,hostlIP1,host1IP0};ARP核中的以太网物理地址{host1Eth0,host1Eth1,host1Eth2,host1Eth3,host1Eth4,host1Eth5};ARP协议的定时器{arpTimerMSB,arpTimerLSB}等。使用涉及的函数有:ARPInit(),ARPCheckCache(),ARPSendResponse(),ARPUpdateEthAddr(),ARPCheckIfIs(),ARPCompare4(),ARPSendStPacket(),ARPSendCommon(),ARPSendRequest()。 2.2 SX52 IP协议的设计与实现 IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP提供不可靠、无连接的数据报传送服务。本设计中的IP协议是针对特殊的应用环境下的合理简化。CAN总线的控制网络是一种短帧(每个数据帧为8字节)的实时网络,所以,IP数据包无须分片(MF=DF=0),同时,设置IP为服务类型为一般类型,其头长为20字节,寿命TTL设置为64。使用的变量有:目的IP地址{remoteIP3,remoteIP2,remoteIP1,remoteIP0};源IP地址{myIP3,myIP2,myIP1,myIP0};IP校验和{ipCheckSumMSB,ipCheckSumLSB};IP数据包长度{ipLengthMSB,}ipLengthLSB};上层使用的协议ipProtocol,IP标识{ipIdentMSB,ipIdentLSB}。使用涉及的函数有:TCPIPInit(),CheckIPDatagram(),CheckIPDestAddr(),IPStartPktOut()等。 2.3 SX52 ICMP协议的设计与实现 为了让互联网中的路由器报告或提供有关意外情况的信息,在TCP/IP协议系列中加入了一个专门用于发送差错报文的协议——互联网控制报文协议ICMP(Internet Control Message Protocol)。ICMP是IP的一部分在每个IP实现中都必须用到它。像其它所有的通信业务一样,ICMP报文是放在一个IP数据报的数据部分中传送的。ICMP报文的最终目的不是应用程序或目的机器上的用户,而是该机上处理它的Internet协议软件模块。也就是说:Internet控制报文协议允许路由器向其它路由器或主机发送差错或控制报文;ICMP在两台主机的Internet协议软件之间提供通信。 每个ICMP报文都以相同的3个字节开始:1个8位整数的报文类型(TYPE)字段用来识别报文,1个8位代码(CODE)字段提供有关报文类型的进一步信息,1个16位校验和字段。此外,ICMP报文还总是包括产生问题的数据报首部及其开头的64位数据。 ICMP使用IP来传送每一个差错报文。当路由器有一个ICMP报文要传递时,它会创建一个IP数据报并将ICMP报文封装其中,也就是说,ICMP报文被置于IP数据报的数据区中,然后这一数据报像通常一样被转发。即整个数据报被封装进帧中进行传递。 每一个ICMP报文的产生总是对应于一个数据报。路由器将一个ICMP报文将回给产生数据报的主机。在这里,只实现了ICMP的回应请求/应答服务,主要用于PING程序测试通信链路的畅通性,即只处理接收的报文类型为0x08的ICMP帧,发送的ICMP报文类型为0x00。它没有自己专有的变量,涉及的函数也只有ICMPGenCheckSum()和ICMPProcPktIn()。 2.4 SX52 UDP协议的设计与实现 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP不提供可靠性,它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP,而使用一种可靠的协议,如TCP。但分析发现,UDP在我们的互连设计中有很多的优点:其一,UDP协议传输效率高,无须TCP通信前的连接开销;第二,UDP协议简单,无须复杂的状态机传输机制,可以很好地避免SX52网关死机复位后由于状态不一致而无法正常通信,且上层协议又很难发现的危险。因此,可以使用UDP来实现通信(避免TCP连接的开销),而让许多需要的特征(如动态超和重传、拥塞避免、查错等)放置在应用层设计和实现。使用的变量有: UDP接收数据报的源端口{udpRxSrcPortMSB,udpRxSrcPortLSB}; UDP接收数据报的目的端口{udpRxDestPortMSB,udpRxDestPortLSB}; UDP接收数据报的长度{udpRxDataLenMSB,udpRxDataLenLSB}; UDP发送数据报的源端口{udpTxSrcPortMSB,udpTxSrcPortLSB}; UDP发送数据报的目的端口{udpTxDestPortMSB,udpTxDestPortLSB}; UDP发送数据报的长度{udpTxDataLenMSB,udpTxDataLenLSB}。 设计的相关函数有:UDPAppInit(),DPGenCheckSum(),UDPStartPktOut(),UDPProcPktIn(),UDPEndPktOut(),UDPAppProcPktIn(),UDPAppProcPktOut()等。 2.5 SX52 TCP协议的设计与实现 传输控制协议TCP(Transmission Control Protocol)是传输层的重要协议。它提供一个完全可靠的(没有数据重复或丢失)、面向连接的、全双工的流传输服务。本设计中,对复杂的TCP协议做了合理的简化:①因为CAN网络传输速度较快,数据量小且10Mbps的以太网传输一般不会发生阻塞,以太网上的主机也会有足够的能力及时处理通信数据,所以可以固定超时与重传的时间为5s。②RTL8019AS上有两个1500字节的接收缓冲区,且CAN网络为控制网,信息量小,所以可以固定接收窗口为1400字节。③因为我们采用一般的TCP服务就可以满足应用,所以可以忽略紧急指针和选项及填充字段的值。通过上述三点简化,实际上大大简化了TCP协议的实现。因为TCP的超时与重传时间的确定和窗口大小的控制有着较复杂的算法和实现机制。 它的实现变量有:tcpState,{tcpTmpSeq4,tcpTmpSeq3,tcpTmpSeq2,tcpTmpSeq1},{tcpTmpAck4,tcpTmpAck3,tcpTmpAck2,tcpTmpAck1},{tcpUnAckMSB,tcpUnAckLSB},tcpRxFlags,{tcpCheckSumMSB,tcpCheckSumLSB},{tcpLengthMSB,tcpLengthLSB},{tcpTmpMSB,TcpTmpLSB},{tcbLocalPortMSB,tcbLocalPortLSB},{tcbRemotePortMSB,tcbRemotePortLSB},{tcbSndUna4,tcbSndUna3,tcbSndUna2,tcbSndUnal},{tcbRcvNxt4,tcbRcvNxt3,tcbRcvNxt2,tcbRcvNxt1},tcbOffset,tcbFlags,{tcbSendWinMSB,tcbSendWinLSB},{tcpTimerMSB,tcpTimerLSB}等。 相关函数有:TCPIPInit(),TCPRxHeader(),TCPProcPktIn(),TCPTransmit(),TCPReTransmit(),TCPAppPassiveOpen(),TCPAppActiveOpen(),CPAppClose(),TCPAddRcvNxt(),TCPIncRcvNxt(),TCPIncSndUna(),TCPCopySeqToNxt(),TCPAckUpdate(),TCPUpdateSeq(),TCPChkSeq(),TCPRestorePrev(),TCPCmpNxtSeq(),TCPSendEmptyPkt(),TCPSendReset(),TCPSendSyn(),TCPSendISN(),TCPSendSynAck()TCPSendAck(),TCPSendFin(),TCPCheckSuminit(),CPCheckSumAcc(),TCPCheckSumAddHdr(),CPTxByte(),TCPStartPktOut(),TCPAppInit(),TCPAppTxBytes(),TCPAppTxData(),TCPAppTxDone(),TCPAppRxBytes(),TCPAppRxData(),等。 2.6 TCP和IP传输层协议的选择 把TCP/IP协议应用到控制网络中如何选择传输层协议类型很关键。如果要与现有的应用程序通信,必须使用与其相同的协议类型。在实际应用时,从可靠性来说,TCP提供了可靠的数据连接,UDP和直接访问IP的一些协议是不可靠的,数据报可能会丢失、损坏或重复;从性能上讲,UDP的性能最快,可靠性、流量控制重组包和连接维护等附加开销降低了TCP的性能。对于速度比较慢的系统来说,如温度、湿度传感器,选择TCP或UDP都无所谓,对于不太重要的传感器选用UDP就可以了;对于可靠性要求较高的传感器,应该选用TCP协议;对于实时性要求高的网络设备,如网络会议系统、IP音响、实时播放的电视等设备,数据传输率较高,应该选用UDP协议;有些有严格要求的同步系统应采用UDP;数据监控系统传输的可靠性要求较高,应采用TCP;Web和Email也应采用了TCP。总之,要根据实际情况来确定选用何种协议。 结语 针对本嵌入式异构网络互连方案,对TCP/IP协议栈简化设计为SX52型CAN总线与以太网互连方案,达到了测控通信系统高实时性、可靠性和嵌入式设计的要求。该互连方案很好地保证及管理监控层和生产测控层之间的连接,方便了上下层信息交换,能满足工厂、变电站等工业场合的应用要求。

    时间:2004-12-18 关键词: tcp ip 设计教程

  • 用PowerPC实现高带宽 TCP/IP 性能

    用PowerPC实现高带宽 TCP/IP 性能

    今天,实现线速 TCP/IP 性能仍旧是一项重大设计挑战。在本文中,我们将讨论限制 TCP/IP 性能的单位字节和单位包的处理成本,并给出在基于嵌入式处理器的应用中实现千兆位以太网 TCP/IP 性能最大化的技术。   千兆位以太网性能的获得是通过利用多端口 DDR 存储器控制器,在嵌入式 PowerPC处理器局部总线 (PLB) 接口与两个数据端口之间分配存储器带宽而实现的。每个数据端口连接到一个直接存储器访问 (DMA) 控制器,从而允许硬件外设对存储器进行高带宽访问。   系统架构  存储器带宽对高性能网络连接应用来说是一个重要考虑事项。通常,外部 DDR 存储器为处理器和一个或多个高带宽外设(如以太网)所共享。一个多端口存储器控制器负责将可用存储器带宽高效地分配给处理器接口和流式外设,包括以太网。流式外设通过点对点流式接口由直接存储器访问 (DMA) 控制器链接到存储器。DMA 控制器实行分散-收集 (scatter-gather) 机制,由此将多个缓冲区转换到以太网或其他流式外设上的一个数据流,或相反。以太网外设对发送和接收路径同时实行校验和卸载,以优化 TCP 性能。下图显示了上述系统的一种框图。   TCP/IP 单位字节处理成本  当处理器处理有效载荷数据时就会产生单位字节处理成本。这种类型的两个最常见的操作是缓冲区复制和 TCP 校验和计算。缓冲区复制意味着重大处理开销,这有两个原因:  1. 大部分复制都不是必要的。  2. 处理器不是高效的数据搬运工。   TCP 校验和计算代价高昂,因为需要对每个有效载荷数据字节进行计算。支持嵌入式 TCP/IP 的应用(如医疗成像)要求使用接近线速的 TCP 带宽,以便通过千兆位以太网可靠地传输图像数据。数据是从高分辨率图像源生成的,而不是处理器。这种情况下,引入零复制软件 API 并将校验和计算利用FPGA 逻辑结构实现,将彻底地消除单位字节处理成本。"零复制"是用来描述一个 TCP 软件接口不会发生任何缓冲区复制的术语。Linux 和其他操作系统已经引入了用于此目的的软件接口,商用独立 TCP/IP 栈厂商如 Treck 也提供了类似的零复制特性。这些软件特性允许消除用户应用程序与 TCP/IP 栈或操作系统之间的缓冲区复制。   系统的分散-收集与校验和卸载特性为零复制功能提供了所需的硬件支持。分散-收集特性是 DMA 控制器的一种灵活性,它允许软件缓冲区位于任意字节偏移处。这避免了处理器复制未对齐或碎片化的缓冲区。   校验和卸载是以太网外设的一种特性。它允许当以太网帧在主存储器与外设的硬件 FIFO 之间传输时,在 FPGA 结构中进行 TCP 有效载荷的校验。这些系统特性消除了代价较高的缓冲区复制与处理器校验和操作,让处理器专心执行协议操作和用户功能。   TCP/IP 单位包处理成本  单位包处理成本与涉及包的发送或接收的操作有关。包中断、硬件接口和头处理等,都是单位包处理成本的例子。中断处理成本对处理器和存储器子系统构成相当大的负担,特别是在传输小包时。中断结合 (Interrupt coalescing) 是此类系统中用来缓解这种压力的一种技术,它将中断处理成本通过多个包分期摊还。DMA 引擎将一直等待,直到出现 n 个要处理的帧,然后才中断处理器,其中 n 是一个软件可调的值。   通过减少传输帧的数量,大尺寸包(9,000 字节的巨帧)的传输具有相似的效果,由此可得到中断数。它把单位包处理成本分摊在一个较大的数据有效载荷上。   设计实现  实现这种体系结构的一个例子是赛灵思公司的千兆位系统参考设计 (GSRD)。它面向基于 TCP/IP 的协议与用户数据接口(如高分辨率图像捕捉或光纤信道)之间的高性能桥接。GSRD 的组件包含解决 TCP/IP 系统的单位字节处理成本和单位包处理成本的特性。对于需要使用嵌入式操作系统的应用,可提供 MontaVista Linux端口和来自 Treck 的商业独立 TCP/IP 栈,以满足具有最高带宽要求的应用。GSRD 使用巨帧可提供高达 890 Mbps 的发送 TCP 性能,可采用赛灵思公司目前最新的 FPGA 技术来实现。 GSRD 可以从 http://www.xilinx.com/gsrd/ 下载得到。

    时间:2005-12-16 关键词: 高带宽 tcp ip powerpc 设计教程

  • 嵌入式系统中TCP/IP协议的精简与实现

    摘要: 通过对TCP/IP协议的分析,结合嵌入式系统的特点,挑选出一套精简、实用的TCP/IP协议子集,并详细介绍各协议层的实现过程。为嵌入式网络系统的开发提供一个较为简单且可行的思路。 关键词:嵌入式系统,以太网,TCP/IP协议, UDP, ARP 1、引言     嵌入式网络系统就是在嵌入式设备上实现了网络互联功能的系统,一般要求嵌入式设备在软件上支持TCP/IP协议栈,实现有关的以太网通信协议。如何实现TCP/IP协议是嵌入式网络系统的关键技术之一,在嵌入式系统中应用TCP/IP协议的关键是,如何设计出精简、高效的TCP/IP协议子集,以此来减少对系统资源的占用。     目前使用广泛的TCP/IP协议栈有LWIP(Light Weight)、uIP、Linux IP等,这些协议栈具有一定的通用性,包含的协议内容比较全,同时也比较复杂。具体在移植到应用系统的时候要考虑的问题较多,各个库文件和全局变量相互交叉引用,若要针对特定系统进行精简,则牵一发而动全身,尤其是存储器的管理及上层协议与底层网络驱动的接口是两个最大的移植难题。     为了能对TCP/IP协议有较深的了解,又利于后期进行深入研究,我们在实现一具体的Internet网络报警系统时,进行自主的嵌入式TCP/IP协议开发。下文所介绍的TCP/IP协议系统由于精简而利于实现,且无需进行内存管理,适合传送数据量不大的嵌入式系统。在实现时,只要根据相应的数据帧格式,在各层完成相应的功能即可。非常适合研究学习之用,为嵌入式网络系统的开发提供一个较为可行且简单的思路。 2、协议的分析与选择     众所周知,TCP/IP是一个协议族,是几百种网络协议的集合。通用计算机系统有足够的资源支持通信协议在内核实现,但是嵌入式系统则不同,因为其CPU处理能力和系统存储能力都受到成本限制,充分利用资源、提高系统性价比是开发嵌入式应用的根本特点。所以要对TCP/IP协议进行精简以适应嵌入式系统。     下面我们以实际的Internet网络报警系统为例,设计一个较为精简的TCP/IP协议子系统。此系统采用32位ARM结构的三星S3C440BX处理器,加SMSC公司的以太网控制芯片LAN91C113,以及另外一些外围芯片组成。此系统要求经Internet传送一些现场采集的报警数据到远程站点,要求实时性好、传输速度快,但每次传输的数据量很少,只是简单的报警信息。根据这些要求,再经详细分析TCP/IP各协议层实现的功能,精简出的协议子集如图1: 层次 需要实现的协议 应用层 无 传输层 UDP 网络层 IP、ICMP中的Ping响应协议 链路层 ARP应答协议 图1 精简的TCP/IP协议子集     首先在链路层上,由于采用以太网的接入方式,系统必须要实现IEEE802.3所规定的CDMA/CD协议。CDMA/CD协议不需用户实现,此协议只要采用通用的以太网接口芯片就可支持。其次,为了保证系统在以太网中的通信,系统还需实现ARP应答协议,该协议用于将IP地址映射成以太网MAC地址。ARP的执行依靠维持一张表来完成IP地址和MAC的地址的映射。     在网络层,由于系统要求能够在Internet进行通信,因此系统要实现IP协议。IP层的代码有两个功能:验证到来的IP报文报头的正确性,并且对TCP和ICMP报文实行分流。因为不考虑IP的分片和重组,所以 IP层的代码非常的精简。为了能够测试系统与网络的连接,系统需要实现ICMP协议中的Ping应答协议,Ping应答协议主要是检查网络是否连通     在传输层, TCP为两台主机提供面向连接的、可靠的、无重复的双向数据流传输服务,TCP协议设计了严格的3次建立连接握手过程、4次关闭连接握手过程,这些过程的实现对系统资源的耗费非常大。而UDP的实现比较简单,它在某些嵌入式Internet的应用场合可以很好地应用。考虑到系统的简化及速度的要求,采用了UDP协议,为了确保UDP数据的到达,在应用程序中采用了重复发送、回复确认的方式来保证数据的正确性。     由于本嵌入式系统无HTTP、FTP等应用,所以应用层中的协议无需实现。 3、协议的实现     本系统由于协议比较精简,只保留了必须使用的一些协议,所以实现过程相对简单。实现过程中的一个总目标是系统开销要少,每一层之间要相互独立,内存操作简单。为了实现每一层的独立,实现上下层之间的数据透明传输。每层之间应通过一系列的函数进行数据传递,同时为了减少由于数据拷贝引入的系统开销,系统应通过指针操作,而不是数据拷贝方式,将缓冲区中的数据沿协议栈向上传递。     由于TCP/IP的各层协议的各种数据格式,在各种资料中都有详细说明,这里就不再一一介绍。只详细介绍总的结构、各层的功能及实现过程,为了便于调试,系统在实现时肯定是从底层开始,一层一层往上实现。 1) 首先公共数据结构的定义:如MAC地址格式、IP地址格式、系统的地址配置、缓冲区格式及大小。     其中MAC、IP地址格式都是固定的,系统的配置用于确定系统的IP地址及端口以及MAC地址值。在本系统中由于传送的数据有限,只定义了4个用于传送和接收数据的缓冲区每个长度为150字节。 2)网络驱动接口:由于网络驱动也是我们自己编制的,所以与上层结合起来很顺利,接收时采用中断机制,当收到网络中断就读取数据,根据包的种类分别传给ARP或IP协议,由每一层自行处理数据。发送时采用查询方式,应用层准备好数据,一层层封装并向下传递,最后经由网络驱动程序发送。 3) 链路层ARP协议的实现:     首先定义ARP数据帧头结构及ARP高速缓冲表,数据帧必须根据标准定义,高速缓冲表至少要含有IP地址及相对应的MAC地址两项。由于嵌入式系统所连接的对象数目较少且都比较固定,所以就去掉了缓冲表的定时刷新程序,这样可以大大减少系统的刷新开销。     这一部分的主要工作是: a、根据上层数据包中的IP地址,在高速缓冲表中查出对应的MAC地址并填入包中相应位置。若表中没有相应MAC地址,则按照格式组装一个ARP请求包并发送,以得到对方MAC地址。 b、若收到ARP应答包,则更新ARP缓存表。 主要函数有: struct pbuf * arp_packet(struct arpdata *q)// 把要发送的ARP数据打包成网络格式字节流; struct mac *arp_lookup (struct ip *p) // 根据IP地址在ARP缓存表中查找MAC地址,若找不到则自动向网络广播ARP请求; void arp_input(struct pbuf *p)// 从驱动程序传入ARP帧数据,如果是ARP请求则发送一个ARP应答包,如果是ARP应答则更新ARP缓存表; 4)网络层IP协议及Ping应答的实现:     首先定义数据结构IP及ICMP数据帧格式,这两者都要根据标准来定义。这一部分的主要工作有: a、对上一层传下来的数据包,加上IP首部和IP校验和,发往下一层。以及对下一层传上来的数据包,进行校验和检查,若正确去掉IP首部,送往上一层。 b、为了便于测试要响应主机的PING程序,即如收到ICMP的回显请求包,则按照格式组装一个ICMP的回显应答包并发送。 主要函数有: int ip_input(struct pbuf* p);//输入下一层的数据包,去掉IP首部传给上一层; int ip_send_data(struct pbuf *p,int len,int type,struct ip dst_ip);//将上一层的数据加上IP首部,并向下一层发送; void ip_packet(struct pbuf *p,struct IP_data *q,int len);//IP首部和数据打包; U16 ip_chksum(U8 *p,int len);//IP检验和计算; void icmp_input(struct pbuf *p) 如果ICMP的回显请求,则发一个应答包; 5)传输层UDP协议的实现:     根据标准定义UDP数据帧格式。这一部分的主要工作有:对应用层传下来的数据包,加上UDP首部和UDP校验和,发往下一层。以及对下一层传上来的数据包,进行校验和检查,若正确去掉UDP首部,提出数据送给应用层。需注意的是,要产生一个伪首部用于UDP数据检验和计算。 主要函数有: void udp_input(struct pbuf *p);//从下一层输入UDP数据 void udp_output(U8 *str,struct ip dst_ip,U16 dst_port);//向下一层发送UDP数据 void makeup_pheader(struct ip *p,U16 len ,U8 *q);//产生伪首部用于UDP检验和计算 U16 udp_chksum(U8 *p,int len,U8 *p1,int len1);//计算UDP检验和 6)执行过程:     当本地系统有数据要发送时,首先在传输层将数据加上UDP首部,再到网络层加IP首部,然后到链路层从ARP表中查询相应的MAC地址,填入相应位置,并发给网络驱动程序传到以太网上。     图2是用SPYNET软件截取的本系统启动后第一次发送一串字符的整个网络协议应答过程,由于是第一次发送, ARP表为空。所以当发送UDP数据时找不到目的IP地址对应的MAC地址,系统先发ARP请求,等对方回一个ARP应答,得到对方MAC地址,然后再发UDP数据包。 图2 一个实际UDP数据包发送全过程 4、结束语        由于嵌入式系统发展及互联网络的普及、远程控制和信息家电的兴起,嵌入式系统与互联网络的结合逐渐成为一种新的技术发展方向,嵌入式TCP/IP协议的选择与实现是这一技术必须要面对的。很多时候在涉及TCP/IP协议时,都容易被其复杂的体系结构所迷惑,而不敢轻易动手,本文提出的这种嵌入式TCP/IP协议的选择思路及给出的一套精简TCP/IP协议子集的实现过程,对于这一方面的研究很具有参考价值。参 考 文 献 1、李润知,岳俭,李阳阳(2003).基于Web的嵌入式网络管理系统.《计算机应用》.23(6):95-97. 2、许海燕,付炎主编(2002).嵌入式系统技术与应用.北京:机械工业出版社。 3 、(美)W.Richard Stevens著,范建华等译(2000).TCP/IP详解 卷1:协议.机械工业出版社。 4、李明,康静秋,贾智平(2002).嵌入式TCP/IP协议栈的研究与开发《计算机工程与应用》.2002(16):118-121. 5、洪锡军,汪德才(2000).基于Internet的多功能远程监控报警系统.《上海交通大学学报》.34(10):1370-1371.

    时间:2007-03-25 关键词: tcp ip 简与实 设计教程

  • IP-TV中的解决方案

    IP-TV中的解决方案

    一、系统概述     2008年第29届奥运会将在中国举行。中国政府为把本次奥运会办成一届奥运历史上最成功的体育盛会,提出了"科技奥运、绿色奥运、人文奥运"的主题和宗旨。如何才能体现‘科技奥运’、‘人文奥运’的深刻内涵,建设具有良好信息化设施的智能化体育场馆是其最基本的硬件要素,它不仅能更有效的满足各种比赛的要求,促进经营管理和其综合服务的规范化,同时也能为运动员特别是广大观众提供良好、便捷的交流互动环境,并为大赛的顺利进行提供必不可少的安全保障。体育场馆的安保主要涵盖视频监控系统、出入口控制及报警系统、智能消防报警系统、行李安检系统、爆炸物及毒品检测系统等,而所有的系统都需要有一个安防集成平台。视频监控将是最核心、重要的部分。 二、运动场馆的安防设计主要考虑以下方面: 1、人员密集区     对视频监视系统的要求是系统可靠、稳定,反应速度快捷,能够在第一时间发现警情,并且具有多种联动功能,可以及时通知各个安全保卫部门做出最及时的反应,并且在事后可以保存下全部过程的图像,作为重要资料备查。 2、来宾、要员保护     需要对重要设施实施24小时实时监控;对各国首脑、奥委会官员、国家及省市的官员、国外媒体记者、各界知名人士、运动明星所在区域、所经通道等实施重点全方位不间断跟踪保护,保证他们的安全。 3、运动中心整体防护     运动场馆一般是一个由主体育场、训练场、体育馆、游泳馆、商业区等组合而成的一个建筑群,在我们设计安全防范系统的整体方案时,不仅要考虑主体育场本身的安全防护需要,还要从体育中心这一建筑群的整体出发,为其设计安全有效的技术防范体系。 4、赛场防暴与反恐     要求前端设备能对敏感地区及目标实行电子布防、撤防,同时可以与周界报警、防盗报警、紧急报警、门禁报警系统联动,报警后调出相应防区的电子地图,同时弹出实时图像,并对目标进行跟踪和锁定,并可与摄像机进行联动报警。 三、体育场馆视频监控原理     监控网络摄像机直接将视频图像信号直接转换为数字网络信号,并通过网络接口传递到视频服务器,并依据监控管理需要将图像记录到视频数据服务器,通过通讯服务器与广域网或者特定网络相连,实现远程图像调用、监视功能。在监控中心的视频服务器上可以通过网络远程监视多个音视频图像和安防信息,并可控制前端的云台;监控视频服务器可以记录报警发生时的前端图像,并可以进行网络远程存储,即通过网络存储到相关的存储设备,例如消防主机、安防主机等。 系统框图: 四、系统采用研祥主机配置: 1、局域监控主机:采用Raid静像功能,硬盘进行主备份。内制多路数字视频采集卡,同时配置I/O卡,控制灯光开启、和智能报警 机箱:IPC-810A/6114P12/7270ATX               主板:FSC-1715VN               CPU:P4 2.4               硬盘:200G*2               板卡:PCI-16P16R 2、主站服务器:   机箱:IPC-8621/6114P12/ATX 500W               主板:FSC-1717VN               CPU:P4 3.0               硬盘:1200G  3、远程监控单元: 平板电脑PPC-1701 五、系统评价     整个系统控制部分含概了研祥的主机配置,无盲区,并与相应照明、入侵报警设施以及声音复核等设备联动,与防爆安检、视频安防监控等子系统结合使用。全数字远程视频监控系统不仅满足目前的监控需求,而且为将来的扩充提供了很好的接口,符合未来监控系统的发展趋势:即数字化、智能化、网络化。

    时间:2008-07-22 关键词: 方案 ip tv 解决 设计教程

  • W5100在嵌入式系统中实现TCP/IP网络通信的应用

    摘要:W5100是WIZnet公司最新推出的固件网络芯片,它是在W3150A+的基础上,集成了以太网物理层RTL8201CP核,因此W5100集TCP/IP协议栈、以太网MAC和PHY为一体。W5100支持TCP,UDP,ICMP,IGMP,IPv4,ARP,PPPoE,Ethernet等网络协议;支持4个独立的Socket通信,内部16K字节的发送/接收缓冲区可快速进行数据交换,最大通信速率达到25Mbps;提供多种总线(两种并行总线和SPI总线)接口方式,可以很方便地与各种单片机连接。 关键词: W5100,TCP/IP协议,以太网,单片机引言 我们原来介绍过W3150A网络芯片,由于W3150A使用时还必需要在外面接一个以太网物理层接口器件(RTL8201CP),增加了使用时的硬件难度,因此Wiznet公司最新推出了W5100,将TCP/IP协议栈、以太网的MAC和PHY三种功能集为一体。W5100不仅保留了原来与MCU接口的并行总线接口,还增加了SPI串行总线接口。W5100器件的推出,大大简化了硬件电路设计,使单片机系统在没有操作系统的支持下,真正实现了单芯片接入Internet的理想。芯片介绍 W5100有如下特性:·� 与MCU多种接口选择,直接总线接口、间接总线接口和SPI总线; ·� 支持硬件TCP/IP协议: TCP, UDP, ICMP, IGMP, IPv4, ARP, PPPoE, Ethernet; ·� 支持ADSL连接 (支持PPPOE协议,带PAP/CHAP验证); ·� 支持4个独立的端口(Sockets)连接; ·� 内部16K字节存储器作TX/RX缓存; ·� 内嵌10BaseT/100BaseTX以太网物理层,支持自动应答(全双工/半双工模式); ·� 支持自动极性变换(MDI/MDIX); ·� 多种指示灯输出(Tx,Rx,Full/Duplex,Collision,Link,Speed); ·      0.18µm CMOS工艺; ·      3.3V工作电压,I/O口可承受5V电压; ·      LQFP80无铅封装,符合环保要求。W5100的结构如图1所示。典型应用 1.网络考勤机/门禁系统 W5100在网络考勤机/门禁系统中的应用如图2所示,使用MCS-51单片机以直接总线方式与W5100接口,组成了一个具有网络功能的考勤机/门禁设备,这种考勤机/门禁系统广泛应用在公司写字楼、商场/超市、住宅小区等场所的管理。 考虑到考勤机/门禁系统的数据量不大,数据传输速率相对于其它实时系统来说不是很高,因此单片机可以采用SPI接口与W5100连接。而读卡器芯片TRH031M也可用使用SPI接口,因此它们可以共用总线,使硬件系统更加简单。[!--empirenews.page--]2.网络电力仪表 W5100应用在电力仪表中,可以及时采集电力系统数据,实现在本地/远程的数据采集、故障分析判断。网络仪表主要应用在发电厂、变电站、配电站、工厂电力系统等领域,也可以用于居民电量管理。 用W5100实现网络电力仪表结构如图3所示。3.数字电视前端设备 数字电视前端设备种类很多,有诸如卫星接收机、数字编码器、数字复用器、数字加扰机及QAM调制器等等。 W5100可以用在数字电视前端设备中,以建立起设备与控制台之间、设备与设备之间的网络通道。由于W5100内部具有4个完全独立的端口,高速的数据处理能力和数据吞吐能力,不仅可以传输一般的控制信息,还可以传输音视频信号。 结束语 W5100“3合1”的功能可以满足各种单片机在没有操作系统的支持下接入Internet网络,简单、可靠,价格低廉,已广泛应用于各种安全监测、电力系统的测量监控、音视频传输、远程信息传输等领域。随着嵌入式系统网络化的广泛应用,相信W5100一定会被更多的工程师所喜欢。深圳市谢氏电子与浩然电子联合致力于WIZNET 嵌入式系统在中国的推广与应用。

    时间:2009-03-04 关键词: tcp ip w5100 设计教程

  • 基于嵌入式TCP/IP的实时数据传输

    1 引言目前,液化气广泛用于居民生活和工业生产的各个领域,液化气流通过程中大部分业务需要针对气体和液体进行流量计量。现有系统主要是称重计量仪表作为计量装置。以人工方式作计量数据的采集和统计汇总。人工方法存在费时费力,各个计量点都容易出现人为数据错误的缺点,造成不必要的损失和漏洞。而且人工处理石油液化气储运数据,是属于挂流水帐,各类原始数据的关系是分离的,不方便及时查询和管理,无法作出正确的经营决策。将嵌入式系统应用到石油液化气储运数据中,首先可以对设备进行实时的运行状态监测,无需要人工干预即能自主运行;其次可以根据设备运行条件的改变,自适应地调节自身的功能来保证监控及诊断的准确性。杜绝石油液化气储运各个环节可能出现的漏洞,提高企业经济效益;最后可以把各类石油液化气储运原始数据有机地组合在一起,统筹处理数据的输入、查询、统计及显示和输出,使处理石油液化气储运数据的过程通畅、合理、快捷、准确。2. 嵌入式系统及其石油液化气储运现场实时数据传输系统解决方案2.1 嵌入式系统简介嵌入式系统不以独立设备的物理形态出现,嵌入式系统的部件根据主体设备以及应用的需要,嵌入在主体设备内部,发挥着运算、处理、存储以及控制等作用。从体系结构看,嵌入式系统主要以嵌入式处理器、支撑硬件和嵌入式软件组成。早期的嵌人式系统以单个芯片为核心,大部分应用于工业控制系统中,后来发展为以嵌入式CPU、嵌入式实时操作系统(RTOS)为核心的新型组成结构。但随着信息技术的发展,网络通信已经是嵌入式系统设计所必须考虑的问题,可以说嵌入式TCP/IP技术是嵌入式计算机系统与Internet技术相互结合的产物,基于Internet的嵌入式系统成为一个研究热点。2.2 系统的总体设计特点本系统具有功耗低、可靠性高、功能完备等特点。系统的耗电量为1~3W,由于系统功耗很低,专用于工业级领域,因此在器件的选用、系统的抗干扰设计等各个方面都进行了严格的论证和实验分析,其运行可靠性得到了保证。系统使用400MHz以上主频的32位微处理器,总线为100MHz,无论是高速实时处理还是大容量数据传输都能够满足,全新的设计体系使得整个系统具有强大的处理能力和广泛的升级空间。该系统对于用户来说,由于操作系统的支持,使用中根本感受不到体系的差异,而对于进行开发人员来讲,以前在X86平台下编写的程序,也只需做一次重新编译简单移植一下即可,从而最大限度的保护了用户的资源,增强了系统的可扩展性。2.3  硬件结构针对传输数据量,实时数据采集控制盒中的核心控制芯片选用了Intel XScale255。其它电路包括A/D接口、I/O接口芯片、电压变换芯片、充电保护芯片、滤波电路、显示驱动等部分组成。系统使用的网卡芯片是选用Realtek公司生产的RTL8019AS构成,它是一种低价位的通用以太网控制器,采用了高度集成化的设计。现场传感器采集的信号为温度、压力、流量信号,均为模拟信号,需进行A/D转换。硬件结构框图如图1所示:2.4  软件结构2.4.1 操作系统嵌入式操作系统是整个嵌入式系统的核心,通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)等。专门负责管理存储器分配、中断处理、任务调度等功能。本设计采用嵌入式Linux作为操作系统,嵌入式Linux是一种由内核(kerne1)以及根据需要定制的系统模块组成的小型操作系统。相对于其他嵌入式RTOS,它具有鲜明的特点:微内核结构,最多几百KB;免费开放源代码,具有可裁剪性,能根据特定需求自行设计;具有优秀的网络、数据库支持功能,支持TCP/IP等常见协议,能够实现数据的网络通讯和实时处理。系统在启动时,由BootRom将Linux内核从FLASH/ROM映像到RAM中,对系统的软硬件环境进行初始化。应用程序中相关内容的初始化作为应用程序引导模块,固化在FLASH/ROM上,以便主机上电后可以由内核程序将其读到RAM文件系统中,再由这部分引导应用程序运行模块。由于该系统是基于全IP的稳定网络,在考虑了网络带宽和系统通信量的基础上,我们选择心跳检测的正常阀值为1秒,数据恢复策略采用即时传送数据。[!--empirenews.page--]2.4.2 嵌入式TCP/IP技术由于本系统的用户要求其可以在任意地点的通过web浏览器接入网络,实时查询各液化气站工作点储运数据,同时通过客户端可任意对实现工作点远程控制和管理,实现大范围的互联,因此数据的远程传输成了必须解决的问题。嵌入式TCP/IP技术是一种设备接入技术,主要解决如何通过Web和嵌入式技术实现从不同子网、不同物理区域对接入到Internet的设备和异类子网进行监控、诊断、管理及维护等操作,使用户对接入到Internet上的各种设备或其他类型的子网具有远程监控、诊断和管理的能力。嵌入式系统由于其自身硬件资源有限,不同于通用计算机系统,因此由通用计算机操作系统内核实现的存储器管理、设备管理、文件系统、网络通信等功能模块不可能在嵌入式操作系统的内核中全部实现。传统的TCP/IP通信传输七层结构模式不再适用于嵌入式系统,必须根据实际传输数据的需求合理简化协议。本系统采用图2所示TCP/IP的四层结构子协议集。其中应用层负责实现HTTP协议;传输层负责数据采集现场与信息中心间可靠性的数据通信;互联网层完成寻址、定址、数据打包和安排路径,同时判断网络是否连通;数据链路层把帧送到线路中去,同时可以把需接收的帧从线路中取出来。2.4.3 应用软件结构 我们将应用软件结构分为3层(如图3所示),即:客户端、信息中心、现场。其中信息中心由Web服务器和应用服务器构成;数据库设计考虑了位于信息中心层的本地数据库服务器和客户端的虚拟服务器;现场控制系统包括各类现场仪表,传感器的控制系统软件。我们可以将上述系统理解为一个较为复杂的B/S体系机构的软件系统。本系统采取这样复杂的体系结构是由系统的功能设计及网络结构决定的,这意味着一台机器要与其他系统进行协作,它既提供服务,同时也需要其他系统的服务。该3层结构是指合理的利用系统资源,不同层次分工协作,使某项任务在多台机器之间进行匹配,其中客户机(Client)用来运行提供用户接口和前端处理的应用程序,应用服务器及Web服务器用于发布信息、数据及指令的传达。现场完成数据实时采集传输,并最终执行控制指令、实现控制目标和性能指标。3.系统的可靠性设计在保障功能的前提下,系统的可靠性是评价其性能的重要指标。石油液化气储运实时数据采集管理系统采用无人值守方式,为提高嵌入式远程数据采集系统的可靠性,我们从硬件、软件两个方面进行系统设计。3.1 硬件抗干扰措施系统中所采用的嵌入式主机是为工业现场研制开发的。本身的机械和电气特性足以在恶劣环境条件下的连续运行,但为防止其它电磁干扰对开关电源的输出或数字系统的信号线造成冲击,从而导致嵌入式系统异常运行或死机。只有提高系统的电磁兼容性才能提高其可靠性。仔细分析造成电磁干扰的三要素是干扰源、传播途径和受扰设备。抑制电磁干扰的方式也从这3方面着手:抑制干扰源;消除干扰源和受扰设备之间的耦合和辐射,切断电磁干扰的传播途径;提高受扰设备的抗干扰能力,降低其对噪声的敏感度。目前电子设备大多采用切断电磁干扰源和受扰设备之间的耦合通道对电磁干扰进行抑制,常用的方法包括屏蔽、接地和滤波。本系统采用了下述3种措施降低或消除电磁干扰所造成的影响:(1)电源采用本安电源供电,直接消除电源干扰的可能性。普通电源当接的负载过多时,电压降的现象很厉害,而本安电源的避免了这种情况;(2)嵌入式计算机主机外放置金属屏蔽外壳,且整个屏蔽罩与系统的机壳和地连接为一体;(2)在电源输入端加接由铁氧体磁性材料加工成的电磁干扰吸收元件,改善系统的滤波特性。[!--empirenews.page--]3.2 软件抗干扰措施软件设计方面主要采用以下措施来保障程序运行的稳定性:(1)启动看门狗定时器,使其能在程序异常运行时自动重启整个系统。(2)编写专门程序对CPU的可利用资源及内存可利用空间进行监控,如果CPU资源和内存无法满足应用程序的正常运行则重启系统,该监控程序独立运行。4. 安全性本系统设计的安全性涉及到两个方面,其一是数据传输安全性,其二是该系统的对象是易燃易爆物品,防止出现火情是另一个非常重要的问题。数据传输安全性问题是由于系统采用Internet的访问技术,网络被攻击的可能性增大,网络安全防护成了大问题,必须采用多种技术手段和防范策略,确保系统不受病毒和黑客的破坏,以达到确保系统的数据完整性、统一性。主要解决策略是采用密码和防火墙策略,根据规则过滤掉外部的数据流,且数据传送必须加密,访问所有可能受到攻击的点都必须提供正确的用户名和密码才可以访问。另外采用只读访问策略,将关键信息和敏感信息标记为只读特性,尤其是从Intranet范围外的IP地址来的访问请求。为防止由于现场采集系统导致石油液化气燃烧,发生意外,本设计采用了2个措施:(1)如前所述,前端控制盒电源采用本安电源,该电源工作极其稳定,不产生电火花,被广泛用于防爆工作环境;(2)由于监控设备需要长期运转,因此系统要求有很好的散热功能。系统的散热片结构由传统的一个改装成为两个散热片,使得系统适用于易燃易爆工作环境。5. 小结与本文作者创新点本文介绍的系统具有分层合理、模块划分清晰、可移植性好等特点,并且系统充分利用现成的电信网络,省去了现场建设及有线网络架设的费用。此外该系统的测试数据表明:系统能够实现对被管理设备的各项基本操作、管理和访问,满足一般嵌入式系统对系统监控、数据实时采集的应用需要,该设计思想可以广泛应用于其它类似的现场分散、网络化实时数据的采集传输管理系统,不论从经济效益还是社会效益角度来讲,都有着广泛的应用前景。

    时间:2009-06-17 关键词: tcp ip 于嵌入 设计教程

  • 嵌入式TCP/IP技术在恒温振荡器中的应用

    恒温振荡器(又称恒温摇床)是一种温度可控的恒温的生化仪器,是植物、生物、微生物、遗传、病毒、环保、医学等科研、教育和生产部门作精密培养制备不可缺少的实验室设备。而目前大部分恒温振荡器的同类产品都不具有网络数据通信的功能。TCP/IP协议采用一种层次结构,为用户提供了丰富的应用服务,已成为网络通信协议的事实上的国际工业标准,并已得到普遍推广。同时,嵌入式系统的Internet 网络化的研究与应用是近几年来嵌入式应用领域的一个研究热点,这一技术在许多领域都得到广泛应用[1]。  本文为了保证实时监控恒温振荡器的转速、温度等参数,采用了以ARM7处理器为核心的嵌入式系统与TCP/IP 网络互联的方式进行通信访问,使上位机能够实时地掌握恒温振荡器的各种参数状况,保证对恒温振荡器工作过程实时远程监控,不需要浪费人力和时间到现场勘查数据。1 总体设计及系统架构  本系统使用的是以ARM7为内核、主频达72 MHz的32位微处理器LPC2368,可以满足高速实时处理及大容量数据传输的要求,且具有内置的以太网模块,该模块包含一个功能齐全的10 Mb/s或100 Mb/s以太网媒体访问控制器(MAC),这个以太网MAC通过使用加速的DMA硬件来提供优化的性能[2]。系统还采用了美国国家半导体公司的DP83848单路10 Mb/s或100 Mb/s以太网收发器和支持10 Mb/s和100 Mb/s自适应的网络连接速度的以太网接口RJ45来组成网络通信模块,同时此主控芯片也控制温度和速度等其他多个模块。整个设计体系具有强大的网络处理能力,系统框图如图1所示。 2 网络通信模块设计2.1 以太网硬件实现  本系统CPU采用飞利浦公司的LPC2368,它是以ARM7为内核主频达72 MHz的32位微处理器,内部集成了一个以太网模块,支持10 Mb/s或100 Mb/s PHY器件,带有分散/集中式DMA的DMA管理器以及帧描述符数组,通过缓冲和预取来实现存储器通信的优化,并且发送和接收均支持多播帧、广播帧和超长帧传输,允许帧长度为任意值。通过标准的媒体独立接口(MII)或标准的简化MII接口可连接外部PHY芯片,该特性是通过软件来选择,然后可对PHY寄存器进行访问。  网卡芯片DP83848是10 Mb/s/100 Mb/s单路物理层以太网收发器件,包含1个智能电源关闭,具有低功耗性能。在本系统中DP8384S工作在50 MHz晶振频率下,具有能量检测模式的特性,可为系统提供一个智能节能工作模式。它是一个链路可控制节能模式,目的是当在线上检测不到活动的时候,器件能够进入休眠的低功耗状态,即状态-能量检测模式。能量检测功能通过寄存器设定来控制,在电源状态发生转换的时候,电源上电/重置算法遵循其正常流程,而且能量检测模式并不会影响之前设定的工作模式。在电源状态发生转换时,器件将会保留其原先的模式(强制模式或者自动协商、MDI或者MDIX)。能量检测算法能够在不同的电源状态之间自动或手动转换,当一个电源状态的改变未成功或者发生太多误差事件时,能量检测逻辑能够发出中断信号。能量检测逻辑在采取动作之前需要多倍数据和误差事件来调节一些噪声。计数器深度则由寄存器设置来确定,并默认其为包含数据和误差的一个事件。  最后与常用的以太网接口RJ45连接,该接口支持10 Mb/s和100 Mb/s自适应的网络连接速度[3]。本系统设计的以太网硬件电路连接如图2所示。 2.2 系统通信协议和通信过程2.2.1 以太网数据帧传输和接收  在以太网中数据传递靠的是MAC地址,而不是IP地址,IP地址和MAC地址具有映射关系。1个以太网包包括:1个导言区(preamble)、1个起始帧定界符和1个以太网帧。以太网帧由目标地址、源地址、1个可选的VLAN区、长度/类型区、有效载荷以及帧校验序列组成,如图3所示。每一个以太网帧均由1个或多个片段组成,每个片段对应1个描述符。以太网模块中的DMA管理器能够将1个以太网帧的多个片段进行分散(用于接收)和集中(用于发送)[4]。  传输的以太网包中7个字节的导言区用来使接收方的时钟和发送方的时钟同步,然后再由帧分界符来表述1个数据帧的起始,进而进入数据帧的传输通信过程,数据帧主要是通过目标地址和源地址的位置建立通信。6个字节的目标地址是指目的站点的MAC地址,表明要把数据送到哪个站点。若目标地址第1位为0,则这个字段指定了一个特定的站点;若为1,则表示目标地址为一组地址,而该地址是事先定义好的;若所有位全为1,则表示接收者为局域网上的所有站点,即该地址是一个广播地址。6个字节的源地址是指源主机的MAC地址,表明该帧来自哪个主机。VLAN是一种将局域网(LAN)设备从逻辑上划分成一个个网段,从而实现虚拟工作组(单元)的数据交换技术,如果选用基于MAC地址的VLAN的方法就根据每个主机的MAC地址来划分,即对每个MAC地址的主机都配置分组,它实现的机制就是每一块网卡都对应唯一的MAC地址,跟踪属于VLAN MAC的地址。在帧传输的最后进行帧校验,使用4个字节的循环冗余效验码进行错误检验。[!--empirenews.page--]2.2.2 TCP/IP协议  TCP/IP协议是面向连接的、端对端的可靠通信协议[4],共分为4层,即网络接口层、网络层、传输层和应用层,如图4所示。  网络接口层负责将IP数据报以数据帧的格式发送和接收,具体过程为数据从TCP/IP应用程序通过TCP传递到传输层TCP,然后交给IP。IP协议提供逻辑地址信息,并将数据封装在分组中。接着IP分组进入网络接口层,网络接口层创建1个或多个数据帧,以便进入物理网路,数据帧最后被转换成在网络传输介质上传送的(bit)流。  TCP/IP的核心层是网络层(IP)和传输层(TCP),对应的主要协议是IP和TCP两大协议。网络层提供计算机间的IP分组传输,包括高层数据的分组生成、底层数据报的分组组装,以及路由处理、流量控制、拥塞处理等问题。IP数据报中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。传输层(TCP)作为网络应用程序与网络之间的接口,根据端口通过TCP传输控制协议提供应用程序间的通信,包括格式化信息流和提供可靠传输,实际上也就是将TCP数据送往一个由IP地址与端口号组成的套接字(Socket)。  应用层提供常用的应用服务程序,如HTTP服务、SMTP服务等。HTTP应用程序在Web服务器上运行的是面向对象的协议,工作方式为收听请求,然后响应请求,向请求方发回文件[5]。2.2.3 本系统TCP/IP通信过程  TCP/IP协议软件上的数据传输可分为3个阶段:建立连接、传输数据和断开连接。它的实现过程可以用状态机来描述。建立连接有2种方法,即主动打开和被动打开。服务器端是被动打开,然后一直在侦听连接请求;而客户端是主动打开,发送连接请求以建立连接。断开连接有2种方式:主动断开连接和被动断开连接。在需要主动断开连接时,发送1个FIN数据包,接收到对FIN数据包的确认后,再发送1个RESET数据包,即可顺利完成1次主动断开连接。  本系统中通信过程主要分为4个部分:  (1)网卡芯片DP83848和RJ45组成的硬件接口。  (2)TCP/IP协议栈。用这个协议栈进行数据通信,网卡芯片已经完全固化了从MAC层、网络层到传输层所需要的协议,因此,用户无需了解这些协议的实现方法和实现代码。  (3)接收和发送缓冲区。主控芯片LPC2368通过以太网与网络上其他主机进行通信的数据都是通过这些缓冲区来进行交换的。  (4)以太网物理层接口。网卡芯片DP83848实现10/100BaseT以太网传输数据功能。   在主机端访问由嵌入式ARM芯片LPC2368为主控的从机,然后在主机显示出由LPC2368控制下的恒温振荡器的速度和温度等实时数据。具体过程是:先对底层进行初始化,包括对LPC2368主控芯片上的局域网控制器配置端口和对DP83848的物理层的设备、读写状态寄存器、MAC配置和控制寄存器、接收和发送端描述符寄存器、局域网地址寄存器、以及指定DP83848工作模式具体是10 Mb/s还是100 Mb/s;然后进行定时编程,处理网络、TCP/IP堆栈和用户事件;再设置监听TCP通信的端口,进行端口连接,服务器则被动打开等待呼叫,之后就可以确定是否接收数据包然后进行帧处理等;最后实现动态的HTTP服务器,等到被连接之后才发送1个HTTP的帧头,存储HTML代码,这里的HTML代码存放在自定义的一个数组当中,该数组包括温度和速度等实时数据,只要在应用层程序中调用该数组,就可以访问到实时数据,并把得到的实时数据显示到网页页面上,以此实现对恒温振荡器的远程监控。    恒温振荡器网络通信实现的程序流程如图5所示。3 其他模块设计3.1  转速模块  主要实现转速调节的功能。在运行状态下设置速度值,再通过DA输出改变可控硅的导通角进行电机速度的调节。运行状态又分为A、B、C、D四段运行:首先是按照A段设置的转速参数运行,当A段运行时间结束就调入B段参数,B段开始运行;当B段运行时间结束时就调入C段参数,C段就开始运行;同理,C段运行时间结束时调入D段参数,从而开始D段参数的运行;当D段运行时间结束时,就设置待机状态。在运行状态下,当速度达到稳定状态时,判断转速是否超出设置速度±5转且超时大于2 min,选择是否进入超欠速转速处理动作的执行;否则就退出超欠速程序,继续进行转速控制调整。    3.2 温度模块     主要实现温度控制以及超温和欠温温度调整的功能。温度控制主要是通过制冷和加热这两个手段来调节。首先是在运行的状态下设置温度参数值,然后由A/D转换来采集振荡器箱体内部环境温度,按照箱内温度和设置温度的偏差,再根据PID温度控制的算法[6]进行分区域控制。该恒温振荡器划分了3个区间进行处理:(1)当设置温度处于(箱内温度-4℃)箱内温度区间时,控制打开制冷风扇和加热时间;(2)当设置温度低于箱内温度4℃区间时,制冷常开,控制加热时间;(3)当设置温度大于箱内温度区间时,制冷不开,控制加热时间,直到把温度调整在误差范围之内为止。如果恒温振荡器进入稳定工作状态,但箱内温度超出设置值的正负4℃且时间大于5 min时,就执行超温处理动作;否则,退出超欠温程序,继续进行温度控制。    本文阐述了基于TCP/IP的恒温振荡器的设计原理,以嵌入式ARM芯片LPC2368为主控芯片控制多个模块的功能实现。详细说明了基于TCP/IP的控制模块对于恒温振荡器的远程监控功能的实现,目前市场上的大部分同类产品都不具备该项功能。另外,通过硬件与软件的结合来实现恒温振荡器的调速和调温的功能,保证了恒温振荡器的恒温恒转速持续稳定的工作状态。根据本设计制造的恒温振荡器具有很强的实用性和稳定性,能够满足用户远程获取数据的使用需求。

    时间:2009-10-25 关键词: tcp ip 设计教程 温振荡

  • IP STB系统构架及规划

     不断翻新的IP STB互动服务   通过电视系统可以提供的互动数字内容服务包括电视点播(VoD)、数字视频记录(Digital Video Recorder , DVR)、电子节目指南(Electronic Program Guide, EPG)、电视商务(television commerce, t-commerce)、讯息服务、音乐、游戏、IP电话、网络网关器和网页浏览等等,而且还不断有新的服务在推陈出新。   由于提供这些功能的难易程度不同,同样是IP STB还可以再分为简单型和进阶式两大类。简单型是强调成本效益的入门级设备,主要是能提供基本的广播电视服务、VoD、EPG和网络浏览等功能;进阶型则定位为全功能的媒体中心,这类产品往往在STB中置入硬盘(HDD),让STB有足够的储存容量录制节目,进而能提供DVD播放和录像、PVR和个人多媒体储存功能,不仅如此,这类设备还可能具有家庭网络的连接端口,让STB进一步成为家用网关器(Residential Gateway)。        图1 IP STB的功能定位示意图   IP STB的系统架构   IP STB通过IP的连结即可传送交互式、个人化的视频内容到今日的电视上头,为了提供安全、高品质的内容,一个IP STB必需要建置一个弹性的平台,才能支持符合产业标准的资料传送和网络协议。   以IP STB的系统架构来说,包含三个独立的子系统:TV单元、条件存取(conditional access, CA)单元和PC单元。TV子系统由调变器(tuner)和影像译码器组成,它们用来处理数字串流信息;CA子系统让服务商具有控制能力,能够知道收视户在何时收看什么节目;PC子系统多半是模块式的设计,也就是说STB的设计者可以依其需求而增加或减少这个系统中的组件,由于IP STB的目标是要提供网际网络的服务功能,它的PC系统方面就得提供TCP/IP的堆栈协议,并具有更佳的储存方案。   在IP STB处理器架构的设计上,通常采用DSP和另一块通用处理器(General Purpose Processor , GPP)的双核架构,其中DSP主要用于视频及音讯上的译码处理,目前多采用可程序化的DSP,以满足定制化上的弹性需求;GPP则用来处理从各种接口来的控制及运算需求,这些接口包括硬盘总线接口、以太网及GPIO等有线接口,以及无线接口等,请参考图2。        图2 IP STB的处理器核心架构   以Broadcom的BCM7318系统单芯片为例,它具有MPEG-2影音译码功能、32位MIPS微处理器(266MHz)、10/100Mbps以太网络控制器和USB 2.0主控制器。在这个架构下,这块译码芯片可以处理从以太网、外接硬盘,以及从线缆、电话线、卫星或数字地面网络接口模块等特定外接接口来的串流内容。   IP STB的系统规划   对于STB来说,如何以现有的频宽提供高品质的影音内容是一个重点,而这个解决方案已浮出水面,也就是从现有的MPEG-2格式转向新的高阶影像压缩技术,也就是H.264或微软的VC-1格式。[!--empirenews.page--]   以今日的MPEG-2格式来说,要服务商提供多频道的视频节目是不可能的任务。在今日的环境下,每个收视户能使用的频宽通常都小于2Mbps,这还不足以顺畅地传送MPEG-2高容量多媒体信息。不过,若采用ISO编码标准H.264压缩技术(又称为MPEG-4 part10/AVC),那就可以在1Mbps的频宽下传送极佳的数字串流影像,这对于标准型电视(SDTV)节目的播放是不成问题的。如此一来,电信服务商就能以现有的网络架构来为用户提供数字广播服务了。   市场调查公司ABI Research最近发表的一份研究报告即指出,目前约有30%的IP-STB支持H.264和VC-1。由于厂商已陆续推出H.264的高阶视频译码器硬件芯片方案,这将能提高IP STB在建置上的成本效益,ABI指出,这种高阶视频译码器将成为IP-STB的标准配备,预计到2008年时,它将进入几乎所有的机顶盒中。在此情况下,也将带动系统业者对IP STB的采用意愿。   采用高阶视频译码器的IP STB,提供支持高品质H.264/ MPEG-4 AVC影像译码能力,它能提供高画质(high definition, HD)和标准画质(standard definition, SD)的视频服务;此外,在声音的译码上,这个译码器也得支持最新的多种音讯标准,包括MPEG-4 高效率AAC (AAC+)、MPEG-4 AAC (ACC-LC)、Dolby Digital Plus (Enhanced AC3)、Dolby Digital (AC3)、MPEG-1 Layer I, II, III (MP3),和PCM (pulse code modulation)等,才能满足今日多元的音讯处理环境。   除了视频服务外,高阶IP STB也要求支持更多的功能,例如采用包含硬件绘图加速器的2D图形引擎,它可以支持高阶的绘图功能,也可以提升软件式的电子节目指南与IPTV的互动服务,进而具有产品的差异性。此外,加入硬盘的IP STB,再配合软件上的设计,就能提供包括个人观看(viewing)和排程(scheduling)、视频和资料推播、随选视频等新的服务。   结语   服务商和市场用户对功能的需求,正不断推动IP STB的向前发展。以服务商的角度来说,他们希望在最小的投资费用下,以及更弹性及便利的系统开发环境中,引进确实能创造收入的新服务。在这些服务中,以多媒体和娱乐导向的新应用最受到重视,而为了保证有版权的内容能受到保护,不致于被非法散布,IP STB的开发上也不能忽视在数字版权管理(DRM)上的议题。   此外,如何提供容易升级的IP STB设备,也成了开发者的共同需求。未来IP STB的开发得满足定制化的需求,同时遵循可靠和成熟的产业规范,以加速设计时程及降低开发成本。一些国际组织的出面协调制定共通规范,对于STB的广泛应用有很大的帮助。目前有两个代表性的标准推动组织,一是欧洲的ECCA(European Cable Communications Association)和美国为主的CableLabs,分别已推出多项STB的参考设计规范。   IP STB将会整合更多的功能,例如调制解调器、硬盘、MP3和DVD播放机,甚至是家庭网络的功能,若要播放高画质视频内容,那就需要比标准视频高出4~6倍的频宽,还得采用更高效能的译码技术,如以H.264或VC-1取代今日的MPEG-2。   然而,除了终端用户的IP STB外,还需要有系统端的完整传输环境及相关设备技术,例如VOD后台的整合技术、EPG的伺服/终端间中介软件支持,和DVR引擎技术,才能提供端对端(end-to-end)的IP应用服务(请参考图3)。不过,IP STB在新功能和新服务上的技术改变,仍是推动产业持续进步的一大动力。        图3 STB在整体网络环境中之定位

    时间:2010-09-12 关键词: ip stb 设计教程

  • 基于OCP-IP的SOC总线即插即用的实现

    引言   SOC设计的快速发展是以IP核复用为基础的。IP核的复用极大地提高了SoC系统设计的开发效率,SoC 片上总线的选择是IP核间集成与互连的关键技术之一。目前片上总线的标准协议众多,如ARM公司提出的AMBA总线、OPEN CORES组织提出的WishBONe总线、IBM公司提出的CoreConnect总线等。SoC片上总线的多样性对IP核的封装规范提出了要求。标准的IP核封装规范有助于提高IP核的复用甚至实现核的即插即用。基于提高IP核复用以及即插即用目的,OCP-IP组织提出了OCP-IP标准。   1 OCP-lP标准介绍   1.1 OCP协议   OCP(Open Core Protoco1)标准是OCP-IP组织制定的一种以提高IP核的复用及实现IP核的即插即用为目的的IP核标准。SoC芯片设计不再是门级的设计,而是IP核复用及其接口的设计。IP核要集成到一个SoC系统中,要考虑很多问题,例如:模块间的同步,如全局执行、数据交换的同步操作等;协议转换匹配,不同IP核模块间可能使用不同的协议,这样必须考虑协议转换的问题。这些问题给IP复用带来了一定的难度,并使SoC芯片的time-to-market (上市时间)延长。为解决这些问题,一些大公司提出了自己的总线接口标准,如ARM的AMBA总线、IBM的CoreConnect总线、Altera的 Avalon总线等。因为核的多样性,使用完全相同的总线接口是不现实的。这就意味着,如果总线A上的一个IP核要移植到另一系统的总线B上,就需要更改此IP的接口以及数据交换的方式。如果设计者不了解总线B的数据交换协议,这样就对SoC系统的开发带来一系列困难。OCP-IP正是针对这些问题提出的。OCP协议是免费的,独立于具体的总线。它将软件中的分层概念应用到IP核接口,提供一种具有通用结构定义、可扩展的接口协议,能完全满足IP内核通信机制的所有要求,方便了IP核与系统的集成。   OCP协议使IP核的功能与系统的接口无关,设计人员不需要了解IP核的功能也能利用它进行系统设计。OCP接口允许设计者根据不同的目的配置接口,包括接口的数据宽度、交换的握手协议等,并且在SoC设计中可以裁剪核的功能,降低设计复杂性,减小面积,同时满足SoC的要求;OCP接口还保持核在集成到系统的过程中完全不被改变(即在总线宽度、总线频率或电气负载有变化时核保持不变)。使用OCP接口的设计可以交付即插即用的模块,同时支持核的开发与系统设计并行,节省设计时间。   OCP采用套接口(socket)的方法实现IP核的即插即用,如图1所示。Target Bus A表示总线A,Target Bus B表示总线B。不论总线A或者总线B是哪一类总线协议,只要总线上提供了OCP的接口,那么符合OCP协议的IP核就可以随意集成到任意总线上去,不需要重新设计IP核的接口。     1.2 OCP通信方式   OCP协议定义了两个通信实体问点到点的接口。其中一个实体作为通信的主体(MaSTer),另一个作为从体(Slave)。只有Master可以发命令,Slave响应Master的命令,接收或发送数据。封装接口模块必须担当每个连接实体的对应端,当连接实体是Master时,封装接口模块就作为对应的Slave;当连接实体是Slave时,封装接口模块作Master。   OCP的系统架构如图2所示。图中有3个IP核,其中左边标有主控的IP核是通信的发起方或者主控方,称为Master;最右边标有目标的是通信的目标对象,称为Slave;中间的IP核既可作为Master又可作Slave;下面的框代表OCP-IP封装接口模块;从Master出来并进入Slave的箭头表示OCP请求命令,从Slave出来并进入Master的箭头表示OCP的响应。2个IP核通过接口通信的过程是:功能为Master的IP核发出请求命令给对应的Slave端(总线封装接口模块);封装接口模块将请求命令转换成对应的总线命令传送给接收方的总线封装模块;接收方的总线封装模块再作为Master,把对应的内部总线传输转换成标准的OCP命令传送给目标IP核,目标IP核接收到命令并响应命令和返回读写的数据。   2 基于AMBA总线的OCP接口设计   AMBA(Advaneed Microcontroller Bus Architecture)总线规范是ARM公司设计的一种用于高性能嵌入式系统的总线标准。AMBA总线规范是开放标准,通过ARM公司的授权就可以免费获得。它独立于处理器和制造工艺技术,增强了各种应用中的外设和系统IP核单元的可重用性。2.O版AMBA标准定义了3组总线:AHB(AM-BA高性能总线)、ASB(AMBA系统总线)、和APB(AM-BA外设总线)。AHB总线应用于要求高速度高带宽的系统。本文以AHB总线为例,说明OCP -IP如何集成到SOC系统总线上。AMBA总线基本传输时序如图3所示。HCLK表示AMBA系统时钟,HADDR[31:0]表示32位地址总线, HWDATA[31:O]表示32位写操作时的数据总线,HREADY是AMBA总线的读写状态信号(状态为低电平时,表示一次读写操作完成), HRDATA[31:0]表示读操作时的数据总线。   OCP-IP核的功能是可裁剪的,即OCP-IP的大部分信号都是可选择的。根据核的功能,选择使用不同的信号。OCP协议*有三大类型号:数据流信号 (dataflowsignals)、边带信号(sideband)、测试信号(test signals)。数据流信号主要包括:基本信号(basic signals)、简单扩展信号(simple extensions signals)、突发扩展信号(burst exten-sions signals)和线程扩展信号(thread extensions signals)。边带信号主要包括:复位(。Reset)、中断(Interrupt)、错误(Error)等信号。测试信号主要包括用于支持扫描 (Scan)、时钟控制和IEEE 1149.1(JTAG)的信号。此处用到的OCP信号包括:Reset(复位)、Clk(时钟)、En-ableClk(时钟使能)、MAddr(地址)、MCmd(命令)、MData(数据)、SCmDACcept(命令接受)、SData(Slave数据)、SResp(操作成功标志)。简单的 OCP读写时序如图4所示。Request Phase表示请求阶段,Response Phase表示响应阶段。A处由系统Master发出1个WR写命令,并给出地址A1和数据D1。随即Slave发出命令接受响应ScmdAccept,此处一个周期完成了一个写周期操作,不需要Slave给出写操作成功响应。C处系统Master发出一个RD读命令,并给出要读取的地址A2。Slave 随即给出命令接受响应信号SCmdAccept,在下一个时钟周期D处Slave给出要读取的数据D2并在Slave响应信号SResp上给出读操作成功标志DVA。此处读操作用了2个时钟周期。[!--empirenews.page--]   OCP-IP跟AMBA总线的通信通过设计2个状态机来实现,1个用于接收AMBA总线上的流水数据,1个用于发送接收的数据并以OCP标准的方式发送。接收数据的状态机编码如下:   H_CTRL_PHASE1用于存储第1级流水指令,H_CTRL_PHASE2用于存储第2级流水指令,其状态转移图如图5所示。当AMBA总线上发出第1个读写指令,状态机进入H_CTRL_PHASE1状态,并将第1个读写指令转换成OCP命令。因为AMBA总线是基于流水的操作,所以第2条指令的发出不需要等第1条指令执行结束。这时候,状态机进入H_CTRL_PHASE2状态,并将此指令存储起来,等OCP命令执行结束立即将此存储的指令转换成OCP命令。这时如果AMBA总线上再次发出第3条指令,则状态机进入H_CTRL_PHASE1状态,并存储此指令。     发送接收到的数据的状态机编码如下:   状态转移图如图6所示。当接收数据的状态机接收到AMBA总线上的命令时,状态机让OCP接口进入第1个读写操作状态,即READl状态或者WRITE1 状态。如果AMBA总线上有持续的流水操作命令,状态机进入READ2状态或者WRITE2状态,即在AMBA流水操作的条件下,以1结尾的状态的下一个状态一定是以2结尾的状态,反之以2结尾的状态的下一个状态一定是以1结尾的状态。     3 OCP-IP标准封装软件设计   OCP是一种IP的标准,但不仅仅是IP的接口和数据的交换方式,还规定了IP的配置、端口等信息,即所谓的OCP配置文件。读取OCP配置文件中的内容,就可以知道此IP对应的OCP接口的性能,从而对总线上的接口进行配置,进而实现IP的即插即用。虽然IP的功能是多样的,总线的数据交互方式也是多样的,但OCP接口的时序是固定的。这样就可以通过设计软件提取IP的端口信息,并自动生成相应的OCP接口模块。该封装软件运行流程如图7所示。用户的 IP可以直接挂在该SOC平台上进行验证,同时也可以直接集成到其他带有OCP接口的SoC系统中去,加快IP的验证和系统的设计。   封装软件采用MFC(微软基础类库)来编写。通过设计用户界面,用户只要输入IP的时钟、地址、数据、读写控制信号等,就可以自动生成1个OCP的接口,以及标准的配置文件,从而实现IP的即插即用以及IP的统一管理。   4 结语   OCP是免费的基于点对点传输的IP核的标准协议,可重配置以及可扩展性很强,可以实现真正意义上的IP核即插即用,减少SoC系统设计的时间。本文讨论了OCP-IP的协议与特点,设计了基于AMBA总线的OCP-IP接口,提出了一种IP自动封装的方法,为IP核的集成和管理带来极大的方便。

    时间:2011-06-04 关键词: SoC ip ocp 设计教程

  • 基于OMAP的嵌入式TCP/IP开发

    随着人们对智能化产品需求的增加,未来的嵌入式产品,包括各种家电、通信、PDA、仪器仪表等设备正逐渐走向网络化,以共享互联网中庞大的信息资源,因而使嵌入式设备的网络化开发有广阔的市场前景。由于嵌入式硬件资源有限,而传统的TCP/IP等网络通信协议对计算机存储器、运算速度的要求较高,所以不能直接应用。为此,必须开发一套适合嵌入式系统的、高度优化的、最为精简的TCP/IP协议栈。 开放式多媒体应用平台OMAP(Open Multimedia Application Platform)是美国德州仪器公司推出的高度集成的软硬件平台。OMAP具有独特的双芯结构,结合了DSP与RISC内核,可为无线多媒体设备提供独一无二的性能和功耗优势。OMAP可连接十分丰富的外围设备,包括USB、摄像头、声音设备、视频设备、网络设备等。OMAP拥有开放式体系结构,其应用环境完全可编程。 软件协议的设计与实现在很大程度上决定了通信终端的质量。基于OMAP的3G移动终端软件协议结构由信令协议栈和应用业务协议栈组成,如图1所示。TCP/IP协议栈位于应用业务协议栈的底层,为上层的H.323协议栈提供基础与服务。其性能质量将直接决定整个通信终端软件系统的运行质量。因此,针对嵌入式系统联网的发展方向,为OMAP系统其设计一套高效、简洁的TCP/IP协议,对其应用具有十分重要的意义。 1 开发方案 PC上有功能强大的VC平台和网络分析工具(如Sniffer)便于调试,其设计不针对任何一个嵌入式芯片,具有较好的通用性和可移植性。在PC机上实现的TCP/IP协议,除了以太网层要结合OMAP平台的网卡硬件重写外,基本上可以直接移植到OMAP平台上,不需要再做大的改动。作为一个通信程序,必然需要两端程序同时调试,在PC机上编好的程序能对OMAP平台上程序的调试提供可靠的帮助。因此,协议开发采用先模拟再移植、先整体再部分的设计思路,而协议各层实现的顺序为自下而上。具体步骤是: (1)在PC机的Windows操作系统及VC 6.0开发平台上,实现嵌入式系统TCP/IP协议族的模拟器。该模拟器应该能实现TCP/IP协议的基本功能,包括以太网驱动程序、ARP、IP、UDP、TCP等,并且实现的ARP、IP、UDP、TCP层的程序应该通用于各种嵌入式系统并可移植。 (2)将该模拟器移植到OMAP开发平台,用其以太网卡的驱动程序替换原模拟器的链路层程序。在TI提供的CCS平台上最终实现基于OMAP的TCP/IP协议。 2 开发平台   OMAP的多媒体开发平台Innovator主要由4个模块组成:PM(处理器模块)、IM(接口模块)、EM(扩展模块)、BOB(主连接板)。OMAP处理器在PM上,以太网卡在BOB上。可以通过Innovator上的OMAP1510芯片的ARM微处理器对单片以太网控制器LAN91C96的工作进行控制,实现以太网帧的收发,并通过CCS对程序调试。图2为OMAP平台调试环境。 3 在PC上实现协议的基本模块 3.1 主要模块介绍 (1)主流程:首先对TCP/IP协议族的各层初始化,成功则进入主循环。主循环采用“中断+循环”结构,简单且分层清晰。中断作为应用层发出命令,调用下层的入口。对于接收到的以太网帧,则由下到上分别进入各层进行处理。协议实现主流程如图3所示。 (2)PC上的以太网层:在内存中开辟接收和发送两个相同的循环缓冲区,用于存放接收和发送的以太网帧。WinPcap软件是基于Windows平台的一个网络包工具,它提供一个系统内核级的动态链接库Packet.dll作为标准的API,具有独立于操作系统的编程接口。利用其提供的API可直接联系网卡驱动与已定义的循环缓冲区,将缓冲区中的数据发出,并将网卡接收的数据存入缓冲区。 (3)ARP层:在内存中开辟一块循环存储区域用于存放已知的IP-MAC对应表。该表可以由上层添加,在接收到ARP应答时会自动添加,也可以由上层清空。处理ARP层函数的过程为:根据以太网首部协议字段过滤出ARP包,针对ARP请求与ARP应答进行不同的处理。应答对方的请求,记录对方的应答。 (4)IP层:根据以太网首部的帧类型标志判断接收到的是不是IP包来处理IP层函数。如果是,则调用IP包的接收函数,对收到的IP包用各种条件进行过滤,对于满足条件的包获取其长度与指针信息供上层使用。本层另一个主要函数是IP包发送函数,由上层调用进行IP封装。 IP的检验和仅包括IP首部,长度一般为20字节(如果没有选项)。在接收端,丢弃检验和不为0xFFFF的包;在发送端,将计算所得值的反码填入检验和字节。由于主机和网络对数据中高低字节默认的顺序不同,在读写包中的16位、32位数据时,应该先进行高低字节的交换。 (5)UDP层:处理UDP层函数应根据IP首部的协议字段判断是否UDP包。如果是,则调用UDP包接收函数,用各种条件对其进行过滤,提出UDP数据及各种有用信息,根据端口号提交给应用进程处理。本层的另一个主要函数是UDP发送函数,实现封装UDP包(包括载入UDP数据,计算并填入UDP首部信息),最后调用IP发送函数,交由IP层处理。 (6)TCP层:与UDP不同,TCP主机要进行数据通信之前,必须与对方建立连接。与几个主机通信,就要建立几个连接。然而,若要知道接收到的TCP包属于哪个连接且使得几个不同的连接之间独立工作、互不干扰,则需要定义TCP的控制模块。这里用一个结构体数组实现,存放所有关于连接的信息。 处理TCP层函数,判断接收包的类型,如果是TCP包,则调用TCP接收函数。TCP接收函数用指定条件进行过滤,找到该包所属的连接或完成一个新连接的被动打开,根据TCP的状态转换规则完成11种状态的转移,并且实现了多路数据同时、双向的传输。 TCP的发送函数包括主动打开、主动关闭(由上层调用完成新连接的主动打开,或主动关闭一个已建立的连接)和发送控制包(用于TCP连接的建立与终止,会在TCP接收函数中调用,从而实现TCP状态的转换)三个函数。 TCP层还实现了两个定时器。TCP重传定时器函数可提供服务可靠性的有效保障;TCP保活定时器能够避免资源的浪费。 3.2 程序特点分析 (1)简单性:4.4BSD-Lite版的完整TCP/IP内核实现大约有15000行,而本程序源代码约有1400行,更适合嵌入式系统的应用。 (2)可重用性:本程序分层清晰。对于不同的嵌入式系统,可能使用的CPU和以太网卡不同,这就需要针对其特点的以太网层设计,而ARP、IP、UDP、TCP则不需要改动。 (3)可拓展性:TCP/IP协议是底层网络协议,本程序留有很好的接口,可在其上构建更高层的网络协议,包括H.323协议、ftp、telnet。 4 在OMAP平台上的移植 4.1 单片以太网控制器LAN91C96 LAN91C96是SMSC公司生产的专门用于嵌入式产品的10Mbps以太网控制器,具有性能优良、功耗低及尺寸小的特点。如图4所示。 [!--empirenews.page--] 6KB的RAM:用来存放数据包。      MMU:对RAM进行有效管理,为接收和发送包在RAM中分配存储空间。      ARBITE:使MMU和RAM与CPU、CSMA很好地连接。      CSMA/CD模块:集成了IEEE 802.3 MAC层协议,负责监听网络情况和地址过滤。若目的地址是LAN91C96的地址、广播地址或多播地址,则接收此数据包,否则抛弃。      ENDEC:负责曼彻斯特(Manchester)编解码。      收发器:负责与10Mbps以太网物理媒体的连接。 LAN91C96采用地址映射方式,通过访问Innovator的指定地址对其寄存器访问。LAN91C96的寄存器在Innovator内存中的地址分配为:0x08000300~0x0800030F。寄存器共有4组(BANK0~BANK3),使用相同的地址,通过BANK_SELECT寄存器选择。 4.2 移植过程 先实现该网卡芯片的驱动程序,再用它替换PC模拟器的以太网层。程序驱动主要包含以下三个部分: (1)初始化:主要为Lan91C96的各寄存器填入正确的初始值使其正常工作。 (2)接收:如图5所示,由CSMA(载波侦听模块)接收到符合地址要求的包后,MMU(存储器管理单元)为其请求在RAM中分配存储空间并分配一个编号,DMA将其存入RAM。接着在接收数据的前面封装STATUS和COUNT字节信息,如果CRC检测正确,则将其编号放入接收FIFO;如果接收FIFO不为空,则RCV_INT(接收中断标识)被设置。检查接收中断寄存器状态,如果有接收中断,对应其编号,上层协议便可以取出数据了。取出后,将该数据编号从FIFO中清除。 状态字可以从RCR寄存器中读取,它反映了接收过程出现的各种错误,如CRC错误、接收帧过长等。数据包的编号从FIFO_PORTS寄存器中获得,而数据指针可从POINTER寄存器中获得,数据信息从DATA寄存器中得到,根据这些信息将接收数据包复制到CPU内存,供上层使用。接收函数的主要流程如图6。 (3)发送:图7描述了发送数据包在FIFO中的排队过程。首先MMU在RAM中分配一定字节的存储空间;然后,将分配结果寄存器中的编号放入PNR寄存器,写数据指针寄存器POINTER并将上层数据封装后拷入DATA寄存器,根据其编号放入发送FIFO,排队的包将自动发出;发出包的编号接着进入发送完成FIFO。如果发送成功,则存储空间自动释放;否则释放存储空间并将其重新排队。 5 实验结果 5.1 内存资源占用量 运行该TCP/IP协议栈需要3MB内存,而Innovator 提供32MB SDRAM和32MB Flash,内存占用率为:3M/64M=4.7%,完全适用于嵌入式系统。 5.2 数据传输可靠性 TCP利用以下机制纠错。数据传输过程中的误码:检验和机制与重传机制;数据包的重复:在接收端会自动舍弃已经接收过的数据包,并且不发ACK,故不会发生一个数据包接收多次的情况;数据包的丢失:接收端在接收完一段数据后,会计算下一个预期数据的序号,如果不符合就不发ACK,从而导致发端重发,避免了数据包的丢失。经测试,在未发生拥塞情况下,传输的误码率几乎为0。 5.3 文件最大平均传输速率 下面就本程序所实现的利用TCP进行文件传输功能,给出在不同情况下的最大传输速率。实验环境为10Mbps以太网。 理想状态下的理论最大吞吐量:假定发送方传输两个背对背、满长度的TCP数据,接收方为其发出两个ACK,每包中用户数据量为1460位,总数据量为1538位,故最大的用户数据吞吐量为: 本实验测得文件的平均传输速率随着TCP连接数的增多有如图8所示的曲线变化。前半段随着连接数的增加成线性增长,后半段由于出现了网络拥塞,整体的平均速率反而有所下降。 实验结果与理论最大吞吐量有所差距,原因在于: (1)理论值只是一种理想的状态,现实中难以达到。其值是瞬时最大值,平均值肯定要小,而本实验所测数据为平均值。 (2)受CPU处理速度及文件传输过程的读、写文件操作的限制。 (3)本程序采用的数据传输机制是当收到上一个包的ACK之后再发送下一个数据包,这样避免了对接收数据的排序,提高了可靠性,但数据的传输速度会受到制约。 参考文献 [1]Texas Instruments Corp.OMAP5910 Dual Core Processor Technical Reference Manual SPRU602.2002      [2]Texas Instruments Corp.Innovator Development Kit for the OMAP Platform User′s Guide.2003      [3]J Postel.Internet Protocol RFC791.www.faqs.org/rfcs,1981      [4]J Postel.User Datagram Protocol RFC768.http://www.faqs.org/rfcs,1980      [5]J Postel.Transmission Control Protocol RFC793.http://www.faqs.org/rfcs,1981      [6]SMSC Corp.LAN91C96 Non-PCI Single-Chip Full Duplex Ethernet Controller Data Sheet.http://www.smsc.com,2004

    时间:2011-08-23 关键词: omap tcp ip 设计教程

  • 基于μC/OS-II和TCP/IP协议的多串口服务器

    摘要:针对许多设备不具备网络接口的问题,以ARM7Cortex-M3处理器LM8962为核心构建嵌入式系统,利用SC28L198芯片扩展8个串口,完成基于μC/OS-II操作系统和TCP/IP协议的多串口服务器设计。该系统能够同时为8个串口设备提供以太网远程数据传输,为具有串行通信接口设备的网络控制提供了条件,实现了计算机远程监控。   为使传统串口设备能够方便、快捷地接入互联网,笔者以ARM7处理器LM8962和串口扩展芯片SC28L198为核心构建嵌入式系统(串口服务器),完成以太网数据与串行口数据之间的相互转换。一方面,LM8962将SC28L198发送过来的串口数据打包成以太网数据帧,并通过自身的以太网控制器发往主机;另一方面,LM8962将收到的以太网数据解包,分离出数据和相应的串口设备号,然后通过SC28L198的相应通道发往串口设备。     1 串口服务器硬件结构   该系统选用TI公司生产的ARM芯片LM8962作为主控MCU以及选用Phillips公司生产的芯片SC28L198作为8通道UART控制器。   该系统的主要功能是完成TCP/IP协议与串口通信协议之间的相互转换。   主控制器LM8962是由LuminaryMicro公司开发的一款基于ARMCortex-M3MCU内核的32位微处理器。该处理器支持的最大主频为50MHz,具有嵌入式Flash和SRAM、运动控制PWM等内部模块。LM8962内部集成了以太网控制器,结合了Bosch控制器局域网技术和10/100以太网媒体访问控制(MAC)以及物理(PHY)层,简化了该系统以太网连接的硬件电路设计。该微控制器使用了兼容ARMThumb?的Thumb2指令集来减少存储容量的需求,并以此达到降低成本的目的。系统的硬件结构如图1所示。        图1硬件结构图   UART器件SC28L198提供了8路相互独立的全双工异步通道,每路UART通过同步总线接口与主机进行通信。每个通道的接收器和发送器均具有16个字符的FIFO,最大限度地减少了接收器超时的情况,使用用户定义的Xon/Xoff字符可实现自动带内流量控制,在唤醒模式下可进行地址识别。SC28L198同时还包括以下功能模块:   时序模块,其中包含一个可产生22个工业标准的波特率的通用波特率发生器和用来产生非标准波特率的2个16位计数器;I/O口控制模块和状态变化检测器模块;可仲裁24个中断的中断仲裁系统。为了降低软件开销,器件包含的中断仲裁系统通过直接访问或修改中断向量的方法来报告UART中断的情况。报告的中断上下文包括通道编号、器件中断类型(接收器COS等)、发送器或接收器FIFO的填充点。   2 串口扩展电路   图2描述了具有8通道的串口联网服务器的电路连接框图。串口服务器的硬件由两个主要芯片和其他外围电路组成。在SC28L198的管脚中,CEN、W_RN、IACKN、DACKN、IRQN、SCLK管脚控制着主机外部与内部数据总线与SC28L198之间的数据传输,管脚A7~A0为SC28L198与ARM相连的地址总线,D7~D0为SC28L198与ARM传输数据的数据总线。        图2电路连接框图   波特率发生器工作在振荡器或外部X1/CCLK时钟输入下,可以产生22个50.0~230.4k范围内的常用数据通信波特率。通常使用的外部晶振频率为3.6864MHz和7.3728MHz,在7.3728MHz工作频率下产生的波特率是3.6864MHz下产生的两倍。每个接收器和发送器可以工作在不同的波特率下,通过向波特率选择寄存器写入不同的选择代码将产生不同的波特率。[!--empirenews.page--]SC28L198的系统时钟(SCLK)可同时作为主机接口和其他内部电路的基本时间基准。为了确保内部控制器的正确操作,提供的SCLK频率必须大于X1晶体时钟的2倍或任何外部的1X数据时钟输入。由于LM8962芯片本身没有提供时钟信号输出引脚,若由定时器中断产生7.3728MHz以上频率的方波信号将使LM8962频繁处理中断程序,影响程序执行效率。当SC28L198工作在50MHz频率下,其中的PWM硬件模块最高可以产生25MHz输出,且不产生任何中断,因此LM8962将从频繁的查询和处理中断中解脱出来。     在该系统中,需根据不同的应用场合使用RS-232收发器或RS-422/485收发器及其外围电路。使用RS-232收发器可以进行近距离全双工通信,使用RS-422/485收发器能够进行远距离数据传输。由于整个系统工作于3.3V电压下,为了匹配TTL电平和RS-232电平或RS-422/485电平,该电路采用MAX3232芯片或MAX3485芯片。   LM8962内部集成的以太网控制器包含一个完整的MAC模块和PHY接口器件,简化了硬件电路设计。该以太网控制器完全支持10BASE-T和100BASE-TX标准以及遵守IEEE802.3协议。整个系统连接以太网只需一个隔离变压器,无需外接以太网控制芯片,简化了硬件设计。隔离变压器能够隔离模块地和数字地,从而保证SC28L198能够远离外界的复杂信号。   3 软件设计   在该系统中,用户可以对串口服务器的配置、状态查询和在计算机(客户端)上通过以太网收发数据进而操作该串口服务器。在客户端上,8个SC28L198的通道被虚拟成8个COM接口。操作这些虚拟COM接口就如同操作计算机上的物理COM接口,因此用户不必知道数据是通过以太网进行传输。实际上,用户操作这些COM接口时,产生的命令和数据将被打包成一帧数据并发往处理器LM8962,然后LM8962将数据通过SC28L198的相应通道发送到设备上。串口服务器使用ARM处理器LM8962作为嵌入式设备的核心器件,在其上运行μC/OS-II操作系统来打开、关闭和管理8个串行通道的相应进程。因此,8个串行通道能够同时收发数据而不相互影响。   3.1μC/OS-II   μC/OS-II是免费开源、专门为嵌入式系统设计的实时操作系统。它包括任务计划、任务管理、时间管理、内存管理、任务间的通信以及其他一些基本功能。在该系统中采用μC/OS-II来实现以下功能:   (1)建立一个消息队列来存储串口通道的消息和UDP消息;(2)控制SC28L198收发串口数据;(3)建立一个任务来管理UDP通信,并通过以太网收发数据;(4)建立一个任务来管理串口通道收发任务与UDP通信任务之间的通信。   3.2TCP/IP模块   TCP/IP协议具有分层结构,能够实现对以太网数据帧进行打包和解包。UDP在TCP/IP的传输层,提供一种不可靠的数据传输服务,但UDP协议相对简单,比起TCP协议更能够提供实时和快速的数据传输。在正常的运行过程中,该TCP/IP程序模块能够从数据队列中获取串口通信的数据并将数据打包至UDP包中,然后将UDP包发送至IP层,最后形成一帧数据。该帧数据将会通过以太网发送到计算机中。与此同时,该程序模块还将从以太网接收到的数据解包出来,将其中的串口通道号和串口数据发送到SC28L198中去。表1描述了收发一帧数据的格式。   表1数据传输格式     [!--empirenews.page--]3.3 SC28L198收发模块     图3描述了串口接收模块的工作流程。当SC28L198中的某个接口通道接收到串口设备的一帧数据时,这些数据将被送往数据队列,同时保存相应的串口通道号。当打包时间到了规定的时间或者打包的串口数据已经达到规定的最大长度(200字节)时,该数据包将被发往以太网。图4描述了串口发送模块的工作流程。当该系统通过以太网接收到主机发来的一帧数据或命令时,ARM处理器将去掉以太网帧头、IP头和UDP头,提取出串口通道号,将分离出的串口数据帧发送到对应的串口通道。        图3 串口数据接收流程        图4 串口数据发送流程   3.4初始化程序   在整个系统开始工作之前,程序必须对SC28L198中的每个通道进行初始化。ARM处理器LM8962通过向SC28L198的寄存器写入命令来完成整个初始化过程。为了保证LM8962与串口设备之间传输的数据准确无误,串口服务器需要规定每个通道的通信格式。该格式包括发送数据波特率和接收数据波特率、数据长度、停止位和校验位等。整个初始化过程的程序如下:   void UART_Init( void) {   uchar channel;   UART_WR ( GCCR,0 x06) ; /* 全局配置* /   UART_WR ( CR( 0), 0xF8) ; /* 重启芯片* /   UART_WR ( ICR, 0x00) ; /* 设置中断水平* /   UART_WR ( IVR,0x00) ; /* 设置中断仲裁门槛* /   for( channel = 0; channel < 8; channel + + ) {   UART_WR ( MR0( channel) ,0xC0) ; /* 无流量控制* /   UART_WR( MR1( channel) ,0x77) ; /* 设置数据格式* /   UART_WR( MR2( channel) ,0x00) ; /* 普通模式* /   UART_WR( RXCSR( channel) ,0x0E) ; /* 设置接收波特率* /   UART_WR( TXCSR( channel) ,0x0E) ; /* 设置发送波特率* /   UART_WR( CR( channel) ,0x28) ; /* 锁住收发器* /   UART_WR( IMR( channel) ,0x03) ; /* 开启   Tx 和Rx* /   }   }   4 结论   系统采用μC/OS-II操作系统和TCP/IP协议实现了实时、高效的数据传输,为RS232/422/485设备提供了方便快捷的以太网连接。该系统能够为串口设备提供网络化监控、管理,以及远距离数据服务。

    时间:2011-09-10 关键词: ii os tcp ip 于μ 设计教程

  • IP STB系统构架及规划介绍

    不断翻新的IP STB互动服务   通过电视系统可以提供的互动数字内容服务包括电视点播(VoD)、数字视频记录(Digital Video Recorder , DVR)、电子节目指南(Electronic Program Guide, EPG)、电视商务(television commerce, t-commerce)、讯息服务、音乐、游戏、IP电话、网络网关器和网页浏览等等,而且还不断有新的服务在推陈出新。   由于提供这些功能的难易程度不同,同样是IP STB还可以再分为简单型和进阶式两大类。简单型是强调成本效益的入门级设备,主要是能提供基本的广播电视服务、VoD、EPG和网络浏览等功能;进阶型则定位为全功能的媒体中心,这类产品往往在STB中置入硬盘(HDD),让STB有足够的储存容量录制节目,进而能提供DVD播放和录像、PVR和个人多媒体储存功能,不仅如此,这类设备还可能具有家庭网络的连接端口,让STB进一步成为家用网关器(Residential Gateway)。        图1 IP STB的功能定位示意图   IP STB的系统架构   IP STB通过IP的连结即可传送交互式、个人化的视频内容到今日的电视上头,为了提供安全、高品质的内容,一个IP STB必需要建置一个弹性的平台,才能支持符合产业标准的资料传送和网络协议。   以IP STB的系统架构来说,包含三个独立的子系统:TV单元、条件存取(conditional access, CA)单元和PC单元。TV子系统由调变器(tuner)和影像译码器组成,它们用来处理数字串流信息;CA子系统让服务商具有控制能力,能够知道收视户在何时收看什么节目;PC子系统多半是模块式的设计,也就是说STB的设计者可以依其需求而增加或减少这个系统中的组件,由于IP STB的目标是要提供网际网络的服务功能,它的PC系统方面就得提供TCP/IP的堆栈协议,并具有更佳的储存方案。   在IP STB处理器架构的设计上,通常采用DSP和另一块通用处理器(General Purpose Processor , GPP)的双核架构,其中DSP主要用于视频及音讯上的译码处理,目前多采用可程序化的DSP,以满足定制化上的弹性需求;GPP则用来处理从各种接口来的控制及运算需求,这些接口包括硬盘总线接口、以太网及GPIO等有线接口,以及无线接口等,请参考图2。        图2 IP STB的处理器核心架构   以Broadcom的BCM7318系统单芯片为例,它具有MPEG-2影音译码功能、32位MIPS微处理器(266MHz)、10/100Mbps以太网络控制器和USB 2.0主控制器。在这个架构下,这块译码芯片可以处理从以太网、外接硬盘,以及从线缆、电话线、卫星或数字地面网络接口模块等特定外接接口来的串流内容。   IP STB的系统规划   对于STB来说,如何以现有的频宽提供高品质的影音内容是一个重点,而这个解决方案已浮出水面,也就是从现有的MPEG-2格式转向新的高阶影像压缩技术,也就是H.264或微软的VC-1格式。[!--empirenews.page--]  以今日的MPEG-2格式来说,要服务商提供多频道的视频节目是不可能的任务。在今日的环境下,每个收视户能使用的频宽通常都小于2Mbps,这还不足以顺畅地传送MPEG-2高容量多媒体信息。不过,若采用ISO编码标准H.264压缩技术(又称为MPEG-4 part10/AVC),那就可以在1Mbps的频宽下传送极佳的数字串流影像,这对于标准型电视(SDTV)节目的播放是不成问题的。如此一来,电信服务商就能以现有的网络架构来为用户提供数字广播服务了。   市场调查公司ABI Research最近发表的一份研究报告即指出,目前约有30%的IP-STB支持H.264和VC-1。由于厂商已陆续推出H.264的高阶视频译码器硬件芯片方案,这将能提高IP STB在建置上的成本效益,ABI指出,这种高阶视频译码器将成为IP-STB的标准配备,预计到2008年时,它将进入几乎所有的机顶盒中。在此情况下,也将带动系统业者对IP STB的采用意愿。   采用高阶视频译码器的IP STB,提供支持高品质H.264/ MPEG-4 AVC影像译码能力,它能提供高画质(high definition, HD)和标准画质(standard definition, SD)的视频服务;此外,在声音的译码上,这个译码器也得支持最新的多种音讯标准,包括MPEG-4 高效率AAC (AAC+)、MPEG-4 AAC (ACC-LC)、Dolby Digital Plus (Enhanced AC3)、Dolby Digital (AC3)、MPEG-1 Layer I, II, III (MP3),和PCM (pulse code modulation)等,才能满足今日多元的音讯处理环境。   除了视频服务外,高阶IP STB也要求支持更多的功能,例如采用包含硬件绘图加速器的2D图形引擎,它可以支持高阶的绘图功能,也可以提升软件式的电子节目指南与IPTV的互动服务,进而具有产品的差异性。此外,加入硬盘的IP STB,再配合软件上的设计,就能提供包括个人观看(viewing)和排程(scheduling)、视频和资料推播、随选视频等新的服务。   结语   服务商和市场用户对功能的需求,正不断推动IP STB的向前发展。以服务商的角度来说,他们希望在最小的投资费用下,以及更弹性及便利的系统开发环境中,引进确实能创造收入的新服务。在这些服务中,以多媒体和娱乐导向的新应用最受到重视,而为了保证有版权的内容能受到保护,不致于被非法散布,IP STB的开发上也不能忽视在数字版权管理(DRM)上的议题。   此外,如何提供容易升级的IP STB设备,也成了开发者的共同需求。未来IP STB的开发得满足定制化的需求,同时遵循可靠和成熟的产业规范,以加速设计时程及降低开发成本。一些国际组织的出面协调制定共通规范,对于STB的广泛应用有很大的帮助。目前有两个代表性的标准推动组织,一是欧洲的ECCA(European Cable Communications Association)和美国为主的CableLabs,分别已推出多项STB的参考设计规范。   IP STB将会整合更多的功能,例如调制解调器、硬盘、MP3和DVD播放机,甚至是家庭网络的功能,若要播放高画质视频内容,那就需要比标准视频高出4~6倍的频宽,还得采用更高效能的译码技术,如以H.264或VC-1取代今日的MPEG-2。   然而,除了终端用户的IP STB外,还需要有系统端的完整传输环境及相关设备技术,例如VOD后台的整合技术、EPG的伺服/终端间中介软件支持,和DVR引擎技术,才能提供端对端(end-to-end)的IP应用服务(请参考图3)。不过,IP STB在新功能和新服务上的技术改变,仍是推动产业持续进步的一大动力。        图3 STB在整体网络环境中之定位

    时间:2012-06-24 关键词: ip stb 设计教程

  • 一种新的嵌入式Simplified TCP/IP协议栈的研究与实现

    1 引言   嵌入式nternet是近几年随着嵌入式系统的广泛应用和计算机网络技术的发展而兴起的一项新兴概念和技术。单片机或微控制器(MCU,Micro ControllerUnit)被广泛应用在家庭和工业的各个领域,通称嵌入式系统。嵌入式系统具有以应用为中心、以计算机技术为基础、软件硬件可裁剪等特点,赢得了巨大的市场,在应用数量上远远超过了各种通用计算机。随着Internet/Intranet的发展,各种家用电器,从空调到微波炉,都产生了连入互联网的要求。   如何通过Internet共享嵌入式设备的信息,实现设备的远程访问、控制和管理,对接入到网络上各个节点的设备实时监控,这就是设备接入互联网需要解决的问题。TCP/IP协议是标准的网络协议,如果能把TCP/IP协议嵌入到设备的MCU中,就可以通过它在设备和Internet之间建立通信链路,这样就解决了设备与网络互联的关键技术。   2 Simplified TCP/IP协议栈的特点   和嵌入式系统面向特定的应用一样,分析嵌入式TCP/IP协议栈的特点和对传统的TCP/IP协议栈进行简化也要针对特定的系统环境和应用背景。离开了特定的系统环境和应用背景来讨论嵌入式TCP/IP协议栈的特点和对TCP/IP协议栈进行简化是没有意义的。这里所讨论的嵌入式TCP/IP协议栈是针对那些低档的8位/16位嵌入式系统能支持嵌入式Internet直连体系结构而提出的。   嵌入式系统有限的处理能力以及存储资源相对缺乏,因此在嵌入式Internet环境里使用标准TCP/IP协议栈是不合适的。把TCP/IP协议栈从普通的PC机移植到MCU,内存和内存管理成了瓶颈。为了既实现相应的网络功能又节省系统资源,需要对协议栈进行有针对的模块化裁减。针对家电系统中的8位/16位MCU结构设计了一个TCP/IP协议簇的子集,称之为Simplified TCP/IP协议栈。其中包括IP、UDP、ARP和ICMP等协议的全部或部分功能,对协议进行了有选择的实现,尽最大可能保持协议功能和机制上的完整。   Simplified TCP/IP协议栈按照网络体系分层思想设计,如图1所示。其中每一层都被设计成一个功能相对独立的模块,负责处理各自的数据,通过函数调用把控制权交给上层或下层的模块。   低档嵌入式系统中一般没有实时多任务操作系统支持,所以Simplified TCP/IP协议栈直接面对硬件。MCU中的程序结构一般是顺序执行和硬件中断相配合的方式。嵌入式处理器的时钟频率低,地址、数据总线窄,所以一个IP包的处理要花很多的时间。如果采用中断处理方式,势必影响其他中断和任务的执行。当系统中有实时数据采集、串口通信中断、键盘中断等实时任务时,则会造成冲突。设计时需要合理划分中断处理程序,将无实时要求和费时的SimplifiedTCP/IP协议栈处理放在主程序顺序循环中。对网络接口控制芯片采用查询式,即在其他中断任务的执行间隙处理Simplified TCP/IP协议栈,以牺牲响应速度换取系统可靠性,如图2所示。   3 TCP/IP协议栈的裁减           普通操作系统可支持完整的TCP/IP协议族,但嵌入式系统中大多很难做到,也不需做到。嵌入式系统中实现的协议要根据各个系统的特点及功能来进行设计。TCP/IP协议族中,只实现与实际需要有关的部分,而不使用的协议则一概不支持。Simplified TCP/IP协议栈中支持的协议。   3. 1 地址转换协议—ARP协议   ARP协议是某些网络接口(如以太网和令牌环网)使用的特殊协议,ARP的地址解析功能是为IP地址和数据链路层使用的硬件地址提供动态地址映射。通用计算机系统中,ARP高速缓存一般设计成双向数据链的形式,这样整个缓存可以方便地动态增减。但是这种非线性存储的链表式缓存结构,在进行表项匹配查找时比较费时,不适用于嵌入式系统。因此ARP的地址缓存采用了线性数组形式的结构。它在内存中是连续线性存储的,查找速度快。嵌入式应用中节点不是很多,即ARP缓存容量不需要很大,因此将ARP高速缓存设计成固定大小。被动的嵌入式服务器主要是接收来自客户的服务请求,为客户提供服务,即嵌入式服务器不会主动向某一主机发数据帧。既然如此始终处于被动状态的服务器完全不需要向任何主机发送ARP请求,设备只要能处理ARP请求并返回ARP应答即可。鉴于这种情况,ARP协议中选择对ARP应答部分进行实现。  [!--empirenews.page--]   3. 2 网际协议—IP协议   IP协议是TCP/IP协议簇中最为核心的协议,提供不可靠的无连接的数据报传送服务。所有的TCP、UDP和ICMP数据都以IP数据报的格式传输。IP协议非常重要,实现比较复杂。从实现Simplified TCP/IP协议栈的要求出发,约简IP协议需要把握两个原则:①对接收到的IP数据报进行处理,向上层协议进行提交;②负责对UDP报文进行封装,交给数据链路层进行装帧。当设备收到发给自己的数据报时,首先判断是否是自己的数据报,若不一致则丢弃该数据报;否则进行IP校验和的验证,当数据报无误后,去掉IP头部,将IP数据提交上层处理。           一般情况下,数据包要经过不同的物理网络,则IP层必须支持数据包的分片和重装。但IP的分片和重组所需的开销比较大,而现有的网络一般都支持以太网,并且在此次应用的8/16位嵌入式系统中,传输的数据都是一些数据量比较小的状态信息或者控制信息。因此数据报都不会超过协议所限制的1500字节。如果极少数数据实在比较大,可以在程序中进行处理,分批次进行传输。因此可以裁减掉IP的分片和重组功能。而IP数据包的路由功能则交给默认网关执行。   3. 3 网际控制报文协议———ICMP协议   ICMP协议是IP网络内为控制、测试、管理功能而设计   的协议。ICMP的报文类型很多,不同类型的报文由类型和代码字段共同决定。为了了解设备是否可达, Simplified TCP/IP协议栈中主要实现了回显请求和应答报文的功能。该程序发送ICMP回显请求报文给目的主机,并等待ICMP回显应答。对于处于被动状态设备而言,不需要主动发送回显请求,只要能够识别来自其他客户的回显请求并发送回显应答就可以了。为了能够使用户了解设备是否可达,应当能够对Ping的回显请求给予应答。     3. 4 用户数据报协议—UDP协议   Simplified TCP/IP协议栈中的传输层中,选用UDP作为传输层协议。从理论上看,TCP的可靠性是以许多复杂措施及由此而增加的开销为代价换来的。TCP提供面向链接的、可靠的服务,而UDP是无面向链接的。由于UDP没有可靠性的保证机制,因此能全速地进行数据通信(即充分发挥物理通信设备的速度);又因为UDP没有点对点接入的要求,可以实现“一对多点”,“多对多点”的广播和多点播发信息。UDP的不可靠传输的缺陷,可以在使用UDP时,在应用层增加提高UDP可靠性的代码来弥补。譬如给数据添加顺序标记,因而能在应用层发现数据的丢失和乱序,从而加以更正;采用应答确认机制,确保数据安全到达接收者等。   由于嵌入式系统的CPU速度有限、代码不能太长、传输率是关键等特殊要求,一般来讲,在嵌入式设备接口时,快速、简单地与嵌入式设备进行双向数据传输是首为重要的。所以减少和嵌入式设备之间的往返信息,使网络成为一种更为高效的通信媒介将是嵌入式网络协议设计的必由之路。而UDP协议的开销很小,传输率比TCP高出很多,实时性更强。所以嵌入式TCP/IP协议中采用UDP协议作为运输层协议,不失为明智之举。嵌入式系统中也可能存在对数据传输可靠性要求很高的情况。由于UDP协议没有计时机制、流量控制或拥塞管理机制、应答、紧急数据的加速传送等功能,因此在应用层协议中加入相应的措施,如给数据报加上顺序标识、定时等待、采用重传机制等辅助性的操作来弥补它的缺陷。从应用的角度看, Simplified TCP/IP协议栈主要是应用于家用电器上网。对于温度、烟雾和湿度传感器等的每秒一次地集中监控来说,发送频繁,包较小,只需前端设备向网络中广播实时状态等数据即可,因此选用UDP较为合适。   4 Simplified TCP/IP协议栈处理流程   Simplified TCP/IP协议栈接收数据包的过程就是解析数据包的过程。首先当一个数据帧到达时,网络接口控制程序将其读入缓冲区,检查协议类型字段,如值依次为0x0800,表示数据域内为IP包;值依次为0x0806,表示数据域内为ARP包[6]。由此以确定使用那种协议模块来处理此分组。去掉以太网帧首部的数据包将被分配到IP缓存或者ARP缓存。接着,由IP协议处理模块或ARP协议处理模块继续解析。ARP根据包的类型,或者更新ARP地址映射表或者发送ARP应答。IP协议处理模块对数据包解析后,将数据交给UDP协议处理模块或ICMP协议处理模块。ICMP协议模块会发回一个ICMP回显应答包。Simplified TCP/IP协议栈发送数据包的过程是封装数据包的过程,数据经过某层协议的处理,就会在数据包首部增加某种   格式的头部。在IP协议模块处理数据包的过程,它要通过调用ARP协议获得对方主机的物理地址。   Simplified TCP/IP协议栈处理流程如图3所示。   图3 Simplified TCP/IP协议栈处理流程图     5 总结与展望   为了验证方案的可行性,实验中以简单图像的传输为研究对象,检验Simplified TCP/IP协议栈的运行效果。从测试结果可看出,大流量的图像传输系统中发生数据报的几率还是比较大的。当然,如果是应用在数据流量不是很大,仅有一些少量数据和简单的控制指令或反馈信息的应用系统中,运行的情况会更好一些。   目前Simplified TCP/IP协议栈技术还有一些不完善的地方。比如在数据量大的网络中减小数据报的丢失率,更有效的进行拥塞控制等,这些都是今后的努力方向。另外,还需要进一步优化代码,提高SimplifiedTCP/IP协议栈的性能。

    时间:2012-07-15 关键词: tcp ip 设计教程 simplified

  • 实时操作系统uC/0S II下TCP/IP协议栈的实现

    摘要:结合ez80和ARM7两种系统上的具体实现,说明了如何在嵌入式实时操作系统uC/0SII上移植实现LwIP这套TCP/IP协议栈,使uC/0S II成为支持网络的RTOS。 1 引言 随着嵌入式系统与网络的日益结合,在嵌入式实时操作系统中引入TCP/IP协议栈,以支持嵌入式设备接入网络,成为嵌入式领域重要的研究方向。uC/0S II是近年来发展迅速的一个开放源码实时操作系统,但它只是一个实时的任务调度及通信内核,缺少对外围设备和接口的支持,如没有文件系统、网络协议、图形界面。笔者在多个嵌入式项目的开发过程中,以开源TCP/IP协议栈LwIP为基础,给uC/0S II加上了网络支持。下面就以uC/0S II +LwIP分别在8位MCU ez80和32位MCU ARM7TDMI上的实现为例进行说明。 需要说明的是,笔者使用的ez80系统是Zilog公司的ez80190开发板,自带网络芯片。而ARM7系统是使用笔者参与开发的Skyeye,一个基于GDB的ARM7TDMI指令级软件仿真器。Skyeye小组最近为Skyeye加上了软件模拟的Ne2k兼容网络芯片,可以运行带网络支持的μcLinux和uC/0S II。以下的全部相关程序和代码都可以在Skyeye网站(hpclab.cs.tsinghua.edu.cn/~skyeye/)下载。 2 基于uC/0S II的网络平台概述 嵌入式操作系统uC/0S II是一个公开源代码的占先式多任务的微内核RTOS,其性能和安全性可以与商业产品竞争。uC/0S II的特点可以概括为以下几个方面:公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好。可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。uC/0S II自1992年的第一版(uC/0S)以来已经有好几百个应用,是一个经实践证明好用且稳定可靠的内核。目前国内对uC/0S II的研究和应用都很多。 TCP/IP是Internet的基本协议,以其实用性、高效性已经成为事实上的工业标准。嵌入式设备要与Internet网络直接交换信息,就必须支持TCP/IP协议。目前嵌入式设备上TCP/IP方案有很多种,但面向低端应用的开源嵌入式网络平台还很少见。 uC/0S II是一个富有开放色彩的RTOS,只要买一本书就可获得源代码,对学校和教育的使用完全免费,商业应用的费用相对也很低。但是它目前的一些第三方TCP/IP支持都是完全商业化的,用户需要付费才能获得,很少给出源代码,这影响了uC/0S II的研究和推广。通过把开放源代码的TCP/IP协议栈LwIP移植到uC/0S II上来,就获得了一套可免费研究、学习的嵌入式网络软件平台。 3 开源TCP/IP协议栈LwIP简介 LwIP是瑞士计算机科学院(Swedish InSTitute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP的含义是Light Weight(轻型)IP协议。LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LwIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端嵌入式系统中使用。 LwIP的特性如下: (1) 支持多网络接口下的IP转发 (2) 支持ICMP协议 (3) 包括实验性扩展的的UDP(用户数据报协议) (4) 包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(传输控制协议) (5) 提供专门的内部回调接口(Raw API)用于提高应用程序性能 (6) 可选择的Berkeley接口API(多线程情况下) 我们目前使用的是LwIP的最新稳定版V0.5.3。有关LwIP的详细内容,可以参考其代码和网站上的文档。 4 LwIP在uC/0S II下的实现 4.1 概述 LwIP协议栈在设计时就考虑到了将来的移植问题,因此把所有与硬件、OS、编译器相关的部份独立出来,放在/src/arch目录下。因此LwIP在uC/0S II上的实现就是修改这个目录下的文件,其它的文件一般不应该修改。下面分几部份分别说明相应文件的实现原理和过程。具体的代码限于篇幅没有给出,Skyeye网站上有完整的代码和说明。 4.2 与CPU或编译器相关的include文件 /src/arch/include/arch目录下cc.h、CPU.h、perf.h中有一些与CPU或编译器相关的定义,如数据长度,字的高低位顺序等。这应该与用户实现uC/0S II时定义的数据长度等参数是一致的。 #define BYTE_ORDER LITTLE_ENDIAN //ARM7默认为小端存储系统 //数据类型长度的定义 typedef unsigned char u8_t; typedef signed char s8_t; typedef unsigned short u16_t; typedef signed short s16_t; typedef unsigned int u32_t; typedef signed int s32_t; 此外还有一点:一般情况下C语言的结构体struct是4字节对齐的,但是在处理数据包的时候,LwIP使用的是通过结构体中不同数据的长度来读取相应的数据的,所以,一定要在定义struct的时候使用_packed关键字,让编译器放弃struct的字节对齐。LwIP也考虑到了这个问题,所以,在它的结构体定义中有几个PACKED_FIELD_xxx宏,默认的时候这几个宏都是空的,可以在移植的时候添加不同的编译器所对应的_packed关键字。比如在Skyeye(ARM7)上对应gcc编译器的定义: #define PACK_STRUCT_FIELD(x) x __attribute__((packed)) #define PACK_STRUCT_STRUCT __attribute__((packed)) #define PACK_STRUCT_BEGIN #define PACK_STRUCT_END 4.3 sys_arch操作系统相关部份 sys_arch.[ch]中的内容是与OS相关的一些结构和函数,主要可以分为四个部份: (1) sys_sem_t 信号量 LwIP中需要使用信号量通信,所以在sys_arch中应实现信号量结构体和处理函数: struct sys_sem_t sys_sem_new() //创建一个信号量结构 sys_ sem _free() //释放一个信号量结构 sys_ sem _signal() //发送信号量 sys_ arch_sem _wait() //请求信号量 由于uC/0SII已经实现了信号量OS_EVENT的各种操作,并且功能和LwIP上面几个函数的目的功能是完全一样的,所以只要把uC/0SII的函数重新包装成上面的函数,就可以直接使用了。 (2) sys_mbox_t 消息 LwIP使用消息队列来缓冲、传递数据报文,因此要在sys_arch中实现消息队列结构sys_mbox_t,以及相应的操作函数:[!--empirenews.page--] sys_mbox_new() //创建一个消息队列 sys_mbox_free() //释放一个消息队列 sys_mbox_post() //向消息队列发送消息 sys_arch_mbox_fetch() //从消息队列中获取消息 uC/0SII同样实现了消息队列结构OSQ及其操作,但是uC/0SII没有对消息队列中的消息进行管理,因此不能直接使用,必须在uC/0SII的基础上重新实现。为了实现对消息的管理,我们定义了以下结构: typedef struct { OS_EVENT* pQ; void* pvQEntries[MAX_QUEUE_ENTRIES]; } sys_mbox_t; 在以上结构中,包括OS_EVENT类型的队列指针(pQ)和队列内的消息(pvQEntries)两部分,对队列本身的管理利用uC/0SII自己的OSQ操作完成,然后使用uC/0SII中的内存管理模块实现对消息的创建、使用、删除回收,两部分综合起来形成了LwIP的消息队列功能。 (3) sys_arch_timeout 函数 LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时间。这个属性表现为每个线程都对应一个sys_timeout结构体队列,包括这个线程的timeout时间长度,以及超时后应调用的timeout函数,该函数会做一些释放连接,回收资源的工作。如果一个线程对应的sys_timeout为空(NULL),说明该线程对连接做永久的等待。 timeout结构体已经由LwIP自己在sys.h中定义好了,而且对结构体队列的数据操作也由LwIP负责,我们所要实现的是如下函数: struct sys_timeouts * sys_arch_timeouts(void) 这个函数的功能是返回目前正处于运行态的线程所对应的timeout队列指针。timeout队列属于线程的属性,因此是OS相关的函数,只能由用户实现。 (4) sys_thread_new 创建新线程 LwIP可以是单线程运行,即只有一个tcpip线程(tcpip_thread),负责处理所有的tcp/ucp连接,各种网络程序都通过tcpip线程与网络交互。但LwIP也可以多线程运行,以提高效率,降低编程复杂度。这时就需要用户实现创建新线程的函数: void sys_thread_new(void (* thread)(void *arg), void *arg); 在uC/0S II中,没有线程(thread)的概念,只有任务(Task)。它已经提供了创建新任务的系统API调用OSTaskCreate,因此只要把OSTaskCreate封装一下,就可以实现sys_thread_new。需要注意的是LwIP中的thread并没有uC/0S II中优先级的概念,实现时要由用户事先为LwIP中创建的线程分配好优先级。 4.4 lib_arch中库函数的实现 LwIP协议栈中用到了8个外部函数,这些函数通常与用户使用的系统或编译器有关,因此留给用户自己实现。如下: u16_t htONs(u16_t n); //16位数据高低字节交换 u16_t ntohs(u16_t n); u32_t htonl(u32_t n); //32位数据大小头对调 u32_t ntohl(u32_t n); int strlen(const char *str); //返回字符串长度 int strncmp(const char *str1, const char *str2, int len); //字符串比较 void bcopy(const void *src, void *dest, int len); //内存数据块之间的互相拷贝 void bzero(void *data, int n); //内存中指定长度的数据块清零 前四个函数通常由用户自己实现。Skyeye(ARM7)中,由于使用了gcc编译器,gcc的lib库里已经有了后四个函数。而ez80的编译器函数库中缺少bcopy和bzero两个,需要自己编写。用户在其它CPU上实现时应根据自己的编译器来决定。 4.5 网络设备驱动程序 ez80开发板自带的网络芯片为RealTek的8019as芯片,这是ISA 10BASE-T的以太网芯片,与Ne2k兼容。而我们在AT91模拟器Skyeye中所仿真的网络芯片也是Ne2k,所以目前实现的网络设备驱动是针对Ne2k的,其它类型的网络芯片驱动可以在LwIP的网站上找到。LwIP的网络驱动有一定的模型,/src/netif/ethernetif.c 文件即为驱动的模板,用户为自己的网络设备实现驱动时应参照此模板。 在LwIP中可以有多个网络接口,每个网络接口都对应了一个struct netif,这个netif包含了相应网络接口的属性、收发函数。LwIP调用netif的方法netif->input()及netif->output()进行以太网packet的收、发等操作。在驱动中主要做的,就是实现网络接口的收、发、初始化以及中断处理函数。驱动程序工作在IP协议模型的网络接口层,它提供给上层(IP层)的接口函数如下: //网卡初始化函数 void ethernetif_init(struct netif *netif) //网卡接收函数,从网络接口接收以太网数据包并把其中的IP报文向IP层发送 //在中断方式下由网卡ISR调用 void ethernetif_input(struct netif *netif) //网卡发送函数,给IP层传过来的IP报文加上以太网包头并通过网络接口发送 err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr) //网卡中断处理函数ISR void ethernetif_isr(void); 以上的函数都可以分为协议栈本身的处理和对网络接口硬件的操作两部份,但硬件操作是对上层屏蔽的,具体参见RTL8019as、DM9008等Ne2k网络芯片的数据手册。驱动程序可以到Skyeye或LwIP的网站下载。 5 应用实例的建立和测试 做完上面的移植修改工作以后,就可以在uC/0SII中初始化LwIP,并创建TCP或UDP任务进行测试了。这部份完全是C语言的实现,因此这部份在ez80和ARM7上基本都是一样的。值得注意的是LwIP的初始化必须在uC/0SII完全启动之后也就是在任务中进行,因为它的初始化用到了信号量等OS相关的操作。关键部份的代码和说明如下: main(){ OSInit(); OSTaskCreate(lwip_init_task, &LineNo11, &lwip_init_stk[TASK_STK_SIZE-1], 0); OSTaskCreate(usr_task,&LineNo12,&usr_stk[TASK_STK_SIZE-1],1); OSStart(); } 主程序中创建了lwip_init_task初始化LwIP任务(优先级0)和usr_task用户任务(优先级1)。lwip_init_task任务中除了初始化硬件时钟和LwIP之外,还创建了tcpip_thread(优先级5)和tcpecho_thread(优先级6)。实际上tcpip_thread才是LwIP的主线程,多线程的Berkley API也是基于这个线程实现的,即上面的tcpecho_thread线程也要依靠tcpip_thread线程来与外界通信,这样做的好处是编程简单,结构清晰。[!--empirenews.page--] 实用Berkley API实现的tcpecho_thread是一个TCP echo服务器,*7号端口,程序框架如下: void tcpecho_thread(void *arg){ conn = netconn_new(NETCONN_TCP); //创建新的连接标识 netconn_bind(conn, NULL, 7); //绑定到7号端口 netconn_listen(conn); //开始*端口 while(1){ newconn = netconn_accept(conn); //接收外部到来的连接 buf = netconn_recv(newconn) //获取数据 ……. //处理数据 netconn_write(newconn, data, len, NETCONN_COPY); //发送数据 netconn_delete(newconn); //释放本次连接 } } 编译运行后,用ping ip地址命令可以得到ICMP reply响应。用telnet ip地址 7(登录7号端口)命令可以看到echo server的回显效果。说明ARP、ICMP、IP、TCP协议都已正确运行。

    时间:2012-08-19 关键词: tcp ip uc 设计教程

  • TCP/IP芯片W5200掉电模式应用笔记

    =================================================================================== W5200 和W7200 都有提供两种很吸引性的功能, 就好像有掉电模式和LAN叫醒功能. 但是这两种功能不可以同一个时间一齐使用. 如果已经启动掉电模式, 芯片中的PHY 会关闭和停止它的功能. 所以如果在掉电模式的情况下, 它是不可以使用LAN叫醒功能,因为这个功能是通过LAN来接收魔术数据包来叫醒的. 一般来说, 掉电模式是一个可以控制PHY 开关的功能来控制使用的电量. LAN叫醒功能是控制MCU 来转换MCU的模式是睡觉模式或正常模式. 当 W5200 接收到魔术数据包, LAN叫醒功能 就会通过W5200打断MCU的程序给MCU进入睡觉模式. =================================================================================== 1. 连接图     2. W5200E01-M3_PWDN的示例代码 if (strcmp(choice,”7″)== 0) { bTreat = (bool)SET; if((IINCHIP_READ(PHY)&0×08) == 0×00){ SerialPutString(“rnEnabling…rn”); GPIO_SetBits(GPIOB, WIZ_PWDN); Delay_ms(500); if((IINCHIP_READ(PHY)&0×08) == 0×08) SerialPutString(“rnEnabled PHY Power Down!!!rn”); } else{ SerialPutString(“rnAlready Enabled!!!rn”); } } 当你已经选择7号这个功能, 如果代表PHY 的寄存器是没有启动掉电模式(0×00), GPIO会启动为掉电模式. 如果已经启动,串口就会打印出掉电模式已经启动. if (strcmp(choice,”8″)== 0) { bTreat = (bool)SET; if((IINCHIP_READ(PHY)&0×08) == 0×08){ SerialPutString(“rnDisabling…rn”); GPIO_ResetBits(GPIOB, WIZ_PWDN); Delay_ms(3000); if((IINCHIP_READ(PHY)&0×08) == 0×00) SerialPutString(“rnDisabled PHY Power Down!!!rn”); } else{ SerialPutString(“rnAlready Disabled!!!rn”); } } 当你已经选择8号这个功能, 如果代表PHY 的寄存器是启动掉电模式(0×00), GPIO会关闭掉电模式. 如果已经关闭,串口就会打印出掉电模式已经关闭. 3. 配置 IAR Embedded Workbench     Type.h 如果你使用的是W5200E01-M3, W7200的定义就要关闭. #define __DEF_W5200__ //#define __DEF_W7200__ 如果你使用的是iMCU7200EVB, W5200的定义就要关闭. //#define __DEF_W5200__ #define __DEF_W7200__ Flash Loader Demonstrator     启动”Flash Loader Demo software”编程程序到 iMCU7200EVB或 W5200E01-M3. 如下是编程步骤:                 PC1 是需要使用静态IP     在串口终端程序         在 W5200E01-M3_PWDN 的程序中, PHY的掉电模式已经默认为关闭. PHY 的掉电的意思是代表控制PHY. 所以, 掉电模式是启动代表不可以传送和接收任何数据包. 4. 设置网络设置     5. 启用PHY掉电     6. 禁用PHY掉电     7. Ping测试 PC 1 ping 到 iMCU7200EVB(192.168.11.254). 如果 PC1 使用串口终端程序去改变 W7200 到功能8. 关闭PHY 的掉电模式之后再开到 启用PHY掉电模式, PC 1 就不可以ping 到 iMCU7200EVB 和 会打印出信息 “Request timed out”.  [!--empirenews.page--]   如果 PC1 使用串口终端程序改W5200到功能7来启用PHY掉电模式之后改到关闭PHY 的掉电模式, PC 1 就可以Ping iMCU7200EVB .  

    时间:2012-11-03 关键词: tcp ip 设计教程 w5200

  • 基于微型TCP/IP协议与AJAX的动态Web服务器设计

    为了降低非规则低密度奇偶校验(low-densityparity-check,LDPC)码译码算法的复杂度,提出一种适合数字信号处理嚣(digital signal processor,DSP)实现的低运算复杂度、低误码平台译码的改进算法。 该算法校验节点的运算采用修正最小和算法,外信息的更新采用串行方式,既保持了串行和积算法在有限迭代次数下译码门限低的优点,又降低了节点运算复杂度和误码平台。用定点DSP芯片实现的非规则LDPC码译码器的实测结果表明,该算法能以较低的实现复杂度获得低的误码平台和译码门限。 低密度奇偶校验(low-density paruty-check,LDPC)码是一种非常有效的信道编码方案,已经成为新一代数字卫星广播(DVB-S2)等标准的信道编码方案,具有重要的应用价值。 LDPC码译码器设计的实现成为近年来研究的热点。LDPC码译码器的实现方法主要有2种:一种是基于超大规模集成电路(VLSI)的设计;另外一种是基于数字信号处理器(digital signalprocessor,DSP)等指令串行执行系统的实现。 LDPC码译码多采用和积(sum-product,SP)译码算法,影响其复杂度的因素有迭代次数和每次迭代的运算复杂度。由于DSP芯片指令串行执行的特点,要实现较高速率的LDPC码译码器,必须同时减少迭代译码次数和每次迭代的运算量。文提出一种逐个校验节点串行更新的迭代译码算法(S-SP),并说明在二进制对称信道(BSC)下可以有效降低迭代译码的次数;为降低每次迭代的运算复杂度,校验节点的运算存在一些简化的译码算法,如修正最小和算法(modified mim-sum,MMS)等,但这些算法的译码门限有一定的损失。 本文研究非规则LDPC码的S-SP算法在加性高斯白噪声(AWGN)信道下的性能,说明该算法虽能降低迭代次数,但是存在误码平台较高的问题。考虑到简化的译码算法(例如MMS算法)有复杂度和误码平台低的特点,本文综合这2类算法的特点,提出了串行MMS(S-MMS)算法,该算法在有限迭代次数下具有低的误码平台和较低的译码门限,实现了复杂度和性能的较好折衷,适合于用DSP实现。 1 LDPC码简介和迭代译码算法 1.1 LDPC码简介 LDPC码是一种分组码。其校验矩阵为超稀疏随机矩阵,设为H。对于任何一个合法的码字v,都有校验方程。由该方程可知,校验矩阵中每行的非零元素,将所对应的LDPC码元映射成一个相当于校验码的约束,定义这种约束关系为一个校验节点。校验矩阵中每列的非零元素对应LDPC码的同一个码元,形成了一个相当于重复码的约束,定义这种约束关系为一个变量节点,而矩阵中的非零元素,既参与了变量节点的重复码的约束关系,又参与了校验节点的校验码的约束关系;因此定义矩阵中非零元素所对应的关系为连结这2种节点的“连结线”。因此,LDPC码的结构也可以用图1的因子图表示。 LDPC码的编码,先利用校验矩阵得到对应的生成矩阵,然后直接用信息序列和生成矩阵相乘即可得到编码码字,而LDPC码的译码则利用校验节点和变量节点的约束关系,在2类节点间通过“连结线”进行外信息的传递,从而实现迭代译码。 1.2 LDPC码迭代译码算法 定义为变量节点n的先验信息,即对数似然比;表示第k次迭代中,从校验节点m到变量节点n的外信息;表示第k次迭代中,从变量节点n到校验节点m的外信息;为第k次迭代后变量节点n的后验信息;M(n)表示和变量节点n相连的校验节点的集合;N(m)表示和校验节点m相连的变量节点的集合。 标准的和积(SP)译码算法如下。 步骤l 初始化。 其中:xn为发送比特;yn为接收符号。采用二进制相移键控(BPSK)调制,信道为AWGN信道。 步骤2迭代译码。 迭代译码包括2个步骤,变量节点的计算和校验节点的计算。本文中设定固定的迭代次数K,然后判决输出。 1)变量节点的运算(对所有的变量节点n)。 2)校验节点的运算(对所有的校验节点m)。 其中k≥1. 步骤3后验信息计算和判决输出。 串行和积译码算法(S-SP),在计算校验节点m时,需要将上面和积(SP)算法中的步骤2变量节点的运算修改为 其k≥1,假设校验节点的计算从1开始,也即m依次取1,2,3,…,M,这里M为校验节点的个数,如图1所示。 S-SP算法和SP算法的不同点在于:在SP算法中,所有与校验节点m相邻的变量节点更新时所使用的校验节点外信息都来自上一次的迭代输出,然后进行校验节点m的运算。而在S-SP算法中,计算校验节点m时,和其相连变量节点的更新可以使用本次迭代中已经更新过的外信息。从上面的分析也可看出,S-SP算法的复杂度和SP算法相同,另外,可通过合理设计,使得该算法需要的存储资源可降低为原来的1/2。 2 改进的迭代译码算法和优化设计 文指出,在BSC信道下,S-SP算法可以有效降低迭代译码次数。本文研究了该算法在AWGN信道下的特点,发现该算法虽可以降低迭代译码次数,但是存在误码平台较高的缺点。后面将利用仿真结果说明这一特点。 本文将S-SP算法与修正最小和算法(MMS)结合,提出了改进算法,将外信息的更新采用串行更新策略,校验节点的计算采用修正最小和算法,称为串行修正最小和算法(S-MMS)。该算法解决了S-SP算法的误码平台较高的问题,译码门限和标准的SP算法相比,性能损失很小。 提出的串行修正最小和算法(S-MMS),其迭代译码步骤2修改如下。 设定固定的迭代次数K,对校验节点m,依次取1,2,3,…,M,进行下面的2个步骤。 1)变量节点的运算(只计算和校验节点m相连的变量节点)。     其中:r=│N(m)│表示集合N(m)中的元素个数,即非规则码的校验节点m的阶数;βr为非规则码不同阶校验节点的偏移因子;sgn()为符号函数。 最优的偏移因子βr值,可以采用密度演化或者计算机仿真的方法得到。 本算法变量节点的运算只包括求和运算,校验节点只包括最大、最小和减法操作,与SP算法的校验节点运算的非线性函数ln(tanh())相比,量化噪声对其影响小。本文针对定点DSP芯片特点,信道观测值和迭代译码中的外信息,都采用16 b的量化精度,有利于优化指令并行度,并可以降低存储器读取、存储延时。[!--empirenews.page--] 3 算法性能仿真测试 为验证本文算法的有效性,结合非规则LDPC码对算法的性能进行了计算机仿真,并利用TI公司的定点DSP对其性能进行了测试。 仿真采用的非规则LDPC码的码长为4.096kb,码率为1/2,变量节点和校验节点的度分布分别为λ(x)=0.27x+0.25x2+0.01x3+0.47x9和ρ(x)=0.47_x6+0.53x7。 据ρ(x)可知,非规则LDPC码校验节点的阶数为7和8,通过计算机仿真得到的最优偏移因子分别为β7=0.45,β8=O.60。 图2给出了不同迭代次数下S-SP译码算法和SP算法的性能比较。可以看出,在AWGN信道下,S-SP算法仍可以有效地降低迭代译码次数,或者说在相同的有限迭代译码次数下,尤其是迭代次数为10次和20次时,性能有明显改善;但是,S-SP算法的缺点是有较高的误码平台。     图3给出了不同迭代次数下,S-MMS算法和SP算法的性能比较。可以看出,S-MMS算法误码平台降低,译码门限略高于SP算法,在迭代次数较小时,性能仍有明显改善。当迭代次数为20,Eb/No较小时,S-MMS算法与SP算法相比性能略有恶化,但Eb/No较大时,性能有明显改善,且误码平台降低,例如误比特率Pe为10-5时,信噪比改善约0.1 dB。在误码率10-6时,信噪比改善约0.25 dB。当迭代次数为50,Eb/No较小时,译码门限恶化约0.15 dB,Eb/No较大时,性能仍有所改善,误码平台降低。 综合比较图2和图3,S-MMS算法和S-SP算法相比,Eb/No较小时,译码门限恶化约为0.1~0.2 dB,Eb/No较大时,例如在误比特率Pe为10-6时,性能仍有所改善。考虑到一般通信系统要求译码后的误码率低于10-5,S-MMS算法在Eb/No较小时的性能恶化对其应用影响不大,适合实际应用。 图4给出了不同迭代次数下,利用TI公司的DSP芯片TMS320C6416T实现的采用量化SMMS算法的译码器的仿真测试性能和未量化S-MMS算法的比较。可以看出,定点DSP芯片上实现的S-MMS算法和未量化的算法性能几乎完全一致,进一步说明了本算法利用DSP芯片实现的有效性。DSP芯片实现的译码器的具体性能见表1。     文中用DSP实现的LDPC码译码器采用的码长为10.228 kb,码率为1/2,在误码率10-5时,信噪比为1.65 dB。本文设计的译码器采用的LDPC码的码长为4.096 kb,码率也为1/2,若采用50次迭代,在误码率10-5时,信噪比为1.55 dB;因此,本文实现的译码器的纠错性能优于文中设计的译码器。另一方面,本文译码器设计使用C语言实现,指令级的优化可进一步提高工作速率。 4 结 论 本文提出了一种适合数字信号处理器(DSP)实现的低复杂度、低误码平台的译码算法。该算法校验节点运算采用MMS算法,节点间的外信息更新采用串行方式,既保持了S-SP算法有限迭代次数下译码门限低的优点,又利用MMS算法的优点降低了误码平台和实现复杂度,克服了S-SP算法的复杂度高、误码平台高的明显缺点,获得了较好的性能折衷,很好地适应了DSP芯片指令串行执行的特点。

    时间:2013-01-28 关键词: tcp ip web ajax 于微型 设计教程

  • 一种通用、低成本的KVM over IP控制器的设计方案

    一种通用、低成本的KVM over IP控制器的设计方案

    KVM over IP是通过IP网络传输键盘Keyboard、显示器Video、鼠标Mouse信号的简称,系统由接入侧的控制器和远程的客户端构成。目前,控制器的技术实现主要依赖于专用芯片。本文以TI的达芬奇技术为基础,结合视频解码芯片,介绍了一种通用的、低成本的KVM over IP控制器的设计方案。0 KVM是Keyboard(键盘)、Video(显示器)、Mouse(鼠标)的缩写,常特指KVM Switch(控制器),即多台计算机的标准I/O口连接到一台KVM Switch上,通过切换开关,共享Switch上连接的一套键盘、显示器和鼠标,以简化资源配置和操作,实现一对多的控制,在计算机房的管理和维护中得到了大量的应用。但由于是电缆连接,使用距离受限,影响了这种模拟KVM 的控制范围和扩展性。KVM over IP,通常又简写为KVMoIP,也称为数字KVM.它是从本地计算机上采集视频信号,经过模数转换成为数字信息,压缩成IP包后,通过互联网或专用网络进行传送,远程控制台收到IP 包后,将其解包、转换,在控制台的屏幕上呈现;管理人员据此操作控制台的键盘、鼠标,发出的一系列控制命令由控制台组合成IP包,经过网络再回送到本地侧,解包后还原为键盘鼠标信号,从而让本地计算机执行相应的动作,实现了远程控制。1 基于TI 达芬奇技术的KVMoIP 设计KVMoIP的产品形态主要有外置式和内置式两种。图1是外置式KVMoIP的典型组网示意图,一方面通过线缆把各本地端的KVM 信号接到控制器,由控制器进行信号的处理和转换,最后提供网口供远端用户使用。图1中示意的是菊链式KVMoIP切换器,对于已有的模拟共享式KVM切换器,为保护投资,也可以外接IP接入模块来进行KVMoIP的功能扩展,以节约成本。内置式KVMoIP 是将该功能直接集成在计算机主板上,由主板上的BMC 芯片(如ASPEED 公司的AST2050)来实现。如图2所示,基板管理控制器(Base-board Management Controller,BMC),通过LPC 总线和PCIe总线接到Intel Xeon芯片组的桥片PCH上,BMC除了支持智能平台管理接口(IPMI)规范实现硬件资源的监控管理外,还提供KVMoIP的功能。与传统的模拟式KVM相比,KVM over IP具有不受距离限制的优点,实现了任意时间、任意地点的管理访问。另外,和一些流行的远程控制软件PcAnywhere、Radmin 等相比,KVMoIP 有着更独特的强大功能,如BIOS 级的存取,带外管理不受限于设备的运行状态,与被监控设备的操作系统和硬件平台无关。因此,KVMoIP具有良好的通用性和可扩展性,在互联网数据中心IDC、通信网络操作中心NOC等环境领域得到了广泛应用,可以说KVMoIP已经是当今IT架构中重要的组成部分之一,已成为计算机远程管理的必然趋势。图1 中的KVMoIP 系统分为两个部分:接入层的KVM控制器和管理层的远程客户端。客户端通过Web方式接入控制器,充分利用IP 技术呈现丰富的控制功能,提供集中化管理策略以及安全管理,如接收服务器软件发送的视频压缩数据,显示解压缩之后的视频图像;实现键盘、鼠标编码的发送并在目标设备间快速切换,保证网络传输的安全性和实时性。本文重点在单路KVM控制器的技术实现。图1中的KVM控制器大多采用Raritan公司的专用芯片KIRA100实现[3],专用性强且成本高,本方案采用TI达芬奇技术,作为一种低成本的通用性设计。1.1 达芬奇技术简介达芬奇(DaVinci)技术是TI公司推出的嵌入式多媒体应用方案,采用了高度集成的片上系统(SOC),为ARM+DSP的双核架构。ARM核是通用处理器架构,利于任务调度,适合对外设的管理和控制;DSP核长于编解码算法,适合于数字音视频处理,两相结合,这一特点使达芬奇技术特别适合用来开发智能多媒体系统。DaVinci技术还提供了底层驱动、开发包(DVSDK)、标准库以及丰富的应用编程接口(API)等组件作为配套解决方案,可高效的开发数字多媒体产品,加速市场应用。因而,DaVinci技术一经推出就受到开发者的青睐,在视频监控、多媒体网络和移动通信等领域得到了越来越多的应用。1.2 系统硬件设计基于达芬奇技术的KVMoIP 控制器的硬件框图如图3所示,分为主控模块、KVM模块、网络传输模块三个部分。1.2.1 主控模块主控模块采用TMS320DM365,它是TI近年推出、面向高清视频处理的DaVinci系列的一款处理器,内部集成了ARM9 内核,图像处理子系统VPSS,H.264 高清编码协处理引擎HDVICP 和MPEG-4/JPEG 协处理引擎MJCP.ARM9 负责整个系统的控制,VPSS 不仅提供灵活的视频输入接口,如BT.601/BT.656/BT.1120 数字YCbCr(8/16 b)接口,用于支持多种类型的CCD/CMOS图像传感器,还支持RGB/YUV 数字信号输出和PAL/NTSC制式的复合视频信号输出,用于连接多种类型的显示设备。HDVICP和MJCP支持H.264、MPEG4、JPEG和WMV9/VC1等格式编解码,能够以30 f/s的速度对高清(720P)视频进行H.264 编解码。芯片还提供丰富的外设接口,包括USB 2.0、SDIO、SPI、UART、I2C、EMAC和Voice Codec(如G.711/G.723、MP3、WMA)等。图3 中,DM365 的外围电路扩展了程序存储器NAND FLASH、DDR2 数据存储器、USB 和EMAC 接口等。1.2.2 KVM模块键盘、鼠标的USB信号连接到DM365的USB接口,VGA信号由TVP7002接入处理。TVP7002 是TI 的一款高清视频解码芯片,能为RGB/YPbPr的模拟视频和图像输入提供A/D 转换和解码的完整解决方案。芯片内含3路10 b A/D,处理速度高达165 MHz,支持各种分量输入视频标准,如480i/p,576i/p,720p,1 080i/p;支持最高UXGA(1 600×1 200)分辨率的PC 图像信号输入。输出信号支持RGB 或者YCbCr颜色空间,支持RGB/YCbCr 4∶4∶4和YCbCr 4∶2∶2的输出模式。芯片的工作模式由DM365通过I2C总线对其内部寄存器编程实现。VGA 输入经TVP7002 转换为16 b 4∶2∶2 的YCbCr信号后可以直接送给DM365 的视频处理前端,中间无须进行任何数据格式的转换。1.2.3 网络传输模块DM365 在EMAC 接口外接一片10/100M 以太网PHY芯片,经网络变压器进行信号的隔离变换后,通过RJ45连接到网络,实现KVM数据的以太网传输。1.3 系统软件设计TI达芬奇技术的软件框架分为ARM端的应用层、I/O层以及DSP端的信号处理层三个部分,如图4所示。I/O层以嵌入式实时操作系统MontaVista Linux来支持其对外设的驱动,如I2C、USB接口、以太网接口等;信号处理层SPL 包括实时操作系统DSP/BIOS、音视频编解码算法、Codec Engine;应用层APL 主要负责多线程的管理,并通过Codec Engine 的VISA API(Video/Im-age/Speech/Audio)调用DSP 侧的算法,通过EPSI API(Easy Peripheral Software Interface)访问和操作Davinci的外设,用以支持高级应用的开发。基于该系统框架,TI及第三方提供了丰富的系统程序接口SPI、应用程序接口API以及多媒体算法组件,它们与操作系统、中间件一起构成了一个应用系统的大部分内容。在此基础上,开发者只需在系统的用户空间上添加特定的功能和发挥自己的特色,加以封装后即可快速推出代码可移植的高可用性产品。对于采用DM365的KVMoIP控制器来说,内嵌Java处理能力的ARM926用作Web Server,远程客户端通过Web 页面访问控制器的Web 服务端,实现KVMoIP 功能。控制器的用户空间软件系统主要分为系统控制模块、编解码模块和网络传输模块三个部分。1.3.1 系统控制模块系统控制模块主要负责参数设置、系统初始化、协调各模块的运行以及进程管理,并通过消息队列和共享内存实现进程间的通信。1.3.2 编解码压缩模块该模块是整个KVMoIP 系统的关键。该模块的功能是调用TVP7002 驱动获取video 数据,并调用CodecEngine 对video 数据进行相应格式的编码压缩,交给网络传输模块,通过网络送到客户端解码显示。视频数据的带宽高,尤其是1 600×1 200分辨率的UXGA视频数据,在16 bpp@60 Hz下更是高达近2 Gb/s的信号传输带宽。对于这么高带宽的视频数据,只有经过特定的处理后才能在目前的百兆网络上实时传输到客户端并清晰显示图文信息。为了减少网络带宽占用,一方面DSP核要采用适合的压缩算法,并提高实时性;再者,结合KVMoIP 远程控制的特性,编码压缩模块对帧间video数据的差异进行比对,只对变化帧的video数据才调用Codec Engine进行编码压缩,最后交给网络传输模块送到远端。本模块帧间比对及压缩算法的优劣直接决定了客户端视频还原的质量。1.3.3 网络传输模块该模块主要由TCP/IP协议栈构成。在DM365上建立HTTP的Web服务器,为了保证KVM数据在网络上传输的安全性,模块还内置了认证授权机制,以及128位AES加密算法。Web服务器对编码压缩后的视频数据进行AES加密,通过TCP/IP,调用网口驱动程序发给客户端。客户端运行Web 浏览器,经认证后登录KVMoIP控制器即DM365 的Web 服务端,接收发来的加密视频报文,经解密及解码后显示受控服务器的视频图像,管理员输入、点击的键盘鼠标数据形成加密报文,发给服务端。服务端收到客户端的键盘鼠标报文后,经解密还原为键盘鼠标数据,调用USB驱动传给受控服务器,响应客户端的操作。2 结语本文设计的基于TMS320DM365的KVMoIP控制器,支持多种视频格式,包括VGA,SVGA,XGA,SXGA等,最高分辨率可达UXGA(1 600×1 200@16 bpp,60 Hz)。视频处理与压缩算法能够有效利用网络带宽,且实时性好,客户端操作的响应速度快。同时,鉴权机制和数据加密能够保证KVM数据在TCP/IP网络上传输的安全性。本文基于TMS320DM365 的KVMoIP 控制器,其性能参数及基本功能与目前商用KVM over IP Switch 相当,软件功能还可以进一步扩充。相对于商用设备的专用芯片来说,这是一个通用的、低成本的方案。(作者:马千里,张弓)

    时间:2018-08-29 关键词: 控制器 设计方案 ip 低成本 设计教程

  • 阅文超级IP闪耀盛典,《TOP影游改编价值书单》携158部作品来袭

    1月13日,2018阅文超级IP风云盛典于东方卫视黄金时段正式播出。盛典现场星光熠熠,汇集国内顶尖网络原创文学作家、知名演艺明星以及文娱产业各大厂商,共同回顾2018年中国原创文学发展历程和成果。除了重点揭晓超级IP原创风云榜单,盛典公布了超级IP新锐作家、超级IP海外原创作品、超级IP杰出作品、超级IP男女演员在内的数十项荣誉,更着重推出了超级IP影视价值改编系列作品。与此同时,阅文还发布了首份《TOP影游改编价值书单》。 网文IP影游改编价值书单出炉,阅文IP深度连接市场 在本届IP风云盛典上,阅文集团持续关注内容市场的多元变化,让IP成为连接市场的重要标的,与用户的文化生活建立连接和互动。现场发布的2018中国原创文学风云榜,以更广的覆盖范围、更精准的评价体系、更全面的合作矩阵,使此项荣誉更具影响力及权威性,为影视行业市场和更多网文爱好者盘点出2018备受市场关注的IP改编影视作品。 最终,在阅文集团1070万部作品中脱颖而出了20部优秀作品,如阅文高人气IP孵化最新代表,阅文旗下所有连载作品中总粉丝值最高、讨论量最多的,来自会说话的肘子作品《大王饶命》就高居男频榜首,叶非夜新作《时光与你都很美》也强势领跑。此外,还有像宅猪的《牧神记》,囧囧有妖的《恰似寒光遇骄阳》,爱潜水的乌贼的《诡秘之主》等多部风格迥异、类型丰富的作品,这也进一步体现了网络文学IP百花齐放的多元化、个性化等特征。 同时,我会修空调、青青谁笑分别凭借作品《我有一座冒险屋》《暖风不及你情深》将超级IP新锐男女作家名号收入囊中,彰显了阅文集团顶尖创新人才梯队的力量。而超级IP海外原创作品、超级IP杰出作品、超级IP突破演员、超级IP人气之星、超级IP男女演员、超级IP成就作家等多个荣誉的发布,也让现实与网文IP世界产生深度关联。 潜力书单一网打尽,158部作品成影视市场风向标 本次盛典阅文集团还创新公布了超级IP影视改编价值系列作品,该举措突出了网文IP与市场的关联性,体现出阅文IP对市场需求的敏锐性和前瞻性。同时,阅文发布的首份《TOP影游改编价值书单》,将网文IP的产业价值落实至影游市场,为其开发打造全新的标准。 书单依托于阅文集团IP改编潜力的五维甄选标准,包括IP数据排行,主编审读力荐,TOP编剧评估,平台采购需求,专家政策把关在内的五大重要维度,涵盖IP商业价值、影视化改编潜力、渠道需求、产出与终端互动和文化导向风险防范等重要层面,严格甄选出158部作品,分别来自新男频、女频、现实主义、创新题材和游戏5大类别,共计24个板块。 其中,超级IP影视改编创新题材发挥阅文IP优势,进行品类的创新融合和题材突破,并根据当下垂直细分市场和用户圈层,独创文化国粹、未来科幻、体育竞技、美食旅行、可爱萌宠、二次元等6大品类,共计18部作品。《国色芳华》《我要当学霸》《好想喜欢你》《师父又掉线了》等创新作品不仅收获大量粉丝,其类型特色也将成为细分市场出圈利器。 超级IP影视改编价值新男频作品细分为职场商战、悬疑探案、仙侠幻想、历史题材、谍战军旅等5个品类,共计35本作品。书单既有深沉厚重历史优秀作品《明颂》,也有今年脱颖而出的职业大作《大医凌然》《神起地球》,热血军旅作品《特种兵之利刃》,多元开辟全新男性题材类型。  超级IP影视改编价值女频作品则洞察女性用户消费需求与市场热门类型,细分校园爱情、仙侠奇缘、青春偶像、经商种田、古代言情、都市情感等6大品类,共计42部作品。《小时光,微微甜》《我会一直喜欢你》《青春制暖》《凤回巢》《锦桐》除了针对传统女性市场的爆款类型外,还有创新校园、青春、职业等不同垂直领域作品。 超级IP影视改编价值现实主义作品则紧跟影视市场热点,并融合当下年轻人对社会的理解,细分职业精英、现实百态、时代传奇、社会乡土、人文时尚、家庭伦理等6大品类,共计42部作品。书单深植年轻人生活,锁定时代变迁与当今社会现象,推出《你和我的八十年代》《律政年华》《宝妈万岁》等符合年轻用户需求的优质作品。 超级IP游戏改编价值作品则根据游戏市场内容现状,筛选出多部优质作品,其中《深夜书屋》《超神机械师》《诡秘之主》类型特色,内容风格均能为游戏市场带来内容、玩法创新的想象空间。 作为引领行业的正版数字阅读平台和文学IP培育平台,阅文集团秉承开放、共赢精神,将阅文IP的产业价值和文化价值借助“风云盛典”的权威平台进一步传递给社会各界。通过展示IP开发的成果和批量优质作品,阅文IP将连接市场与用户,共同探索内容的更多可能。

    时间:2019-01-15 关键词: ip 阅文

  • Imagination推出全新iEB110低功耗蓝牙(BLE)v5.2知识产权(IP)

    英国伦敦 ─ 2020年2月19日 ─ Imagination Technologies宣布推出其最新的低功耗蓝牙(BLE)半导体知识产权(IP)产品,它可支持蓝牙技术联盟(Bluetooth SIG)最新的v5.2版规范。新推出的iEB110 IP产品是一个完整的BLE解决方案,其中包括射频(RF)电路、控制器软件和低功耗蓝牙主协议栈。该款完整的解决方案采用了广受欢迎的开源Zephyr和Cordio主协议栈以及丰富的配置文件,从而使希望在其芯片方案中集成BLE IP的开发商能够从更便捷的集成和更低的开发成本中获益,并加速产品上市。 作为一款可集成到复杂通信系统级芯片(SoC)而设计的IP,iEB110提供了一套功能完备的、超低功耗的BLE v5.2解决方案。它具备高性能、高效率的射频电路,同时实现了芯片面积和外部元器件(BOM)的最优化。iEB110的架构能与Imagination的Wi-Fi IP产品无缝整合,以打造高性价比、可支持多种标准的无线通信SoC。 iEB110利用了新的低复杂性通信编解码器(LC3)和高效的软件算法,从而以最低功耗来提供超清晰、高品质的音频,使制造商能够开发出诸如耳塞式耳机和助听器等外形精巧且具备低功耗的音频设备。 BLE v5.2协议增加的低功耗音频功能,不仅仅是Bluetooth SIG演进而添加的另一项功能,更是其迈出的极具革命性的一步,它将在未来数年转变我们使用和共享音频的方式。 iEB110支持蓝牙5.2规范的各种先进特性,例如支持到达角/出发角(AoA/AoD)以实现亚米级的定位和追踪精度,LE长距离可扩展室内和室外的覆盖范围,LE-2M带宽可实现更高的吞吐量。 Bluetooth SIG无线专家、助听器工作组主席Nick Hunn说到:“由助听器厂商最早规划构思的低功耗音频,现已成为Bluetooth SIG有史以来规模最大的开发工作之一,它为未来20年的无线音频创新确立了规范。” ABI Research首席分析师Andrew Zignani表示:“通过在BLE中增加对音频的支持,低功耗蓝牙市场将迎来诸多全新的机会,该市场一直采用传统蓝牙(Bluetooth Classic)或专有的无线技术。未来三年内,蓝牙音频的出货量将有望超过12亿台,这意味着低功耗蓝牙音频潜藏着巨大的商机。Zignani强调,诸如iEB110这类完整的低功耗蓝牙IP方案,将加速实现下一代广播音频、高质量多重流音频以及共享音频应用的产品实现。” Imagination Technologies产品管理资深总监Richard Edgar表示:“基于最新BLE规范提供的全新的、丰富的功能组合,我们相信BLE的低功耗音频和准确的室内定位能够激发出一系列全新的、令人兴奋的应用。我们已将iEB110 IP打造为一种便捷且高性价比的解决方案,以支持芯片供应商把最新的BLE特性集成到其产品之中。” iEB110将以一整套完整IP解决方案来交付,其中包括射频电路、控制器和支持Zephyr和Cordio的主协议栈,主协议栈已经完成了Bluetooth SIG的认证以及美国联邦通讯委员会(FCC)和欧盟CE RF合规性。 Imagination将于2020年2月25日至27日参加在德国纽伦堡举行的Embedded World展会,并在该活动上展示iEB110,展位号为第三展厅3-211。

    时间:2020-02-24 关键词: ip 低功耗蓝牙 ieb110

  • 上海普然通讯获得 MIPS 处理器 IP 授权

    MIPS 科技公司宣布,为宽带接入市场提供固网解决方案的供应商普然通讯技术(上海)有限公司(Opulan Technologies)已获得 MIPS32TM24KEc Pro SeriesTM 处理器内核授权。普然将利用这一灵活和高性能的 24KEc 内核,为亚太地区 xDSL 和 EPON 局端及客户端设备开发宽带接入系统级芯片(SoC)。 根据研究机构 Strategy Analytics 最近发布的报告,2008 年底亚太区宽带市场已有 1.58 亿个宽带用户,并将于 2009 年增加 21%。报告预估,到 2013 年该地区将会有超过 3.94 亿个用户,而家庭宽带渗透率预计将达到 39%。普然通讯 VLSI 工程部副总裁 Cong Ye 表示:“我们的客户在开发兼具高性能和低功耗的产品时,面临严苛的时间与成本限制。MIPS 科技的解决方案可在符合成本考虑的前提下,同时满足卓越功能与功耗要求。我们期望能延续一直以来与 MIPS 科技建立的成功的合作伙伴关系,并通过具有高度竞争力的全新MIPS-Based™ 解决方案扩大我们在亚太区的市场地位。”MIPS 科技营销副总裁Art Swift表示:“大中华区一直是 MIPS 科技成长最快的市场,而获得像普然通讯等知名产业领导者的肯定,更是我们成功的重要因素。我们非常高兴普然通讯强化了对 MIPS 科技的承诺,我们的 24KE 内核将会是新一代宽带接入设备的关键元件。”关于 MIPS32 24KEc 内核MIPS32 24KE 内核系列采用高性能 24KTM 微架构,融合 MIPSTM DSP特定应用扩展(Application-Specific Extension, ASE),可改善信号处理性能和高效 DSP 性能,并显著降低整体 SoC 片芯面积、成本与功耗。24KE 内核拥有软件开发工具、MIPS DSP 库,以及第三方 DSP 应用程序网络的广泛支持。 Pro系列内核有利于 SoC 设计人员自行编写指令集扩展,开发高度差异化和竞争力的产品。通过采用标准工具和软件,设计人员能够建立指令扩展,显著提高性能,降低功耗,并执行关键操作等。

    时间:2009-09-23 关键词: MIPS 处理器 ip

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站

更多

项目外包

更多

推荐博客