Real-Time Systems Development

Free Download

Authors:

ISBN: 9780750664714, 0750664711

Size: 2 MB (2347098 bytes)

Pages: 468/468

File format:

Language:

Publishing Year:

Category:

Rob Williams9780750664714, 0750664711

“Based on the academic and commercial experience of the author, the book is an ideal companion to final year undergraduate options or MSc modules in the area of real-time systems design. The broad spectrum of subjects dealt with will aid professional programmers faced with their first real-time project whilst extending students’ knowledge and skills into an area of computing which has increasing relevance in a modern world of telecommunications and ‘intelligent’ equipment using embedded microcontrollers. Assuming a certain level of general systems design and programming experience, the author uses practical, industrial experience to give an effective introduction to the field without the need for advanced mathematics. Programming examples using GNU/Linux are included in the book.

Table of contents :
Real-Time Systems Development……Page 4
Contents……Page 6
Preface……Page 8
Recommended lab sessions……Page 10
Acknowledgements and thanks……Page 12
1.2 Real-time systems development……Page 14
1.3 System complexity……Page 15
1.4 Microprocessors and real-time applications……Page 16
1.5 Definition of a real-time system……Page 17
1.6 Programming structures……Page 23
1.8.1 Polling an input too fast……Page 24
1.8.2 Polling an input too slowly……Page 25
1.8.3 Light sensing……Page 26
1.9 Software timing……Page 27
1.10 High speed timing……Page 28
1.11 Output timing overload……Page 29
1.12 Debugging real-time systems……Page 30
1.13 Access to hardware……Page 31
1.14 Machine I/O……Page 32
1.15 Programmed I/O……Page 33
1.16 Hardware/software cost tradeoff……Page 34
1.17 Hard, soft and firm……Page 35
1.18 Software Quality Assurance (SQA)……Page 36
1.19 Experience and history……Page 37
1.21 Chapter summary……Page 38
1.23 Suggestions for reading……Page 40
2.2 Multi-tasking……Page 42
2.3 Task loops……Page 43
2.4 Code timing problems……Page 44
2.5 Interrupt-driven tasks……Page 45
2.7 Task re-entry……Page 46
2.8 Causes of task swapping……Page 47
2.10 Using the printer port for digital I/O……Page 48
2.12 Operational details of stepper motors……Page 51
2.14 Chapter summary……Page 55
2.15 Problems and issues for discussion……Page 57
2.16 Suggestions for reading……Page 58
3.2 Memory-mapped ports……Page 59
3.3 I/O mapped ports……Page 61
3.4 Port registers – the programmers’ view……Page 63
3.5 Port polling……Page 66
3.6 I/O access permissions……Page 68
3.7 To block or not to block……Page 72
3.8 Exception and interrupt processing – service on demand……Page 74
3.9 Multiple interrupt sources……Page 75
3.10 Powerfail detection……Page 78
3.11 Interrupt structure on the PC……Page 81
3.12 Deferred interrupt processing……Page 84
3.13 Use of exceptions and interrupts……Page 85
3.14 Interrupt unpredictability……Page 86
3.15 Critical data protection – how to communicate with interrupts……Page 87
3.16 Bu.ered I/O – interrupt device drivers……Page 90
3.18 Problems and issues for discussion……Page 92
3.19 Suggestions for reading……Page 93
4.2 The basic system……Page 94
4.3 System tick……Page 95
4.4 Extended tasks……Page 96
4.5 Implementation of a cyclic executive……Page 97
4.6 Cyclic executive execution pattern……Page 98
4.7 Demonstation cyclic executive code……Page 99
4.8 Keypad application……Page 100
4.10 Problems and issues for discussion……Page 105
4.11 Suggestions for reading……Page 106
5.2 Defining the perimeter……Page 107
5.3 Channel bandwidths……Page 108
5.4 Finite State Diagrams (FSD)……Page 110
5.5 Auxiliary variables……Page 112
5.6 Vehicle detection……Page 113
5.7 Simplification techniques……Page 114
5.9 Teas-made……Page 115
5.10 Hierarchical state charts……Page 117
5.11 Concurrent FSMs……Page 119
5.13 Chapter summary……Page 120
5.14 Problems and issues for discussion……Page 121
5.15 Suggestions for reading……Page 122
6.2 Implementing an FSD……Page 123
6.3 Implementation by direct sequential coding……Page 124
6.4 THE SWITCH-CASE IMPLEMENTATION MODEL……Page 127
6.5 The GOTO/LABEL implementation model……Page 131
6.6 FST implementation model……Page 134
6.7 An object-oriented approach to implementation……Page 141
6.8 FSM scheduling issues……Page 148
6.9 More FST……Page 150
6.10 Run-time environment……Page 158
6.12 Problems and issues for discussion……Page 160
6.13 Suggestions for reading……Page 161
7.2 Recognizing a real-time application……Page 163
7.3 Multi-tasking and multi-threading……Page 164
7.4 Run-time support environment……Page 165
7.5 Run-time scheduling……Page 167
7.6 Justifying the use of multi-tasking……Page 168
7.7 Responsiveness……Page 169
7.8 Intellectual simplicity of design……Page 170
7.10 Unit testing……Page 171
7.11 System integrity……Page 172
7.13 Exploitation of multi-processor hardware……Page 173
7.14 Processor support for task swapping……Page 175
7.15 Starting new tasks in Linux……Page 178
7.17 Problems and issues for discussion……Page 180
7.18 Suggestions for reading……Page 181
8.2 Data sharing……Page 182
8.4 Semaphores……Page 185
8.5 Lock files……Page 186
8.6 Intercept signals……Page 187
8.7 Shared data buffers……Page 195
8.8 Pipes……Page 196
8.10 Sockets……Page 204
8.11 Remote Procedure Calls (RPC)……Page 209
8.12 ADA rendezvous……Page 210
8.13 Java synchronization……Page 211
8.15 Problems and issues for discussion……Page 212
8.16 Suggestions for reading……Page 213
9.2 Real-time systems implementations……Page 214
9.5 Hardware support for an RTE……Page 216
9.6 RTE facilities……Page 218
9.7 Linux……Page 219
9.8 POSIX facilities……Page 221
9.9 Scheduling……Page 227
9.10 Unix Filesystem Hierarchy Standard (FHS)……Page 228
9.11 Configuring and building the Linux kernel……Page 229
9.14 Language support……Page 230
9.15 Licensing issues……Page 232
9.17 Problems and issues for discussion……Page 234
9.18 Suggestions for reading……Page 235
10.2 Input and output operations……Page 237
10.3 Categories……Page 238
10.4 Operating system support……Page 239
10.5 Raw I/O……Page 241
10.6 I/O with Linux……Page 242
10.7 Direct device driver……Page 245
10.8 Device drivers under interrupt……Page 246
10.9 Queuing theory……Page 248
10.11 Problems and issues for discussion……Page 252
10.12 Suggestions for reading……Page 253
11.2 Design methods……Page 254
11.3 Incremental functional decomposition……Page 256
11.4 Use of diagrams in design……Page 257
11.5 Data Flow Diagrams (DFD)……Page 258
11.6 Implementing a DFD……Page 259
11.7 Reading structure charts……Page 266
11.8 Yourdon structured analysis and design for real-time systems……Page 268
11.9 Implementing an event-based DFD……Page 269
11.10 Stored data modelling – EAR modelling……Page 273
11.11 Transforming ERD to DFD……Page 276
11.12 Normalizing stored data……Page 277
11.15 Suggestions for reading……Page 278
12.2 SA/SD for multi-tasking……Page 280
12.3 Partitioning into tasks……Page 281
12.4 Cohesion and coupling……Page 283
12.5 Designing for intertask communication……Page 284
12.6 Device interfacing……Page 286
12.7 Task diagrams……Page 287
12.8 The CODARTS method……Page 291
12.9 Re-entrant code……Page 292
12.10 Setting task priorities……Page 293
12.11 Execution timing……Page 294
12.13 Chapter summary……Page 295
12.15 Suggestions for reading……Page 296
13.2 A Unified Modelling Language……Page 298
13.3 Use-cases……Page 299
13.4 Objects and classes……Page 300
13.5 Object collaboration diagrams……Page 301
13.6 Class diagrams……Page 302
13.7 Interobject messaging……Page 304
13.8 Interaction diagrams……Page 305
13.9 Activity diagrams……Page 307
13.11 Problems and issues for discussion……Page 308
13.12 Suggestions for reading……Page 309
14.2 Real-time object-oriented design and development……Page 310
14.3 Designing for real-time……Page 311
14.4 Objects, objects……Page 312
14.5 Finding the objects……Page 313
14.6 Analysis class stereotypes……Page 314
14.7 Tasking……Page 315
14.8 Multi-threading with Java……Page 316
14.9 Design patterns……Page 318
14.10 Chapter summary……Page 321
14.12 Suggestions for reading……Page 322
15.2 Software crisis……Page 324
15.3 Fault tolerance……Page 326
15.4 System requirements……Page 327
15.5 Requirements analysis techniques……Page 328
15.7 Good design……Page 329
15.8 Simulation studies……Page 330
15.9 Petri nets……Page 331
15.11 Code reuse……Page 334
15.13 Code testing……Page 335
15.14 System integration testing……Page 336
15.15 Run-time error trapping……Page 337
15.16 Run-time checking: assert……Page 338
15.17 Run-time checking: exceptions and hardware watchdog……Page 339
15.19 Visual assistance……Page 340
15.20 A wet Monday morning……Page 341
15.21 Concurrent version control system (CVS)……Page 342
15.22 Setting up a CVS repository……Page 344
15.23 Conducting design and code reviews……Page 345
15.24 Extreme Programming……Page 346
15.25 Software standards……Page 347
15.26 MISRA……Page 349
15.29 Problems and issues for discussion……Page 351
15.30 Suggestions for Reading……Page 352
16.2 The choice……Page 354
16.3 General criteria for programming languages……Page 355
16.4 Special criteria for real-time compilers……Page 357
16.5 Compiler optimization……Page 360
16.6 C for real-time……Page 363
16.7 Ada……Page 364
16.8 Java……Page 365
16.11 Problems and issues for discussion……Page 369
16.12 Suggestions for reading……Page 370
17.2 Host–target development……Page 371
17.3 Cross-compilers and linkers……Page 372
17.4 The gcc compilation process……Page 373
17.5 Startup code……Page 374
17.6 GNU linker, ld and linker script file……Page 377
17.8 Building a gcc cross-compiler……Page 380
17.9 Tips!……Page 385
17.10 Executable and Linking Format (ELF)……Page 386
17.12 Debugging techniques……Page 390
17.14 Flash memory……Page 399
17.15 Installing target code……Page 401
17.16 Chapter summary……Page 403
17.18 Suggestions for reading……Page 404
18.2 Microprocessors and microcontrollers……Page 406
18.3 Intel 8051 8 bit family……Page 407
18.4 Automatic vending technology……Page 410
18.6 StrongARM processor……Page 412
18.7 Puppeteer StrongARM microcomputer……Page 415
18.8 Application……Page 417
18.10 Serial access memory……Page 419
18.12 Problems and issues for discussion……Page 420
18.13 Suggestions for reading……Page 421
19.2 Embedded Linux……Page 423
19.3 Porting Linux……Page 424
19.4 The role of device drivers……Page 428
19.5 Major and minor numbers……Page 429
19.6 Index blocks, the Unix inode……Page 431
19.7 Types of Linux device drivers……Page 437
19.9 Chapter summary……Page 445
19.11 Suggestions for reading……Page 446
20.2 Systems-on-chip……Page 448
20.3 Intellectual property……Page 449
20.4 Reconfigurable hardware……Page 450
20.5 Software support……Page 452
20.6 Altera APEX/Excalibur device……Page 453
20.9 Problems and issues for discussion……Page 456
20.10 Suggestions for reading……Page 457
A1.3 Turning on an analogue CRT scope……Page 458
A1.4 Introduction to the oscilloscope……Page 460
A1.5 Digital storage scopes……Page 461
C……Page 464
I……Page 465
P……Page 466
U……Page 467
Y……Page 468

Reviews

There are no reviews yet.

Be the first to review “Real-Time Systems Development”
Shopping Cart
Scroll to Top