12.2. Further Reading
12.2.1. License Issues
Articles
- http://www.gnu.org/licenses/gpl-2.0.html: GNU General Public License, version 2
- http://www.gnu.org/copyleft/gpl.html: GNU General Public License
- http://www.softwarefreedom.org/resources/2008/compliance-guide.html: A Practical Guide to GPL Compliance
- http://article.gmane.org/gmane.comp.video.dri.devel/52751 Alan Cox about combining GPL device drivers with closed source user space libraries
12.2.2. Linux kernel
Books
- Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum:
"Building Embedded Linux Systems 2nd edition",
Paperback: 462 pages, O'Reilly & Associates; (August 2008); ISBN 10: 0-596-52968-6; ISBN 13: 9780596529680 ISBN 059600222X - IMHO the best book about Embedded Linux so far. An absolute must have. - Greg Kroah-Hartman:
"Linux Kernel in a Nutshell",
198 pages, O'Reilly ("In Nutshell" series), (December 2006), ISBN 10: 0-596-10079-5; ISBN 13: 9780596100797
- Tarball of PDF files (3 MB):
http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf.tar.bz2
- Tarball of DocBook files (1 MB):
http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_xml.tar.bz2 - Craig Hollabaugh:
"Embedded Linux: Hardware, Software, and Interfacing",
Paperback: 432 pages; Addison Wesley Professional; (March 7, 2002); ISBN 0672322269 - Christopher Hallinan:
"Embedded Linux Primer: A Practical Real-World Approach",
576 pages, Prentice Hall, September 2006, ISBN-10: 0-13-167984-8; ISBN-13: 978-0-13-167984-9 - Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman:
"Linux Device Drivers", 3rd Edition ;
Paperback: 636 pages; O'Reilly & Associates; 3rd edition (February 2005); ISBN: 0-596-00590-31 - The reference book for writing Linux device drivers. An absolute must have. => Read online - Jürgen Quade, Eva-Katharina Kunst:
"Linux-Treiber entwickeln";
Broschur: 436 pages;
dpunkt.verlag,
Juni 2004;
ISBN 3898642380
- focused on kernel 2.6, unfortunately German only
- => Read online - Sreekrishnan Venkateswaran:
"Essential Linux Device Drivers",
744 pages, Prentice Hall, March 2008, ISBN-10: 0-13-239655-6; ISBN-13: 978-0-13-239655-4
- => Read online
Articles
- The Linux Kernel - describing most aspects of the Linux Kernel. Probably, the first reference for beginners. Lots of illustrations explaining data structures use and relationships. In short: a must have.
- Linux Kernel Module Programming Guide - Very nice 92 pages GPL book on the topic of modules programming. Lots of examples.
- LWN: Porting device drivers to the 2.6 kernel - Series of articles (37) in Linux Weekly News: http://lwn.net/Articles/driver-porting/
- MIPS Linux Porting Guide: http://linux.junsun.net/porting-howto/porting-howto.html
- Andries Brouwers remarks to the linux kernel: http://www.win.tue.nl/~aeb/linux/lk/lk.html
12.2.3. General Linux / Unix programming
Books
- W. Richard Stevens: "Advanced Programming in the UNIX Environment", Addision Wesley, ISBN 0-201-56317-7
- Eric S. Raymond: "The Art of Unix Programming", Addision Wesley, ISBN 0131429019 => Read online. If you don't want to read the whole book then at least look at the Basics of the Unix philosophy condensing lots of experience into a few rules. This is essential reading.
- David R. Butenhof: "Programming with POSIX Threads", Addision Wesley, ISBN 0-201-63392-2.
- Bradford Nichols, Dick Buttlar and Jacqueline Proulx Farrell: "Pthreads Programming", O'Reilly & Associates
- "Git Community Book"
See http://book.git-scm.com/ or download the PDF version. - Ross Anderson:
"Security Engineering - A Guide to Building Dependable
Distributed Systems"
See http://www.cl.cam.ac.uk/~rja14/book.html
Articles
- The GNU C Library: http://www.linuxselfhelp.com/gnu/glibc/html_chapter/libc_toc.html
General Linux Programming: http://www.linuxselfhelp.com/cats/programming.html - Multi-Threaded Programming With POSIX Threads:
http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/multi-thread.html - Brad Hards: The Linux USB Input Subsystem, Part I
http://www.linuxjournal.com/article/6396 - Brad Hards: Using the Input Subsystem, Part II
http://www.linuxjournal.com/article/6429 - Ulrich Drepper: Position Independent Binaries: "Text Relocations"
http://people.redhat.com/drepper/textrelocs.html - Ulrich Drepper: "How to Write Shared Libraries"
http://people.redhat.com/drepper/dsohowto.pdf - Ulrich Drepper: "What Every Programmer Should Know About Memory"
http://people.redhat.com/drepper/cpumemory.pdf - David Goldberg: "What Every Computer Scientist Should Know About Floating-Point Arithmetic"
http://www.physics.ohio-state.edu/~dws/grouplinks/floating_point_math.pdf - More Ulrich Drepper stuff: http://people.redhat.com/drepper/
- How to optimize DSOs
by identifying unused non-exported functions and data.
http://blog.flameeyes.eu/articles/2008/01/17/today-how-to-identify-unused-exported-functions-and-variables - A quite complete history of the UNIX family can be found here: http://www.levenez.com/unix/
- Unix Manual, first edition, 3 November 1971: http://cm.bell-labs.com/cm/cs/who/dmr/1stEdman.html
- John Graham-Cumming: Debugging Makefiles
http://newsletter.embedded.com/cgi-bin4/DM/y/e4Kd0G1ErD0FrY0E3FS0EZ - Binutils / ld documentation: Linker Scripts
- git ready - learn one git command at a time: http://gitready.com/
Standards:
- POSIX.1-2008, IEEE Std 1003.1™-2008, The Open Group Technical Standard Base Specifications, Issue 7: http://pubs.opengroup.org/onlinepubs/9699919799/mindex.html
- Linux Standard Base: http://refspecs.freestandards.org/lsb.shtml
- Single UNIX Specification, Version 3 (needs registration even for online viewing)
- Single UNIX Specification, Version 2
- PCI Bus Bindings - Standard for Boot Firmware:
http://playground.sun.com/1275/bindings/pci/pci2_1.pdf - International standardization working group for the programming language C: http://www.open-std.org/jtc1/sc22/WG14/
12.2.4. Network Programming
Books
- W. Richard Stevens: "TCP/IP Illustrated, Volume 1 - The Protocols", Addision Wesley, ISBN 0-201-63346-9
- Gary R. Wright, W. Richard Stevens: "TCP/IP Illustrated, Volume 2 - The Implementation", Addision Wesley, ISBN 0-201-63354-X
- W. Richard Stevens: "TCP/IP Illustrated, Volume 3 - TCP for Transactions", Addision Wesley, ISBN 0-201-63495-3
- W. Richard Stevens: "UNIX Network Programming, Volume 1 - Networking APIs: Sockets and XTI", 2nd ed., Prentice Hall, ISBN-0-13-490012-X
- W. Richard Stevens: "UNIX Network Programming, Volume 2 - Interprocess Communication", 2nd ed., Prentice Hall, ISBN-0-13-081081-9
Articles
- Linux Networking topics (like
NAPI,
GSO,
VLAN,
IPsec etc.):
http://linux-net.osdl.org/index.php/Main_Page
12.2.5. C++ programming
Books
- Scott Meyers: "Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)", Addison-Wesley, May 20, 2005, ISBN: 0321334876
12.2.6. Java programming
Books
- Joshua Bloch: "Effective Java -- Programming Language Guide", 2001, Addison Wesley, ISBN 0-201-31005-8, 250 pages
12.2.7. Internationalization And Character Sets
Articles
- Wikipedia article on UTF-8: http://en.wikipedia.org/wiki/UTF-8
- "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" by Joel Spolsky: http://www.joelonsoftware.com/articles/Unicode.html
- "UTF-8 and Unicode FAQ for Unix/Linux" by Markus Kuhn http://www.cl.cam.ac.uk/~mgk25/unicode.html
- Understanding Encodings:
http://foswiki.org/Development/UnderstandingEncodings
Detailed primer on character sets and encodings, especially in the context of web design
12.2.8. ARM Architecture Programming
Articles
- ARM atomic operations: http://www.jonmasters.org/blog/2012/11/13/arm-atomic-operations/
12.2.9. Power Architecture® Programming
Books
- Programming Environments Manual for 32-Bit Implementations of the PowerPC architecture: http://www.freescale.com/files/product/doc/MPCFPE32B.pdf
- IBM PDF file (600+ page book) on PowerPC assembly language: http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778525699600719DF2
- Power.org™ Standard for Embedded Power Architecture™ Platform Requirements (ePAPR): https://www.power.org/documentation/epapr-version-1-1/ (registration needed)
Articles
- Introduction to Assembly on the PowerPC: http://www-106.ibm.com/developerworks/library/l-ppc/?t=gr,lnxw09=PowPC
- IBM PDF compiler writers guide on PPC asm tuning etc.: http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6
- A developer's guide to the POWER architecture: http://www-128.ibm.com/developerworks/linux/library/l-powarch/index.html
- PowerPC EABI Calling Sequence: ftp://sourceware.redhat.com/pub/binutils/ppc-docs/ppc-eabi-calling-sequence
- PowerPC Embedded Application Binary Interface (32-Bit Implementation): ftp://sourceware.redhat.com/pub/binutils/ppc-docs/ppc-eabi-1995-01.pdf
- Developing PowerPC Embedded Application Binary Interface (EABI) Compliant Programs http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF77852569970071B0D6
- System V Application Binary Interface - PowerPC Processor Supplement: http://refspecs.freestandards.org/elf/elfspec_ppc.pdf
- Device Tree Wiki: http://devicetree.org/Main_Page
- Device Tree Usage: http://devicetree.org/Device_Tree_Usage
- Linux for PowerPC Embedded Systems HOWTO (very old):
http://penguinppc.org/embedded/howto/PowerPC-Embedded-HOWTO.html - Linux for PowerPC Embedded Systems HOWTO (old):
http://www.denx.de/twiki/bin/view/PPCEmbedded - Understanding MPC5200 Bestcomm Firmware: Posting on linuxppc-embedded@ozlabs.org mailing list (see also the mailing list archive entry), source code disasm.c for a disassember, and "SmartDMA Hand-Assembly Guides" document.
12.2.10. Embedded Topics
Articles
- Things you always wanted to know about NAND flash but never dared to ask: Micron Application Note
- The Inconvenient Truths of NAND Flash Memory (contains actual data for data-retention times): Micron Presentation
- The ultimate goal of Embedded C++ is to provide embedded systems programmers with a subset of C++ that is easy for the average C programmer to understand and use.
- Our contribution to the Darwin year 2009: Hardware designs that will not replicate: Topic in DENX Wiki
12.1. Application Notes | 1. Abstract | 12.3. Mailing Lists | |||
Prev | Home | Next | |||