Microprocessor Fundamentals: using qemu emulation of ARM architecture, the gnu toolchain, and gdb