现在采样的uip协议栈,感觉写的不是很好,里面好多goto语句,但代码比较少,适合少RAM,最近想采用LWIP协议栈,因为有许多应用层协议移植包括SNMP,telnet等,感觉这方面lWIP做的不错。移植遇到ARM字对齐的问题,也挺有趣的,有空再讲讲。言归正传,谈谈移植时遇到的数组,呵呵
static u8_t memp_memory[MEM_ALIGNMENT - 1 #define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) ) #include "lwip/memp_std.h" ];
memp_std.h文件中部分代码
#if LWIP_RAW LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB") #endif /* LWIP_RAW */
#if LWIP_UDP LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB") #endif /* LWIP_UDP */
#if LWIP_TCP LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB") LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN") LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") #endif /* LWIP_TCP */
#undef LWIP_MEMPOOL
怪把,在数组里面有宏定义,有文件包含,这些都是预处理的的东东。呵呵。代码是了解了,感觉这样数组变成动态数组了。不过希望大侠问讲解一下,感觉自己也不是非常清晰,深入讲一下预处理,谢谢大家了
|