Q:

Building an embedded system

I want to build an embedded system with USB and Wifi. I am going to use USB to load configuration and code. Wifi will be used to communicate with other similar systems. I would also like to program at the socket level, which means I want the drivers for USB and Wifi already available and an OS. So if someone can point me to a set of things I might need to bootstrap such a system, it would be very helpful. Or an existing system with an RTOS that can be used would be great too.

A:

eCos is a true RTOS with support for USB and TCP/IP.  
One problem you may have with any RTOS is getting device driver support for any particular WiFi device. It may be simpler to use a WiFi Module that connects to your embedded system via a SPI or UART interface or similar and has the complete stack on-board.  
Similarly you can get USB-serial chips that avoid the complexities and processor load of implementing USB on your application processor.  Not least it avoids the need for a USB vendor ID which will cost you $2000.
If you use stand-alone WiFi and USB modules your choice of RTOS becomes much broader since you avoid the need for so much middleware and a simple RTOS kernel providing threading, timing and IPC may suffice.
Of course a Linux based solution may suit, but the key issues with that is that Linux is not an RTOS, and it requires large memory resources.
WinCE/Windows Embedded Compact is another option, but is again relatively large and the licensing cost may be prohibitive.  It is to an extent real-time capable in the sense that it is deterministic is not particularly fast.
.Net Micro might be an option, but is not real-time and while requiring fewer resources that either Linux or Windows Embedded Compact, it remains relatively large.
QNX Neutrino is probably the one solution with the scalability, real-time capability and middleware and hardware support you need, but there the licensing costs may again be prohibitive.

