It's yet another crazy and distraction-filled week here at SVR Central!
Let's see, now: apart from the current main task for work (which is on my own time just now, as I'm developing code that I expect to use for other purposes), I've gotten sidetracked by (1) a technician needing help bringing up an old board that required some mods that the engineer in charge hadn't documented way back when; (2) Joy running into further problems with Ruby on Rails, as the badly-written code she inherited started misbehaving in new, unexpected, and thoroughly cryptic ways; (3) a request for a firmware enhancement to compensate for the lack of a hardware feature in a recent product; (4) handing off a stack of info for a new venture that I haven't been finding time to work on; (5) the news that, in all the confusion at the client site last week, nobody had gotten around to setting in motion any of the purchasing for the Project Egbert prototype; (6) the beginning of a new, fortunately fairly small, project; and (7) pondering another, rather large, prospective new project.
Somehow, I didn't make it to the ARM Developers' Conference, or whatever they're calling it this year. I had a bit of time this afternoon, but by the time I got there, it would have been just an hour to closing time at the exhibit hall.
In between the distractions, I'm adding networking capability to AGROS. Finally got the LPC23xx Ethernet driver working (though for some reason the first couple of transmit packets seem to be failing), the correct incoming packets recognized, and suitable ARP responses sent when someone asks who has my IP address.
Now I just need to implement IP (not necessarily including defragmentation just yet) and ICMP, and the gadget should answer a ping!
Then TCP, and Telnet and HTTP and suchlike things... and the little HTTP server needs to handle both static and dynamic content, of course. That part should be fairly simple.
Oh, and making sure that ping floods and suchlike malice can't crash the OS. And adding a special case to prevent the ARP tables from getting wedged if the system is left running continuously for more than 13.6 years.
Why not just use uIP? Well, I'm not crazy about including copyright notices in the documentation for embedded devices, besides which I'm guessing that writing my own TCP/IP stack, adequate to the purpose at hand and nicely integrated with AGROS, will not take that much longer than figuring out how to make uIP work in this context... and the performance should be better, because the constraints to which uIP was designed.
Also, one of the upcoming projects is going to require a sort of mutant networking stack, so having my own code that I understand should give me a better starting point.
Though, if rolling my own gets to be too much of a headache, uIP is still there....
Recent Comments