Practical UML statecharts in C/C++: event-driven programming for embedded systems
The shear volume of embedded code produced by programmers demands a unified language and framework to create efficient and maintainable systems. UML (unified modeling language) statecharts are a practical way in which to create this framework. This text is a guide to UML.
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Amsterdam [u.a.]
Elsevier, Newnes
2009
|
Ausgabe: | 2. ed. |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Zusammenfassung: | The shear volume of embedded code produced by programmers demands a unified language and framework to create efficient and maintainable systems. UML (unified modeling language) statecharts are a practical way in which to create this framework. This text is a guide to UML. |
Beschreibung: | Previous ed.: Lawrence, Kan. : CMP Books, c2002 Includes bibliographical references (p. [693]-697) and index |
Beschreibung: | XXXI, 712 S. Ill., graph. Darst. 24 cm |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV035244008 | ||
003 | DE-604 | ||
005 | 20120119 | ||
007 | t | ||
008 | 090113s2009 ad|| |||| 00||| eng d | ||
015 | |a GBA848302 |2 dnb | ||
020 | |z 9780750687065 (pbk.) |9 978-0-7506-8706-5 (pbk.) | ||
020 | |z 0750687061 (pbk.) |9 0-7506-8706-1 (pbk.) | ||
035 | |a (OCoLC)214307694 | ||
035 | |a (DE-599)BVBBV035244008 | ||
040 | |a DE-604 |b ger |e rakwb | ||
041 | 0 | |a eng | |
049 | |a DE-Aug4 |a DE-M347 |a DE-83 |a DE-859 |a DE-739 | ||
050 | 0 | |a QA76.9.S88 | |
082 | 0 | |a 005.117 |2 22 | |
084 | |a ST 153 |0 (DE-625)143597: |2 rvk | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
100 | 1 | |a Samek, Miro |e Verfasser |4 aut | |
245 | 1 | 0 | |a Practical UML statecharts in C/C++ |b event-driven programming for embedded systems |c Miro Samek |
250 | |a 2. ed. | ||
264 | 1 | |a Amsterdam [u.a.] |b Elsevier, Newnes |c 2009 | |
300 | |a XXXI, 712 S. |b Ill., graph. Darst. |c 24 cm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Previous ed.: Lawrence, Kan. : CMP Books, c2002 | ||
500 | |a Includes bibliographical references (p. [693]-697) and index | ||
520 | 3 | |a The shear volume of embedded code produced by programmers demands a unified language and framework to create efficient and maintainable systems. UML (unified modeling language) statecharts are a practical way in which to create this framework. This text is a guide to UML. | |
650 | 4 | |a System design | |
650 | 4 | |a Computer software / Development | |
650 | 4 | |a Formal methods (Computer science) | |
650 | 4 | |a Statecharts (Computer science) | |
650 | 4 | |a UML (Computer science) | |
650 | 4 | |a Object-oriented programming (Computer science) | |
650 | 4 | |a Computer software |x Development | |
650 | 4 | |a Formal methods (Computer science) | |
650 | 4 | |a Object-oriented programming (Computer science) | |
650 | 4 | |a Statecharts (Computer science) | |
650 | 4 | |a UML (Computer science) | |
650 | 0 | 7 | |a UML |0 (DE-588)4469781-8 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a C |g Programmiersprache |0 (DE-588)4113195-2 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Eingebettetes System |0 (DE-588)4396978-1 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Eingebettetes System |0 (DE-588)4396978-1 |D s |
689 | 0 | 1 | |a C |g Programmiersprache |0 (DE-588)4113195-2 |D s |
689 | 0 | 2 | |a UML |0 (DE-588)4469781-8 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Passau |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017049755&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
Datensatz im Suchindex
_version_ | 1805077453691944960 |
---|---|
adam_text |
Table
of
Contents
Part
I: Umi
State Machines
. 7
Chapter
1:
Getting Started with
UM L State Machines and
Event-Driven Programming
.
З
1.1
Installing the Accompanying Code
.4
1.2
Let's Play
.5
1.2.1
Running the DOS Version
.7
1.2.2
Running the
Stellaris
Version
.,.8
1.3
The main() Function
.11
1.4
The Design of the "Fly 'n' Shoot" Game
.16
1.5
Active Objects in the "Fly 'n' Shoot" Game
.20
1.5.1
The Missile Active Object
.21
1.5.2
The Ship Active Object
.24
1.5.3
The Tunnel Active Object
.27
1.5.4
The Mine Components
.29
1.6
Events in the "Fly 'n' Shoot" Game
.32
1.6.1
Generating, Posting, and Publishing Events
.36
1.7
Coding Hierarchical State Machines
.39
1.7.1
Step
1:
Defining the Ship Structure
.39
1.7.2
Step
2:
Initializing the State Machine
.42
1.7.3
Step
3:
Defining State-Handler Functions
.43
1.8
The Execution Model
.48
1.8.1
Simple Nonpreemptive "Vanilla" Scheduler
.48
1.8.2
The QK Preemptive Kernel
.49
1.8.3
Traditional OS/RTOS
.50
1.9
Comparison to the Traditional Approach
.50
1.10
Summary
.52
Chapter
2:
A Crash Course in UML State Machines
.55
2.1
The Oversimplification of the Event-Action Paradigm
.56
2.2
Basic State Machine Concepts
.59
2.2.1
States
.60
2.2.2
State Diagrams
.61
.n
è
wnès pres
s., ça n*:
vi
Table of Contents
2.2.3
State Diagrams versus Flowcharts
.61
2.2.4
Extended State Machines
.63
2.2.5
Guard Conditions
.64
2.2.6
Events
.66
2.2.7
Actions and Transitions
.67
2.2.8
Run-to-Completion Execution Model
.67
2.3
UML Extensions to the Traditional FSM Formalism
.68
2.3.1
Reuse of Behavior in Reactive Systems
.69
2.3.2
Hierarchically Nested States
.69
2.3.3
Behavioral Inheritance
.71
2.3.4
Liskov Substitution Principle for States
.73
2.3.5
Orthogonal Regions
.74
2.3.6
Entry and Exit Actions
.75
2.3.7
Internal Transitions
.77
2.3.8
Transition Execution Sequence
.78
2.3.9
Local versus External Transitions
.81
2.3.10
Event Types in the UML
.82
2.3.11
Event Deferral
.83
2.3.12
Pseudostates
.83
2.3.13
UML
Statecharts
and Automatic Code Synthesis
.85
2.3.14
The Limitations of the UML State Diagrams
.86
2.3.15
UML State Machine Semantics: An Exhaustive Example
.87
2.4
Designing A UML State Machine
.91
2.4.1
Problem Specification
.91
2.4.2
High-Level Design
.92
2.4.3
Scavenging for Reuse
.93
2.4.4
Elaborating Composite States
.94
2.4.5
Refining the Behavior
.95
2.4.6
Final Touches
.96
2.5
Summary
.96
Chapter
3:
Standard State Machine Implementations
.707
3.1
The Time-Bomb Example
.102
3.1.1
Executing the Example Code
.104
3.2
A Generic State Machine Interface
.105
3.2.1
Representing Events
.106
3.3
Nested Switch Statement
.108
3.3.1
Example Implementation
.108
3.3.2
Consequences
.112
3.3.3
Variations of the Technique
.113
3.4
State Table
.113
3.4.1
Generic State-Table Event Processor
.114
3.4.2
Application-Specific Code
.118
www.
η
e wn
espress,
co
m
Table of
Contents
vii
3.4.3
Consequences
.122
3.4.4
Variations of the Technique
.123
3.5
Object-Oriented State Design Pattern
.124
3.5.1
Example Implementation
.126
3.5.2
Consequences
.130
3.5.3
Variations of the Technique
.131
3.6
QEP FSM Implementation
.132
3.6.1
Generic QEP Event Processor
.133
3.6.2
Application-Specific Code
.137
3.6.3
Consequences
.142
3.6.4
Variations of the Technique
.143
3.7
General Discussion of State Machine Implementations
.144
3.7.1
Role of Pointers to Functions
.144
3.7.2
State Machines and
C++
Exception Handling
.145
3.7.3
Implementing Guards and Choice Pseudostates
.145
3.7.4
Implementing Entry and Exit Actions
.146
3.8
Summary
.,.146
Chapter
4:
Hierarchical Event Processor Implementation
.149
4.1
Key Features of the QEP Event Processor
.150
4.2
QEP Structure
.152
4.2.1
QEP Source Code Organization
.153
4.3
Events
.154
4.3.1
Event Signal (QSignal)
.154
4.3.2
QEvent Structure in
С
.155
4.3.3
QEvent Structure in
C++.157
4.4
Hierarchical State-Handler Functions
.158
4.4.1
Designating the Superstate (q_super() Macro)
.158
4.4.2
Hierarchical State-Handler Function Example in
С
.158
4.4.3
Hierarchical State-Handler Function Example in
C++.160
4.5
Hierarchical State Machine Class
.161
4.5.1
Hierarchical State Machine in
С
(Structure QHsm)
.162
4.5.2
Hierarchical State Machine in
C++
(Class QHsm)
.163
4.5.3
The Top State and the Initial
Pseudostate
.164
4.5.4
Entry/Exit Actions and Nested Initial Transitions
.166
4.5.5
Reserved Events and Helper Macros in QEP
.168
4.5.6
Topmost Initial Transition (QHsm_init
()).170
4.5.7
Dispatching Events (QHsm_dispatch
( ),
General Structure)
.174
4.5.8
Executing a Transition in the State Machine
(QHsm_dispatch
( ),
Transition)
.177
4.6
Summary of Steps for Implementing HSMs with QEP
.183
4.6.1
Step
1:
Enumerating Signals
.185
4.6.2
Step
2:
Defining Events
.185
viii Table of
Contents
4.6.3
Step
3:
Deriving the
Specific State
Machine
.186
Ą.6A
Step
4:
Defining the Initial
Pseudostate
.188
4.6.5
Step
5:
Defining the State-Handler Functions
.188
4.6.6
Coding Entry and Exit Actions
.189
4.6.7
Coding Initial Transitions
.189
4.6.8
Coding Internal Transitions
.190
4.6.9
Coding Regular Transitions
.190
4.6.10
Coding Guard Conditions
.190
4.7
Pitfalls to Avoid While Coding State Machines with QEP
.191
4.7.1
Incomplete State Handlers
.192
4.7.2
Ill-Formed State Handlers
.193
4.7.3
State Transition Inside Entry or Exit Action
.193
4.7.4
Incorrect Casting of Event Pointers
.194
4.7.5
Accessing Event Parameters in Entry/Exit Actions or Initial
Transitions
.194
4.7.6
Targeting a Nonsubstate in the Initial Transition
.195
4.7.7
Code Outside the switch Statement
.196
4.7.8 Suboptimal
Signal Granularity
.197
4.7.9
Violating the Run-to-Completion Semantics
.198
4.7.10
Inadvertent Corruption of the Current Event
.198
4.8
Porting and Configuring QEP
.199
4.9
Summary
.201
Chapter
5:
State Patterns
.203
5.1
Ultimate Hook
.205
5.1.1
Intent
.205
5.1.2
Problem
.205
5.1.3
Solution
.206
5.1.4
Sample Code
.207
5.1.5
Consequences
.211
5.2
Reminder
.211
5.2.1
Intent
.211
5.2.2
Problem
.212
5.2.3
Solution
.212
5.2.4
Sample Code
.213
5.2.5
Consequences
.218
5.3
Deferred Event
.219
5.3.1
Intent
.219
5.3.2
Problem
.219
5.3.3
Solution
.220
5.3.4
Sample Code
.222
5.3.5
Consequences
.229
5.3.6
Known Uses
.230
www.
η
e wn
espress,
com
Table
of
Contents
ix
5.4
Orthogonal
Component.
230
5.4.1
Intent
.230
5.4.2
Problem
.230
5.4.3
Solution
.231
5.4.4
Sample Code
.234
5.4.5
Consequences
.243
5.4.6
Known Uses
.244
5.5
Transition to History
.245
5.5.1
Intent
.245
5.5.2
Problem
.245
5.5.3
Solution
.245
5.5.4
Sample Code
.246
5.5.5
Consequences
.250
5.5.6
Known Uses
.251
5.6
Summary
.251
Part II: Real-Time Framework
.253
Chapter
6:
Real-Time Framework Concepts
.255
6.1
Inversion of Control
.256
6.2
CPU Management
.257
6.2.1
Traditional Sequential Systems
.257
6.2.2
Traditional Multitasking Systems
.259
6.2.3
Traditional Event-Driven Systems
.263
6.3
Active Object Computing Model
.266
6.3.1
System Structure
.267
6.3.2
Asynchronous Communication
.269
6.3.3
Run-to-Completion
.269
6.3.4
Encapsulation
.269
6.3.5
Support for State Machines
.271
6.3.6
Traditional Preemptive Kernel/RTOS
.273
6.3.7
Cooperative Vanilla Kernel
.274
6.3.8
Preemptive RTC Kernel
.276
6.4
Event Delivery Mechanisms
.279
6.4.1
Direct Event Posting
.280
6.4.2
Publish-Subscribe
.281
6.5
Event Memory Management
.282
6.5.1
Copying Entire Events
.282
6.5.2
Zero-Copy Event Delivery
.284
6.5.3
Static and Dynamic Events
.286
6.5.4
Multicasting Events and the Reference-Counting Algorithm
.286
6.5.5
Automatic Garbage Collection
.287
6.5.6
Event Ownership
.288
Table of
Contents
6.5.7 Memory Pools.289
6.6 Time Management.291
6.6.1 Time Events.291
6.6.2 System
Clock Tick
.293
6.7
Error and Exception Handling.
294
6.7.1 Design
by Contract
.294
6.7.2
Errors versus Exceptional Conditions
.296
6.7.3
Customizable Assertions in
С
and
C++.297
6.7.4
State-Based Handling of Exceptional Conditions
.300
6.7.5
Shipping with Assertions
.301
6.7.6
Asserting Guaranteed Event Delivery
.302
6.8
Framework-Based Software Tracing
.303
6.9
Summary
.304
Chapter
7:
Real-Time Framework Implementation
.307
7.1
Key Features of the QF Real-Time Framework
.308
7.1.1
Source Code
.309
7.1.2
Portability
.309
7.1.3
Scalability
.310
7.1.4
Support for Modern State Machines
.312
7.1.5
Direct Event Posting and Publish-Subscribe Event Delivery
.312
7.1.6
Zero-Copy Event Memory Management
.312
7.1.7
Open-Ended Number of Time Events
.312
7.1.8
Native Event Queues
.313
7.1.9
Native Memory Pool
.313
7.1.10
Built-in "Vanilla" Scheduler
.313
7.1.11
Tight Integration with the QK Preemptive Kernel
.313
7.1.12
Low-Power Architecture
.313
7.1.13
Assertion-Based Error Handling
.314
7.1.14
Built-in Software Tracing Instrumentation
.314
7.2
QF Structure
.315
7.2.1
QF Source Code Organization
.316
7.3
Critical Sections in QF
.318
7.3.1
Saving and Restoring the Interrupt Status
.319
7.3.2
Unconditional Locking and Unlocking Interrupts
.321
7.3.3
Internal QF Macros for Interrupt Locking/Unlocking
.323
7.4
Active Objects
.324
7.4.1
Internal State Machine of an Active Object
.328
7.4.2
Event Queue of an Active Object
.328
7.4.3
Thread of Execution and Active Object Priority
.330
7.5
Event Management in QF
.333
7.5.1
Event Structure
.333
7.5.2
Dynamic Event Allocation
.335
www.newnespress.co
m
Table of
Contents xi
7.5.3 Automatic
Garbage Collection
.339
7.5.4
Deferring and Recalling Events
.341
7.6
Event Delivery Mechanisms in QF
.343
7.6.1
Direct Event Posting
.343
7.6.2
Publish-Subscribe Event Delivery
.344
7.7
Time Management
.351
7.7.1
Time Event Structure and Interface
.351
7.7.2
The System Clock Tick and the QF_tick
( )
Function
.354
7.7.3
Arming and Disarming a Time Event
.356
7.8
Native QF Event Queue
.359
7.8.1
The QEQueue Structure
.360
7.8.2
Initialization of QEQueue
.362
7.8.3
The Native QF Active Object Queue
.362
7.8.4
The "Raw" Thread-Safe Queue
.367
7.9
Native QF Memory Pool
.369
7.9.1
Initialization of the Native QF Memory Pool
.372
7.9.2
Obtaining a Memory Block from the Pool
.375
7.9.3
Recycling a Memory Block Back to the Pool
.376
7.10
Native QF Priority Set
.377
7.11
Native Cooperative "Vanilla" Kernel
.379
7.11.1
The qvanilla.c Source File
.380
7.11.2
The qvani
11
a.h Header File
.384
7.12
QP Reference Manual
.386
7.13
Summary
.387
Chapter
8:
Porting and Configuring QF
.389
8.1
The QP Platform Abstraction Layer
.390
8.1.1
Building QP Applications
.390
8.1.2
Building QP Libraries
.391
8.1.3
Directories and Files
.392
8.1.4
The qepjport.
h
Header File
.398
8.1.5
The qf_port.
h
Header File
.400
Types of Platform-Specific QActive Data Members
.402
Base Class for Derivation of QActive
.402
The Maximum Number of Active Objects in the Application
.403
Various Object Sizes Within the QF Framework
.403
QF Critical Section Mechanism
.404
Include Files Used by this QF Port
.404
Interface Used Only Inside QF, But Not in Applications
.405
Active Object Event Queue Operations
.406
QF Event Pool Operations
.406
8.1.6
The qf_port
.
с
Source File
.407
8.1.7
The qp_port.
h
Header File
.411
www.
η
e
wn
es
ρ
ress.com
χίί
Table of Contents
8.1.8
Platform-Specific QF Callback Functions
.412
8.1.9
System Clock Tick (Calling QF_t
і
ckO)
.413
8.1.10
Building the QF Library
.413
8.2
Porting the Cooperative "Vanilla" Kernel
.414
8.2.1
The qep_port.
h
Header File
.414
8.2.2
The qf_port.
h
Header File
.415
8.2.3
The System Clock Tick (QF_tick
( ) ).417
8.2.4
Idle Processing (QF_onIdle
( ) ).418
8.3
QF Port to
цС/ОЅ-П
(Conventional RTOS)
.420
8.3.1
The qepj>ort.h Header File
.422
8.3.2
The qf_port.
h
Header File
.423
8.3.3
The qf_port
.
с
Source File
.425
8.3.4
Building the
цС/ОЅ-П
Port
.430
8.3.5
The System Clock Tick (QF_tick
( ) ).430
8.3.6
Idle Processing
.431
8.4
QF Port to Linux (Conventional POSIX-Compliant OS)
.431
8.4.1
The qep_port.
h
Header File
.432
8.4.2
The qf_port.
h
Header File
.432
8.4.3
The qf_port
.
с
Source File
.435
8.5
Summary
.441
Chapter
9:
Developing QP Application
.443
9.1
Guidelines for Developing QP Applications
.444
9.1.1
Rules
.444
9.1.2
Heuristics
.445
9.2
The Dining Philosopher Problem
.446
9.2.1
Step
1:
Requirements
.447
9.2.2
Step
2:
Sequence Diagrams
.447
9.2.3
Step
3:
Signals, Events, and Active Objects
.449
9.2.4
Step
4:
State Machines
.451
9.2.5
Step
5:
Initializing and Starting the Application
.457
9.2.6
Step
6:
Gracefully Terminating the Application
.460
9.3
Running DPP on Various Platforms
.461
9.3.1
"Vanilla" Kernel on DOS
.461
9.3.2
"Vanilla" Kernel on
Cortex
-МЗ
.
465
9.3.3
цС/ОЅ-П
.469
9.3.4
Linux
.472
9.4
Sizing Event Queues and Event Pools
.476
9.4.1
In Sizing Event Queues
.477
9.4.2
Sizing Event Pools
.479
9.4.3
System Integration
.480
9.5
Summary
.480
www.newnespress.com
Table of
Contents xiii
Chapter
10:
Preemptive Run-to-Completion Kernel
.483
10.1
Reasons for Choosing a Preemptive Kernel
.483
10.2
Introduction to RTC Kernels
.485
10.2.1
Preemptive Multitasking with a Single Stack
.486
10.2.2
Nonblocking Kernel
.487
10.2.3
Synchronous and Asynchronous Preemptions
.487
10.2.4
Stack Utilization
.491
10.2.5
Comparison to Traditional Preemptive Kernels
.494
10.3
QK Implementation
.496
10.3.1
QK Source Code Organization
.497
10.3.2
The qk.
h
Header File
.498
10.3.3
Interrupt Processing
.503
10.3.4
The qk_sched.c Source File (QK Scheduler)
.506
10.3.5
The qk.c Source File (QK Startup and Idle Loop)
.511
10.4
Advanced QK Features
.514
10.4.1
Priority-Ceiling Mutex
.515
10.4.2
Thread-Local Storage
.518
10.4.3
Extended Context Switch (Coprocessor Support)
.520
10.5
Porting QK
.524
10.5.1
The qep_port.h Header File
.525
10.5.2
The qf_port.
h
Header File
.525
10.5.3
The qk_port.
h
Header File
.526
10.5.4
Saving and Restoring FPU Context
.531
10.6
Testing the QK Port
.531
10.6.1
Asynchronous Preemption Demonstration
.531
10.6.2
Priority-Ceiling Mutex Demonstration
.535
10.6.3
TLS Demonstration
.536
10.6.4
Extended Context Switch Demonstration
.539
10.7
Summary
.540
Chapter
11:
Software Tracing for Event-Driven Systems
.541
11.1
Software Tracing Concepts
.542
11.2
Quantum Spy Software-Tracing System
.544
11.2.1
Example of a Software-Tracing Session
.545
11.2.2
The Human-Readable Trace Output
.547
11.3
QS Target Component
.550
11.3.1
QS Source Code Organization
.552
11.3.2
The QS Platform-Independent Header Files qs
.
h
and qs_dummy
.
h
. 553
11.3.3
QS Critical Section
.560
11.3.4
General Structure of QS Records
.561
11.3.5
QS Filters
.562
Global On/Off Filter
.562
xiv
Table of
Contents
Local
Filters.564
11.3.6 QS Data
Protocol
.566
Transparency.
567
Endianness.568
11.3.7 QS
Trace
Buffer.569
Initializing the QS Trace
Buffer QS_initBuf ( ) .569
Byte-Oriented Interface: QS_getByte() .571
Block-Oriented Interface: QS_getBlock() .573
11.3.8
Dictionary Trace Records
.574
Object Dictionaries
.575
Function Dictionaries
.577
Signal Dictionaries
.577
11.3.9
Application-Specific QS Trace Records
.578
11.3.10
Porting and Configuring QS
.580
11.4
The QSPY Host Application
.581
11.4.1
Installing QSPY
.582
11.4.2
Building QSPY Application from Sources
.584
Building QSPY for Windows with Visual
C++2005.584
Building QSPY for Windows with MinGW
.584
Building QSPY for Linux
.584
11.4.3
Invoking QSPY
.585
11.5
Exporting Trace Data to
MATLAB
.587
11.5.1
Analyzing Trace Data with
MATLAB
.587
11.5.2
MATLAB
Output File
.589
11.5.3
MATLAB
Script qspy.m
.590
11.5.4
MATLAB
Matrices Generated by qspy.m
.593
11.6
Adding QS Software Tracing to a QP Application
.596
11.6.1
Initializing QS and Setting Up the Filters
.596
11.6.2
Defining Platform-Specific QS Callbacks
.598
11.6.3
Generating QS Timestamps with the QS_onGetTime
( )
Callback
.601
11.6.4
Generating QS Dictionary Records from
Active Objects
.604
11.6.5
Adding Application-Specific Trace Records
.607
11.6.6
"QSPY Reference Manual"
.608
11.7
Summary
.608
Chapter
12:
QP-nano: How Small Can You Co?
.611
12.1
Key Features of QP-nano
.612
12.2
Implementing the "Fly 'n' Shoot" example with QP-nano
.614
12.2.1
The main
()
function
.615
12.2.2
The qpn_port
.
h
Header File
.618
www.newnespress.com
Table of
Contents xv
12.2.3 Signals, Events, and Active
Objects
in
the "Fly
'η'
Shoot"
Game
.620
12.2.4
Implementing the Ship Active Object in QP-nano
.622
12.2.5
Time Events in QP-nano
.626
12.2.6
Board Support Package for "Fly 'n' Shoot" Application in
QP-nano
.628
12.2.7
Building the "Fly 'n' Shoot" QP-nano Application
.630
12.3
QP-nano Structure
.631
12.3.1
QP-nano Source Code, Examples, and Documentation
.633
12.3.2
Critical Sections in QP-nano
.634
Task-Level Interrupt Locking
.635
ISR-Level Interrupt Locking
.635
12.3.3
State Machines in QP-nano
.637
12.3.4
Active Objects in QP-nano
.640
12.3.5
The System Clock Tick in QP-nano
.642
12.4
Event Queues in QP-nano
.644
12.4.1
The Ready-Set in QP-nano (QF_readySet_)
.645
12.4.2
Posting Events from the Task Level (QActive_post
( ) ).646
12.4.3
Posting Events from the ISR Level (QActive_postISR(
) ).649
12.5
The Cooperative "Vanilla" Kernel in QP-nano
.650
12.5.1
Interrupt Processing Under the "Vanilla" Kernel
.655
12.5.2
Idle Processing under the "Vanilla" Kernel
.655
12.6
The Preemptive Run-to-Completion QK-nano Kernel
.655
12.6.1
QK-nano Interface qkn.h
.656
12.6.2
Starting Active Objects and the QK-nano Idle Loop
.658
12.6.3
The QK-nano Scheduler
.660
12.6.4
Interrupt Processing in QK-nano
.665
12.6.5
Priority Ceiling Mutex in QK-nano
.666
12.7
The PELICAN Crossing Example
.666
12.7.1
PELICAN Crossing State Machine
.668
12.7.2
The Pedestrian Active Object
.671
12.7.3
QP-nano Port to MSP430 with QK-nano Kernel
.672
12.7.4
QP-nano Memory Usage
.675
12.8
Summary
.678
Appendix A. Licensing Policy for QP and QP-nano
.679
A.I Open-Source Licensing
.679
A.2 Closed-Source Licensing
.680
A.3 Evaluating the Software
.680
A.4
NonProfits,
Academic Institutions, and Private Individuals
.680
A.5 GNU General Public License Version
2.681
xvi
Table
of
Contents
Appendix
В.
Cuide
to Notation
.685
B.I Class Diagrams
.685
B.2 State Diagrams
.688
B.3 Sequence Diagrams
.689
B.4 Timing Diagrams
.690
Bibliography
.693
Index.
.699
www.
η
e
wn
es
press, com |
any_adam_object | 1 |
author | Samek, Miro |
author_facet | Samek, Miro |
author_role | aut |
author_sort | Samek, Miro |
author_variant | m s ms |
building | Verbundindex |
bvnumber | BV035244008 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.9.S88 |
callnumber-search | QA76.9.S88 |
callnumber-sort | QA 276.9 S88 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 153 ST 230 |
ctrlnum | (OCoLC)214307694 (DE-599)BVBBV035244008 |
dewey-full | 005.117 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.117 |
dewey-search | 005.117 |
dewey-sort | 15.117 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 2. ed. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV035244008</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20120119</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">090113s2009 ad|| |||| 00||| eng d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">GBA848302</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="z">9780750687065 (pbk.)</subfield><subfield code="9">978-0-7506-8706-5 (pbk.)</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="z">0750687061 (pbk.)</subfield><subfield code="9">0-7506-8706-1 (pbk.)</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)214307694</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV035244008</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakwb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-M347</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-739</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.9.S88</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.117</subfield><subfield code="2">22</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 153</subfield><subfield code="0">(DE-625)143597:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Samek, Miro</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Practical UML statecharts in C/C++</subfield><subfield code="b">event-driven programming for embedded systems</subfield><subfield code="c">Miro Samek</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">2. ed.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Amsterdam [u.a.]</subfield><subfield code="b">Elsevier, Newnes</subfield><subfield code="c">2009</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXXI, 712 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield><subfield code="c">24 cm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Previous ed.: Lawrence, Kan. : CMP Books, c2002</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Includes bibliographical references (p. [693]-697) and index</subfield></datafield><datafield tag="520" ind1="3" ind2=" "><subfield code="a">The shear volume of embedded code produced by programmers demands a unified language and framework to create efficient and maintainable systems. UML (unified modeling language) statecharts are a practical way in which to create this framework. This text is a guide to UML.</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">System design</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Computer software / Development</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Formal methods (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Statecharts (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">UML (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Object-oriented programming (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Computer software</subfield><subfield code="x">Development</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Formal methods (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Object-oriented programming (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Statecharts (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">UML (Computer science)</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">UML</subfield><subfield code="0">(DE-588)4469781-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4113195-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Eingebettetes System</subfield><subfield code="0">(DE-588)4396978-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Eingebettetes System</subfield><subfield code="0">(DE-588)4396978-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">C</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4113195-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="2"><subfield code="a">UML</subfield><subfield code="0">(DE-588)4469781-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017049755&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield></record></collection> |
id | DE-604.BV035244008 |
illustrated | Illustrated |
indexdate | 2024-07-20T06:13:26Z |
institution | BVB |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-017049755 |
oclc_num | 214307694 |
open_access_boolean | |
owner | DE-Aug4 DE-M347 DE-83 DE-859 DE-739 |
owner_facet | DE-Aug4 DE-M347 DE-83 DE-859 DE-739 |
physical | XXXI, 712 S. Ill., graph. Darst. 24 cm |
publishDate | 2009 |
publishDateSearch | 2009 |
publishDateSort | 2009 |
publisher | Elsevier, Newnes |
record_format | marc |
spelling | Samek, Miro Verfasser aut Practical UML statecharts in C/C++ event-driven programming for embedded systems Miro Samek 2. ed. Amsterdam [u.a.] Elsevier, Newnes 2009 XXXI, 712 S. Ill., graph. Darst. 24 cm txt rdacontent n rdamedia nc rdacarrier Previous ed.: Lawrence, Kan. : CMP Books, c2002 Includes bibliographical references (p. [693]-697) and index The shear volume of embedded code produced by programmers demands a unified language and framework to create efficient and maintainable systems. UML (unified modeling language) statecharts are a practical way in which to create this framework. This text is a guide to UML. System design Computer software / Development Formal methods (Computer science) Statecharts (Computer science) UML (Computer science) Object-oriented programming (Computer science) Computer software Development UML (DE-588)4469781-8 gnd rswk-swf C Programmiersprache (DE-588)4113195-2 gnd rswk-swf Eingebettetes System (DE-588)4396978-1 gnd rswk-swf Eingebettetes System (DE-588)4396978-1 s C Programmiersprache (DE-588)4113195-2 s UML (DE-588)4469781-8 s DE-604 Digitalisierung UB Passau application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017049755&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Samek, Miro Practical UML statecharts in C/C++ event-driven programming for embedded systems System design Computer software / Development Formal methods (Computer science) Statecharts (Computer science) UML (Computer science) Object-oriented programming (Computer science) Computer software Development UML (DE-588)4469781-8 gnd C Programmiersprache (DE-588)4113195-2 gnd Eingebettetes System (DE-588)4396978-1 gnd |
subject_GND | (DE-588)4469781-8 (DE-588)4113195-2 (DE-588)4396978-1 |
title | Practical UML statecharts in C/C++ event-driven programming for embedded systems |
title_auth | Practical UML statecharts in C/C++ event-driven programming for embedded systems |
title_exact_search | Practical UML statecharts in C/C++ event-driven programming for embedded systems |
title_full | Practical UML statecharts in C/C++ event-driven programming for embedded systems Miro Samek |
title_fullStr | Practical UML statecharts in C/C++ event-driven programming for embedded systems Miro Samek |
title_full_unstemmed | Practical UML statecharts in C/C++ event-driven programming for embedded systems Miro Samek |
title_short | Practical UML statecharts in C/C++ |
title_sort | practical uml statecharts in c c event driven programming for embedded systems |
title_sub | event-driven programming for embedded systems |
topic | System design Computer software / Development Formal methods (Computer science) Statecharts (Computer science) UML (Computer science) Object-oriented programming (Computer science) Computer software Development UML (DE-588)4469781-8 gnd C Programmiersprache (DE-588)4113195-2 gnd Eingebettetes System (DE-588)4396978-1 gnd |
topic_facet | System design Computer software / Development Formal methods (Computer science) Statecharts (Computer science) UML (Computer science) Object-oriented programming (Computer science) Computer software Development UML C Programmiersprache Eingebettetes System |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017049755&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT samekmiro practicalumlstatechartsincceventdrivenprogrammingforembeddedsystems |