(0) items

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.
Fundamentals to Embedded Software : Where C and Assembly Meet,9780130615893
This item qualifies for

Your order must be $59 or more, you must select US Postal Service Shipping as your shipping preference, and the "Group my items into as few shipments as possible" option when you place your order.

Bulk sales, PO's, Marketplace Items, eBooks, Apparel, and DVDs not included.

Fundamentals to Embedded Software : Where C and Assembly Meet



Pub. Date:
Prentice Hall
List Price: $136.00
More New and Used
from Private Sellers
Starting at $2.65

Rent Textbook

We're Sorry
Sold Out

Used Textbook

We're Sorry
Sold Out


We're Sorry
Not Available

New Textbook

We're Sorry
Sold Out

  • Fundamentals of Embedded Software with the ARM Cortex-M3
    Fundamentals of Embedded Software with the ARM Cortex-M3


Reflectingcurrentindustrial applications and programming practice, this book lays a foundation that supports the multi-threaded style of programming and high-reliability requirements of embedded software. Using a non-product specific approach and a programming (versus hardware) perspective, it focuses on the 32-bit protected mode processors and on C as the dominant programming language--with coverage of Assembly and how it can be used in conjunction with, and support of, C. Features an abundance of examples in C and an accompanying CD-ROM with software tools.Data Representation. Getting the Most Out of C. A Programmer's View of Computer Organization. Mixing C and Assembly. Input/Output Programming. Concurrent Software. Scheduling. Memory Management. Shared Memory. System Initialization.For Computer Scientists, Computer Engineers, and Electrical Engineers involved with embedded software applications.

Table of Contents

