What follows are thoughts while reading Embedded Linux - Hardware, Software and Interfacing. Really enjoyed it.
It walks through planning for an automation system for a winter resort. Currently at chapter 6 and there’ve been a few things I’ve not done before.
Right away I discovered you could use gdb remotely with gdbremote. Great for remote debugging of cross-compiled applications.
I’ve done cross-compilation, albeit indirectly using buildroot, but I was still aware of what went on behind the scenes, aka: compiling gcc and glibc multiple times, the first being a way to bootstrap and create a more “pure” versions tailed specifically for the target platform.
Until now the book’s remaining quite high-level, so what I’m really excited about is a real-world walkthrough of writing serial communications code and linux drivers.
… later …
Just finished a portion on parallel port programming and then one for creating a simple kernel module. Had no idea that a simple module would be so simple. Very exciting.
… later …
The book covered a few ways to do parallel port programming: using port I/O and also ppdev (which allows you to use a /dev/parport0 type device file). So handy.
It then mentioned memory-mapped I/O, synchonous serial communication, and I2C. All things I’ve heard about, but have never seen in practice. There are so many device-specific implementation details that I mainly tried to gain a high-level view of the basics as I read: send 1 to this connector, wait for settling, send 0 to another connection, send the first bit of data, toggling a latch, next bit of data, etc etc.
Now I’m going to browse my Linux Kernel Development book and get a view of the other side of things … the kernel implementation details.