基于DSP的上网方案的软硬件设计与实现
程分成两卡;
①第一步由NIC通过本地DMA将帧存入接收缓冲环;
②第二卡是通过远程DMA并在主机的配合下将接收缓冲环中的帧读入内存。
2.2TCP/IP协议的实现
2.2.1DSP中与PC机中实现TCP/IP协议不同
TCP/IP协议最先是在UNIX系统中实现的,后来在LINUX、DOS和WINDOWS系统中也实现了TCP/IP。但是,在UNIX上实现的TCP/IP协议的源代码并不能直接移植到DSP上来,这是因为PC机和DSP存在着巨大的差异。
PC机的运算速度非常快,一般都有一个多任务的操作系统,可以多任务并行执行,通过硬中断与中断、消息队列和各种插口实现ATCP/IP各协议层之间的通信和整个网络的通信。而DSP运行速度相对较慢,缺乏多任务操作系统的平台,只能通过顺序执行加硬件中断的方式来实现,并且因其还要同时执行数据采集、串口中断等任务,所以中断程序应尽量短,只完成设置各种状态的标志位,而将相对较慢的网络数据包的处理放在主程序中执行,以减少各种任务之间的冲突。
PC机的内存非常大,现在一般都可达到32~128M的存储容量,可以动态地分配和释放内存,很容易实现存储器缓存mbuf、网络控制块ncb等链状结构,且可随意增删;同时能维护多条网络连接,由于计算机处理速度快,几乎不用考虑缓冲区溢出的问题。而DSP内部RAM一般只有十几K,加上外部扩展的RAM也只能达到几十K的容量,一个最大的以太网数据包就有1.5K左右,如果也按PC机的内存管理方式和数据结构,使用mbuf链,RAM肯定不够用,因此只能在RAM中分配一个固定的1514字节的区段来存放接收到的以太网数据包,接收一包处理一包。
PC机中TCP/IP协议都是分层次实现的,相互之间都是通过参数传递进行联系,这样有利于提高程序的模块化和独立性。而在DSP中,由于参数传递会占用过多的程序空间,且降低DSP的执行速度,所以应尽量减少参数传递,转而使用全局变量和外部变量等来达到值的传递,因此各程序间的依赖程度大,往往会共享某一些变量和数据。
PC机上实现了比较完整的TCP/IP协议。而在DSP中,由于运算速度和内存的限制,不可能支持所有的协议,一般只实现需要的部分,不需要的协议一概都不支持;而且即使需要的协议也不用像在PC机上实现那么复杂,可以根据硬件的具体情况和实现的需求进行必要的简化。
2.2.2TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层)。
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网际协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化。
2.2.2TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层)。
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网络协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化。
在链路层中实现了ARP。每种网络都有自己的寻址机制,以太网通过以太网地址即通常所说的网卡硬件地址MAX进行寻址的,每个网卡出厂时都有一个唯一的MAC地址。IP地址则仅仅是对于TCP/IP簇有意义的地址,是一种虚拟地址。当赋予IP地址的IP包要在以太网中传播时,必须将IP地址转化为以太网地址才能进行正确的传输。ARP协议就是将32位的IP地址动态地映射为48位的以太网地址,从而保证网络的正确传输。ARP协议由两个文件arpin.c和arpout.c实现。arpin.c负责接收网络上广播的arp包,判断arp包的类型是网络上其它机子的请求包还是返回本机的响应包,判断其合法性并进行相应的处理;arpout.c负责主机向网络发送数据报时发送arp请求包以及被arpin.c调用响应收到的arp请求包。
在网络层中实现了IP和ICMP。IP协议是TCP/IP协议簇中最核心的协议,它提供无连接的数据报传送服务,所有上层协议都要以IP数据包格式传输。IP协议由两个文件ipin.c和ipout.c实现。Ipin.c负责接收IP数据 《基于DSP的上网方案的软硬件设计与实现(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/172224.html
①第一步由NIC通过本地DMA将帧存入接收缓冲环;
②第二卡是通过远程DMA并在主机的配合下将接收缓冲环中的帧读入内存。
2.2TCP/IP协议的实现
2.2.1DSP中与PC机中实现TCP/IP协议不同
TCP/IP协议最先是在UNIX系统中实现的,后来在LINUX、DOS和WINDOWS系统中也实现了TCP/IP。但是,在UNIX上实现的TCP/IP协议的源代码并不能直接移植到DSP上来,这是因为PC机和DSP存在着巨大的差异。
PC机的运算速度非常快,一般都有一个多任务的操作系统,可以多任务并行执行,通过硬中断与中断、消息队列和各种插口实现ATCP/IP各协议层之间的通信和整个网络的通信。而DSP运行速度相对较慢,缺乏多任务操作系统的平台,只能通过顺序执行加硬件中断的方式来实现,并且因其还要同时执行数据采集、串口中断等任务,所以中断程序应尽量短,只完成设置各种状态的标志位,而将相对较慢的网络数据包的处理放在主程序中执行,以减少各种任务之间的冲突。
PC机的内存非常大,现在一般都可达到32~128M的存储容量,可以动态地分配和释放内存,很容易实现存储器缓存mbuf、网络控制块ncb等链状结构,且可随意增删;同时能维护多条网络连接,由于计算机处理速度快,几乎不用考虑缓冲区溢出的问题。而DSP内部RAM一般只有十几K,加上外部扩展的RAM也只能达到几十K的容量,一个最大的以太网数据包就有1.5K左右,如果也按PC机的内存管理方式和数据结构,使用mbuf链,RAM肯定不够用,因此只能在RAM中分配一个固定的1514字节的区段来存放接收到的以太网数据包,接收一包处理一包。
PC机中TCP/IP协议都是分层次实现的,相互之间都是通过参数传递进行联系,这样有利于提高程序的模块化和独立性。而在DSP中,由于参数传递会占用过多的程序空间,且降低DSP的执行速度,所以应尽量减少参数传递,转而使用全局变量和外部变量等来达到值的传递,因此各程序间的依赖程度大,往往会共享某一些变量和数据。
PC机上实现了比较完整的TCP/IP协议。而在DSP中,由于运算速度和内存的限制,不可能支持所有的协议,一般只实现需要的部分,不需要的协议一概都不支持;而且即使需要的协议也不用像在PC机上实现那么复杂,可以根据硬件的具体情况和实现的需求进行必要的简化。
2.2.2TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层)。
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网际协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化。
2.2.2TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层)。
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网络协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化。
在链路层中实现了ARP。每种网络都有自己的寻址机制,以太网通过以太网地址即通常所说的网卡硬件地址MAX进行寻址的,每个网卡出厂时都有一个唯一的MAC地址。IP地址则仅仅是对于TCP/IP簇有意义的地址,是一种虚拟地址。当赋予IP地址的IP包要在以太网中传播时,必须将IP地址转化为以太网地址才能进行正确的传输。ARP协议就是将32位的IP地址动态地映射为48位的以太网地址,从而保证网络的正确传输。ARP协议由两个文件arpin.c和arpout.c实现。arpin.c负责接收网络上广播的arp包,判断arp包的类型是网络上其它机子的请求包还是返回本机的响应包,判断其合法性并进行相应的处理;arpout.c负责主机向网络发送数据报时发送arp请求包以及被arpin.c调用响应收到的arp请求包。
在网络层中实现了IP和ICMP。IP协议是TCP/IP协议簇中最核心的协议,它提供无连接的数据报传送服务,所有上层协议都要以IP数据包格式传输。IP协议由两个文件ipin.c和ipout.c实现。Ipin.c负责接收IP数据 《基于DSP的上网方案的软硬件设计与实现(第2页)》