This was my second week here. I was tasked with troubleshooting and characterizing the boards. There are in total seven prototypes for me to play with. The boards are divided into old and new boards. The main differences are that the new boards use slightly different PIC32 and Spartan-6 chips. And the LAN chip on the new boards is driven by a different clock source than on the old ones. Now some of these boards have issues. Some of them work fine. We really don’t know the root cause of the issues in each of the boards, we can only guess based on what evidence we have.
My task was to try and understand. Make tests, collect data, recognize patterns and rack up evidence that would help us become pretty confident in determining where the issues come from on each board. Dr. Shawn even gave me a lecture on statistics.
The clock for the LAN chip must be driven by a 50MHz source and has a tolerance of +/- 50 PPM or 250KHz. If not within that tolerance the chip won’t work properly. This is what the LAN chip documentation states, however that doesn’t mean the chips will necessarily have these exact values due to imperfections in fabrication. Therefore some of the issues we’ve been seeing could be related to clocking, basically. Or it could be something else entirely 😐 This was all explained to me by Dr. Shawn.
To give you an example of the issues we’re dealing with, one board executes the code properly only on first programming and needs to be reprogrammed every time. Another one needs a power reset to work again. Another one believes its working (as indicated by its LEDs) but it actually isn’t. And one that doesn’t work but at least its honest.
I proceeded to characterize the old and new prototypes. For the first test, I made the boards ping my server IP using ICMP protocol, and I analyzed the requests in Wireshark. At first the server wasn’t replying to any of the boards although they were sending requests, that until ahem… Dr. Shawn pointed out that the IP I was pinging was reversed. (Its in hex T_T). Then I did the opposite and had the server ping the boards, which was troublesome as I had to find the sweet spot of delays and timeouts to make it work for the new boards, which still had very high packet loss. I’m also supposed to test the boards by setting them up as http web-servers and document all of my tests to the company wiki which I haven’t gotten around to yet :/ , so hopefully by week 3.