20
Seminar Report On Embedded LinuxSubmitted By Mr. Vineet V. Rathi Department of INFORMATION TECHNOLOGY SIPNA SHIKSHAN PRASARAK MANDAL’S College of Engineering & Technology, Amravati Sant Gadge Baba Amravati University, Amravati. YEAR: 2010-2011_

Embedded Linux

Embed Size (px)

Citation preview

Page 1: Embedded Linux

Seminar Report

On

“Embedded Linux”

Submitted By

Mr. Vineet V. Rathi

Department of

INFORMATION TECHNOLOGY

SIPNA SHIKSHAN PRASARAK MANDAL’S

College of Engineering & Technology, Amravati

Sant Gadge Baba Amravati University,

Amravati.

YEAR: 2010-2011_

Page 2: Embedded Linux

Index

Abstract

Introduction

Embedded systems

Embedded Linux

Concept of Embedded Linux

Why choose Linux for Embedded Systems

Reasons for Linux

Implementation

Windows Equivalents on Linux

Embedded Linux distribution

Advantages/Disadvantages

Development in embedded Linux

Applications

Conclusion

Reference

Page 3: Embedded Linux

Abstract

An “embedded system” is any computer system or computing device that

performs a dedicated function or is designed for use with specific embedded

software application.

Embedded systems may use a ROM-based operating system or they may use a

disk-based system, like a PC. This paper covers the use of operating system in

embedded deign. Since the embedded system is dedicated to specific tasks;

design engineers can optimize it, reducing the size and cost of the product, or

increasing the reliability and performance. The absolute operating system for

this is “Linux”. The Linux operating system provides great opportunities in the

development of applications and technologies for the growing embedded

computing market.

Today Linux supports a very wide range of platforms, from Embedded Systems

based on ARM, PowerPC, Intel, and Hitachi microprocessors to name a few, all

the way up to workstations, servers, and clusters. It also served as a launch pad

for the open source movement, and consequently leads to great interest from

academia and business alike.

Page 4: Embedded Linux

Introduction

Embedded systems are everywhere around us. An embedded system is a

combination of hardware and software which can be fixed or programmable and

are designed for a particular system or a device.[2] Embedded systems may use

a ROM-based operating system or they may use a disk-based system, like a PC.

Since the embedded system is dedicated to specific tasks, design engineers can

optimize it, reducing the size and cost of the product, or increasing the

reliability and performance. The absolute operating system for this is “Linux”.

The Linux operating system was created by Linus Torvalds at the

University of Helsinki in 1991. [1] From its simple beginnings,

Linux has become one of the fastest growing platforms, with

thousands of developers worldwide. One of the main reasons for

the success of the Linux platform has been its development as an open source

project. It allows all code developed for the Linux to be used freely by others,

for personal or commercial use, and specifically disallows distribution of the

system without also having accompanying source code, including all Linux

modifications. Linux is fully featured, portable, and extremely versatile. It runs

on everything from PDAs to the largest Mainframes. Unlike traditional

proprietary software, Linux is developed by a multitude of developers across the

world.

Embedded Linux means using a Linux platform to design and implement these

Embedded Systems.

Embedded Linux systems are not truly real time systems. In a real time a given

operation is guaranteed to be completed in a given time period. Embedded

Linux Logo TUX

Page 5: Embedded Linux

Linux systems operate in a soft real-time or near real-time manner. It means

that it does not have an absolute completion time requirement or its completion

time is long enough that any operating system can meet it.

Linux can be modified to provide just about any level of real-time performance

desired

Embedded Linux is the use of a Linux operating system in embedded computer

systems such as mobile phones personal assistants phones, digital assistants,

media players and other consumer electronics devices equipment devices,

networking equipment, machine control, industrial automation, navigation

equipment and medical instruments. Automobiles, household appliances,

vending machines, PDA, cellular phones and almost everything these days that

has some intelligent are driven by some system embedded inside them. Linux

supports a very wide range of platforms, from Embedded Systems based on

ARM, PowerPC, Intel, and Hitachi microprocessors to name a few, all the way

up to workstations, servers, and clusters. It also served as a launch pad for the

open source movement, and consequently leads to great interest from academia

and business alike. [8]

The advantages of embedded Linux over other embedded operating systems

include no royalties or licensing fees, a stable kernel, a support base that is not

restricted to the employees of a single software company, and the ability to

modify and redistribute the source code. The disadvantages include a

comparatively larger memory footprint (kernel and root file system),

complexities of user mode and kernel mode memory access and complex device

driver’s framework.[3][4][8]

Page 6: Embedded Linux

Concept of Embedded Linux

The first operating systems for mobile phones and other mobile consumer

electronic devices were custom developed, which means they were expensive to