Prefacep. xiii
Introductionp. 1
What is an Embedded System?p. 1
What's Unique About the Design Goals for Embedded Software?p. 3
What Does "Real-Time" Mean?p. 5
What Does "Multitasking" Mean?p. 6
How Powerful Are Embedded Processors?p. 7
What Programming Languages Are Used?p. 7
What Is a "Real-Time Kernel"?p. 8
How Is Building an Embedded Application Unique?p. 9
How Big Are Typical Embedded Programs?p. 11
The Software Used in This Bookp. 12
Problemsp. 14
Data Representationp. 15
Fixed-Precision Binary Numbersp. 15
Positional Number Systemsp. 16
Binary-to-Decimal Conversionp. 17
Decimal-to-Binary Conversionp. 17
Countingp. 19
Fixed Precision and Rolloverp. 19
Hexadecimal Representationp. 20
Binary Representation of Integersp. 21
Signed Integersp. 21
Positive and Negative Representations of the Same Magnitudep. 22
Interpreting the Value of a 2's-Complement Numberp. 23
More on Range and Overflowp. 24
2's Complement and Hardware Complexityp. 25
Binary Representation of Real Numbersp. 28
Fixed-Point Representationp. 28
Fixed-Point Using a Universal 16.16 Formatp. 30
Fixed-Point Using a Universal 32.32 Formatp. 32
Floating-Point Representationp. 35
ASCII Representation of Textp. 37
Binary-Coded Decimal (BCD)p. 39
Problemsp. 40
Getting the Most Out of Cp. 43
Integer Data Typesp. 43
Mixing Data Typesp. 46
Useful Typedefs and Definesp. 47
Manipulating Bits in Memoryp. 48
Testing Bitsp. 50
Setting, Clearing, and Inverting Bitsp. 51
Extracting Bitsp. 52
Inserting Bitsp. 52
Manipulating Bits in I/O Portsp. 53
Write-Only I/O Portsp. 53
Ports Differentiated by Reads Versus Writesp. 54
Ports Differentiated by Sequential Accessp. 54
Ports Differentiated by Bits in the Written Datap. 55
Accessing Memory-Mapped I/O Devicesp. 55
Accessing Data Through a Pointerp. 55
Arrays, Pointers, and the "Address Of" Operatorp. 56
Structuresp. 58
Packed Structuresp. 59
Bit Fieldsp. 60
Variant Accessp. 61
Casting the Address of an Objectp. 61
Using Unionsp. 63
Problemsp. 63
A Programmer's View of Computer Organizationp. 65
Memoryp. 65
The Central Processing Unit (CPU)p. 67
The Arithmetic and Logic Unit (ALU)p. 67
Other Registersp. 68
The Control Unitp. 69
Input/Output (I/O)p. 70
Introduction to the Intel Architecturep. 71
Instruction Formatsp. 72
Instruction Operandsp. 73
Operand Restrictionsp. 74
Registersp. 75
The Stackp. 77
The Intel Real Mode Architecturep. 78
Segmented Addressingp. 79
Addressing Modesp. 81
The Intel Protected Mode Architecturep. 83
Segment Registers and The Global Descriptor Tablep. 84
The Flat Memory Modelp. 85
Addressing Modesp. 85
Operand and Address-Size Override Prefixesp. 86
The Intel Data Manipulation Instructionsp. 86
Data Movement, Stack, and I/O Instructionsp. 87
Arithmetic Instructionsp. 89
Bitwise Instructionsp. 91
Shift Instructionsp. 91
Problemsp. 93
Mixing C and Assemblyp. 96
Programming in Assemblyp. 96
Register Usage Conventionsp. 98
Typical Use of Addressing Optionsp. 98
Accessing Data Whose Address is a Constantp. 99
Accessing Data Whose Address is a Variablep. 100
Instruction Sequencingp. 101
Compound Conditionalsp. 102
If-Then-Else Statementsp. 104
Building Loopsp. 105
Faster Loops with String Instructionsp. 106
Procedure Call and Returnp. 107
Parameter Passingp. 108
Retrieving Parametersp. 110
Everything is Pass by Valuep. 112
Temporary Variablesp. 112
Problemsp. 115
Input/Output Programmingp. 117
The Intel I/O Instructionsp. 118
Synchronization, Transfer Rate, and Latencyp. 118
Polled Waiting Loopsp. 119
Interrupt-Driven I/Op. 121
The Hardware Responsep. 121
The Interrupt Service Routinep. 124
Programmable Interrupt Controllersp. 125
Buffers and Queuesp. 126
Writing Interrupt Service Routines in Assemblyp. 128
Writing Interrupt Service Routines in Cp. 129
Nonmaskable Interruptsp. 130
Software Interruptsp. 130
Exceptionsp. 132
Direct Memory Accessp. 132
Double Bufferingp. 133
Comparison of Methodsp. 134
Problemsp. 135
Concurrent Softwarep. 138
Foreground/Background Systemsp. 138
Thread State and Serializationp. 139
Managing Latencyp. 139
Preventing Interrupt Overrunp. 143
Moving Work into the Backgroundp. 144
Multithreaded Programmingp. 145
Concurrent Execution of Independent Threadsp. 145
Context Switchingp. 146
Nonpreemptive (Cooperative) Multitaskingp. 147
Preemptive Multitaskingp. 147
Shared Resources and Critical Sectionsp. 148
Disabling Interruptsp. 150
Disabling Task Switchingp. 150
Spin Locksp. 151
Mutex Objectsp. 152
Semaphoresp. 152
Problemsp. 153
Schedulingp. 155
Thread Statesp. 155
Pending Threadsp. 156
Context Switchingp. 157
Round-Robin Schedulingp. 158
Priority-Based Schedulingp. 159
Priority Inversionp. 159
The Priority Inheritance Protocolp. 160
The Priority Ceiling Protocolp. 161
Assigning Prioritiesp. 161
Deadline-Driven Schedulingp. 161
Rate-Monotonic Schedulingp. 162
Deadlockp. 163
Watchdog Timersp. 164
Problemsp. 166
Memory Managementp. 168
Objects in Cp. 168
Scopep. 169
Refining Local Scopep. 169
Refining Global Scopep. 170
Lifetimep. 171
Automatic Allocationp. 172
Storage Class "Register"p. 173
Static Allocationp. 174
Three Programs to Distinguish Static from Automaticp. 174
Object Creationp. 175
Object Initializationp. 175
Object Destructionp. 176
Dynamic Allocationp. 177
Fragmentationp. 178
Memory Allocation Poolsp. 179
Automatic Allocation with Variable Size (alloca)p. 179
Variable-Size Arraysp. 180
Recursive Functions and Memory Allocationp. 181
Problemsp. 182
Shared Memoryp. 189
Recognizing Shared Objectsp. 189
Shared Global Datap. 190
Shared Private Datap. 190
Shared Functionsp. 190
Reentrant Functionsp. 190
Read-Only Datap. 191
Type Qualifier "const"p. 191
Coding Practices to Avoidp. 192
Functions That Keep Internal State in Local Static Objectsp. 192
Functions That Return the Address of a Local Static Objectp. 194
Accessing Shared Memoryp. 195
The Effect of Processor Word Sizep. 196
Read-Only and Write-Only Accessp. 197
Type Qualifier "volatile"p. 198
Problemsp. 200
System Initializationp. 203
Memory Layoutp. 203
The CPUp. 204
Setting Up a Flat Memory Modelp. 204
Switching into Protected Modep. 207
C Run-Time Environmentp. 207
Copying from ROM to RAMp. 208
Zeroing Uninitialized Staticsp. 208
Setting Up a Heapp. 209
System Timerp. 211
Timer 0: Timer Tickp. 211
Timer 1: Memory Refreshp. 212
Timer 2: Speaker Frequencyp. 212
Interrupt Systemp. 213
Initializing the IDTp. 213
Initializing the 8259 PICsp. 215
Installing a New Interrupt Service Routinep. 216
Contents of the CD-Romp. 219
The DJGPP C/C++ Compilerp. 220
Installationp. 220
Compilationp. 221
On-Line Documentation (Info)p. 222
The NASM Assemblerp. 223
Installationp. 223
Running NASMp. 223
Programming Projectsp. 225
Files Required from the CD-ROM for All Applicationsp. 225
Files Required for Nonpreemptive Multithreaded Applicationsp. 225
Files Required for Preemptive Multithreaded Applicationsp. 226
Compiling and Assembling Your Embedded Applicationp. 226
Linking Your Embedded Applicationp. 226
Preparing the Boot Diskettep. 227
Running Your Embedded Applicationp. 227
Getting Started with the DJGPP Compiler Toolsp. 228
Using Fixed-Point Real Numbersp. 230
Using Macros and Packed Operandsp. 231
Using "Makefiles"p. 232
Coding Extended Precision Multiplication in Assemblyp. 235
Coding Extended Precision Division in Assemblyp. 237
Polled Waiting Loop and Interrupt-Driven I/Op. 238
A Simple Nonpreemptive Multithreaded Applicationp. 240
Preemptive Kernels and Shared Resourcesp. 242
Avoiding Unbounded Priority Inversionp. 245
Avoiding Deadlockp. 246
The libepc Libraryp. 247
Memory Layout and Initializationp. 247
Display Functions (display.c)p. 248
Window Functions (window.c)p. 250
Keyboard Functions (keyboard.c)p. 251
Speaker Functions (speaker.c)p. 252
Timer Functions (timer.c, cycles.asm)p. 252
Interrupt Vector Access Functions (init-idt.c)p. 253
Dyamic Memory Allocation Functions (heap.c)p. 254
Fixed Point (fixedpt.asm)p. 254
Interfunction Jumps (setjmp.asm)p. 255
Miscellaneous Functions (init-crt.c)p. 256
The Boot Loaderp. 257
Indexp. 258
Table of Contents provided by Syndetics. All Rights Reserved.

Please wait while the item is added to your cart...