新闻中心

EEPW首页>电源与新能源>设计应用> STM32F207和DM9161A的以太网实现方案

STM32F207和DM9161A的以太网实现方案

作者: 时间:2013-01-11 来源:网络 收藏


2 软件的实现
此部分的主要工作是在硬件平台的基础上实现TCP/IP协议栈,由于TCP/IP协议栈较复杂,功能实现比较困难,一般选择成熟的TCP/ IP协议栈进行移植,此次选择开源并且较成熟的LwIP协议栈。
LwIP(Light Weight IP)是瑞士计算机科学院开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈,可移植性强,对资源要求较低,在实现TCP/IP协议主要功能的基础上减少对RAM的占用。一般它只需要几百KB的RAM和40 KB左右的ROM就可以运行,这使得栈适合在低端的嵌入式系统中使用。
移植工作在ST公司提供的STM32F207接口驱动的基础上进行,针对DM9161A芯片更改部分底层驱动代码,包括时钟配置、端口配置及PHY地址配置等,移植工作一般需要几个小时即可完成。
LwIP提供了在TCP/IP协议栈中比较常用的TCP及UDP两种功能。TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(transp ort layer)通信协议;UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。TCP一般用于对数据可靠性要求较高,但是数据传输速度较低的情况。而UDP的传输速度较快,但是可靠性较低,需要应用层保证数据到达的有效性,而在此应用中需要传输的数据量较小,但是对可靠性要求较高,因此选择TCP通信模式。
LwIP提供了两套API:底层的基于回调(callback)的raw API和高层的顺序模型的API(类似BSD Socket)。
顺序模型的API为普通的顺序程序提供使用协议栈的API,和BSD风格的API很相似,也是基于阻塞的open-read-write-close模式。鉴于TCP/IP协议栈本身就基于时间,所以TCP/IP代码和应用程序的代码必须在不同的线程中,因此此种模式需要提供操作系统的支持。
而raw API可以让应用程序和TCP/IP协议栈代码结合得更紧密。程序的执行也是基于事件的,使用回调函数的机制。这种方式TCP/IP代码和应用代码运行在同一个线程中,因此这种模式可以在没有操作系统支持的情况下使用。
实际上,顺序模型的API也是基于raw API实现的。此次实现使用的是raw API,降低对硬件及软件资源的需求,而raw API是基于事件驱动的,在数据的响应速度上也存在一定的优势。
raw API的操作方法与顺序模型基本类似,只是程序的运行模式不一样,需要采用回调式的编程思想。基本动作包括建立连接、发送数据、接收数据、关闭连接4类,每一类根据不同的需求提供了不同的接口函数。

结语
经过测试,在STM32F207处理器及DM9161A硬件平台上移植栈可以实现TCP、UDP等功能并稳定地运行,为后续基于此平台开发的通信网络提供良好的基础。

本文引用地址://m.amcfsurvey.com/article/175924.htm
晶振相关文章:晶振原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