وبلاگ بلیان

Real-Time Systems Development

معرفی کتاب «Real-Time Systems Development» نوشتهٔ Rob Williams، منتشرشده توسط نشر Elsevier Butterworth-Heinemann در سال 2005. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Real-Time Systems Development» در دستهٔ بدون دسته‌بندی قرار دارد.

Real-time Systems Development is a text for computing students who want to understand more about the development of software for real-time applications, involving concurrent programming, multi-tasking, data i/o and embedded processors.The book has been written to cover single semester final year undergraduate options or MSc modules in the area of real-time systems design and implementation. Assuming a certain level of general systems design and programming experience, this text will extend 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. * Concise treatment delivers material in manageable sections* Includes handy glossary, references and practical exercises based on familiar scenarios* Supporting website contains slides, solutions to problems and software examples 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 Real-Time Systems Development introduces computing students and professional programmers to the development of software for real-time applications. 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 and implementation. Assuming a certain level of general systems design and programming experience, this text will extend 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. This book takes a broad, practical approach in discussing real-time systems. It covers topics such as basic input and output; cyclic executives for bare hardware; finite state machines; task communication and synchronization; input/output interfaces; structured design for real-time systems; designing for multitasking; UML for real-time systems; object oriented approach to real-time systems; selecting languages for RTS development; Linux device drivers; and hardware/software co-design. Programming examples using GNU/Linux are included, along with a supporting website containing slides; solutions to problems; and software examples. This book will appeal to advanced undergraduate Computer Science students; MSc students; and, undergraduate software engineering and electronic engineering students. * Concise treatment delivers material in manageable sections * Includes handy glossary, references and practical exercises based on familiar scenarios * Supporting website contains slides, solutions to problems and software examples Real-time Systems Development is a text for computing students who want to understand more about the development of software for real-time applications, involving concurrent programming, multi-tasking, data i/o and embedded processors.

The book has been written to cover single semester final year undergraduate options or MSc modules in the area of real-time systems design and implementation. Assuming a certain level of general systems design and programming experience, this text will extend 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.

* Concise treatment delivers material in manageable sections
* Includes handy glossary, references and practical exercises based on familiar scenarios
* Supporting website contains slides, solutions to problems and software examples Real-time Systems Development is a text for computing students who want to understand more about the development of software for real-time applications, involving concurrent programming, multi-tasking, data i/o and embedded processors. The book has been written to cover single semester final year undergraduate options or MSc modules in the area of real-time systems design and implementation. Assuming a certain level of general systems design and programming experience, this text will extend 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. * Concise treatment delivers material in manageable sections * Includes handy glossary, references and practical exercises based on familiar scenarios * Supporting website contains slides, solutions to problems and software examples "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."--BOOK JACKET
دانلود کتاب Real-Time Systems Development