编译配置相关重点讲义资料
- 格式:docx
- 大小:19.25 KB
- 文档页数:8
相关文件:uip-conf.h uip 酉己置文件.uipopt.h uip配置选项针对于工程的配置选项:uip有大量的配置选项,它们都可以根据工程需要重载.它们被保存在一个工程相关的uip-conf.h 文件中,所有配置的名称都有UIP_CONF前辍.1.#define UIP_CONF_MAX_CONNECTION最大的TCP连接数.2.#define UIP_CONF_MAX_LISTENPORTS 最大监听的TCP端口数.3.#defi ne UIP_CONF_BUFFER_SIZE uip 缓冲区大小.4.#define UIP_CONF_BYTE_ORDER CP字节顺序.5.#defi ne UIP_CONF_LOGGING 是否开启日志6.#define UIP_CONF_UDP 是否启用UDP功能7.#define UIP_CONF_UDP_CHECKSUM是否启用UDC校验和.8.#define UIP_CONF_STATISTICS UIP 配置统计是否开启.9.typedef uint8_t u8_t 8 位的数据类型.10.typedef uint16_t u16_t 16 位的数据类型.11.typedef unsigned short uip_stats_t 统计数据类型.复制代码静态配置选项:这些选项可以用来静态配置IP地址,条件是UIP_FIXEDADDR 必须设为1.指定节点的配置选项包括IP地址,子网掩码,默认路由及以太网址.而后三项只有在以太网中时才可用.1.#define UIP_FIXEDADDR 决定uIP 使用固定IP 与否.2.#define UIP_PINGADDRCONF 设置pi ng 地址.3.#define UIP_FIXEDETHADDR ARP模块的编译是否用固定的MAC地址.复制代码IP配置选项:1.#define UIP_TTL 64 定义UIP 包的生存时间.TTL.2.#define UIP_REASSEMBLY打开IP包重新组装功能.3.#define UIP_REASS_MAXAGE 40 IP片断扔掉之前在重组装缓冲区等待的时间复制代码UDF配置选项1.#define UIP_UDP UDP 支持是否编译2.#define UIP_UDP_CHECKSUMS.是否使用UDP校验和.3.#define UIP_UDP_CONNS 最大并发UDP连接数.复制代码TCP配置选项1.#define UIP_ACTIVE_OPEN决定UIP的打开连接支持是否编译•2.#define UIP_CONNS最大同时打开的TCP连接数•3.#define UIP_LISTENPORTS 最大TCP监听端口数.4.#define UIP_URGDATA 是否编译TCP紧迫数据提醒.5.#define UIP_RTO 3 初始重传超时计数,以定时器脉冲个数计.6.#defi ne UIP_MAXRTX 8 一段数据最大重传多少次才取消连接.7.#define UIP_MAXSYNRTX 5 一段SYN数据要最大得传多少次,才认定连接请求失败.8.#defi ne UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) TCP 最大段大小9.#defi ne UIP_RECEIVE_WINDOW广播接收器的最大窗口大小.10.#define UIP_TIME_WAIT_TIMEOUT 120 一个连接处于TIME_WAIT状态的最大时间.复制代码ARP配置选项:1.#define UIP_ARPTAB_SIZE ARP 表大小.2.#define UIP_ARP_MAXAGE 120 ARP 表的最大存活年龄,单位为10s.复制代码通用配置选项:1.#define UIP_BUFSIZE UIP 包缓冲区大小.2.#defi ne UIP_STATISTICS 是否编译统计功能.3.#define UIP_LOGGING某些事件的日志功能是否编译.4.#defi ne UIP_BROADCAST广播功能是否支持.5.#define UIP_LLH_LEN 链路层头长度.6.void uip_log (char *msg) 打印UIP 日志信息.复制代码CPU架构配置:这里指定的是CPU的大小端模式.当今的CPU多时小端的,然而最著名的例外就是motorola 的CPU.它是大端的.应根据CPU的大小端模式不同,配置BYTE_ORDER.1.#define UIP_BYTE_ORDER UIP 所运行的CPU大小端模式.复制代码针对应用的配置:UIP应用是使用单个应用函数数实现的.只要TCP/IP事件发生,uIP就会调用这个函数.这个函数的名字必须在编译时使用UIP_APPCALL 注册到uIP.uIP应用可以在uip_conn结构中保存应用状态.这是通过利用typedef uip_tcp_appstate_t和uip_udp_appstate_t 指定应用的类型实现的.包含此定义的文件必须被包含在uipopt.h文件中•下面是一个例子1.void httpd_appcall(void);2.#defi ne UIP_APPCALL httpd_appcall3.3.struct httpd_state {4.u8_t state;5.u16_t cou nt;6.char*dataptr;7.char*script;8.};9.typedef struct httpd_state uip_tcp_appstate_t复制代码1.#define UIP_APPCALL smtp_appcall TCP/IP 事件的应答函数名称.2.typedef smtp_state uip_tcp_appstate_t 存储在uip_conn 中的应用状态类型.3.typedef int uip_udp_appstate_t 存储在uip_conn 中的应用状态类型4.#defi ne UIP_LITTLE_ENDIAN 34125.#defi ne UIP_BIG_ENDIAN 1234复制代码1. #define UIP_ACTIVE_OPEN决定是否支持在uip中打开连接.如果此工程中工作于uip上层的应用不需要打开TCP连接,可以关闭此项以减小编译后的代码大小.定义于uipopt.h中的233行.2.#defi ne UIP_ARP_MAXAGE 120以10s为单位的ARP表项的最大年龄. 120代表的是20分钟(BSD中的默认值).定义于uipopt.h 中的358行.引用于uip_arp_timer() .3.#defi ne UIP_ARPTAB_SIZEARP表的大小.如果uip节点可能在本地网络中有很多连接,则此值应设得大些定义于uipopt.h 中的349行.弓丨用于uip_arp_init() , uip_arp_out() , and uip_arp_timer()4.#defi ne UIP_BROADCAST支持广播•此标志用于配置广播的支持,仅在开启UDP寸才有意义•定义于uipopt.h 中的423行.5.#defi ne UIP_BUFSIZEuip包缓冲区大小.不就小于60字节,不须大于1500字节.这个值越小,TCP的吞吐量就越小,相反越大.定义于uipopt.h 中的379行.引用于uip_split_output() .6.#define UIP_BYTE_ORDER uip运行的CPU构架的字节顺序,可选值仅有两个,分别为BIG_ENDIAN 和LITTLE_ENDIAN.应用全程:example-mainloop-with-arp.c , and example-mainloop-without-arp.c定义于uipopt.h中的475行.7.#defi ne UIP_CONNS可同时打开的最大TCP连接数.由TCP连接是静态开辟的,所以减小此选项的值可以减小RAM占用量,每个TCP连接需要大约30字节的RAM.定义于uipopt.h 中的245行.引用于uip_connect().8.#defi ne UIP_FIXEDADDR决定uIP是否使用固定IP地址.如果使用固定IP地址,则此地址可以在uipopt.h 中指定.否则,如果想用动态的IP地址,则可以使用uip_sethostaddr() uip setdraddrO a nd uip setnetmaskO 三个宏动态指定.定义于uipopt.h 中的97行.9.#defi ne UIP_FIXEDETHADDR决定uIP是否使用固定的MAC地址.若不使用固定的MAC地址,则可用uip_setethaddr() 在运行时动态指定定义于uipopt.h中的127行.10.#defi ne UIP_LISTENPORTS可以同时监听的最大端口数.每监听一个TCP端口需要两字节内存定义于uipopt.h 中的259行.引用于uip_init() , uip_listen() , and uip_unlisten() .11.#defi ne UIP_LLH_LEN链路层头的长度.这个IP头在uip_buf中的编移量.对于以太网来说,此值为14.对于SLIP来说,其值0 . 定义于uipopt.h中的448行.弓I用于uip_ipchksum() , uip_process() , and uip_split_output() .12.#defi ne UIP_LOGGING定义是否编译事件日志这对于调试是非常有帮助的.如果打开此项,或必须在工程的构架上实现uip log() 定义于uipopt.h中的408行.13.#defi ne UIP_MAXRTX 8在最多多少次重新发送同一段数据之后,就得取消连接此项不应改变.定义于uipopt.h 中的288行.引用于uip process。
.14.#defi ne UIP_MAXSYNRTX 5一个SYN数据最多可以重传多少次,之后就得认为连接请求失败此项亦不应改变.定义于uipopt.h中的297行.引用于uip processO .15.#defi ne UIP_PINGADDRCONF 设定ping IP地址.如果设定此项,则uip使用ping包来设定其IP地址•此时uip启用时会只有一个空的Ip 地址,而把收到的第一个ping包设为自己的地址.注意:此项只有在UIP_FIXEDADDR 设为0时才可用.定义于uipopt.h中的114行.有点长,楼下继续~本帖最后由逐月于2010-11-17 21:44编辑16.#define UIP_REASSEMBLY 打开IP 包重组.uip支持碎片IP包的重组•此项特性需要多余的RAM来盛放重组缓冲区.重组代码大小约为700字节•重组缓冲区的大小与uip_buf的大小(由UIP_BUFSIZE 配置)相同•IP包重组并未经过严格测试•定义于uipopt.h的156行.17.#define UIP_RECEIVE_WINDOW通告的接收器窗口•如果处理器对输入数据处理能力较慢,则应设得低些(uip_buf的大小),否则应设得高些(32768 字节)•定义于uipopt.h的317行•18.#defi ne UIP_RTO 3以时钟脉冲计算的重传超时计数•此项不应改变•定义于uipopt.h的280行•引用于uip_process().19.#define UIP_STATISTICS决定是否将统计功能加入编译•统计功能对于调试和显示用户是非常有帮助的定义于uipopt.h的393行.20.#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)TCP最大数据段大小.此值不应大于UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.定义于uipopt.h的305行.21.#define UIP_TIME_WAIT_TIMEOUT 120 一个连接应该停留在TIME_WAIT 状态的最长时间.此配置选项没有真正的实现,所以不应理会.定义于uipopt.h的328行.引用于uip_process().22.#define UIP_TTL 64uip发送的IP包的生存时间(TTL)通常此项不应更改.定义于uipopt.h的141行.23.#define UIP_UDP_CHECKSUMS是否使用UDP校验和.对UDP校验和的支持目前并不包含于ulP,故此项无用定义于uipopt.h的195行.25.typedef uint16_t u16_t16位数据类型•这个类型定义定义了通贯uip所使用的16位数据类型•应用例程:dhcpc.c, dhcpc.h, resolv.c, resolv.h, smtp.c, smtp.h, telnetd.c, and uip-conf.h . 定义于uip-conf.h的76行.26.typedef uint8_t u8_t 8 位数据类型.此类型定义定义了通贯ulP中使用的8位数据类型.应用例程:dhcpc.c, dhcpc.h, resolv.c,smtp.h, telnetd.c, telnetd.h, and uip-conf.h . 定义于uip-conf.h的67行.27.typedef unsigned short uip_stats_t统计数据类型.此类型定义定义了通贯ulP使用的统计数据类型.定义于uip-conf.h的86行.28.typedef uip_tcp_appstate_t此种类型的应用状态将会被存储于uip_conn结构中.它通常被typedef为一种保存应用状态信息的结构应用例程:smtp.h, telnetd.h, and webclient.h .定义于smtp.h的98行.29.typedef uip_udp_appstate_t此种类型的应用状态将会被存储于uip conn结构中.它通常被typedef为一种保存应用状态信息的结构应用例程:dhcpc.h.定义于resolv.h的47行.30.void uip_log ( char * msg ) 打印uip 日志信息. 此函数必须为使用uIP 的模块实现,uIP 每产生一条日志信息就会调用一次这个函数。