Title: Lecture 1. What is Embedded System?
1ECM586 Special Topics in Embedded Systems
Lecture 1. What is Embedded System?
Prof. Taeweon Suh Computer Science
Education Korea University
2Embedded Systems
- Embedded System is a special-purpose computer
system designed to perform one or a few dedicated
functions -- Wikipedia - In general, it does not provide programmability
to users, as opposed to general purpose computer
systems like PC - Embedded systems are virtually everywhere in your
daily life
3Embedded Systems (Cont)
- Even though embedded systems cover a wide range
of special-purpose systems, there are common
characteristics - Low cost
- Should be cheap to be competitive
- Memory is typically very small compared to a
general purpose computer system - Lightweight processors are used in embedded
systems - Low power
- Should consume low power especially in case of
portable devices - Low-power processors are used in embedded systems
4Embedded Systems (Cont)
- High performance
- Should meet the computing requirements of
applications - Users want to watch video on portable devices
- Audio should be in sync with video
- Gaming gadgets like playstation should provide
high performance - Real-time property
- Job should be done within a time limit
- Aerospace applications, Car control systems,
Medical gadgets are critical in terms of time
constraint Otherwise, it could lead to
catastrophe such as loss of life - Will talk more about this
5Embedded Systems (Cont)
- It is challenging to satisfy the characteristics
- You may not be able to achieve high performance
while maintaining low power consumption and
making use of cheap components - So, you got to do your best in a given
circumstance to be competitive in the market
6HW/SW Stack of Embedded Systems
- Almost identical to the general-computer systems
7Components of Embedded Systems
- Hardware
- It is mainly composed of processor (1 or more),
memory, I/O devices including network devices,
sensors etc.
8Components of Embedded Systems
- Software
- System software
- Operating systems
- Many times, a multitasking (multithreaded) OS is
required, as embedded applications become
complicated - Networking, GUI, Audio, Video
- Processor is context-switched to process multiple
jobs - Operating system footprint should be small enough
to fit into memory of an embedded system - In the past and even now, real-time operating
systems (RTOS) such as VxWorks or uC/OS-II have
been used because they are light-weighted in
terms of memory requirement - Nowadays, little heavy-weighted OSs such as
Windows-CE or embedded Linux (uClinux) are used,
as embedded processors support computing power
and advanced capabilities such as MMU (Memory
Management Unit) - Device drivers for I/O devices
9Components of Embedded Systems (Cont)
- Software (cont.)
- Application software
- Run on top of operating system
- Execute tasks that users wish to perform
- Web surfing, Audio, Video playback
10Real-Time System
- Real-time operating system (RTOS)
- Multitasking operating system intended for
real-time applications - RTOS facilitates the creation of real-time
systems - RTOS does not necessarily have a high throughput
- RTOS is valued more for how quickly and/or
predictably it can respond to a particular event - Hard real-time systems are required to complete a
critical task within a guaranteed amount of time - Soft real-time systems are less restrictive
- Implementing real-time system requires careful
design of scheduler - System must have priority scheduling
- Real-time processes must have the highest
priority - Priority inheritance (next slide)
- Solve the priority inversion problem
- Process dispatch latency must be small
11Priority Inversion Problem
- Pathfinder mission on Mars in 1997
- Used VxWorks, an RTOS kernel, from WindRiver
- Software problems caused the total system resets
of the Pathfinder spacecraft in mission - Watchdog timer goes off, informing that something
has gone dramatically wrong and initiating the
system reset
12Priority Inversion Problem
- VxWorks provides preemptive priority scheduling
of threads - Tasks on the Pathfinder spacecraft were executed
as threads with priorities that were assigned in
the usual manner reflecting the relative urgency
of these tasks.
Task 1 tries to get the semaphore
Task 1 gets the semaphore and execute
Task 1 preempts Task3
Priority Inversion
Task 1 (highest priority)
Task 2 (medium priority)
Task 2 preempts task 3
Task 3 (lowest priority)
Task 3 is resumed
Time
Task 3 gets semaphore
Task 3 is resumed
Task 3 releases the semaphore
13Priority Inheritance
- A chain of processes could all be accessing
resources that the high-priority process needs - All these processes inherit the high priority
until they are done with the resource - When they are finished, their priority reverts to
its original value
Task 1 tries to get the semaphore (Priority of
Task 3 is raised to Task 1s)
Task 1 preempts Task3
Task 1 completes
Priority Inversion
Task 1 (highest priority)
Task 2 (medium priority)
Task 3 (lowest priority)
Time
Task 3 gets semaphore
Task 3 is resumed with the highest priority
Task 3 releases the semaphore
14Operating Systems for Embedded Systems
- RTOSs
- pSOS
- VxWorks
- VRTX (Versatile Real-Time Executive)
- uC/OS-II
- Palm OS (source Wikipedia)
- Embedded operating system initially developed by
U.S. Robotics-owned Palm Computing, Inc. for
personal digital assistants (PDAs) in 1996 - Symbian OS (source Wikipedia)
- Proprietary operating system designed for mobile
devices by Symbian Ltd. - A descendant of Psion's EPOC and runs exclusively
on ARM processors - Android
- Open Handset Alliance Project
- Based on Linux 2.6 kernel
- http//code.google.com/android/
15Operating Systems for Embedded Systems
- Windows CE (WinCE) (source Wikipedia)
- Microsoft's operating system for minimalistic
computers and embedded systems - WinCE is a distinctly different operating system
and kernel, rather than a trimmed-down version of
desktop Windows - Embedded Linux (uClinux, ELKS, ThinLinux)
(source Wikipedia) - The use of a Linux operating system in embedded
computer systems - According to survey conducted by Venture
Development Corporation, Linux was used by 18 of
embedded engineers - Embedded versions of Linux are designed for
devices with relatively limited resources, such
as cell phones and set-top boxes - Due to concerns such as cost and size, embedded
devices usually have much less RAM and secondary
storage than desktop computers, and are likely to
use flash memory instead of a hard drive - Since embedded devices are used for specific
purposes rather than general purposes, developers
optimize their embedded Linux distributions to
target specific hardware configurations and usage
situations - These optimizations can include reducing the
number of device drivers and software
applications, and modifying the Linux kernel to
be a real-time operating system - Instead of a full suite of desktop software
applications, embedded Linux systems often use a
small set of free software utilities such as
busybox, and replace the glibc C standard library
with a more compact alternative such as dietlibc,
uClibc, or Newlib.
16FAQ Linux in Embedded Systems?
- Is Linux too large?
- Linux is highly modular and has an excellent
component selection mechanism - Based on your system configuration, you can
choose only the components needed - How about memory requirement?
- A minimal working embedded Linux system with
networking and file system support need around
4MB of SDRAM and 2MB of flash - Is Linux real-time enough?
- A lot of work going on in the embedded Linux area
to enable real-time - Enhancements are in the form of a preemptive
kernel or real-time-capable scheduler
17uClinux
- A port of Linux to systems without a Memory
Management Unit (MMU) - http//www.uclinux.org/
- BTW, whats MMU? Lets stop here to review MMU
- MMU Memory Management Unit
- MMU is an essential hardware component to
support/implement virtual memory - MMU provides a fast translation from virtual
address to physical address - Otherwise, the translation from virtual address
to physical address will slow down the execution
of your applications a lot
18Virtual Memory
- Modern operating systems (such as Windows and
Linux) adopt virtual memory - Virtual memory
- Give an application program the impression that
it has a contiguous memory space (virtual address
space) - In fact, it may be physically fragmented and may
even overflow on to disk storage - Separate logical memory from physical memory
- Main memory acts as a cache for the secondary
storage - Typically main memory is managed on a page basis
- A page size is typically 4KB
19Memory Subsystem in Computer
- MMU translates from virtual address to physical
address - Operating system creates page tables
- TLB (Translation Lookaside Buffer) inside MMU
caches recently used page table entries
Hard Disk (320GB)
Core 2 Duo E6600
Virtual Space
Main Memory (2GB DDR2)
L2 Cache (4MB)
Physical address
CPU core
Virtual address
MMU
L1 Cache (32KB)
TLB
Note that the same thing applies to embedded
processors such as ARM
20Visualizing Virtual Memory
Hard disk
CPU
Hello world
Virtual memory Space
3
3
2
2
1
1
0
0
Virtual (linear) address
CPU core
Physical address
MMU
MS Word
3
0xF
1
0x39
1
9
0
1
Windows XP
3
0x4F
2
1
3
0
2
1
0
21uClinux
- Okay, we came back here
- Soit is almost impossible to support real-time
property with virtual memory - Paging in and out takes a huge amount of time
- BTW, embedded systems generally do not have hard
disk though - Instead, flash memory is used many times
- Will uClinux work on a system with an MMU though?
- uClinux is a set of patches for Linux to allow it
to run on systems without an MMU - It does not remove any of the support for systems
with an MMU, so you can still use your uClinux
kernel source on systems with an MMU. - Some portions of the uClinux patches are uClinux
specific. - For example, the flat file loader is unlikely to
compile/work on a system with an MMU. But this is
the exception rather than the rule. - It is possible to port uClinux to systems with
MMU but run with the MMU disabled, in this case
the system will behave just like a true uClinux
system - Source http//www.ucdot.org/article.pl?sid03/03/
24/2353251modethread
22uClinux
- uClinux has been ported to many microcontrollers
- ARM7TDMI (ARM)
- Dragonball, ColdFire, 68K Derivatives, QUICC
(Motorola) - Blackfin (ADI)
- i960 (Intel)
- Microblaze (Xilinx)
- V850E (NEC)
- I myself dont know much about uClinux
- Id like you guys to dig into the source code ,
hack it, and join the uClinux community! - Anyway, we are going to use uClinux for Labs