上海皕科电子有限公司

Shanghai Bitconn Electronic Co.,Ltd.

公司介绍
上海皕科电子有限公司是一家专业的芯片代理商和方案提供商。总部设在上海,是一家专业为中国电子企业提供单片机,无线RF,以太网IC及外围器件、开发工具和相关应用解决方案的高新技术企业。公司的主要代理品牌有Digi、Wiznet、Xinnova,以及华虹MCU等。
  公司拥有优秀的销售团队和专业的研发部门,不但在品牌、价格、供货、服务等方面领先业界,而且可为客户提供及时、可行的技术支持和整体设计服务,满足不同客户多层次需求。

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

发表时间:2015-3-13  浏览次数:1454  
字体大小: 【小】 【中】 【大】

随着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;

文章评论
发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态: 未登录,点击登录
上海皕科电子有限公司 版权所有
地址:上海市闵行区都园路4288号D区220室
电话:021-54852770
邮件:sales@bitconn.com