Designing a small USB based wifi system

Hi All,

I'm designing a small embedded system, essentially a Wifi-dongle and wanted to discuss the design here.

We are a small team of around 3 people and have a limited budget for executing this project.

This is my first attempt at designing a CE device so please bear with me! :)

Following are the requirements: ===============================

  • This device needs to provide limited connectivity to another CE device via the USB port on that device. From here on, I'll refer to this other CE device as the "Host".
  • This device must be USB bus powered, i.e power is limited to 2.5W.
  • It communicates with the Internet over a Wifi (WLAN) interface.
  • It should provide a way for the Host to configure this devices wifi properties (like WEP/WPA keys, SSID's etc).
  • This device should not work if connected to anything other than the Host. Please don't ask me why, this came as a biz requirement! :(

Host limitations: =================

  • Runs a proprietary, closed-source OS.
  • Support CDC-ECM class host driver over the USB port.
  • Supports dynamic IP address assignment - DHCP.
  • Supports TCP/IP, but any application running on it can use only TCP client sockets.
  • Applications running on the Host can also do plain HTTP (GET method only).

Design: ======= I've split the device into 3 logical blocks:

Block A Block B Block C +--------------+ +----------------+ +-------------+ |USB device i/f|| Microcontroller|| Egress i/f | +--------------+ | for local | | Wifi module | | processing | | 802.11 stack| +----------------+ +-------------+

- Block A is needed for contacting the host over USB.

- Block B is needed for running the CDC-ECM device driver for emulating a CDC-ECM device.

- Block C is the wifi module which will be used to talk to the internet.

We've already tested the CDC-ECM device driver which successfully inter-ops with the Host. However, this was more of a proof-of-concept and was done under linux. Once the final platform is chosen, this driver has to be ported to it.

Component Selection: ==================== Since this device has a very limited power budget, we are looking at very low power consumption microcontrollers and wifi modules.

After browsing through a few microcontroller vendors I found that most SoC's offered by them had Block A and B combined, i.e they have a USB device controller hardware and also some interface over which I can connect to the wifi module (eg: SPI/USB).

I've had a look at the following for the microcontroller component:

- Atmel's SAM91 platform (ARM9 based, with MMU)

- Microchip PIC32 series

...and a few others which I'm forgetting now!

Does anybody have any suggestions on other low power uP's?

Wifi modules:

- Boradcom

- ZeroG

- Nanoradio

Initially we had planned to use Linux as the OS for running on the uP (since we were comfortable wit Linux). But this meant that we had to use an ext SDRAM (8MB) which was causing it to exceed the power budget.

So, we decided to go with come other light-weight RTOS in order to save mem. We are planning to squeeze the whole thing in less than 256KB of mem. This means I can look for a SoC which offers this mem in-built (as SRAM).

The OS needs to have following feature support:

  • Support for underlying microcontroller
  • Small mem footprint
  • Multi-tasking/multi-threading
  • Support USB peripheral controller and other peripherals like SPI etc
  • TCP/IP
  • Integrated webserver
  • Flash file system support (optional)

Currently we are evaluating the following RTOS which have a very small mem footprint:

- freeRTOS

- ECOS

Any experience with the above? Suggestions?

Waiting to hear about other ppl's experience's in such area.

Thanks for your time.

Regards,

-mandeep

Reply to
Mandeep
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.