- 1 General
- 2 ADM5120 / ADM5120P
- 3 ADM8668 - WildPass
- 4 Products based on the ADM5120
- 5 Bootloaders
- 6 Linux Support
- 7 Sources
- 8 Distributions
- 9 Switch
- 10 JTAG
- 11 UART
- 12 Memory controller
- 13 USB
- 14 PCI
- 15 Reset switch
- 16 Emulator
- 17 Links
ADMtek is part of Infineon technologies AG based in Taiwan and makes home gateway chips.
ADM5120 / ADM5120P
Infineon calls this 'a highly integrated, high performance and flexible System-on-Chip Home Gateway controller'.
- 175MHz/227MIPS 4Kc CPU with an embedded cache, 8K-byte I-cache and 8K D-cache MIPS32
- An embedded memory management unit 32-entry TLB, with 16 organized entry pairs
- 5 IEEE 802.e Fast Ethernet PHY interfaces and 1 GMII(1)/MII interface
- Embedded ethernet switch engine
- Two SDRAM banks (up to 128MB)
- Two Flash banks (up to 4MB)
- AMBA-AHB internal bus
- 2 AMBA ABP UART interfaces
- AHB-to-PCI bridge that supports 3 master devices (1)
- GPIO (2))
- USB 1.1 host controller
- 1 Available in BGA (ADM5120) only, not PQFP (ADM5120P)
- 2 PQFP has 4 GPIO pins v.s. BGA has 8 pins.
ADM8668 - WildPass
WildPass is a highly integrated SoC which incorporates a powerful 200MHZ CPU with MMU support, a 802.11a/b/g MAC/Baseband, two 802.3 MACs and one 10/100BASE-Tx 802.3u compliant Auto-MDIX transceiver.
- CPU: 200MHZ MIPS4Kc with 8KB I-cache, 8KB D-Cache with MMU support, 6 DMA engines and Hardware NAT support
- WLAN (1 802.11a/b/g WMAC + BBP)
- USB 2.0 Host + PHY interface
- PCI bridge that can support 3 PCI devices
- IDE, PCM UART and SPI interfaces
- IEEE 802.11a/b/g,IEEE 803.11e(WMM), 802.11i(WPA2), 802.11h, IEEE 802.11d and 802.11d Standards compliant
- AHB devices: MIPS4KC, MC, port1, port2, WLAN, USB2.0 host, PCI, IDE.
- Debugging interface: JTAG for MIPS-multiICE,trace32
- Package: 352BGA and 289BGA (excludes PCI and IDE interface)
- This chip has reached end of life. You will not find any support for such a dated chip.
- Software package is borrowed from 5120. Almost useless unless you can spend 2 man-years porting over your own software
OpenWRT has merged code from http://wiki.scottn.us/ for this platform.
Products based on the ADM5120
Moved to the Adm5120 devices. This product HAS NOT reached EOL yet !
Edimax type bootloader
Most ADM5120 boards come with a built-in bootloader.
On startup it waits a few seconds before loading a compressed kernel image from flash. If space is pressed (on the serial console) three times during that time the following menu is presented:
ADM5120 Boot: Linux Loader Menu ==================== (a) Download vmlinuz to flash ... (b) Download vmlinuz to sdram (for debug) ... (c) Exit Please enter your key :
The bootloader contains a simple menu-driven interface, CFI FLASH r/w driver, x-modem downloader and zlib 1.1.4 code.
Linux distributions contains a binary form of the bootloader in /Linux-SC/EdiLinux/image/
This extended bootloader may be based on the same codebase that the standard Edimax-type bootloader is, but it is larger than the standard one. Anything larger than 32K will possibly overwrite other data on the flash device. This extended bootloader is larger than 32K when compiled. It is possible to build it so that it is less than 32K in length, but to do that TFTP must be disabled. Some info about an extended bootloader is available at http://midge.vlad.org.ua/wiki/bootloader-with-tftp, and the source code can be downloaded from http://midge.vlad.org.ua/misc/bootloader/
CFE for ADM5120
Compex offers a WP54-WRT, a hardware OEM board based on the ADM5120. As part of this solution Compex distributes a CFE bootloader, ported to the ADM5120 harware. There is no sourcecode, the CFE's licence allows to distribute it in the binary-only format. Unfortunately, WP54-WRT contains a "protection chip" sitting on the GPIO0 and GPIO1. CFE won't boot a kernel w/o this chip.
MyLoader is the bootloader only seen so far on Compex wireless routers.
U-Boot support for AMD5120 is currently available as a patch. With this patch U-Boot can replace the manufacturer's bootloader because it does a full initialisation of the hardware. It supports both FLASH memory and Ethernet which opens the possibility to have U-Boot load the Kernel from either TFTP or FLASH. In time support for USB will be implemented to offer the possibility to load the Kernel from a USB mass storage device.
U-Boot 1.1.6 (Dec 19 2006 - 12:19:49) SoC: Infineon ADM5120/PQFP @175MHz (Rev: 0008) DRAM: 16 MB Flash: 2 MB In: serial Out: serial Err: serial Net: adm0 Hit any key to stop autoboot: 0 ADM5120 #
The vmlinuz file for the Edimax BR6104 bootloader and clones is a binary vmlinux file (created using objcopy with -O binary) compressed with gzip. The Edimax GPL sourcecode contains all necessary tools to create a new boot image.
Although YAMON is mentioned in the prom init code it seems to be a result of a bad cut-and-paste job. (Seems, development board was a Mips_Atlas). The commandline is hardcoded. (Unfortunatly spreaded over several files).
The image is a compressed binary file and the kernel entry is expected at a fixed address (which is why anything but the original ADMtek 2.4.18 kernel won't run without tricks).
The kernel is loaded at
0x80002000 and the kernel_entry is expected at
- midge http://midge.vlad.org.ua - OpenWRT-like distribution for routers based on ADM5120
- AMiLDA http://www.amilda.org/ - User-friendly distribution aimed at replacing the original firmware (previously known as "EdiLinux").
- OpenWrt http://dev.openwrt.org - Supports both Little and Big endian ADM5120 as well as device detection based on Linux-2.6.
The Adm5120 has a built-in switch, see the page ADM5120_switch to configure it.
See JTAG page for details.
ADM5120 PQFP JTAG pinout:
134 nTRSTN 135 TDI 136 TDO 137 TMS 139 TCK
ADM5120 AMBA UART is not compatible with NS16c550. It has a lot of 16550-like features, but is not register compatable. This UART is well-known in the ARM world as:
AMBA UART PrimeCell (PL010) Block Specification (ARM-0001-CUST-DSPC-A03)
See a include/asm-arm/hardware/serial_amba.h and drivers/char/serial_amba.c
Linux distributive for ADM5120 contains a sourcecode for the ADM5120 UART. U-Boot bootloader has support for this UART too.
ARM kernel also contains sourcecode for this PL010 UART, so integration should be possible.
Memory controller is very similar to the ARM PrimeCell MultiPort Memory Controller (PL172) described in the ARM DDI 0215C document.
USB controller is available as a device on the AMBA internal bus and slightly different from the standart OHCI controller. Driver is available under usb-shci name.
ADM5120 (BGA version only) has AMBA-to-PCI bridge:
Autoconfig PCI channel 0x801756e8 Scanning bus 00, I/O 0x11500000:0x115ffff0, Mem 0x11400000:0x11500000 00:00.0 Class 0600: 1317:5120 Mem unavailable -- skipping, bar_size=0x10000000 I/O unavailable -- skipping, bar_size=0x1000000
When experimenting with the ADM5120, you will find that powering off and on is the only way to reboot the switch. This can be annoying. The "Reset" knob is software controlled and acts like Ctrl-Alt-Del. Luckily, adding a reset switch is easy. Locate the 7414 chip (U3 on Edimax 6104). Connecting pin 1 of this chip to GND will reset the board. (Please note: most likely you can reset the board by connecting a whole lot of other pins to GND, some of which will reset the board for good. Be careful.) The 7414 forms the official reset circuit, with a resistor and a condensor (and a diode that I don't understand, BTW). The diode is parallel to the resistor. It is there to discharge the capacitor, so the circuit also works with a fast power down - power up cycle.
VirtualMIPS is an emulator of MIPS Soc. It supports ADM5120(whithout switch emulation) and can run linux kernel.
- http://midge.vlad.org.ua/wiki/article (cyrillic)
- Network Storage Adapter NFS-101U, DNS-120, DN-7013-N, TS-U100, MU-5000FS, EP-9812-U Firmware Analyses by Sleep Walker
- ADM5120 toolchain, kernel & root fs HOWTO by Tom Wilms
- AMiLDA is a user friendly linux distribution for many ADM5120-based devices.
- Dissecting the SMC2804WBRP-G
- NetBSD on an Edimax BR6104K(P), (Sourceforge)
- NetBSD on Edimax BR6104K(P), (Google Code)
- OpenWRT @ RB1xx