W7100学习笔记 -W7100部分固件(firmware)解析
2012-02-14 09:08
183 查看
随着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;
}
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;
}
相关文章推荐
- 深度学习学习笔记——部分API解析
- 《Python学习手册》学习笔记(20)之第20章迭代和解析,第二部分(关键词:编程语言/Python/迭代/解析)
- 东软学习,strut2初级学习的部分截图和笔记(五)-各种转发类型的解析
- ln命令解析_学习笔记
- WebRTC 学习笔记(2)--libjingle 部分 (P2P传输)
- Mavenx学习笔记二十二:Maven仓库(从仓库解析依赖的机制)
- IOS 学习笔记14 内存管理(3) 有效的内存管理 前半部分
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第22章 软件安装:源码与 Tarball
- python︱HTML网页解析BeautifulSoup学习笔记
- StirngMVC部分学习笔记
- android 多媒体部分学习笔记十二----mediaplay自定义播放器
- 数据库系统概论 学习笔记(三)第一部分
- java xml解析 学习笔记(2)——SAX
- 【学习笔记】【深入解析Windows操作系统(第四版)】【进程、线程】
- spring学习笔记(1)IOC核心原理解析
- 深度学习笔记--引言部分
- 从零开始学Python学习笔记---之--pandas序列部分
- Node.js学习笔记(4)——除了HTTP(服务器和客户端)部分
- 【HEVC学习与研究】28、第一帧第一个宏块的SAO部分完整解析结果
- Android 学习笔记之Volley开源框架解析(三)