Slashdot Mirror


Embedded Linux Primer

s1axter writes "Embedded system development is crucial in this day of high tech specialized appliances and devices. However much of the knowledge of embedded development resides in the heads of engineers who have been doing it for years. The hardware aspect of embedded systems is now available to the smaller startup companies, however many specialized, proprietary operating systems are not. This is where Linux and the book Embedded Linux Primer: A Practical Real-World Approach enters. Embedded Linux Primer is written to introduce engineers and designers to using the Linux operating systems for embedded applications." Read on for s1axter's review. Embedded Linux Primer author Christopher Hallinan pages 537 publisher Prentice Hall rating 9 reviewer s1axter ISBN 0-13-167984-8 summary A Practical Real-World Approach to Embedded Linux Prentice Hall's Embedded Linux Primer by Christopher Hallinan was published September 18th, 2006 as part of their Open Source Software Development Series. Very much like a textbook, Embedded Linux Primer is very informative and an excellent source of information for an engineer looking to enter or move to the embedded Linux field. The text is a decent size, with 537 pages spanning 17 chapters and 6 appendices; it retails for around $45 USD.

I had some reservations on reviewing a detailed technical book since most of the ones I have are dry and have a very segmented structure. However after taking a look at the sample chapter, chapter 7 "Bootloaders", available on the Prentice Hall website along with the table of contents for the text I figured I would give it a look and I am very glad I did.

Many technical books focus on a specific demographic in the technology world, mostly beginners or professionals expanding their knowledge base. I was quite pleased to see this text is written for both professional developers and emerging embedded engineers.

Professional engineers will find the text informative on the Linux operating system and how flexible it is to implement on even the most custom hardware. The author understands that a large number of embedded system engineers work with proprietary systems and explains items that might be new and different than these systems. For example Chapters 4-6 detail the Linux boot sequence and describe common pitfalls engineers new to the embedded Linux methodology might make. Chapters 8-11 dive further into the operating system and explain device driver creation, the important file system and how Linux handles volatile and non-volatile memory systems using the MTD subsystem.

Engineers starting in the field of embedded systems will find information on what an embedded system is in Chapter 1, processor and board comparisons in Chapter 2 and setting up an embedded environment for development in Chapter 12.

It is quite obvious throughout the text the author has an extensive in depth understanding of embedded systems and the inner workings of the Linux operating system. With such a deep understanding of the material an author many times explains items in such detail it clouds the mind of the reader. The first line in Chapter 2 says (paraphrasing) that the best way understand something is to understand the 'big picture' . This is exactly the approach the author takes through out the text, first explaining the theory and high level aspect of the system, then diving into the detail of how it is done on the low level. Also, rather than get sidetracked in chapters by explaining every processor attribute or software package, the author suggests external sources mid-text and in the "Suggestions for Additional Reading" at the end of each chapter.

For the first edition of a book, Embedded Linux Primer is rather complete, with the only exception being chapter 8, Device Driver Basics, which is...well, rather basic. I started the chapter expecting to finish with a detailed understanding of how the Linux kernel processes driver requests and a look into some common drivers. This is not the case; for a second edition of this text I would suggest beefing up this chapter to provide more of an insight into kernel-driver interaction.

Overall Embedded Linux Primer is an excellent source of information for both the seasoned professional and aspiring embedded engineer. I know that when I dive fully into the world of embedded Linux this book will have a permanent place on the bench right next to the spec sheets.

s1axter is the main poster for Geeksinside.com, which is a hardware hacking, technology blog that showcases projects, reviews and technical links.

You can purchase Embedded Linux Primer from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

