We've been away for a while now. The work is consuming us; again, there is little to no progress on the book 😓. This is specifically true concerning the "writing" part of the progress.
A week back, we met to brainstorm how to make progress, and then the discussion drifted toward - We should add chapters on Rust (the programming language)! It seems to be on every embedded engineer's mind and from the looks of it there is nothing out there that can draw a parallel between C and Rust.
Rust, while it may be great for systems programming does hide the hardware which makes it an unobvious language for lower-level embedded development. How does the compiler consume the code, how can we change the code layout, how can we enable the standard library, memory management, startup sequence, etc for a fresh embedded target without using the "crates" in Rust? The team is learning Rust and is intending to come up with a "Rust for Embedded Engineers" kind of series or a mini e-Book. The effort intends to cut through all the hype and crap and, get to the point straight.
Qemu, CPU internals, and Baremetal boot
Qemu is an open-source emulation software that emulates embedded systems. For example, it has an implementation for the Raspberry-pi boards. What this means is, you can launch QEMU with Raspberry-pi as the machine of choice and load the kernel image on it. Qemu will then run it as if Raspberry Pi was executing the code. This makes QEMU a great enabler in learning CPU internals. The bottom line is that you can learn to do Embedded Development without the actual device (for the most part).