TCPIP协议栈lwip的移植.docx
《TCPIP协议栈lwip的移植.docx》由会员分享,可在线阅读,更多相关《TCPIP协议栈lwip的移植.docx(31页珍藏版)》请在第一文库网上搜索。
1、TCP/IP合同栈IWiPB移植新建几种头文献1c1ude/1wiPopts.hInc1uderchcc.h1nc1udearchperf.h1cIude/arch/sys_arch.h除头文献外还需要添加一种C文献:sVs_arch.Co阐明在CIOC/sys_arch,txt中。修改netifEtheretif.co构造对齐的几种宏对于一种构造下载下来的1WIP的通用定义如下:PACK.STRUCT_BEGINstructicmp_echo_hdraPACK_STRUCT_FIE1D(u8_ttype);PACK_STRUCT_FIE1D(u8_tcode);PACK_STRUCT_FIE
2、1D(u16_tchksum);PACK.STRUCT_FIE1D(u16_tid);PACK_STRUCT_FIE1D(u16_tseqno);a)PACK_STRUCT.STRUCT;PACK_STRUCT_EN#definePACK_STRUCT_FIE1D(x)这个宏是为了字节序的转换,由于是用的小端,就不用转换了直接定义为#CIefinePACK_STRUCT_FIE1D(x)X#definePACK_STRUCT_STRUCTA#definePACK_STRUCT_BEGIN#definePACK_STRUCT_END以上三个宏都是为了做构造体对苏用:对于gcc的编译器在构造体后跟
3、个核心字就OkAStrUCtip_hdr);attribute(_packed)A因此可以定义为a#definePACK_STRUCT_STRUCT_attribUte_(packed)A#definePACK_STRUCT_BEGIN#definePACK_STRUCT_END对于VC的编译器就郁闷了,VC做构造体对齐是这样做0#pragmapack(1)构造体按照1字节对齐Astructip_hdr;#pragmapack()构造体按照编译器默认值对齐但是VCrJ编译器不容许将预解决做为宏,也就是不容许这种宏替代生涯!迦PACKSTRUeTBEGIN#pragmaPaCka)A因此想靠宏替
4、代来完毕字节对齐是不行了,于是就动了大工夫做了如下解决# ifdefWIN32A#definePACK_STRUCT_STRUCT#definePACK_STRUCT_BEGINa#definePACK_STRUCT_ENDA#e1seA#definePACK_STRUCT_STRUCT_attribute_(_packed)# definePACK_STRUeT_BEG1N# definePACK_STRUCT_ENDendifPACK_STRUCT_BEGIN# ifdefWIN32# pragmapack(1)#endifstructicmp_echo_hdraPACK_STRUCT_F
5、IE1D(u8_ttype);PACK_STRUCT_FIE1D(u8_tcode);PACK_STRUCT_FIE1D(u16_tchksum);APACK_STRUCT_FIE1D(u16_tid);PACK_STRUCT_FIE1D(u16_tseqno);APACK_STRUCT_STRUCT;A#ifdefWIN32# pragmapack()A#endifAPACK_STRUCT_END这样一改在VC下和GCC都可以了,但是每个构造上都要修改一下,这个是黑郁闷黑郁闷啊“轻量级”保护1ightweightsynchroiztionmechanismsSYS_ARCH_DEC1_PR0
6、TECT(x)-decIareaprotectionstatevariab1e.SYS_ARCH_PROTECT(x)-eterprotectionmode.SYS_ARCH_UNPROTECT(x)-1eaveprotectionmode.这三个宏定义一种迅速的“保护”和“解除保护”操作。例如进入保护可以是屏蔽中断或使用一种信号量或mutex。注意:进入保护后还容许再次进入保护,旧的保护标志通过Iev返回,退出保护时再恢复。如果没有定义这三个宏,Sys.h中有一段代码进行了判断。#ifndefSYS_ARCH_PR0TECT如果没有定义SYS_ARCH,PROTECT,那么可以在IWiPOP
7、ts.h中定义宏SYS_1IGHTWEIGHT_PROT,并在sys_arch.c中定义函数syS_arch_protect()和Sys_arch_unprotect(1ev)#ifSYS_1IGHTWEIGHT.PROT#defineSYS_ARCH_DEC1_PROTECT(Iev)sys_prot_t1ev*SYS_ARCH_PROTECT*Performa,faStprotect.Thiscou1dbeimp1ementedbydisab1inginterruptsforanembeddedsystemorbyusingasemaphoreor*mutex.Theimp1ementat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCPIP 协议 lwip 移植