develop and maintain, as all hardware drivers and interfaces had to be written

from scratch in a low level programming language.[7]

Soon developers started to look for higher-level approaches that would facilitate

re-use of software components. A typical installation of embedded Linux

requires only about two megabytes, which was therefore a good candidate for

use as operating system of resource limited devices. Furthermore, Linux is

Open Source and therefore well suited as basis for standards.

A group of companies interested in the development of Linux products formed

The Embedded Linux Consortium (ELC) in order to promote Linux and

develop standards for the embedded computing markets. Standards are also

developed for managing power consumption of devices, designing user

interfaces, and real-time operation of embedded Linux software. One of the

results of this effort is the Embedded Linux Consortium Platform Specification

(ELCPS). Linux is making steady progress in the embedded arena. Because

Linux is covered under the GPL, anyone interested in customizing Linux to his

PDA, palmtop, or wearable device can download the kernel and applications

freely from the Internet and begin porting or developing. Many Linux flavors

cater to the embedded/realtime market.[4][8]

Page 7: Embedded Linux

Why choose Linux for Embedded Systems

Number No: 1 Reason. It’s FREE also Linux is the most cost efficient

OS in the world. And not only is it free, it also (typically) comes with

applications that would cost hundreds if not thousands of dollars.[11]

Security -Linux will keep your family safe from Malware and viruses

Ease of use- Linux is extremely easy to use. As Windows, you’ll be able

to work easily in Linux

Run fast.

Currently Linux is the most popular open source OS in the IT

community. Even Intel, IBM, HP and other very well known companies

are embarrassing the power of Linux and supporting its growing number

of developers worldwide[11][12]

The power of Linux combined with its support for wide range of

microprocessors, hardware devices, graphics card support, and

0 5 10 15 20 25

other

Its not from microsoft

Lots of programmers are familier

There are more drives and Tools

Linux has excellent networking support

Linux is more robust/reliable

No run time royalties

source code is free available

Reasons for wanting to use Linux for embedded systems

Page 8: Embedded Linux

communications protocols have made Linux as an increasingly popular

software platform for a vast array of Embedded projects and products

As the technology and the use of embedded devices grows, the need to

minimize cost and to keep up with the latest features that technology has

to offer becomes increasing difficult and expensive. To manage these

issues Embedded Linux becomes a highly desirable choice of technology

for the operating system due to its scalability, configurability and

affordability[13][14]

0 0.2 0.4 0.6 0.8 1

Other

Want OS source

it lets immediately fix OS bugs

its lets add functionality directly within OS

it facilitates debugging and troubleshooting the application

it represents "insurance"

it eliminates dependence on a single OS vender

It allows fully understanding what's going on inside the OS

Collaborative open source development produces superior S/w

What do you value most about using open source software in embedded applications?

Page 9: Embedded Linux

Implementation

An embedded Linux project requires both hardware and software on the

development machine and the target device. On the development side the

hardware would consist of a machine with all its required components; and

software would be the OS and other development tools such as programming

language packages, compilers and low level programming tools. For the

target device which is actually the embedded device itself the hardware is the

circuit board and software would be kernel, function libraries and specific

device drivers for the board.

Linux uses the file system to store and locate executable programs and

persistent data. Even system devices are referred to by special files in the file

system. A file system on some type of disk device is an integral part of the

Linux execution environment. [3] All operating systems require some

resource usage in order to operate. The main resource required is computer

memory. Some operating systems have a larger memory "footprint" than

others. In embedded systems where both RAM and ROM is a precious

resource, an operating system with too large a footprint must be ruled out.

Minimum system requirement for running embedded Linux is around 2 MB

Flash Memory and 4 MB RAM and a 100 MIPS or better processor. A 60

MHz Pentium performs 100 MIPS. A typical Linux kernel is 1.5 megabytes

uncompressed. RAM use by the kernel for a default configuration is over 4

megabytes. Linux also requires a file system for operation, and, if the

embedded system does not have a disk, this means more memory will be

used in the form of a RAM disk. That is why it is much more favorable to

use Linux compared to other embedded OS systems such as Microsoft

Windows OS which demand high system requirement and use up more

system resources. [3][4][8]

Page 10: Embedded Linux

The Linux Kernel

The Linux kernel provides support for memory management, process and thread

creation, interprocess communications mechanisms, interrupt handling, execute-

in-place ROM filesystems, RAM filesystems, flash management, and TCP/IP

networking. The Linux kernel provides a POSIX-compliant API to these

services. The directory structure of the kernel source tree separates architecture-

dependent code out from the core kernel services, allowing greater reliability

with known-working core algorithms, with calls to machine-specific code added

for particular platforms. Thus, adding support for specific device features is

fairly straightforward. This implementation methodology is also followed for

