We are going to move from some Motorola controllers to ARM ones. We have been looking at several chips from different manufacturers. The Atmel AT91RM9200 looksk interesting - but after reading the datasheet for a while, I started wondering whether they are completely sane at Atmel.
For example, the I/O pin organization is a big mess. We want to use all UARTs with control lines, all timer channels, Ethernet, digital audio - ah! This is not possible! If we use Ethernet, we lose some UART control lines. If we use the timers, we lose more. If we want audio, we lose the rest of the timer pins. Etc. etc. etc. Take a look at Motorola MMC2114, for example: no mess, all (99%) pins have only two functions: GPIO or a special function.
I'm glad we're not going to use the synchronous serial ports. They have no HDLC supprt (what kind of sync ports are they, anyway?).
On software side, the Ethernet controller looks pretty dumb to someone who's seen Motorola stuff from mid-90's. Frames must be stored in contiguous memory (so, if we want to transmit an mbuf chain (a packet split into multiple 128 or 256 byte buffers), we must first copy the packet from the mbuf chain into a separate buffer using CPU, and then start Ethernet transmission (and only one frame is automatically sent by the hardware). See some old (or new) Motorola chips (like 68en302) and learn how things should be done.
Multiple interrupts are routed to same interrupt vector, so the interrupt handler must poll the peripherals to see what's up. On MMC2114, you can use a different vector for virtually every interrupt source (OTOH, you can also route all interrupts to one vector if you like).
Sigh. Did they do anything right?
We also looked into the ARM7TDMI chips from Atmel, the ones with large SRAM and FLASH sounded ice for smaller applications. They did - until we found out that the FLASH is dead slow. A 70 MHz CPU with no caches - and they use 90 ns 16-bit wide FLASH!? I bet a 33 MHz MMC2114 with 32-bit zero-wait-state FLASH runs in circles around this fine 70 MHz Atmel. Even Philips knew better when designing their LPC210x series of chips.
Sorry, I'm just pretty disappointed in Atmel chips. They have lots of features, sure, but if you can't use all features thanks to the I/O pin mess and if the hw is this limited...
Don't shoot me, I'm trying to adjust to these shortcomings.. It will be difficult, I had a nightmare about the I/O pin conflicts last night..
-jm