公司擁有優(yōu)秀的銷(xiāo)售團(tuán)隊(duì)和專業(yè)的研發(fā)部門(mén),不但在品牌、價(jià)格、供貨、服務(wù)等方面領(lǐng)先業(yè)界,而且可為客戶提供及時(shí)、可行的技術(shù)支持和整體設(shè)計(jì)服務(wù),滿足不同客戶多層次需求。
W7100學(xué)習(xí)筆記 -W7100部分固件(firmware)解析
隨著W7100的全新推出,其固件的開(kāi)發(fā)也在不斷更新和完善,從而滿足不同客戶的需求。
WIZnet香港分公司可以針對(duì)客戶的需要,為不同應(yīng)用設(shè)計(jì)適合的固件。
通常情況下,用戶使用我們的芯片要比軟件協(xié)議棧容易的多。由于網(wǎng)絡(luò)協(xié)議全硬件處理,用戶只需使用我們提供的驅(qū)動(dòng)程序,調(diào)用我們寫(xiě)好的函數(shù),即可完成各項(xiàng)網(wǎng)絡(luò)功能。
舉例來(lái)說(shuō),如果用戶想建議里一個(gè)TCP的鏈接,只需調(diào)用connect函數(shù)即可。而無(wú)需理會(huì)connect函數(shù)內(nèi)部的操作。
下面是我對(duì)W7100的固件connect函數(shù)的注解。其中可以看到,connect函數(shù)內(nèi)部操作其實(shí)也不難,即使用戶希望自己更改固件,難度也并不大。
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;