W7100学习笔记 -W7100部分固件(firmware)解析

来源:互联网 发布:安卓手机网游源码 编辑:程序博客网 时间:2024/06/03 20:09
随着W7100的全新推出,其固件的开发也在不断更新和完善,从而满足不同客户的需求。
WIZnet香港分公司可以针对客户的需要,为不同应用设计适合的固件。
通常情况下,用户使用我们的芯片要比软件协议栈容易的多。由于网络协议全硬件处理,用户只需使用我们提供的驱动程序,调用我们写好的函数,即可完成各项网络功能。
举例来说,如果用户想建议里一个TCP的链接,只需调用connect函数即可。而无需理会connect函数内部的操作。
下面是我对W7100的固件connect函数的注解。其中可以看到,connect函数内部操作其实也不难,即使用户希望自己更改固件,难度也并不大。

uint8 connect(SOCKET s, uint8 * addr, uint16 port)

{

uint8 xdata ret;

if

(

((addr[0] == 0xFF) && (addr[1] == 0xFF) && (addr[2] == 0xFF) && (addr[3] == 0xFF)) ||

((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && (addr[3] == 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[0]); set Dest IP first byte

IINCHIP_WRITE((Sn_DIPR0(s) + 1),addr[1]);

IINCHIP_WRITE((Sn_DIPR0(s) + 2),addr[2]);

IINCHIP_WRITE((Sn_DIPR0(s) + 3),addr[3]);

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;

}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 橡胶牙刷柄发霉怎么办 乐扣密封条发黑怎么办 喝了姜枣茶发热怎么办 老干妈盖子太紧打不开怎么办 酵素桶变色了怎么办 酵素比例没弄好怎么办 离合器弹不起来怎么办 货车打不上气干燥器漏气怎么办 排气阀一直漏气怎么办 五个月宝宝长牙怎么办 宝宝不喜欢吃粥怎么办 孕晚期严重贫血怎么办 小孩子特别瘦该怎么办 胃病越来越瘦该怎么办 宝宝不愿吃米粉怎么办 米粉吃凉了怎么办 夏季给宝宝断奶怎么办 宝宝长牙牙痒怎么办 宝宝不喜欢吃肉怎么办 孩子不喜欢吃肉怎么办 小孩不喜欢吃肉怎么办 戒奶第二天很痛怎么办 宝宝不吃磨牙棒怎么办 金毛急性肠炎怎么办 狗狗病毒性肠炎怎么办 狗呕吐白色泡沫怎么办 甲减引起水肿怎么办 猫咪呕吐加拉稀怎么办 猫一直吐白沫怎么办 小猫吐白沫拉稀怎么办 大鳄不吃泥鳅怎么办 六个月宝宝不消化怎么办 两周岁宝宝拉稀怎么办 三岁宝宝拉肚子怎么办 混合痔老是出血怎么办 宝宝大便黑色怎么办呢 婴儿大便有粘液怎么办? 十个半月宝宝拉肚子怎么办 宝宝拉青粑粑怎么办 婴儿拉肚子带血怎么办 儿童拉肚子拉血怎么办