最近移植了Mocrochip的TCP/IP协议到ARM,共享之

来源:互联网 发布:证大财富淘宝贷通过率 编辑:程序博客网 时间:2024/06/11 05:58

步骤,步骤即方法:

  1. 首先是编写以太网驱动,我目前写过三个:RT8019AS、LPC23XX、AT91SAM9260。
  2. 其次就是以太网驱动的移植,主要实现了ARP、ICMP(PING)、TCP、UDP、HTTP。
  3. 最后要知道自己的东西能不能用,得有个测试工具,我用的是sniffer。

下面对程序设计思想做个简单的解释:

  1. RT8019AS是个比较老的以太网控制器,10M,8K内置缓冲区。因为比较老,所以网上有很多例程,几年前的嵌入式以太网设备大部分是通过它实现的,致敬,哈哈。推荐老古论坛关于RT8019AS的文章,牛人用单片机实现了以太网,8位机都能跑以太网(以太网在嵌入式领域必有大的发展,以后网口会像串口一样在嵌入式设备上普及)。RT8019AS的驱动主要是得弄明白缓冲区的起始和结束地址,以及缓冲区的结构(前四个字节是包含数据包长度)。
  2. LPC23XX是一款带以太网控制器的ARM,其缓冲区配置需小心谨慎(实测发现发送和接收数据包个数分别为3和4(例程设置)才能正常工作,目前还没有搞清楚原因),此外其片内控制器不带PHY,需外接PHY(如DP83848,比较贵,可用其它PHY代替)才能组成完整的网络。
  3. AT91SAM9260也是一款带以太网控制器的ARM,ARM9系列,但又与AT91SAM9200所用的以太网控制器逻辑不一样,其以太网控制器是和高阶AVR所用的以太网控制器逻辑是一样的。它的接收缓冲区大小为128,发送缓冲区可设置为1536以上(这样设置有个好处,因为网络上大部分的数据包都是小包,将缓冲区设小可以非常有效的节约内存空间,相同内存可容纳更多的数据包)。它也需要外接PHY(一般为DM9161A,很便宜)。
  4. ARP协议主要是让网络上的计算机知道你的MAC地址。
  5. ICMP有很多功能,我只实现了它的PING功能,测试网络连通性,简单易用。
  6. TCP/UDP、HTTP不再班门弄斧了。
  7. 测试软件有很多,每个人使用习惯不一样,自己网上google吧。

传点代码大家做个参考,希望对大家有所帮助:

http://download.csdn.net/source/373034