uClinux on the CompUSA 5 port Cable/DSL Broadband Router

(quick and dirty notes, more to come with pictures etc)

OVERVIEW

The CompUSA router is a low cost Router Gateway for home Broadband users for US$29.95 on the web or in the retail stores. The CompUSA number is 290331 and be found at their site, www.compusa.com. They show the mfg as FMI  with a part number of EE-400R. It is based off of the Samsung S3C4510B ARM7 CPU or SoC (System on Chip).  The current ones in the store have "B" in the start of the serial number. I'm pretty sure they used another CPU type for the "A" models. The FW upgrade download for the router is different between the "A" and "B" versions. I know other brands of routers have different CPUs based off of the Rev numbers too.

Key components:
 

Running uClinux on the router:

The current flash device is to small for the compressed image to be loaded in. The RAM maybe loaded with the kernel and ROMFS but I have not tried it. I used an AMD AM29LV160DB, (2 MByte)1 MByte by 16 Bit flash to hold the compressed image in a TSOP socket. I use another board at this time to program the part. I'm working on porting a flasher that is loaded via JTAG. A parallel port based JTAG interface has Samsung support. I have not tried it yet, myself. The software is here and the hardware dongle (Wiggler clone) is here also: http://openwince.sourceforge.net/jtag/   This support setting up the Samsung memory address based on your board and programs the flash.

The router can use the SNDS100 build of uClinux, as-is! The ethenet also works fine on all ports. Place the properly generated ROM image in the flash and boot. (need to connect serial port, see below) A precompiled image that will work is here: http://www.ucrouter.com/download/uClinux-evm50100.rom   The home site for uClinux is here: www.uclinux.org  
The arm-elf-gcc tools are here: http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/
 

Directions on compiling uClinux for SNDS100 from the sources:

(add HERE) Bug me if you need it now.
 

Here is some information on the stock router software:

The router uses ThreadX as the OS. Kernel messages and prompt come out of Serial port 0 and the user interface comes out of serial port 1 but is not brought out to the real world. The user port prints out a menu to prompt for some critical and common setup info. i.e. IP address of router.  Supports modem access and upgrades. Real handy if you forget the IP address that you set it to. 115kbps is the baud rate for both ports. JP2 is used for manufacturing test. (see below)

Here is some information on the hardware:

The CPU is tied as little endian (good thing). JP2 open = normal operation, JP2 closed = manufacturing test (havn't figure it out), goes to I/O bit on CPU. I have verified this using the serial port on the kernel port. U2 is pads for a serial EEPROM, i.e. 93C46/56 microwire memory. There are other No Loaded items: i.e. LEDs, jumpers and SW1 that I havn't traced back yet.
 

JTAG CONNECTOR  (JP1)

VCC GND  -------------------------- GND     NC        NC        NC        NC
          4          6          8         10         12         14          16         18          20
  1         3          5          7           9         11         13          15         17          19
VCC              TDI     TMS      TCK   GND      TDO      NC        NC        NC
        NTRST                                                   

All you need is TDI, TMS, TCK, TDO and some grounds. NTRST messes it up.

You also need to remove the 0 ohm resistor at R5. This keeps JTAG NTRST asserted. Add 4k to 10k ohm resistors pull ups to R6. I do not have resistors R7 - R9 loaded and it works. These are pull ups for the other JTAG lines.

Serial Connector  (CONNA1)

RXD1   RXD0      DTR0      NC          GND
2             4               6              8              10
1             3               5              7               9
VCC    DSR0      TXD0      TXD1      to Pin 189 of CPU (<P8>, xINREG<0>)

uClinux: Console is port 0 (RXD0 and TXD0).
Router software: Kernel is port 0 (RXD0 and TXD0) and User menu is port 1 (RXD1 and TXD1).

You have to use a RS232 level shifter to connect a terminal or computer. Here is an example for a RS232 circuit from the HRI (Hardware Recycle Initiative) web site.

RS232 Circuit

RESET

The 4510B reset pin is connected to a resistor-diode-capacitor network to reset it poperly upon poweron. This network is also connected back to an I/O pin as a way for the router to reset itself if needed. This may interfear with some non-router software that may not happen to set the pin in the right level thus causing a reset loop. Remove R12 to avoid this problem. (back of board under 4510B)  This does not appear to be a problem for the uClinux ROM software but I noticed it with another program.
 

Last update: Feb. 3, 2004
Greg Holdren
greghol <at> sbc <-put together-> global <dot> net