Ampro M2

Ampro M2 Base board

Ampro’s M3 base board.

Ampro M2 CPU board

Ampro was a well respected supplier of PC104 and embedded PC hardware. They announced the Alchemy Au1000 based board with a Linux port in August, 2001. The initial port was written by Monta Vista. Ampro were prepared to ship a beta version of the M2 kit which arrived February, 2002—shown installed on the M2 baseboard on the right. Some months later and several versions of Au1000/ 1500 boards, we wrote an application note documenting the porting history and our findings. More details of the project can be found in the documentation for installing the embedded Linux port Application Note for Installing Linux on the Ampro M2 (232kB pdf)

The first work with the Ampro M2 was during the IDT574 projects. After the RM7000 board was deemed too expensive, the Ampro M2 was bought for some imaging work. There was not much difference in the pricing, but the AU1000 would be much better for deeply embedded due to the 2W power dissipation for the whole module. The first RM7000A ran around 400 MHz and the AU1000 at 400 MHz would run 32-bit integer code at the same speed. We stopped commuting between Cape Town and Port Elizabeth shortly after the M2 board arrived, but it was impressive enough to be bought for the Welch Allyn barcode replacement project.

The details of the Au1000 hardware are a distant memory in 2011. We did design hardware so the two thousand or so pages were well travelled. The Au1000 was a lot easier to program at the initialisation level than the PowerPC, mainly due to fewer configuration registers. Some configurations were guessed—setup the cache as MIPS32 which was for the IDT 4600 type cache, or the size of write through or whatever cache. (I don’t recall what the write line buffer size values were almost ten years later). Serial ports were also a problem with the Linux serial.c source file being almost fifty pages long and for the NS16550 type devices. The four internal Au1000 ports were different—(and I think 32-bit access). The interrupt controller was also very different.

The M3 board replaced the M2. The Linux kernel development raced ahead during the evaluation period with major changes (2.4 kernel around early 2001 or 2002). Our prior MIPS work and toolchains assumed “big-endian“ code; the M2 and M3 were “little-endian”. Not much was written in assembler, and C access of the internal peripherals assumed 32-bit values. The toolchain was self hosted in that the compiling and debugging was on the target via a NFS mounted file system on the client’s HP or Sun servers. Our NFS ran on a Linux laptop.

Our attempt to design an Au1000 system was described in Au1000 Processor Board Design—au.pdf (1,45 Meg).