memory management, i/o, and driver designs, where the core kernel code

abstracts a model that allows implementation on differing architectures.

Memory Management

The kernel provides complete modern virtual memory services to applications

programs, including support for large address spaces, protection, demand

paging, memory mapping and shared virtual memory. While support for large

address spaces or demand paging may not seem important for embedded

systems designs, all of the modern 32-bit processor architectures support these

features, and Linux will allow growth in application complexity as hardware

costs are reduced without redesign or reimplementation. Memory protection

allows building systems that allow user-upgradeable or third-party applications

to be added to the system, without compromising the entire system. Shared

virtual memory support allows multiple copies of application’s code segments

to be shared across the system using less physical memory, as well as

implementation of more sophisticated schemes like high-speed direct

application framebuffer access for MPEG digital video players, for instance.

Page 11: Embedded Linux

Processes and Threads

Linux provides a relatively cheap process creation mechanism, which allows

memory-protected processes and threads to be created quickly for a variety of

uses. Recent embedded implementations provide soft real-time scheduling

services for applications programs. In most cases, these scheduling services

provide all that is required for applications requiring networking, i/o and

graphical services. Each process in Linux has its own table of open files and

virtual memory allocations, although files and memory can be shared between

processes.

Interprocess Communication

The kernel provides signals, pipes and sockets for communications between

applications. The signal mechanism allows user programs to be asynchronously

notified when a specified event occurs. Signals can be sent to single processes

or process groups. The pipe mechanism implements a full-duplex facility for

arbitrary byte i/o between processes.Linux sockets act just like file or pipe

descriptors but instead communicate to the networking subsystem. A

specialized type of socket, known as a local UNIX socket, allows

communications between local processes similar to the pipe mechanism but

using the networking system calls instead. Using a socket creation parameter,

processes communicating together on a local machine can be replaced by

processes communicating between two different machines, using the

networking system, without other architectural changes.

Interrupt Handling and Device Drivers

Linux provides sophisticated methods for interfacing the system with hardware.

The interrupt handling allows handling high-priority interrupts with interrupts

disabled, with scheduling of later “bottom-half” code to execute in kernel mode

after interrupts have been enabled and other higher-priority kernel tasks

completed. Adding support for a specific hardware device is implemented using

Page 12: Embedded Linux

a device driver, which may be linked into the kernel, or dymanically loaded as a

kernel loadable module. At system startup time, scanning for various hardware

options can be performed, and drivers loaded as required.

RAM/ROM File systems

The Linux kernel implements a virtual file system that allows the

implementation of various real filesystems accessible with a common interface.

Standard disk and network file systems are supported, along with filesystems

for ROM and RAM residence. A compressed ramdisk image for system startup

can reside linked with the Linux kernel, or copied from a compact flash card,

for instance. In addition, implementations for execute-in-place ROM

filesystems are becoming available. Read-only compressed filesystems can be

decompressed partially as required, resulting in fast boot times.

TCP/IP Networking

A very complete implementation of the standard TCP/IP networking protocol

suite, including TCP, UDP, IP, and ARP is found in the Linux kernel. In

addition, complete support for NFS, DNS, DHCP, PPP and SLIP is included by

applications programs. Linux’s networking support and configuration

customizability make Linux well suited for the mobile and Internet appliance

markets, where data communications is a key technology.

Page 13: Embedded Linux

Windows Equivalents on Linux

Many of the programs we used on Embedded Linux mobiles are either

ported, or have alternatives. Let’s have a look.

WINDOWS LINUX

Internetexplorer/browser Firefox/Mozilla/Konqueror

Microsoft office openOffice.org (Ooo), koffice

Windows Media Player Totem/mplayer/VLC/Amarok

GoogleTalk/Y! /MSN GAIM/Pidgin/Kopete

Limited to only 5 users infinite users

Nil Dynamic file system handlers

Easily breakable password high security can be achieved

Nil Language coding( C,C++,Java)

Linux has its working in six shells

