LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Embedded & Single-board computer (https://www.linuxquestions.org/questions/linux-embedded-and-single-board-computer-78/)
-   -   Best beginners book on Embedded Linux (https://www.linuxquestions.org/questions/linux-embedded-and-single-board-computer-78/best-beginners-book-on-embedded-linux-893568/)

jaynoth1987 07-25-2011 01:25 AM

Best beginners book on Embedded Linux
 
I have no knowledge on Linux.....I have little knowledge on C++ only.....I want a beginners book on embedded linux which suits me....

paulsm4 07-25-2011 06:06 PM

Hi -

You don't need C++.

C, yes. C++, not necessarily.

Strong book recommendation:

Embedded Linux Primer, Christopher Hallinan

I own the 1st edition; I understand there's now a second edition available.

theNbomr 07-26-2011 10:59 AM

If you don't know 'generic' Linux, you will struggle with Linux in embedded systems. As in all things non-trivial, there are no short-cuts. If it was easy to jump in mid-stream and be productive, there wouldn't be a need for experts. There is a plethora of easy-to-get information on Linux and machinery on which to learn and play should be easily attainable.

--- rod.

Chris_vr 07-28-2011 04:19 AM

I am new in Embedded Linux.Can we Install Embedded Linux In PC?

I wanted to develop sample to learn c++ development on Embedded Linux.

If it not possible to Install embedded linux on PC. then Tell me the Alternate way to learn it.

theNbomr 07-28-2011 09:51 AM

There is really no 'Embedded Linux'. Using Linux on embedded systems (a very vague term in itself) is embedded Linux. Running Linux on a standard desktop or server (probably without a GUI) is as close to an embedded Linux environment as you will need for the purpose of training.
Using Linux in the embedded systems arena usually implies a knowledge of software development, especially hardware-specific aspects such as creating, installing and applying drivers and kernels. This often includes the use of a cross development toolchain, and an understanding of the infrastructure used to put object code into place on target systems. Embedded systems are frequently not equipped with resources satisfactory for native development, so cross development on bigger systems with more resources (disk, CPU & memory, primarily) is the norm. Usually, embedded systems work involves creation of target systems, but done using a separate and distinct development infrastructure. There is much to understand about this distinction.

Get a host (maybe even virtual host) on which to run a major Linux distro (I like Debian for software development). Acquaint yourself with the native development toolchain (compiler(s), linker, libraries, etc.) Practice building kernels and installing kernels. Learn what all of the scripts and configuration files that run from boot-up are for and start dissecting it to remove all of the stuff that is only used in a desktop or server environment. See how small your system can get. Look at some examples of small Linux distros such as Microcore Linux.

Doing the above will lead to a plethora of detailed questions and experience. If you are doing all of this on a full-time basis, expect to spend several months at least, before you start to become productive.

--- rod.

paulsm4 07-29-2011 12:21 PM

There are actually three different issues here:

* "Learning Linux"
<= How much/how little you need is a separate topic in itself

* Building a Linux-based embedded system
<= It's entirely possible the only "Linux" involved here might be just the kernel...
... in which case you don't need to know ANYTHING about "ls", "cat" or shell scripting

* Creating and using a development environment for your Linux-based embedded system
<= This could be Linux, Windows, ... Mac, or just about anything

Strong recommendation:

Buy one (or both) of these books:
Quote:

1. Embedded Linux Primer, Christopher Hallinan

2. Building Embedded Linux Systems, Karim Yaghmour, et al
Equally strong recommendation: consider using Linux as your development environment.

As I previously suggested :)


All times are GMT -5. The time now is 04:17 AM.