Embedded System Programming
0%
Course Title: Embedded System Programming
Course No: CSIT.425.3
Nature of the Course: Theory + Lab
Semester: 8
Full Marks: 60 + 20 + 20
Pass Marks: 24 + 10 + 10
Credit Hours: 3
Course Description
Course Objectives
Course Contents
1. Introduction
5 hrs
1.1. Embedded System Basics
- What is Embedded System (ES)?
- Real-time Systems
- Components of ES
- Requirements that Affect Design Choices
- Embedded Design Examples (Digital Watch, Video Game Player)
1.2. Embedded Programming Languages
- Embedded Software Developer
- C language for Embedded Programming
- Other Embedded Languages
2.1. Hardware Basics
- Schematic Fundamentals
- Memory Map
- How to Communicate?
- Processor
- PXA255 XScale Processor
- External Peripherals
- Hardware Initialization
2.2. Embedded Programs
- Hello World Program
- LED Blinking Program
- Role of Infinite Loop
2.3. Compiling, Linking and Locating
- Build process
- Compiling
- Linking
- Startup Code
- Locating
- Building the LED Blinking Program (compile, link and locate)
- Format the Output File
- Makefiles
2.4. Downloading and Debugging
- Downloading LED Blinking Program
- Debug Monitors (Downloading and Running Programs with ReBoot)
- Remote Debuggers
- Emulators
- Other Useful Tools
3. Memory
8 hrs
3.1. Memory Types and Issues
- Types of Memory
- Types of RAM and ROM
- Hybrid Types
- DMA
- Endian Issues
- Endianness in Devices and Networking
3.2. Memory Testing
- Common Memory Problems
- Electrical Wiring Problems
- Missing Memory Chips
- Improperly Inserted Chips
- Data Bus Test
- Address Bus Test
- Device Test
3.3. Flash Memory
- Validating memory Content (Checksum & CRC)
- Using Flash Memory
- Working with Flash Memory
- Flash Drivers
4.1. Registers and Bit Manipulation
- Control and Status Registers
- Testing Bits
- Setting Bits
- Clearing Bits
- Toggling and Shifting Bits
- Bitmasks
- Bit fields
- Struct Overlays
4.2. Device Drivers
- Device Driver Philosophy
- Serial Device Driver: Register Interface, State Variables, Initialization Routine, Device Driver API
- Testing Serial Device Driver
- Extending Functionality
- Device Driver Design
4.3. Interrupts and Timers
- Interrupts Overview
- Priority, Levels and Edges
- Enabling and Disabling
- Interrupt Map
- Interrupt Service Routine
- Shared Data and Race Conditions
- Improved LED Blinking Program
- Working of Timers
5. Operating Systems II
10 hrs
5.1. RTOS Concepts
- Purpose
- Scheduler
- Real-time Scheduling
- Scheduling Points
- Locking and Unlocking
- Task States
- Task Context
- Task Priorities
- Task Mechanics
- Task Synchronization
5.2. RTOS Features and Selection
- Message Passing
- Other Functionality
- Interrupt Handling
- RTOS Characteristics
- When to use RTOS?
- RTOS Selection Process
5.3. eCos and Embedded Linux Examples
- eCos Introduction
- eCos Task Mechanics
- eCos Task Synchronization
- eCos Message Passing
- eCos Interrupt handling
- Embedded Linux Introduction
- Embedded Linux Accessing Hardware
- Embedded Linux Task Mechanics
- Embedded Linux Task Synchronization
- Embedded Linux Message Passing
- Embedded Linux Interrupt handling
Laboratory Works
- 1.Embedded Programming
- 2.Embedded OS Features
Text Books
- 1.Programming Embedded Systems, 2nd Edition, Anthony Massa, Michael Barr, O'Reilly Media, Inc, 2006
Reference Books
- 1.Computers as Components: Principles of Embedded Computing System Design, W. Wolf, Morgan Kaufmann, Second Edition, 2008.
- 2.Introduction to Embedded Systems, A Cyber-Physical Systems Approach, 2011
- 3.Introduction to Embedded Systems, David Russell, 2010.