uClinux is a version of the popular Linux Operating System, targeted at resource-constrained 32-bit microcontrollers that lack an MMU. Refer to www.uclinux.org for more information.
The main motivation for running (uC)Linux on the router, is ease of programmability, and to leverage existing code designed for PC operating systems. uClinux provides identical API's to desktop Linux - complex functions like network support for instance, would otherwise involve a considerable amount of work to implement from scratch.
I have received full source code for a port of uClinux-2.4.20-uc0 (including drivers for all on-chip peripherals and the IP175A switch/PHY IC) to the W90N740 CPU, undertaken by Winbond in 2003, and supplied to me by Dick Smith Electronics (http://www.dse.co.nz).
I have modified the kernel source to support the configuration used on the DSE router board, fixed the several bugs that have shown up so far, and have generally cleaned up the code. It works well. Serial, USB and ethernet ports are supported and working, and the system is stable. The networking subsystem is working (e.g. can ping it, and telnet into it, ifconfig works). I have tested the USB host functionality with a FTDI-based USB to serial adapter. I have left it running attached to our LAN for several weeks at a time, and it hasn't crashed, however for example if multiple telnet connections - say 10 - are simultaneously running, it runs out of memory and crashes.
More information about the system.
See uClinux Porting Progress for a timeline of progress since the first kernel was run on the board.
Download the uClinux distribution for W90N740 from out website, or the precompiled binary images from here.
After you have converted the board to little endian mode, loaded the little-endian bootloader (see HW Mods: Step Six), and downloaded or built the ROM images, download them onto the board as follows. Open a serial terminal and reboot the board, and press ESC to go into the bootloader console. Plug a network cable into the MAC1 port (the one called 'WAN'), and attach it to your computer (with either a hub/switch or a cross-over cable. Set up the bootloader networking as follows (you only have to do this once ever unless you erase image 0 on the flash):
bootloader> set -dhcp 0 bootloader> set -net_mac 1 bootloader> set -phy 1 bootloader> set -cache off bootloader> set -ip1 192.168.2.151 (or some other convenient address) bootloader> set -mac1 56:d4:3b:56:1c:d0 (or some other valid MAC address)
Now reboot the board, and type:
bootloader> ft 1 linux.zip 0x7F020000 0x8000 -acxz Waiting for download ... TFTP client: 192.168.2.38 Download OK, file size:450370 Flash programming ... ....... bootloader >
When it says waiting for download, enter the following at a console on your linux PC to download the uClinux kernel:
$ tftp 192.168.2.151 tftp> binary tftp> put linux.zip Sent 450370 bytes in 0.8 seconds tftp>
Now repeat to download the ROMFS (ROM file system)
bootloader > ft 2 romfs.img 0x7F090000 0x7F090000 -af Waiting for download ... TFTP client: 192.168.2.38 Download OK, file size:334848 Flash programming ... ...... bootloader >
On the PC:
... tftp> put romfs.img Sent 334848 bytes in 0.7 seconds tftp>
Now reboot the board and if all went well, it will be running uClinux 2.4.20!!
If you are interested in working with uClinux on the W90N740 router hardware platform, please contact Bluewater or announce yourself on the mailing list, then download the distribution above, and get to work :)