UIP webservise

来源:互联网 发布:海口Java招聘 编辑:程序博客网 时间:2024/06/05 23:54

 在玩树莓派的过程中搭建了一个web服务器并在此基础上安装了一个开源论坛discuz,算是认识了网络吧。正好手头上有个任务也需要用到简单的网络通信,通过网页在配置一些参数。就把STM32做成一个简单的web服务端。树莓派的进程终止了一段时间就去完成小任务了。现在做的差不多了,来此分享一下最近的一点点收获。也希望大神们指点指点!!!

     原本是打算用LwIP的,因为LwIP相比uIP来说功能较为齐全,无奈时间太紧,就先用比较有把握的uIP来整了,之后有时间了再去琢磨琢磨LwIP,有啥心得体会再继续和网友分享。

     此贴内容是从uIP的移植--->简易web服务器  (抛砖引玉)


     顶楼就贴出之后需要的一些基本材料:

     USR-TCP232.rar  (网络调试助手工具)

     uIP-1.0源码.rar

     amo的编程小工具集合V1.2.6.rar

     uIP_Go.rar    (STM32工程模块,带有ENC28J60程序)

     STM32库函数代码自动生成器正式版.rar

     硬件方面:

     STM32F103VET6 (一位小学弟画的开发板,俺就在这里用用)

     ENC28J60网络模块 (以前的存货)

     


     一、移植篇    代码:uIP_Go_移植篇代码.rar

     二、webserver体验一   网页文件以及代码: webserver体验一部分的代码.rar 

     三、webserver体验二   网页文件以及代码: webserver体验二部分代码.rar 

  

    如果帖子中有何错误还有代码中有何不足,希望大家指点,支持开源共享




关键词:uIP    移植    web    STM32    

Rigol示波器粉丝节狂欢送京东卡,错过了就没有了
liklon
专家
2014-10-09 21:35:31    评分
2楼
移植

先瞧瞧uIP在系统中的位子:

        

硬件驱动是需要提前完成,然后和uIP挂接。应用层则是咱所要实现的功能。

1、从源码中取出uIP协议栈核心部分以及用于硬件挂接的文件:

     

    将上图中所指文件添加到工程中:

    

修改uip_dev下的文件:

按照上图的顺序来:

第一个文件:clock-arch.h  


第二个文件:(tapdev.c这里完成网卡驱动的3个函数


第一个函数(tapdev_init(void))这个网卡驱动

const u8 _macaddr[6] = {'l','i','k','l','o','n'}; 

//只要与局域网内其他网卡MAC地址不同即可

/*----------网卡驱动根据用户自己的网卡来填写-----------------*/

u8

tapdev_init(void)

{

u8 res,i;

res = ENC28J60_Init((u8 *)_macaddr);  //配置网卡的MAC地址

    for(i = 0;i < 6;i++){

uip_ethaddr.addr[i] = _macaddr[i];

}

ENC28J60_PHY_Write(PHLCON,0x0476); //网卡驱动函数在顶楼的工程模板里有

return res;

}

第二个函数(tapdev_read(void))


/*---------------------------------------------------------------------------*/

unsigned int

tapdev_read(void)

{

return ENC28J60_Packet_Receive(MAX_FRAMELEN,uip_buf);

}

/*---------------------------------------------------------------------------*/

第三个函数(tapdev_send(void))


/*---------------------------------------------------------------------------*/

void

tapdev_send(void)

{

ENC28J60_Packet_Send(uip_len,uip_buf);

}

/*---------------------------------------------------------------------------*/

个文件:(tapdev.h这里直接过

个文件:(uip_conf.h 配置文件,根据需要配置



个文件:(clock-arch.c 时钟部分


#include "clock-arch.h"

#include "timerx.h"

extern u32 uip_timer; //timerx.c

/*---------------------------------------------------------------------------*/

clock_time_t

clock_time(void)

{

  return uip_timer;

}

/*---------------------------------------------------------------------------*/

修改完了之后开始编译,发现有很多错误

1、..\uip\uip.h(1180): error: #20: identifier "uip_tcp_appstate_t" is undefined

2、


3、


4、现在没有写应用程序,下面这些警告不用管


5、


6、


7、


8、


9、


10、


11、



现在编译应该是没有错误和警告了.......................(还没移植完哟,咱继续)


开始搬运代码:(搬过来的代码中设置IP等根据具体情况设置)


然后将while(1)里面的代码全部复制,搞成一个新的函数:


现在我们程序的主函数是:



0 0
原创粉丝点击