Reading list (Digital Systems)
Information about the ARM – sufficient to follow the first part of the course – can be found on the micro:bit page. Besides the reference material, the notes by Geoffrey Brown are useful as background reading. The official book by Joseph Yiu also contains some useful information.
For operating systems, I have used
- Tannenbaum, Operating Systems: Design and Implementation.
The IPC mechanism of Phōs is modelled on that of Minix, and closest to the code in the first edition of the book, which avoids complexities introduced by support for the 386 introduced in later editions.
I have also made some use of
- Douglas Comer, Operating System Design: The XINU Approach, 2nd edition, Chapman and Hall / CRC Press, ISBN 978-1498712439.
For architectural elements, and a non-obsessive approach to logic design I recommend certain sections of this book:
- David A. Patterson and John L. Hennessy, Computer Organisation and Design, any edition, Morgan Kaufman.
The book has been through many editions, but the elementary material is similar in all of them (as far as I can see). In the fifth edition, the following sections are relevant.
- Chapter 2 – Instructions: Language of the Computer.
- Chapter 3 – Arithmetic for Computers, to Section 3.4 – Division.
- Chapter 4 – The Processor, to Section 4.4 – A Simple Implementation Scheme.
- Appendix B – The Basics of Logic Design.
There is an edition of the book that describes ARMv8-A, but it doesn't cover the Thumb encoding supported by microcontrollers, so I suspect it is not much more use for the course than the other editions.
For users of the fourth edition, here is a local copy of Appendix C – Basics of Logic Design, which may also be found on the publisher's website.
In the theory of syntax, a set of strings over a specified alphabet.
An alternative instruction encoding for the ARM in which each instruction is encoded in 16 rather than 32 bits. The advantage is compact code, the disadvantage that only a selection of instructions can be encoded, and only the first 8 registers are easily accessible. In Cortex-M microcontrollers, the Thumb encoding is the only one provided.