ELEC424/COMP424/ELEC553: Mobile & Embedded Systems


Useful Resources


You are not required to buy any books. Most of the information you need for labs and projects can be found on-line. We will also distribute copies of materials that cannot be found on-line for free. The following books are suggested only for your convenience.
  • ARM System Developer's Guide: Designing and Optimizing System Software (Amazon.com)
  • Mastering Embedded Linux Programming (Amazon.com) (About Linux on BeagleBone Black)
  • The practice of programming (Amazon.com)
  • Principles of computer system design: an introductiom (Amazon.com)

Understanding Linux kernel

I have found the following three books about Linux kernels useful. The first one is perhaps most concise and updated. But the other two may have interesting details useufl to your work.

  • Linux kernel development (Amazon.com)
  • Understanding Linux kernel (Amazon.com)
    • Chapter 4 provides a coherent picture of interrupt and exception handling.
  • Professional Linux kernel architecture (Amazon.com)

A useful resource to explore Linux kernel source code

Embedded Linux

Compared to standard Linux kernel development resources, e.g., those above, embedded Linux kernel development involves the following unique topics, using ARM systems as examples

Again, I find the following tutorial slides useful.

  • Tutorial slides about embedded Linux kernel development from free-electrons.com.

Kernel programming tips

The Linux kernel is written in GNC C, i.e. it must be compiled by GCC, and assembly.

Command line

See here.

Debugging Tools

GDB is a powerful tool for user-space program debugging. An excellent tutorial is here. When combined with QEMU, it can be used to debug bootloader and kernel as well. See here for an introduction.

KDB and KGDB for kernel debugging.

BeagleBone Black

Set up your BeagleBone Black to work with your Linux virtualbox virtual machine: here.


Building a new Linux Kernel

  • Everything including, kernel, u-boot, rootfs, and bootable microSD

QEMU: Quick Emulator

See here.

Development on Mac Os X

Most resources for Unix systems will have their counterparts for Mac OS X. Google is your best friend

Package management: I like Homebrew. Others like MacPorts. Please do not use BOTH on the same system.

Tips for Writing Good Code

If you have not written large C code before, here are some tips for you.