Design - Develop - Deploy

Embedded System Programming

Summary

The course provides the skills needed to develop software for embedded systems. The course explains the architecture common to most 8-bit micro controllers, then demonstrates the advantages of programming in C instead of the micro controller's specific assembly language, including faster development, improved portability, and reusability. This course also covers more advanced parts of the C language like pre-processor, complex declarations and expressions, recursion, pointers and data structures. This is a very practical, results-oriented course, which will provide knowledge and skills which can be applied immediately.

Pre-requisite

  • Good programming knowledge.

  • C programming basics

Duration

  • Duration: 72 hours

  • Span: 6 weeks

Syllabus

Advanced C

Types, Declaration, Exp, functions

  • Basic types and declarations

  • Initialization

  • Const and volatile

  • Expressions and operators

  • Short Circuiting

  • Size of

  • typedef

  • Functions

  • Stack

  • Importance of Function Prototypes

  • storage class

Pointer and Array Basics

  • Simple Pointers

  • Single Dimensional Arrays

  • Arrays Initialization

  • Pointer and Array Names

  • Pointer Arithmetic

  • The Square bracket Notation

  • Passing Arrays to Function

  • Returning Arrays from Function Pitfall

  • NULL Pointers

  • Function Pointers

Pointers and Strings

  • Strings

  • String Literals

  • String Literals and Arrays

  • Null Strings

  • String Literal Pitfalls

Structures and Unions

  • Purpose of Structures

  • Structure Initialization

  • Arrays of struct

  • Field Alignment and Padding

  • Field Offsets

  • Self Referential Structures

  • Mutually Referential Structures

  • Purpose of Unions

  • Union Initialization

  • Incomplete types

The Linear Dynamic Data Structures

  • Need for Dynamic Data Structures

  • The Stack and Queue Data Structures

  • The Linked List Data Structure

  • Dynamic Memory Allocation

Recursion

  • Recursive Computation of a Factorial

  • Recursive Computation of the Fibonacci Number Sequence

Preprocessor

  • Preprocessor Constants

  • Preprocessor Macros

  • Macro Pitfalls

  • Conditional Compilation

  • Stringization Operator

  • Token Pasting Operator

Embedded System Programming

Introduction

  • What Is an Embedded System?

  • Define the components of an embedded systems

Hardware Fundamentals

  • Logic Gates

  • Flip flops

  • Clocks

  • Counters and Shift Registers

  • Decoders and Encoders

  • Demultiplexers and Multiplexers

  • Read Only Memory (ROM) - PROM, EPROM, EEPROM, Flash EEPROM

  • Random Access Memory (RAM) - Static RAM, Dynamic RAM

Micro Controller

  • Introduction

  • Architecture

  • On-chip program Memory

  • On-chip Data RAM

  • Bi-directional and Individually Addressable IO Lines

  • Timers/Counters

  • UART

  • Interrupt Structure

  • Clock Oscillator

  • On Chip I2C and SPI bus controllers

Programming

  • Create embedded applications.

  • Write, compile, link, and test embedded C programs.

  • Use the embedded tools including: IDE, C compiler and linker.

  • Download and run programs on an evaluation target board.

Keyboard interface

  • Keyboard Basics

  • Matrix Keyboard Scanning Algorithm

  • Using the Matrix Keyboard Module

LED Displays

  • Multiplexed LED Display Module

  • Using the Multiplexed LED Display Module

Liquid Crystal Displays

  • character LCD Modules

  • using LCD Module Display

Real Time Clock

  • RTC display module

  • using RTC Module

Analog I/Os

  • Analog Inputs

  • Reading an ADC

  • using Analog I/O Module

Asynchronous Serial Communications

  • RS-232C

  • Sending and Receiving Data using Serial Ports on a PC