Recommended Reading for Linux Developers

From BUG Wiki

Jump to: navigation, search

The following is a list of books Angel Roman recommend for getting up to speed on embedded software development and Linux:

  • Designing Embedded Hardware (2nd edition): Excellent book on microcontrollers, C, and interfacing to things

http://www.amazon.com/Designing-Embedded-Hardware-John-Catsoulis/dp/0596007558/ref=sr_1_9/002-3092654-8114438?ie=UTF8&s=books&qid=1194539331&sr=1-9

  • Programming Embedded System in C and C++: Great book on low level stuff without an OS. You need this to understand the basic concepts of how Low Level programming works to then move to linux device drivers.

http://www.amazon.com/Programming-Embedded-Systems-C/dp/1565923545/ref=pd_sim_b_shvl_img_1/002-3092654-8114438

  • Programming in C:

http://www.amazon.com/Programming-C-3rd-Developers-Library/dp/0672326663/ref=pd_bbs_sr_1/002-3092654-8114438?ie=UTF8&s=books&qid=1194538716&sr=8-1

  • Linux System Programming

http://www.amazon.com/Linux-System-Programming-Talking-Directly/dp/0596009585/ref=pd_bbs_sr_1/002-3092654-8114438?ie=UTF8&s=books&qid=1194538740&sr=8-1

  • Linux Programmer's Toolbox <-- Excellent review of the linux kernel in Chapter 5: A Must read for everyone.

http://www.amazon.com/Programmers-Toolbox-Prentice-Software-Development/dp/0132198576/ref=pd_bbs_2/002-3092654-8114438?ie=UTF8&s=books&qid=1194538740&sr=8-2

  • Embedded Linux Primer: Best book I've read on the subject. Covers and talks about bootloaders, processors, porting linux, intro to device drivers, etc...

http://www.amazon.com/Embedded-Linux-Primer-Real-World-Development/dp/0131679848/ref=pd_bbs_5/002-3092654-8114438?ie=UTF8&s=books&qid=1194538740&sr=8-5

  • Linux Device Drivers 3rd Edition: This book is Great! (after the 8th attempt over 5 years) It's also available for free; google it.

http://www.amazon.com/Linux-Device-Drivers-Jonathan-Corbet/dp/0596005903/ref=pd_sim_b_shvl_img_1/002-3092654-8114438

  • All of these books will not help you unless you practice it. Play around with QEMU. Emulate arm based computers.
  • Use a BUG and perform exercises from these books on it.
  • Buy a microcontroller kit (AVR Kit) to fully understand internals of computers without an OS (It's cool stuff). Finally learn how to use timers to create your own "OS" to make multi-tasked software on a microcontroller, this will give you a good foundation for understanding what the linux kernel really is. It's a eye-opening experience ;).