Professional Documents
Culture Documents
output analog
input analog
CPU
mem
embedded
computer
THE Application
Operating
System Graphics
Kernel Subsystems Scheduler I/O Manager
Hardware
Operating Graphics
System Subsystems Scheduler I/O Manager
Kernel
Network Device Graphics
Drivers Drivers Drivers
Hardware
brake brake
hydraulic
ABS
pump
brake brake
sensor sensor
]
TI*
2
[D
w ]
la
e
yr ar e
s
r
5/ w
o o
2 . ft
)
[ M
(~ so
1
*) Department of Trade and Industry, London
0 10 12 18 months
Assembly Language
Hardware invisible:
under the surface
Hardware
(procedural) structurally
disabled Hardware
architecture
component
design
system
integration
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 33
Top-down vs. Bottom-up
Top-down design:
startfrom most abstract description
work to most detailed
Bottom-up design:
work from small components to big system
Real design uses both techniques
Moving map
obtains position I-78
from GPS, paints
Scotch Road
map from local
database.
lat: 40 13 lon: 32 19
user
database interface
memory
panel I/O
database pixels
renderer
search
user
position timer
interface
comment
attributes
Display
class name
pixels
elements
menu_items
mouse_click()
operations
draw_box()
Derived_class
UML
generalization
Base_class
BW_display Color_map_display
Speaker Display
Multimedia_display
derived class
0 or more messages
m1:message
msg = msg1 ms1:message set
length = 1102
count = 2
m2:message
msg = msg2
length = 2114
transition
a b
<<signal>>
mouse_click a
leftorright: button
mouse_click(x,y,button)
x, y: position
b
declaration
event description
draw_box(10,5,3,2,blue)
c d
tm(time-value)
e f
found object
object highlighted
finish
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 75
Sequence Diagram
Shows sequence of operations over time
Relates behaviors of multiple objects
mouse_click(x,y,button)
which_menu(x,y,i)
time
call_menu(i)
lifeline
rcvr motor
power
supply
console
set-speed speed
(positive/negative)
set-inertia inertia-value (non-
negative)
estop none
:console :train_rcvr
set-inertia
set-speed
set-speed
estop
set-speed
command
1..n: command
:console :receiver
Train:
receive message
interpret message
control the train
1 1 1 1
Knobs* sender*
1
1..t
1 1
train
1 1 motor
receiver interface
1 1
1 controller 1
1 1
detector* pulser*
knobs* pulser*
train-knob: integer pulse-width: unsigned-
speed-knob: integer integer
inertia-knob: unsigned- direction: boolean
integer
emergency-stop: boolean
sender* detector*
panel motor-interface
speed: integer
train-number() : integer
speed() : integer
inertia() : integer
estop() : boolean
new-settings()
transmitter receiver
current: command
send-speed(adrs: integer, new: boolean
speed: integer)
send-inertia(adrs: integer, read-cmd()
val: integer) new-cmd() : boolean
set-estop(adrs: integer) rcv-type(msg-type:
command)
rcv-speed(val: integer)
rcv-inertia(val:integer)
formatter
current-train: integer
current-speed[ntrains]: integer
current-inertia[ntrains]:
unsigned-integer
current-estop[ntrains]: boolean
send-command()
panel-active() : boolean
update-panel()
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 100
Formatter Class Description
Formatter class holds state for each train,
setting for current train
The operate() operation performs the
basic formatting task
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 101
Control Input Cases
Use a soft panel to show current panel
settings for each train
Changing train number:
must change soft panel settings to reflect
current trains speed, etc.
Controlling throttle/inertia/estop:
read panel, check for changes, perform
command
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 102
Control Input Sequence Diagram
:knobs :panel :formatter :transmitter
change in read panel
change in change in speed/
control panel-active
train number inertia/estop
new-settings
set-knobs
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 103
Formatter Operate Behavior
update-panel()
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 104
Panel-active behavior
T current-train = train-knob
panel*:read-train() update-screen
changed = true
F
T
panel*:read-speed() current-speed = throttle
changed = true
F
... ...
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 105
Controller Class
controller
current-speed: integer
current-inertia: unsigned-integer
set-speed(integer)
set-inertia(integer)
new-speed(integer)
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 106
Setting the Speed
Dont want to change speed
instantaneously
Controller should change speed gradually
by sending several commands
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 107
Set-Speed Sequence Diagram
:receiver :controller :motor-interface :pulser*
new-cmd
cmd-type
rcv-speed new-speed set-pulse
set-pulse
set-pulse
set-pulse
set-pulse
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 108
Refined Command Classes
command
type: 3-bits
address: 3-bits
parity: 1-bit
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 109
Summary
Separate specification and programming
Small mistakes are easier to fix in the spec
Big mistakes in programming cost a lot of
time
You cant completely separate
specification and architecture
Make a few tasteful assumptions
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 110
Useful Links
http://www.uml.org/
Official UML resource page
You will find many good links here
http://www.raba.com/~jcstaff/oodev/presents
/uml/intro_uml/
A pretty good introduction to UML
http://www.softdocwiz.com/UML.htm
UML Dictionary
http://uml.tutorials.trireme.com/
A relatively complete UML tutorial
Module-1 Embedded Computing Embedded System Design - NTHU EOS Lab 111