Introduction to Computer Organization: ARM Assembly Language on the Raspberry Pi
Awesome! Personally, I think that ARM assembly has a TON of potential for teaching people how to code and/or work with electronics hardware from a state of almost no background knowledge.<p>- They teach the concept of a computer program as a bunch of single small logical 'steps'.<p>- They make it easier to keep new students interested without plying them with pages and pages of 'magic code' - not only can you make a zero-dependencies program (in the case of simple mobile chips), your 'hello world' is actually in the physical world. An LED, a motor, what-have-you.<p>- The core instruction set for a Cortex-M0+ processor has what, 60 instructions? It's not very complicated.<p>On the con side of things, the whole idea of registers controlling hardware peripherals can be a little weird, and you have to get people comfortable with command-line debugging utilities. The <i>concepts</i> are simple, but GDB isn't. And many of the available IDEs aren't very cross-platform.<p>And I guess application processors also probably introduce their own extra complexities, compared to a Cortex-M line which is more comparable to an Arduino than a RasPi or Chromebook. But hey, there's also less hardware available with the sort of support that a Raspberry Pi has; the closest you'd probably get is a cheap generic $3-5 STM32F103C8 dev board.<p>If anyone else is interested in this sort of thing, the reference manuals provided by ARM are also very readable, for example: <a href="http://infocenter.arm.com/help/topic/com.arm.doc.ddi0484c/DDI0484C_cortex_m0p_r0p1_trm.pdf" rel="nofollow">http://infocenter.arm.com/help/topic/com.arm.doc.ddi0484c/DD...</a>