/bin/sh (login-sh 3.1#)[15]

/bin/bash (working directory)

/sbin/nologin (can not login)

/bin/tcsh

/bin/csh (programming)

Bin/ksh /zsh (programming in java)[15][16][17]

Page 14: Embedded Linux

Embedded Linux distribution

A Linux distribution, often simply distribution or distro, is a member of the Linux family of

Unix-like operating systems comprising the Linux kernel, the non-kernel parts of GNU

operating system, and assorted other software. Because most of all kernel and software

packages are free and open source, Linux distributions have taken a wide variety of forms

from fully-featured desktop and server operating systems to minimal environments.[10]

1.Red Hat/Fedora Core

User level-Beginner to Advanced Server

Good points-Used to be very popular, easy to use, good installer

Bad points-Have some annoying quirks, RPM software packaging can suffer from dependency

problems, even with YUM system.

2.SuSE

User level -Beginner to Advanced/Server

Good points Good all rounder, good manuals & docs, masses of great software, brilliant

support. Enterprise version great for corporate use with business support.

Bad points-YAST Installer still relies on RPM system from RedHat which suffers from

dependency problems.

3.Debian

User level-Intermediate to Advanced

Good points- Very established Linux distributor. DEB packages combined with apt-get system

solve the tedium of the RPM software packaging in Red hat/SuSE/Mandriva.

Bad points-Traditionally known for being further behind than some other distros, but rock

solid!

4.Ubuntu

User level-Beginner to Advanced/Server

Good points -This relative newcomer the most popular of all the Linux Distributions currently.

It is built on a Debian core, but has a more regular release cycle, is more polished, is easy to use

and has major financial backing.

Bad points-It is a completely free distro, therefore copyrighted materials such as DVD playing

software do not come as standard with Ubuntu, you must download and install it separately.

Other Linux distributions or distros are:

PC Linux OS, Debian, Fedora, Mint, Slax, Mepis, Mandriva, CentOS, Linspire,[10]

Page 15: Embedded Linux

Advantages of Using Linux for Embedded Systems

It’s source code is completely open for everyone

It has the world's largest and most active Open Source development

community

Developers looking to run embedded systems with Linux have a wide

variety of choices, both commercial and noncommercial

Mature, proven, and still evolving rapidly[4]

Embedded Linux can be very small

It is a modular and configurable OS

There are many development tools available

No runtime royalties required

Does not require much system resource as the other OS does

Drawbacks of Using Linux for Embedded Systems

Ever system has its disadvantages likewise Linux is also not untouched

by this

Linux is great product, but it’s problem is that it is also Free

Hard to make money on something that is Free

There is no single governing body to overlook the Linux

developments

Lack of support from the hardware vendors[4]

Compatibility issues with other OS vendors

It can’t succeed greatly in the embedded markets unless its suppliers

can find ways to make money from it

Commercial software tools and integrated development environment

that allow user to configure and built applications for Linux can be

expensive due to lack to competition. [6]

Page 16: Embedded Linux

Development in embedded Linux

Linux is making steady progress in the embedded arena. Because Linux is

covered anyone interested in customizing Linux to his PDA, palmtop, or

wearable device can download the kernel and applications freely from the

Internet and begin porting or developing. Many Linux flavors cater to the

embedded/real-time market. These include RTLinux (Real-Time Linux),

uclinux (Linux for MMUless devices), Montavista Linux (Linux distributions

for ARM, MIPS, and PPC), and ARM-Linux (Linux on ARM), and others

Embedded Linux development broadly involves three tiers: the bootloader, the

Linux kernel, and the graphical user interface (or GUI). [3]

0

100

200

300

400

500

600

700

2000 2001 2002 2003 2004 20052006

2007

Growth in million dollars, 610

Growth in million dollars

Page 17: Embedded Linux

Embedded Linux Applications

The ROAD S101 is a Linux powered device.

ROAD stands for Remote Office Access Devices

it is powered with LINUX Kernel 2.6.x.[14]

MotorolaRAZR2[1]

Blackberry BOLD

Samsung st45-lg1[9]

Samsung Giorgio Armani Smartphone[9]

Page 18: Embedded Linux

Sprint phone[7]

Samsung omniaPro-b7330[9]

Neo Free Runner

Samsung reclaim[9]

Samsung bada mobile OS

Page 19: Embedded Linux

Conclusion

You should’ve got a fair idea about embedded Linux, open source. The

Linux operating system is well suited for use in the rapidly growing embedded

computing market. It’s technologically advanced, open source development

model, free availability and royalty free distribution make it an ideal choice for

future designs. The large developer environment and fast pace of contributions

ensure that Linux will meet the requirements of emerging embedded and mobile

applications for some time to come.

Page 20: Embedded Linux

References

Thanks to lot of websites on the internet.

[1] Evolution of Linux [PDF]

[2]Wikipedia/embedded systems

[3]Linux-embedded.com

[4]Linuxworks.com

[5]Redhat.com

[6]Ubunutu.com

[7] Alllinuxdevices.com

[8] embedded-linux.org

[9]Samsungeurop.com

[10]Linuxduro.com

[11]www.novell.com/linux

[12] www.centos.org

[13]www.eglug.org/community

[14] linuxdevices.com

Thanks to IIHT for providing very useful books

[15]RED HAT ENTERPRISE LINUX ESSENTIALS-RH033

[16]RED HAT ENTERPRISE LINUX ESSENTIALS-RH133

[17]RED HAT ENTERPRISE LINUX ESSENTIALS-RH253