Here's a quiz:
1) What are the differences between a CM0, CM3, and CM4, and ARM9 ARM architecture?
2) What are the differences between the ARM instruction set an the THUMB instruction set?
3) Compare a simple register-based IO port, a "intelligent" IO port (with set/clear/toggle registers), and a register-based IO port with bit-banding. Write an implementation of Arduino's "digitalWrite" and "digitalRead" function using each model. What other mechanisms have ARM processor vendors provided for fast bit-twiddling?
4) What aspects of the ARM are most likely to make writing cycle-accurate code difficult?
5) compare advantages and disadvantages of link-time vs compile-time definition of peripheral addresses.
6) which features are constant across all ARM CMx chips? Which are most likely to vary wildly? How do the various ARM microcontroller (CMx) vendors differentiate their products?
7) Who currently sells the most (number) of CMx chips? Who sells the most ($$)?
Why did TI discontinue ("Not Recommended for New Designs") the entire Stellaris line of CM3 chips?
9) Why did SI Labs pay $170 million to acquire Energy Micro?
10) What aspects of an ARM CMx chip/system add complexity and cost to a hardware design?
11) What aspects of an ARM CMx chip/system contribute to bloated binary executable size? Which are avoidable, and is it worth avoiding?
12) What is CMSIS? How does it related to ASF?
13) Several vendors provide extensive peripheral libraries for their ARM chips. Is there any commonality?
Lab: Build an ARM development environment from source code; for chips from two different vendors.