Documente Academic
Documente Profesional
Documente Cultură
By
Er. Shishir
Adhikari
Discussion Topics
What is an embedded Operating System
Linux as an embedded OS
Building kernel
Tools and development
Who are the Embedded OS developers
Applications and products
The embedded OS market
Embedded OS Resources
What is an Embedded OS?
“computer system” that performs a
dedicated function or is designed
for use with a specific embedded
software application.
Embedded systems may use a ROM
based operating system or they
may use a diskbased system, like
a PC.
What makes a good Embedded OS?
Modular
Scalable
Configurable
Small footprint
CPU support
Device drivers
Why Linux as Embedded OS?
Royalty free licensing
Reliable IP stack and TCP/IP
Applications
Source code for the OS Kernel is Open
Source code for the Toolchains is Open
Why Linux as Embedded
OS?....
Multiple choices vs. sole source
Robust and reliable
Modular, configurable, scalable
Superb support for networking and
Internet
Large pool of skilled developers
Why Linux as Embedded
OS?....
It is very modular in nature,
since all features of the system
that are not needed for a
specific embedded system can be
removed from the kernel.
In addition, Linux has been
ported successfully to a large
number of processor
architectures, which allows it to
run on many different types of
Why Linux as Embedded OS?
Processors supported by Linux:
Intel 386 processors,
ARM,
CRIS (i.e. ETRAX 100LX from Axis
Communications),
Motorola 68000 series,
Sparc (Sun Workstations),
PowerPC, MIPS, s390 (mainframe)
and several others.
Things to consider while using
linux as Embedded OS
Which processors are supported by
linux?
What features are needed in the
kernel for the embedded system?
For example, Linux can be boot
from a ROM chip rather than SCSI
hard disk, CDROMs.
Device drivers to be included?
Things to consider while using
linux as Embedded OS
Require realtime features?
A realtime operating system is
one that has a guaranteed
response time to interrupts.
It is possible to convert Linux
into a realtime system however.
What is Real Time?
“A real time system is one in which
the correctness of the
computations not only depends
upon the logical correctness of
the computation but also upon the
time at which the result is
produced. If the timing
constraints of the system are not
Donald Gillies
met, system failure is said to
have occurred.”
What is Real Time?
“Real time in operating systems:
The ability of the operating
system to provide a required
level of service in a bounded
response time.”
POSIX Standard 1003.1
Hard vs. Soft Real Time
Hard
• where the operation must be
completed within the deadline,
and is valueless beyond this
deadline.
Soft
• Tasks completed after their
respective deadlines are less
important than those whose
deadlines have not yet expired.
Linux RealTime Extensions
In order to make Linux into a realtime
operating system, the kernel itself is
modified slightly so it can run as a
task under a realtime scheduling
process.
In this case, a developer has a choice
when creating software that handles
interrupt.
Standard Linux device driver(interrupt
response time is not guaranteed)
Building a Linux Kernel
First download the kernel source
code http://www.kernel.org/, or
ftp://ftp.kernel.org/
extract it (uncompress) so you
can build it /usr/src/linux
folder
cd /usr/src
tar xzvf <path>/linux
2.2.4.tar.gz
Building a Linux Kernel…..
Next select the options you would like
included into the kernel.
Run the 'make' command, followed by
either 'config' (textmode only),
'menuconfig' (text mode with menus), or
xconfig (XWindows configuration mode).
#make menuconfig
#make xconfig
#aptget install buildessential
(development tool for Nepalinux)
Go through all the menu choices
and enable or disable options and
device drivers as needed
/usr/src/linux/Documentation
folder and subfolders many
options and settings described
there.
Exit and save your settings.
These values are saved in a file
named '.config' in the /
usr/src/linux folder
Kernel Types
Kernel – monolithic or modular
Monolithic kernel – Linux device
drivers built into the kernel
itself. Automatically loaded with
kernel.
Modular kernel – Device drivers
can be built as modules. The
device driver will have to be
installed using scripts before
attempting to use the device.
For embedded systems, monolithic
kernel is preferred.
You should only include those
specific devices that you must
support to get the smallest
kernel available.
For example, if your embedded
device does not have network
cards, no need to include any
networking support at all in the
kernel.
Crosscompiler for different
Embedded Processor
Crosscompiler
Generates the opcodes for the
target processor, instead for the
processor running on your
computer.
Crosscompilers for almost all
processors supported by Linux are
available from the GNU
organization at
http://www.gnu.org/
Building kernel for the same
processor architecture
#make dep
This will scan all the source code and
header files, reads .config file and
updates various interdependencies
between kernel source code files and
options.
Then build the kernel itself
#make zImage (using gzip compression
algorithm)
#make bzImage (using bzip2)
The kernel will uncompress itself
on the fly when attempting to
boot.
This is done by adding a small
bit of 'uncompression' code to
the beginning of the kernel
itself.
During boot time, the kernel will
then extract the 'real' kernel
from the file to memory and
continue to boot.
The kernel image file – /
usr/src/linux/arch/<arch
type>/boot directory.
zImage or bzImage, depending on
which type of compression option
you selected.
Put on floppy, CDROM or Flash
ROM or other bootable device to
start running Linux.
Who are the Embedded OS developers?
Wind River Systems
– VxWorks
– pSOS
QNX Software Systems
– QNX
Green Hills Software
– Integrity
Who are the Embedded OS developers?
Mentor Graphics
– VRTX
Palm Computing
– PalmOS
Symbian
– SymbianOS
Microsoft
Embedded NT/XP
– “Realtime” control
Windows CE
– variation of Microsoft's Windows
operating system for minimalistic
computers and embedded systems.
– supported on Intel x86, MIPS, ARM,
and Hitachi SuperH processors.
Pocket PC 2002
– Handheld PC’s and PDA’s
Commercial Embedded Linux
AMIRIX Embedded Linux
– derived from Debian
Coollogic Coollinux
– combines Linux and Java for Internet apps
Coventive Xlinux
– kernel can be as small as 143KB
Esfia RedBlue Linux
– 400K, designed for wireless apps
Commercial Embedded Linux
KYZO Pizza Box Linux
– SAMBA based file, print, CD server
Lineo Embedix
– supports real time and high availability
apps
LynuxWorks BlueCat
– general purpose embedded solution
MontaVista Linux
– general purpose embedded solution
Commercial Embedded Linux
Neoware NeoLinux
– Red Hat derived for information appliances
PalmPalm Tynux
– Internet appliuance and multimedia
Red Hat Embedded Linux
– general purpose embedded solution
RedSonic RedIce Linux
– runs from DiskonChip or CompactFlash
Commercial Embedded Linux
RidgeRun DSP Linux
– for multimedia, wireless, RT on DSP
TimeSys Linux GPL
– low latency enhanced kernel
Tuxia TASTE
– distro targets Internet appliances
Vital Systems vLinux
– for ARM based embedded apps
Open Source Embedded Linux
Embedded Debian Project
– convert Debian to an embedded OS
ETLinux
– for PC104 SBC’s
uCLinux
– for microprocessors that don’t have MM
uLinux (muLinux)
– distro fits on a single floppy
Open Source Linux RTOS
ART Linux
real time extension based on RTLinux
KURT
event schedules with 10us resolution
LinuxSRT
for soft real time apps like
multimedia
Qlinux
provides Quality of Service
guarantees
RTAI
“hard” Real Time Application
Commercial Linux RTOS
ThinLinux a minimized Linux distribution
for dedicated camera servers, X10
controllers, MP3 players
FSMLabs Open RT Linux
Lineo Embedix Realtime
LynuxWorks BlueCat RT
REDSonic REDICE Linux
RTLinux
A “hard realtime” mini operating
system
runs Linux as it’s lowest priority
execution thread
Linux thread completely preemptible
Real time threads and interrupt
handlers never delayed by nonrealtime
operations
Supports user level programming
MiniRTL implementation fits on a floppy
What’s so special about Linux?
What CPU’s will it run on?
Intel X86
MIPS
ARM
StrongARM
PowerPC
Hitachi SuperH
Any Development Tools
Available?
QT/Embedded
Other GUI/Windowing toolkits
Arcom Control Systems
GNUPro Tools
Vendor specific
Standard Linux toolset
What’s It Being Used For?
Control and Monitoring
Applications
Industrial Controllers
TV Set Top Boxes (TiVO)
Handheld PDA’s
Automobile Computers
Telecomm and Networking Hardware
Myriad and sundry other uses...
Cyclades TS100
Netlinos OS
Dual 50MHz PowerPC
16MB SDRAM 4MB Flash
Ethernet/Serial/RS485
Size of a deck of cards
Sharp Zaurus
Lineo Embedix
206 MHz StrongARM
64 MB DRAM 16MB Flash
3.5” display (320x240)
64K colors
Opera browser & Qtopia
QT/Embedded GUI
TiVO Set Top Box
Home grown port of Embedded Linux
54MHz PowerPC
Multi GB hard disk
Axis 2120 Network Camera
uCLinux
Builtin Ethernet port
100 MHz ETRAX CPU
16 MB RAM
Humanoid Robots
Univ. of
Tokyo/Kawanda
Ind.
Dual Pentium CPU
RTLinux
Height: 53 inches
Weight: 121 lbs.
Isamu
Humanoid Robots
HOAP
Fujitsu
RTLinux
Height: 48 cm
Weight: 6 kg
100 units/yr
For Further Info
Web Sites
Blue Cat Linux at
http://www.lynuxworks.com/
Hard Hat Linux at
http://www.mvista.com/
RTLinux at
http://www.rtlinux.com/
ThinLinux at
http://www.thinlinux.com/
White Dwarf Linux at
http://www.emjembedded.com/linux/dimm
For Further Info
Web Sites
Linux Embedded at
http://linuxembedded.com/
LinuxDevices.com
http://www.linuxdevices.com/
Embedded Linux Consortium
http://www.embeddedlinux.org/index.p
All Linux Devices
http://alllinuxdevices.com/
For Further Info
Web Sites/Magazines
Dr. Dobbs Embedded Systems
http://www.ddjembedded.com/about/
Embedded Linux Journal
http://embedded.linuxjournal.com/
Embedded Systems Programming
http://www.embedded.com/mag.htm