This is my twelfth and final week as an intern at Aeste Works. Continuing from last week, I was getting bandwidth and network measurements for only 1 interval after connecting to the TCP iperf server on the default TCP port. Dr Shawn came to advise and review my code to see what could cause this behavior and found that sys_now function which returns the current time in milliseconds to perform TCP house-keeping tasks might be the reason why. The sys_now function was corrected by dividing the timer’s current system count with the current system count frequency to get the current time. After correcting this and refactoring the code, we were also able to bring down the ping latency from an average of 0.480ms to an average of 0.350ms but now the TCP connection would reset after connecting to the TCP iperf server. The TCP connection resets under tcp_input after being processed by ethernet_input and then ip_input. It would reset due to a null connection control block (PCB) which should have been created and binded to a local IP address and port number in the lwiperf code. Alas, my internship time here has run out and I had to start to document the progress for those who would be continuing on this project.
I’m grateful for my time here and all the things I’ve learnt throughout this internship. Here’s a list of the tools and frameworks, I’ve learnt to use.
- C embedded programming
- Git source control
- FreeRTOS kernel
- MPLAB X IDE with the Harmony configurator.
- USB device stack for the PIC32.
- lwIP TCP/IP protocol suite.
Thanks to Dr Shawn for the mentorship and the valuable advice he’s given me. I wish all the best for Aeste’s Works undertakings and success. That’s it from me. Goodbye!