微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 第一讲:UIP基本移植

第一讲:UIP基本移植

时间:10-02 整理:3721RD 点击:

下载的协议包,文件目录如下:



移植过程:

1、 将uip文件里的所有文件添加到工程内;


2、 将Unix文件内的文件拷贝出来并且进行修改



tapdev.c文件有添加或者修改的函数:

void tapdev_init(void) 网络模块的初始化函数

unsigned int tapdev_read(void) 读数据函数,添加网络模块的读缓存数据的函数

void tapdev_send(void) 网络模块发送数据

发送数据和接收数据都通过全局变量:

uip_buf :数据缓存

uip_len :数据长度

clock-arch.c 文件修改

clock_time_t clock_time(void) 返回没10ms加1的数据。这我用的是定时中断10ms全局变量加1,然后函数返回全局变量。

修改和配置文件uip-conf.h

//最大TCP连接数

#define UIP_CONF_MAX_CONNECTIONS 40

//最大TCP端口监听数

#define UIP_CONF_MAX_LISTENPORTS 40

//uIP缓存大小

#define UIP_CONF_BUFFER_SIZE    4096  //注:这里应该设置的数值不能大于驱动最大发送字节的数值(如果用ENC28J60的话,应该不能大于1518)

//CPU大小端模式

//小端模式的

#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN

//日志开关

#define UIP_CONF_LOGGING        0

//UDP支持开关

#define UIP_CONF_UDP             0

//UDP校验和开关

#define UIP_CONF_UDP_CHECKSUMS  1      

//uIP统计开关  

#define UIP_CONF_STATISTICS     1                                                  

#include "MY_APPCall.h"//这个是用的回调函数的文件的头文件,跟据用的实际情况而修改。但这个一定不能漏。因为这问还要定义两个比较中要的变量。

在用户回调函数文件的头件定义两个变量:

//定义uip_tcp_appstate_t 数据类型,用户可以添加应用程序需要用到

//成员变量。不要更改结构体类型的名字,因为这个类型名会被uip引用。

//uip.h 中定义的   structuip_conn  结构体中引用了uip_tcp_appstate_t         

struct tcp_demo_appstate

{

     uint8 state;

     uint8 *textptr;

     inttextlen;

};

typedef struct tcp_demo_appstateuip_tcp_appstate_t;

void MY_APPCall(void);

//定义应用程序回调函数

#ifndef UIP_APPCALL

#define UIP_APPCALL MY_APPCall //定义回调函数为tcp_demo_appcall

注意:MY_APPCall 为回调函数。所有的数据处理都在这个函数中完成。而不是在main函数中完成的。

3、最后修改工程配置,将uip-conf.h所在文件路径和uip路径加到工程的编译头文件路径中。


谢谢小编的分享哦, 期待下一节的精彩;

LZ用的什么开发板啊

主控是这个:LPC1114

开发板是我自己做的。没得买哦~ 主控芯片是LPC1114, NXP公司的ARM m0 芯片。我到时候会上传的部分代码的~

学习学习,谢谢分享!

期待小编的漏洞视频哦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top