Adm5120

From LinuxMIPS
Revision as of 23:41, 11 October 2007 by Shail (Talk | contribs)

Jump to: navigation, search

General

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'.

ADM5120 Home Gateway Controller Datasheets: v1.13, v1.14, v1.16 and misc datasheets. See also datasheetsite results for ADM5120 datasheet

Specs:

  • 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

Notes:

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

Products based on the ADM5120

Moved to the Adm5120 devices. This product HAS NOT reached EOL yet !

Bootloaders

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/

Extended bootloader

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

MyLoader is the bootloader only seen so far on Compex wireless routers.

U-Boot

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 #

Linux Support

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 0x800026d8.

Sources

Distributions

  • 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 runtime bootloader detection

Switch

The Adm5120 has a built-in switch, see the page ADM5120_switch to configure it.

JTAG

See JTAG page for details.

ADM5120 PQFP JTAG pinout:

134 nTRSTN
135 TDI
136 TDO
137 TMS
139 TCK

UART

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

Memory controller is very similar to the ARM PrimeCell MultiPort Memory Controller (PL172) described in the ARM DDI 0215C document.

USB

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.

PCI

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

Reset switch

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.

Links