For the past year I’ve been using a TP-Link WDR4300 wireless router. I tried installing OpenWrt on it but it became unusable so I reverted back to stock. Last month I decided to build my own wireless router out of the beagleboard-xM I bought three years ago.
What are the benefits of building my own router?
It could provide network attached storage via a USB drive or MicroSD card. Could use something more robust than the FAT filesystem too.
Been powering through Embedded Linux Primer. A few high-level things I’ve learned:
initrd is old, initramfs is new initramfs uses a CPIO image (a type of archive that was new to me) to hold the initial filesystem contents Using TFTP to boot from a remote kernel and ramdisk sounds like fun, not to mention provides great flexibility for debugging. It’s not so hard to add extra items to the kernel config menu Learned some ins and outs of Das U-boot, and that support for using RAM has to be initialized by the bootloader otherwise you can only use stack memory.
Didn’t expect to find any books on our outing yesterday, but I had a pleasant surprise. Last week I finished my previous book on embedded Linux, which was a great case-study-esque intro, and Embedded Linux Primer will likely be a wonderful follow-up. Some of the chapters that caught my eye:
Storage Considerations Systems on Chip Bootloaders Device driver basics Filesystems Busybox Development tools beyond gdb: cscope, strace (and others) Kernel Debugging Techniques Open Source Build Systems udev Test-Driven Development for Embedded C was a surprise as well.
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.