© 2000 Morgan Kaufman
Overheads for Computers as Components
The embedded systems platform
Example: alarm clock
© 2000 Morgan Kaufman
Overheads for Computers as Components
Alarm clock interface
Alarm on Alarm off
Alarmready
settime
setalarm
hour minutelight
button
PM buzzer
© 2000 Morgan Kaufman
Overheads for Computers as Components
Operations
Set time: hold set time, depress hour, minute.
Set alarm time: hold set alarm, depress hour, minute.
Turn alarm on/off: depress alarm on/off.
© 2000 Morgan Kaufman
Overheads for Computers as Components
Alarm clock requirements
name alarm clockpurpose 24-hour digital clock with one alarminputs set time, set alarm, hour, minute, alarm on/offoutputs four-digit display, PM indicator, alarm ready, buzzerfunctions keep time, set time, set alarm, turn alarm on/off,
activate buzzer by alarmperformance hours and digits, no seconds; not high precisionmanufacturingcost
consumer product
power ACphysicalsize/weight
fits on stand
© 2000 Morgan Kaufman
Overheads for Computers as Components
Alarm clock class diagram
Lights* Display Mechanism
Buttons*
Speaker*
1 1 1 1
1
1
1
1
© 2000 Morgan Kaufman
Overheads for Computers as Components
Alarm clock physical classes
Lights*
digit-val()digit-scan()alarm-on-light()PM-light()
Buttons*
set-time(): booleanset-alarm(): booleanalarm-on(): booleanalarm-off(): booleanminute(): booleanhour(): boolean
Speaker*
buzz()
© 2000 Morgan Kaufman
Overheads for Computers as Components
Display class
Display
time[4]: integeralarm-indicator: booleanPM-indicator: boolean
set-time()alarm-light-on()alarm-light-off()PM-light-on()PM-light-off()
© 2000 Morgan Kaufman
Overheads for Computers as Components
Mechanism classMechanism
Seconds: integerPM: booleantens-hours, ones-hours: booleantens-minutes, ones-minutes: booleanalarm-ready: booleanalarm-tens-hours, alarm-ones-hours: booleanalarm-tens-minutes, alarm-ones-minutes: booleanscan-keyboard()update-time()
© 2000 Morgan Kaufman
Overheads for Computers as Components
Update-time behavior
update secondswith rollover
update hh:mmwith rollover
Rollover?T
F
PM=true PM=false
AM->PM PM->AM
display.set-time(current time)
Time >= alarm and alarm-on?
alarm.buzzer(true)
T
F
© 2000 Morgan Kaufman
Overheads for Computers as Components
Scan-keyboard behavior
compute button activations
alarm-ready=true
alarm-ready=false
alarm.buzzer(false)
Increment timetens w. rollover
and AM/PM
Increment timeones w. rollover
and AM/PM
save buttonstates
Alarm-on
Alarm-off
Set-time andnot set-alarmand hours
Set-time andnot set-alarmand minutes
© 2000 Morgan Kaufman
Overheads for Computers as Components
System architecture
Includes: periodic behavior (clock); aperiodic behavior (buttons, buzzer
activation).Two major software components:
interrupt-driven routine updates time; foreground program deals with buttons,
commands.
© 2000 Morgan Kaufman
Overheads for Computers as Components
Interrupt-driven routine
Timer probably can’t handle one-minute interrupt interval.
Use software variable to convert interrupt frequency to seconds.
© 2000 Morgan Kaufman
Overheads for Computers as Components
Foreground program
Operates as while loop:while (TRUE) {
read_buttons(button_values);
process_command(button_values);check_alarm();
}
© 2000 Morgan Kaufman
Overheads for Computers as Components
Testing
Component testing: test interrupt code on the platform; can test foreground program using a
mock-up.System testing:
relatively few components to integrate; check clock accuracy; check recognition of buttons, buzzer, etc.