热度 18
2012-2-14 09:08
1081 次阅读|
0 个评论
随着W7100的全新推出,其固件的开发也在不断更新和完善,从而满足不同客户的需求。 WIZnet香港分公司可以针对客户的需要,为不同应用设计适合的固件。 通常情况下,用户使用我们的芯片要比软件协议栈容易的多。由于网络协议全硬件处理,用户只需使用我们提供的驱动程序,调用我们写好的函数,即可完成各项网络功能。 举例来说,如果用户想建议里一个TCP的链接,只需调用connect函数即可。而无需理会connect函数内部的操作。 下面是我对W7100的固件connect函数的注解。其中可以看到,connect函数内部操作其实也不难,即使用户希望自己更改固件,难度也并不大。 uint8 connect(SOCKET s, uint8 * addr, uint16 port) { uint8 xdata ret; if ( ((addr == 0xFF) (addr == 0xFF) (addr == 0xFF) (addr == 0xFF)) || ((addr == 0x00) (addr == 0x00) (addr == 0x00) (addr == 0x00)) || (port == 0x00) ) Check if the IP address and Port number is coorect (IP cannot be 255.255.255.255, or 0.0.0.0, port cannot be 0 { ret = 0; } else { If IP and Port both no problem, continue ret = 1; // set destination IP IINCHIP_WRITE(Sn_DIPR0(s),addr ); set Dest IP first byte IINCHIP_WRITE((Sn_DIPR0(s) + 1),addr ); IINCHIP_WRITE((Sn_DIPR0(s) + 2),addr ); IINCHIP_WRITE((Sn_DIPR0(s) + 3),addr ); IINCHIP_WRITE(Sn_DPORT0(s),(uint8)((port 0xff00) 8)); dest Port lower byte IINCHIP_WRITE((Sn_DPORT0(s) + 1),(uint8)(port 0x00ff)); dest Port higher byte IINCHIP_WRITE(Sn_CR(s),Sn_CR_CONNECT); exe the command of tcp connect while ( IINCHIP_READ(Sn_CR(s)) ) ; // wait for completion CR } return ret; }