您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于 LWIP 的嵌入式网络系统设计和实现 正文
基于 LWIP 的嵌入式网络系统设计和实现

基于 LWIP 的嵌入式网络系统设计和实现

点击数:7231 次   录入时间:03-04 11:58:30   整理:http://www.55dianzi.com   嵌入式系统-技术

  typedef OS_EVENT* sys_sem_t;

  其中数据结构 OS_EVENT 同样为 C/OS-II 操作系统所有,其它函数的实现与此类似,不再重复。

  此外,为支持操作系统模拟层,还需要建立 CC.h  、perf.h 文件,完成与 CPU 或编译器 相关的定义,如数据长度、字的高低位顺序等,这些应该与实现 C/OS-II 时相一致。

  2.4  CS8900A  芯片驱动程序对 LWIP 的支持对于 LWIP 来说,它同样为网络驱动提供了一个移植接口,它使用 netif 数据结构代表 网络驱动层,此数据结构部分如下:

  struct netif {

  struct netif *next;

  err_t (* input)(struct pbuf *p, struct netif *inp);

  err_t (* output)(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr);

  err_t (* linkoutput)(struct netif *netif, struct pbuf *p);

  ……

  };

  LWIP  和网络驱动程序会共用一个这样的数据结构,从而实现了两者的联系。其中

  output( )函数提供给 LWIP 的 IP 模块,linkoutput( )函数提供给 LWIP 的 ARP 模块。LWIP 的

  驱动编写 示例 [3] 指出, output(  ) 函封装 了  LWIP  中  ARP  模块的数据 发送函 数 etharp_output(  ),此函数最终会调用到 linkoutput(  )函数,即 linkoutput(  )函数是实际的数 据发送函数(这个函数由网络驱动程序实现)。另一方面,当网络驱动的中断处理函数接收到一个数据包后,也会调用此结构中的 input( )函数(这个函数由 LWIP 实现),将数据转交给 LWIP。接口结构[4]如图 2 所示:

  具体在为 LWIP 编写网络驱动程序时我们要实现以下函数:

  初始化函数:init( )

  在这个函数里,主要的任务就是初始化数据结构  netif,包扩硬件地址、最大传输 单元 mtu 和 state(指向设备驱动中网络接口的特定状态)以及 output( )函数、linkoutput( )函数和 input( )函数等。

  数据发送函数:output( )

  此函数只是简单的封装了 LWIP 中 ARP 模块的数据发送函数 etharp_output( )。

  数据发送函数:linkoutput( )

  这是真正的网卡数据发送函数,output( )函数最终会调用到此函数。它将上层传递 来的数据转移到 CS8900A 网卡芯片上,使网卡将数据发送到网络上。

  中断函数:net_isr( )

  CS8900A 芯片将其要求的所有中断事件放在中断状态队列寄存器 ISQ 中,所以当 其产生中断要求 CPU 处理时,中断处理函数要循环处理 CS8900A 芯片的 ISQ,判断 中断事件类型,然后做相应处理。例如,如果是数据接收事件,则将数据从网卡中转移到内存,在必要处理后,调用 netif 中的 input( )函数将数据递交给 LWIP 层。 整体驱动程序由 CS8900A.c 实现,简要流程图[5]如图 3 所示:

     3  应用

     在完成上述工作后,一个嵌入式网络系统的软件平台基本完成。在这样的一个软件平台 上,通过调用 LWIP 提供的函数,即可以开发网络应用程序。本文编写了一个 web 服务器应 用程序,将主机与 SMDK 开发板连入局域网环境下,从主机 IE 浏览器敲入 SMDK2410 开发板 IP 地址后,可浏览 SMDK2410 开发板提供的 http 网页,如图 4 所示。

  4  结束语

  目前,基于 S3C2410 芯片的 SMDK2410 开发板在国内嵌入式教育领域正得到越来越 广泛的使用,本文给出了基于此硬件平台的 ?C/OS-II&LWIP 完整移植方案,构建了一个嵌 入式网络实验系统,并强调了硬件平台初始化和网卡芯片驱动程序的移植和实现,使得最终的软件系统可实际工作。同时,由于移植的相似性,可以较容易的修改代码将其移植到其它 不同类型的开发板中运行,为基于 ?C/OS-II 和 LWIP 的网络研究和应用提供了基础。



上一页  [1] [2] 


本文关键字:嵌入式  网络  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术