Showing posts with label kernel. Show all posts
Showing posts with label kernel. Show all posts

Professional Linux Kernel Architecture (Wrox Programmer to Programmer) Review

Professional Linux Kernel Architecture (Wrox Programmer to Programmer)
Average Reviews:

(More customer reviews)
Are you looking to buy Professional Linux Kernel Architecture (Wrox Programmer to Programmer)? Here is the right place to find the great deals. we can offer discounts of up to 90% on Professional Linux Kernel Architecture (Wrox Programmer to Programmer). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Professional Linux Kernel Architecture (Wrox Programmer to Programmer) ReviewI picked up Mauerer's work on the bookish desire to keep my Kernel book library complete - and contrary to my hopes I was disappointed right from the introduction.
The book is 1337 pages long, which in itself is a negative and the leading reason for the low score - being clear (which the author is) should not come at the expense of being concise. All major areas of kernel architecture are covered, and the author often covers operating systems basics not found in such books, which partly explains (but hardly justifies) the bulk.
The kernel version covered in the book is 2.6.24, which is newer than that covered by Robert Love's book, which remains my recommendation regardless because of its pointedly zeroing in on the relevant bits, instead of exploring every single minutia along the way as Mauerer does here.
The book has merit for a bookworm such as myself, who will refer to it on a chapter basis, but is not the top choice for someone entering the subject anew.
For general use (i.e. where your bookshelf does not include every Linux kernel book ever published), Love's "Linux Kernel Development" (2nd ed) is a much better architectural introduction. If you miss operating system's basics, your first stop should be Tanenbaum's "Operating Systems Design and Implementation" (3rd ed) as well as his "Modern Operating Systems" (3rd ed) before you even think to start poking at the Linux kernel and get overwhelmed by the number of concepts you should have had previous familiarity with. Finally, if you are driven to the Linux kernel by device drivers, as is the most common case, Corbet, Rubini and Kroah-Hartman's "Linux Device Drivers" (3rd ed) definitely belongs on your shelf, although the very recent "Essential Linux Device Drivers" by Vekateswaran mounted the first credible threat to it in a decade, being both thorough and possibly tying Love for the spot as most enjoyable kernel book I have read to date - I would recommend a new device driver developer to go with both, possibly augmented by Love if more architectural knowledge is desired.
The bottom line is that this is a valiant effort, but that the author should have focused more. If you have the time to read thirteen-hundred pages, your time is better invested reading the titles above recommended, picking two or three depending on your exact focus in the subject - you will still be done faster than reading this one!Professional Linux Kernel Architecture (Wrox Programmer to Programmer) OverviewFind an introduction to the architecture, concepts and algorithms of the Linux kernel in Professional Linux Kernel Architecture, a guide to the kernel sources and large number of connections among subsystems. Find an introduction to the relevant structures and functions exported by the kernel to userland, understand the theoretical and conceptual aspects of the Linux kernel and Unix derivatives, and gain a deeper understanding of the kernel. Learn how to reduce the vast amount of information contained in the kernel sources and obtain the skills necessary to understand the kernel sources.

Want to learn more information about Professional Linux Kernel Architecture (Wrox Programmer to Programmer)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems Review

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems
Average Reviews:

