W5100S - MACRAW mode doesn't work
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: W5100S - MACRAW mode doesn't work
by irina WIZnet ·
Hi~ rogerthat
Could you please try to test the loopback TCP?
I will try to test as MACRAW.
I will tell you the test results as soon as possible.
Best regards
irina
RE: W5100S - MACRAW mode doesn't work
by rogerthat ·
Hello Irina,
First good news: I tried TCP loop-back test and the result was a SUCCESS with both chip variants.
Then, I started debugging the whole library code.
It seems to me there is a problem around the code snippet socket.c → recvfrom(…) → case Sn_MR_MACRAW: .
Somehow the condition if(sock_remained_size[sn] > 1514) becomes true and socket is closed.
Note: I also sometimes observe that (head[0]+head[1]) equals 0 and then 2 is subtracted, which results in a huge number (i.e., 0 - 2 = 0xFFFE).
I searched this forum about similar problems and have seen some issues with other chips in the past where some kind of overflow is involved. I suppose those problems already belong to the past and current library code must be fully tested and functional.
Hope you come back with some good news upon finishing your MACRAW test!
PS: There may also be a minor copy-paste error in function wizchip_conf.c → wizchip_init()
…
while((rxsize[i] >> j != 1)&&(txsize[i] !=0)){j++;}
…
But this is not responsible for my situation.