FRIENDz

FAILURE IS THE SIGN OF SUCCESS!!

Emulator for Embedded Linux


Target Emulation and Virtual Machines
Virtualization is a mature technology that lets several operating systems share the physical resources of a machine, such that that each thinks it has exclusive use of the resources. Emulation means that a program impersonates another—or, in this case, that a processor impersonates another. Cygwin is software that emulates a POSIX system on a Windows machine.
However, when you’re emulating a processor different than the host, you have fewer options. Emulating a different processor requires software that, in effect, translates the op-codes of the emulated processor into the op-codes for the host processor.

Real Time Configuration for Embedded System


Real Time
A system is real time when timeliness is a dimension of correctness; that means a correct answer delivered late is the same as an answer that has never been delivered. Real-time systems abound in the real world. To a degree, all systems are real time, because they have real-world deadlines: an airline ticketing program needs to issue tickets before the plane leaves, for example.

Real-time systems that can tolerate missing an occasional deadline, with a reduction in
performance or quality of output, are known as soft real-time systems.
On a hard real-time system, a missed deadline has serious consequences: when a deadline is missed, a saw may cut at the wrong angle; or a flow-control valve may not close, resulting in flooding.

Application Development Environment on Linux


Configuring the Application Development Environment
 
Embedding Python
To use Python in an embedded project, you must build the Python virtual machine for the target. That virtual machine is built with a cross-compiler. To build Python, you need a cross-compiler built as explained in the previous chapter with the glibc library, but you can’t use the uClibc C library to build the Python virtual machine. First, obtain and download the source code:

$ wget http://www.python.org/ftp/python/<version>/Python-<version>.tgz
$ tar xzf Python-<version>.tgz

Installing BusyBox on Linux


BusyBox
BusyBox is an open source project that is a key part of many embedded systems. It supplies limited functionality implementations of most of the command-line executables found on a desktop Linux system; BusyBox calls these applets. What the applets lack in functionality is more than compensated for in their size: a complete, full-featured BusyBox system weighs in at 1.5MB and can be much smaller when unused applets are dropped.
Download the Software
The BusyBox project resides at www.busybox.net, and the www.busybox.net/download.html page contains a history of releases and any follow-on patches. As an example, you’ll use the 1.14.1 release on this page, but understand that the release will be different by the time this book makes it to press:

Booting the Board in embedded system


Booting the Board
The Boot Loader
A boot loader isn’t unique to Linux or embedded systems. It’s a program first run by a computer so that a more sophisticated program can be loaded next. In a Linux system, two boot loaders usually run before the Linux kernel starts running. The code also populates a data structure that you can view by doing the following after the system is up and running:

How to Configuring the Software Environment for an embedded Linux (Debian)


Configuring the Software Environment for an embedded Linux
The development environment is used for the following tasks:

 Booting the board: An embedded development board needs some special services
in order to get started. When it’s up and running, if the board contains an Ethernet
port (most do), you can telnet or ssh to the board. During the development cycle,
it’s recommended that the serial console be active as a backup communication
method in case the board can’t be reached over the network.

Configuring and building the Linux kernel: Most boards, although powerful, can’t
be used to compile the kernel. The memory and/or processing power isn’t
adequate. The development host is used to configure and compile the kernel and
get it ready for use by the board.

Software Environment for Linux


Configuring the Software Environment (RPM PACKAGE)
The development environment is used for the following tasks:

 Booting the board: An embedded development board needs some special services
in order to get started. When it’s up and running, if the board contains an Ethernet
port (most do), you can telnet or ssh to the board. During the development cycle,
it’s recommended that the serial console be active as a backup communication
method in case the board can’t be reached over the network.

Configuring and building the Linux kernel: Most boards, although powerful, can’t
be used to compile the kernel. The memory and/or processing power isn’t
adequate. The development host is used to configure and compile the kernel and
get it ready for use by the board.