8 of 59 comments (clear)

  1. Re:Why worry about embedded driver development? by tzanger · · Score: 3, Informative

    If you want to chase driver development, read Linux Device Drivers, by O'Reilly. It's IMHO the definitive book, and works just the same for embedded Linux. A single chapter in an embedded how-to book could hardly be expected to capture everything you'd need.

    I didn't like this book; it stuck to basic network, char and block devices, and while it provided a good deal of detail on these, it completely avoided actual hardware interfacing: PCI (e/x too), PCMCIA, USB, basic memory/interrupt allocation, etc. Unfortunately, those are the trickier bits to driver writing.

  2. Device Drivers issue by MrCopilot · · Score: 3, Informative
    Device Driver Basics, which is...well, rather basic. I started the chapter expecting to finish with a detailed understanding of how the Linux kernel processes driver requests and a look into some common drivers

    Detailed understanding requires a whole bookshelf, and several years hacking away at a couple of drivers, but here is a good start.
    http://lwn.net/Kernel/LDD3/

    --
    OSGGFG - Open Source Gamers Guide to Free Games
  3. elinux.org by embill · · Score: 4, Informative

    Great review and great book. Just wanted to also point out that http://www.elinux.org/ (a site I edit) is a fantastic wiki for information regarding embedded linux and it's only getting better. We recently merged content from elinux.org (the original) and the CELF Public Wiki. Also, the wiki will be relaunched officially at OLS.

  4. Re:HW recommendations? by JustForMe · · Score: 3, Informative

    You are better off the other way around. Pick your developer kit (based on the processor, memory, peripherals etc.). Then pick any RTOS that has support for the processor. This way, you can skip learning the boot code for the processor (or, what they call the board support package). If you plan to go with Embedded linux, I would recommend to go through a boot loader like U-BOOT. If U-BOOT supports the processor on your developer kit, you are good to go. Assuming you can get the cross compiler (build tools) for building linux image for the processor. Enjoy :)

  5. Re:Embedded by belphegore · · Score: 2, Informative

    The gumstix is smaller. At 80x20x6mm the gumstix is 9600 cubic mm. The picotux at 35x19x19mm is 12635 cubic mm, or more than 30% larger than a gumstix. It's also not a linux device, but rather a uclinux device, which is not the same thing.

  6. Re:HW recommendations? by wellingj · · Score: 2, Informative

    I recommend Gumstix for beginners.
    It uses U-Boot and the whole uClibc BusyBox Buildroot stack for development.
    It is rather slick to work with. They even added support for the rt patch not too long ago which was a big bonus for me.
    I've been working with it for about a year now and I have to say it's really the best solution for embedded Linux beginners.

  7. Good Embedded Linux Starter Kit by az1324 · · Score: 2, Informative

    Atmel has put out a nice and cheap (80 bucks!!) kit called NGW100 for developing embedded linux devices on their AVR32 series. There is a lot of open community support around it and it seems like a great place to start. I've been thinking about getting into embedded linux for a while.

  8. Am reading the book now by iksrazal_br · · Score: 2, Informative

    I'm on a project building a router using the freescale mpc8548e on a custom board - a pretty powerful processor for embedded work. This is my first embedded project, though I'm a long time linux user and had an early career doing primarily electronics work.

    This book is uneven, but largely its a good book. The bootloader chapters are a very good intro - it even has a porting section going into the ppc assembly part of u-boot. The init sections of the kernel are also a good intro. The chapter describing gdb and kernel debugging is good, as I learned several tricks using macros with gdb that I think will help me a lot. Lots of tools like cpp are explained that I didn't know about.

    However, where it comes short is that I still really need help with early debugging the bootloader and kernel init using the bdi-2000 (a hardware debugger that connects to the jtag interface that most boards have). It barely mentions the bdi-2000, which is a fundamental tool as its pretty much the only way to debug very early booting problems when porting.

    I also think the flash section has too much of a jffs2 focus, and not ext2 focused to match most users. The driver section is very module focused and so bare it could be omitted.

    Overall, I'm happy with the book in that it does have a lot of info that I haven't found elsewhere. It really convinced me I need to read the manuals of my hardware more as there is no alternative. The book has helped, and I think its a great intro.