(More customer reviews)
Are you looking to buy Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems? Here is the right place to find the great deals. we can offer discounts of up to 90% on Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems ReviewIf you are an accomplished or aspiring embedded systems programmer and resort to the "superloop" as your foremost implementation method, you absolutely MUST read this book.
While not new concepts to the industry, the concepts presented in Miro's book are certainly not commonplace in many of the embedded systems code I've seen over many years in the industry.
While UML makes for a clean, now defacto standard for presenting concepts, the real beauty in Miro's book is the use of a readily-available frameworks for immediately adopting the many lessons-learned and provided in the book. These complete, well written and excellently coded frameworks are available under the GPL and an alternate, low-cost license for those who wish to keep their code private.
For strong C programmers, the implementation of the frameworks is a delight as one reads through the code and is treated to an incredibly simple, lightweight and extremely powerful system that will forever put an end to your future plans to "superloop" again--albeit for any system where C (or C++) is adequately supported by the hardware. For anyone admitting that "we've always done superloop and it has always worked in the past," get ready for a real-time, highly responsive system that actually IS event driven and thrives in as little as a few bytes of RAM and perhaps a K of ROM.
For those who must hold on to the "superloop is king" mindset, consider the consequences of adding to your superloop an entirely new set of features and how that may affect the timing through your loop. I started with the "dining philosophers" example code discussed in the book and ported it to my own board (using a Renesas H8S-2166 microcontroller) and augmented the code to be responsive to external events (mechanical switches). This required software debouncing. While my "example" was somewhat "trivial" in terms of what the functionality actually did, it is, in my opinion, extremely typical of changing requirements of both new and legacy code in the day-to-day evolution of embedded systems programming.
My changes to the example code were to implement a "bike light" feature set. That is, whenever a switched was pressed, the bike light--if off--would illuminate. An LED on the board was used for this purpose. Pressed again, the light would blink. Pressed and held for 1 second while on or blinking, the light would turn off.
The typical implementation in superloop would often require a considerate approach to ensure that the new functionality was "injected" into the "right" part of the loop, so as to be of minimal impact to other areas of critical timing code. If any kind of action within the new code delayed the loop processing, then the whole of the superloop could come under further scrutiny and therefore cause more pain as one trials and tests system responsiveness on a number of potential new fronts.
Atop of this new functionality, the frameworks-provided QSpy code instrumentation system, which allows one to have a stream of information about the system states and transitions, was ported to use a UART on the H8S. Imagine adding all of this new functionality in a traditional superloop body of code. Now, imagine adding it in a matter of perhaps two hours using the frameworks AND not adversely impacting the "legacy" application code at all!
One of the most beautiful aspects of these frameworks is the ability to focus strictly on the code necessary for the task at hand instead of the entire system as a whole. The frameworks substantially frees the programmer from having to manually manage system responsiveness typical of the superloop.
Using UML to design and document an embedded system is relatively new to many embedded systems programmers. Miro also provides a free download stencil set for MS Visio for easily implementing statecharts, which should help those interested in pursuing the many benefits of the technology included in this book.
I first met Miro at a developer's conference in San Diego, CA. One thing that comes out in his book and his discussions of this exciting technology is his passion for it. I was very interested in it, as he was displaying his software running on a very resource constrained microcontroller--all in about 40 bytes of RAM or a bit less.
Drawn to his topic by his enthusiasm, I admired the frameworks even more as I began looking at the implementation and design of the code. The entire C bundle, with royalty-free 'private commerical use' license, one of either cooperative or preemptive schedulers (both are provided), event processor, code instrumentation support and more is all for under $2K. Of course, one may explore the entire frameworks for the cost of only a free download before ever making a licensing decision for a given product.
Combined with the low-cost solution of using such powerful frameworks in conjunction with learning the valuable content of this book, teams everywhere can exploit the years of experience and very robust, capable code in a matter of hours instead of weeks, months and even years of doing things the "old school" way using superloops and other facilities instead of truly event-driven designs.
This book and the free QF download are your entry into the 21st century of embedded systems programming. Because the code is provided in C, porting is rather easy and running on embedded systems and desktop systems is practical and easy. I was able to build and run the code as provided without modifications on my Linux, Mac and Windows systems and on the H8S and a Microchip PIC 24 with only a minimalist porting effort of about a half a day in each case. Imagine being able to run an entire real-time system that features excellent extensibility while freeing you from the rigors of managing superloop timing on your own hardware all within a few hours. Then, spend a couple of hours extending the system without impacting the rest of it? Lather, rinse, repeat...it is truly that simple and robust.
Best of all, this book will open your eyes to modern methods and concepts for programming event-driven embedded systems. That is, systems that respond to internal and external events that naturally occur in all embedded systems designs. It is my firm belief that after reading this book and exploring the code on your own, you'll discover why I so heartily endorse it and now share the passion Miro has for this wonderful, very lightweight but robust, complete solution for modern embedded systems programming.Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems OverviewPractical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language (UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open source, event-driven infrastructure, called QP that enables direct manual coding UML statecharts and concurrent event-driven applications in C or C++ without big tools.This book is presented in two parts. In Part I, you get a practical description of the relevant state machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques and state-machine design patterns, all illustrated with executable examples. In Part II, you find a detailed design study of a generic real-time framework indispensable for combining concurrent, event-driven state machines into robust applications. Part II begins with a clear explanation of the key event-driven programming concepts such as inversion of control ("Hollywood Principle"), blocking versus non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts. The lightweight QP event-driven infrastructure goes several steps beyond the traditional real-time operating system (RTOS). In the simplest configuration, QP runs on bare-metal microprocessor, microcontroller, or DSP completely replacing the RTOS. QP can also work with almost any OS/RTOS to take advantage of the existing device drivers, communication stacks, and other middleware. The accompanying website to this book contains complete open source code for QP, ports to popular processors and operating systems, including 80x86, ARM Cortex-M3, MSP430, and Linux, as well as all examples described in the book.*Focuses on core concepts rather than tools which are always changing allowing the reader to continue to use this information with various projects*Provides a complete, ready-to-use, open source software architecture for small and large embedded systems*Includes an extensive exampleusing the ARM Cortex-M3 throughout the book highlighting issues programmers and architects encounter in everyday life

Want to learn more information about Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...