New In Store

0
  • No products in the cart.
0
  • No products in the cart.

Shop

Thea Smartt Henry / Fundamentals of Embedded Software with the ARM Cortex-M3 (2nd Edition)

Fundamentals of Embedded Software with the ARM Cortex-M3 (2nd Edition)

$ 6.50

DescriptionFor 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.Allows instructors to easily introduce embedded systems into an already packed curriculum, and provides a way to cover the procedural style still necessary in upper-division courses.This book is intended to provide a highly motivating context in which to learn procedural programming languages. The ultimate goal of this text is to lay a foundation that supports the multi-threaded style of programming and high-reliability requirements of embedded software. It presents assembly the way it is most commonly used in practice – to implement small, fast, or special-purpose routines called from a main program written in a high-level language such as C. Students not only learn that assembly still has an important role to play, but their discovery of multi-threaded programming, preemptive and non-preemptive systems, shared resources, and scheduling helps sustain their interest, feeds their curiosity, and strengthens their preparation for subsequent courses on operating systems, real-time systems, networking, and microprocessor-based design.Table of ContentsPart 1 Introduction        WHAT IS AN EMBEDDED SYSTEM?WHAT’S UNIQUE ABOUT THE DESIGN GOALS FOR EMBEDDED SOFTWARE?What Does “Real-Time” Mean?What Does “multithreading” mean?HOW POWERFUL ARE EMBEDDED PROCESSORS?WHAT PROGRAMMING LANGUAGES ARE USED?HOW IS BUILDING AN EMBEDDED APPLICATION DIFFERENT?HOW BIG ARE TYPICAL EMBEDDED PROGRAMS?PROBLEMSPart 2 Data RepresentationFIXED-PRECISION BINARY NUMBERSPOSITIONAL NUMBER SYSTEMSBinary-to-Decimal ConversionDecimal-to-Binary ConversionHexadecimal — A Shorthand for BinaryFixed Precision, Rollover and OverflowBINARY REPRESENTATION OF INTEGERSSigned IntegersPositive and Negative Representations of the Same MagnitudeInterpreting the Value of a 2’s-Complement NumberChanging the Sign of Numbers with Integer and Fractional PartsBinary Addition and SubtractionRange and OverflowBINARY REPRESENTATION OF REAL NUMBERSFloating-Point Real NumbersFixed-Point Real NumbersASCII REPRESENTATION OF TEXTBINARY-CODED DECIMAL (BCD)PROBLEMSPart 3 Implementing Arithmetic        2’s Complement and hardware complexityMULTIPLICATION AND DIVISIONSigned vs. Unsigned MultiplicationShifting Instead of Multiplying or Dividing by Powers of 2Multiplying by an Arbitrary ConstantDividing by an Arbitrary ConstantARITHMETIC FOR FIXED-POINT REALSFixed-Point Using a Universal 16.16 FormatFixed-Point Using a Universal 32.32 FormatMultiplication of 32.32 Fixed Point RealsExample: Multiplying two 4.4 Fixed Point RealsPROBLEMSPart 4 Getting the Most Out of C       Integer Data TypesInteger Range and the Standard Header File LIMITS.HBOOLEAN Data TypesMixing Data TypesManipulating Bits in MemoryTesting BitsSetting, Clearing, and Inverting BitsExtracting BitsInserting BitsManipulating Bits in INPUT/OUTPUT PORTSWrite-Only I/O DevicesI/O Devices Differentiated by Reads Versus WritesI/O Devices Differentiated by Sequential AccessI/O Devices Differentiated by Bits in the Written DataAccessing Memory-Mapped I/O DevicesAccessing Data Using a PointerArrays, Pointers, and the “Address of” OperatorStructuresPacked StructuresBit FieldsVariant AccessCasting the Address of an ObjectUsing UnionsProblemsPart 5 Programming in AssemblyPart 1: Computer OrganizationMemoryData AlignmentThe Central Processing Unit (CPU)Other RegistersThe Fetch-Execute CycleInput/Output (I/O)Introduction to the ARM® CortexTM- M3 V7M ArchitectureInternal OrganizationInstruction PipeliningMemory ModelBit-BandingARM ASSEMBLY LANGUAGEInstruction Formats and OperandsTranslating Assembly into BinaryProblemsPart 6 Programming in AssemblyPart 2: Data ManipulationLOADING CONSTANTS INTO REGISTERSLOADING MEMORY DATA INTO REGISTERSSTORING DATA FROM REGISTERS TO MEMORYCONVERTING SIMPLE C ASSIGNMENT STATEMENTS INTO ARM ASSEMBLYMEMORY ADDRESS CALCULATIONSMEMORY ADDRESSING EXAMPLESTranslating C Pointer Expressions to AssemblyTranslating C Subscript Expressions to AssemblyTranslating Structure References to AssemblySTACK INSTRUCTIONSDATA PROCESSING INSTRUCTIONSUpdating the Flags in the APSRArithmetic InstructionsBit Manipulation InstructionsShift InstructionsBitfield Manipulation InstructionsMiscellaneous Bit, Byte and Halfword InstructionsPROBLEMSPart 7 Programming in AssemblyPart 3: Control StructuresINSTRUCTION SEQUENCINGIMPLEMENTING DECISIONSConditional Branch InstructionsIf-Then and If-Then-Else StatementsCompound ConditionalsThe “If-Then” (IT) InstructionIMPLEMENTING LOOPSSpeeding Up Array AccessIMPLEMENTING FUNCTIONSFunction Call and ReturnRegister UsageParameter PassingReturn ValuesTemporary VariablesPreserving RegistersPROBLEMSPart 8 Programming in AssemblyPart 4: I/O ProgrammingTHE CORTEX-M3 I/O HARDWAREInterrupts and ExceptionsThread and Handler ModesEntering the Exception HandlerReturning from the Exception HandlerLatency ReductionPriorities and Nested ExceptionsSYNCHRONIZATION, TRANSFER RATE, AND LATENCYBUFFERS AND QUEUESDouble BufferingESTIMATING I/O PERFORMANCE CAPABILITYPolled Waiting LoopsInterrupt-Driven I/ODirect Memory AccessComparison of MethodsPROBLEMSPart 9 Concurrent SoftwareFOREGROUND/BACKGROUND SYSTEMSThread State and SerializationManaging LatencyInterrupt OverrunMoving Work into the BackgroundMULTI-THREADED PROGRAMMINGConcurrent Execution of Independent ThreadsContext SwitchingNon-preemptive (Cooperative) MultithreadingPreemptive MultithreadingSHARED RESOURCES AND CRITICAL SECTIONSDisabling InterruptsDisabling Task SwitchingSpin LocksMutex ObjectsSemaphoresPROBLEMSPart 10 SchedulingTHREAD STATESPENDING THREADSCONTEXT SWITCHINGROUND-ROBIN SCHEDULINGPRIORITY-BASED SCHEDULINGResource StarvationPriority InversionThe Priority Ceiling ProtocolThe Priority Inheritance ProtocolASSIGNING PRIORITIESDeadline-Driven SchedulingRate-Monotonic SchedulingDEADLOCKWATCHDOG TIMERSPROBLEMSPart 11 Memory ManagementOBJECTS IN CSCOPERefining Local ScopeRefining Global ScopeLIFETIMEAUTOMATIC ALLOCATIONStorage Class “Register”STATIC ALLOCATIONTHREE PROGRAMS TO DISTINGUISH STATIC FROM AUTOMATICObject CreationObject InitializationObject DestructionDYNAMIC ALLOCATIONFragmentationMemory Allocation PoolsAUTOMATIC ALLOCATION WITH VARIABLE SIZE (alloca)Variable-Size ArraysRECURSIVE FUNCTIONS AND MEMORY ALLOCATIONPROBLEMSPart 12 Shared MemoryRECOGNIZING SHARED OBJECTSREENTRANT FUNCTIONSREAD-ONLY DATAType Qualifier “const”CODING PRACTICES TO AVOIDFunctions That Keep Internal State in Local Static ObjectsFunctions That Return the Address of a Local Static ObjectACCESSING SHARED MEMORYThe Effect of Processor ArchitectureRead-Only and Write-Only AccessType Qualifier “volatile”PROBLEMSPart 13 System InitializationMEMORY LAYOUTTHE CPU AND VECTOR TABLEC RUN-TIME ENVIRONMENTCopying Initial Values from Non-Volatile Memory into the Data RegionZeroing Uninitialized StaticsSetting Up a HeapSYSTEM TIMEROTHER PERIPHERAL DEVICES

You may also like…