SHOPPING CART $0.00
free shipping on orders over $35*
BUYBACK CART Buyback Cart Total Buyback Cart Total
free shipping on buybacks!
loading

    Fundamentals to Embedded Software Where C and Assembly Meet

    ISBN-10: 0130615897
    ISBN-13: 9780130615893
    Author(s): Daniel W. Lewis
    Description: For sophomore-level courses in Assembly Language Programming in Computer Science, Embedded Systems Design, Real-Time Analysis, Computer Engineering, or Electrical Engineering curricula. Requires prior knowledge of C, C++, or Java. This book is  More...
    Buy it from: $13.56
    This item will ship on Friday, December 26 .

    Loading
    Customers Also Bought

    List Price: $136.00
    Publisher: Prentice Hall PTR
    Binding: Paperback
    Pages: 266
    Size: 7.25" wide x 9.75" long x 0.75" tall
    Weight: 1.342
    Language: English

    For sophomore-level courses in Assembly Language Programming in Computer Science, Embedded Systems Design, Real-Time Analysis, Computer Engineering, or Electrical Engineering curricula. Requires prior knowledge of C, C++, or Java. This book is intended to provide a highly motivating context in which to learn procedural programming language. Using a non-product specific approach and a programming (versus hardware) perspective, this text lays a foundation that supports the multi-threaded style of programming and high-reliability requirements of embedded software. Reflecting current industrial applications and programming practice, it focuses on the more modern 32-bit protected mode processors and on C as the dominant programming languagewith coverage of assembly and how it can be used in conjunction with, and support of, C.

    Preface
    Introduction
    What is an Embedded System?
    What's Unique About the Design Goals for Embedded Software?
    What Does "Real-Time" Mean?
    What Does "Multitasking" Mean?
    How Powerful Are Embedded Processors?
    What Programming Languages Are Used?
    What Is a "Real-Time Kernel"?
    How Is Building an Embedded Application Unique?
    How Big Are Typical Embedded Programs?
    The Software Used in This Book
    Problems
    Data Representation
    Fixed-Precision Binary Numbers
    Positional Number Systems
    Binary-to-Decimal Conversion
    Decimal-to-Binary Conversion
    Counting
    Fixed Precision and Rollover
    Hexadecimal Representation
    Binary Representation of Integers
    Signed Integers
    Positive and Negative Representations of the Same Magnitude
    Interpreting the Value of a 2's-Complement Number
    More on Range and Overflow
    2's Complement and Hardware Complexity
    Binary Representation of Real Numbers
    Fixed-Point Representation
    Fixed-Point Using a Universal 16.16 Format
    Fixed-Point Using a Universal 32.32 Format
    Floating-Point Representation
    ASCII Representation of Text
    Binary-Coded Decimal (BCD)
    Problems
    Getting the Most Out of C
    Integer Data Types
    Mixing Data Types
    Useful Typedefs and Defines
    Manipulating Bits in Memory
    Testing Bits
    Setting, Clearing, and Inverting Bits
    Extracting Bits
    Inserting Bits
    Manipulating Bits in I/O Ports
    Write-Only I/O Ports
    Ports Differentiated by Reads Versus Writes
    Ports Differentiated by Sequential Access
    Ports Differentiated by Bits in the Written Data
    Accessing Memory-Mapped I/O Devices
    Accessing Data Through a Pointer
    Arrays, Pointers, and the "Address Of" Operator
    Structures
    Packed Structures
    Bit Fields
    Variant Access
    Casting the Address of an Object
    Using Unions
    Problems
    A Programmer's View of Computer Organization
    Memory
    The Central Processing Unit (CPU)
    The Arithmetic and Logic Unit (ALU)
    Other Registers
    The Control Unit
    Input/Output (I/O)
    Introduction to the Intel Architecture
    Instruction Formats
    Instruction Operands
    Operand Restrictions
    Registers
    The Stack
    The Intel Real Mode Architecture
    Segmented Addressing
    Addressing Modes
    The Intel Protected Mode Architecture
    Segment Registers and The Global Descriptor Table
    The Flat Memory Model
    Addressing Modes
    Operand and Address-Size Override Prefixes
    The Intel Data Manipulation Instructions
    Data Movement, Stack, and I/O Instructions
    Arithmetic Instructions
    Bitwise Instructions
    Shift Instructions
    Problems
    Mixing C and Assembly
    Programming in Assembly
    Register Usage Conventions
    Typical Use of Addressing Options
    Accessing Data Whose Address is a Constant
    Accessing Data Whose Address is a Variable
    Instruction Sequencing
    Compound Conditionals
    If-Then-Else Statements
    Building Loops
    Faster Loops with String Instructions
    Procedure Call and Return
    Parameter Passing
    Retrieving Parameters
    Everything is Pass by Value
    Temporary Variables
    Problems
    Input/Output Programming
    The Intel I/O Instructions
    Synchronization, Transfer Rate, and Latency
    Polled Waiting Loops
    Interrupt-Driven I/O
    The Hardware Response
    The Interrupt Service Routine
    Programmable Interrupt Controllers
    Buffers and Queues
    Writing Interrupt Service Routines in Assembly
    Writing Interrupt Service Routines in C
    Nonmaskable Interrupts
    Software Interrupts
    Exceptions
    Direct Memory Access
    Double Buffering
    Comparison of Methods
    Problems
    Concurrent Software
    Foreground/Background Systems
    Thread State and Serialization
    Managing Latency
    Preventing Interrupt Overrun
    Moving Work into the Background
    Multithreaded Programming
    Concurrent Execution of Independent Threads
    Context Switching
    Nonpreemptive (Cooperative) Multitasking
    Preemptive Multitasking
    Shared Resources and Critical Sections
    Disabling Interrupts
    Disabling Task Switching
    Spin Locks
    Mutex Objects
    Semaphores
    Problems
    Scheduling
    Thread States
    Pending Threads
    Context Switching
    Round-Robin Scheduling
    Priority-Based Scheduling
    Priority Inversion
    The Priority Inheritance Protocol
    The Priority Ceiling Protocol
    Assigning Priorities
    Deadline-Driven Scheduling
    Rate-Monotonic Scheduling
    Deadlock
    Watchdog Timers
    Problems
    Memory Management
    Objects in C
    Scope
    Refining Local Scope
    Refining Global Scope
    Lifetime
    Automatic Allocation
    Storage Class "Register"
    Static Allocation
    Three Programs to Distinguish Static from Automatic
    Object Creation
    Object Initialization
    Object Destruction
    Dynamic Allocation
    Fragmentation
    Memory Allocation Pools
    Automatic Allocation with Variable Size (alloca)
    Variable-Size Arrays
    Recursive Functions and Memory Allocation
    Problems
    Shared Memory
    Recognizing Shared Objects
    Shared Global Data
    Shared Private Data
    Shared Functions
    Reentrant Functions
    Read-Only Data
    Type Qualifier "const"
    Coding Practices to Avoid
    Functions That Keep Internal State in Local Static Objects
    Functions That Return the Address of a Local Static Object
    Accessing Shared Memory
    The Effect of Processor Word Size
    Read-Only and Write-Only Access
    Type Qualifier "volatile"
    Problems
    System Initialization
    Memory Layout
    The CPU
    Setting Up a Flat Memory Model
    Switching into Protected Mode
    C Run-Time Environment
    Copying from ROM to RAM
    Zeroing Uninitialized Statics
    Setting Up a Heap
    System Timer
    Timer 0: Timer Tick
    Timer 1: Memory Refresh
    Timer 2: Speaker Frequency
    Interrupt System
    Initializing the IDT
    Initializing the 8259 PICs
    Installing a New Interrupt Service Routine
    Contents of the CD-Rom
    The DJGPP C/C++ Compiler
    Installation
    Compilation
    On-Line Documentation (Info)
    The NASM Assembler
    Installation
    Running NASM
    Programming Projects
    Files Required from the CD-ROM for All Applications
    Files Required for Nonpreemptive Multithreaded Applications
    Files Required for Preemptive Multithreaded Applications
    Compiling and Assembling Your Embedded Application
    Linking Your Embedded Application
    Preparing the Boot Diskette
    Running Your Embedded Application
    Getting Started with the DJGPP Compiler Tools
    Using Fixed-Point Real Numbers
    Using Macros and Packed Operands
    Using "Makefiles"
    Coding Extended Precision Multiplication in Assembly
    Coding Extended Precision Division in Assembly
    Polled Waiting Loop and Interrupt-Driven I/O
    A Simple Nonpreemptive Multithreaded Application
    Preemptive Kernels and Shared Resources
    Avoiding Unbounded Priority Inversion
    Avoiding Deadlock
    The libepc Library
    Memory Layout and Initialization
    Display Functions (display.c)
    Window Functions (window.c)
    Keyboard Functions (keyboard.c)
    Speaker Functions (speaker.c)
    Timer Functions (timer.c, cycles.asm)
    Interrupt Vector Access Functions (init-idt.c)
    Dyamic Memory Allocation Functions (heap.c)
    Fixed Point (fixedpt.asm)
    Interfunction Jumps (setjmp.asm)
    Miscellaneous Functions (init-crt.c)
    The Boot Loader
    Index

    Buy it from $13.56
    what's this?
    Rush Rewards U
    Members Receive:
    coins
    coins
    You have reached 400 XP and carrot coins. That is the daily max!
    ×
    Free shipping on orders over $35*

    *A minimum purchase of $35 is required. Shipping is provided via FedEx SmartPost® and FedEx Express Saver®. Average delivery time is 1 – 5 business days, but is not guaranteed in that timeframe. Also allow 1 - 2 days for processing. Free shipping is eligible only in the continental United States and excludes Hawaii, Alaska and Puerto Rico. FedEx service marks used by permission."Marketplace" orders are not eligible for free or discounted shipping.

    Learn more about the TextbookRush Marketplace.

    ×