C Programming for Embedded Systems Training in Burnsville

Enroll in or hire us to teach our C Programming for Embedded Systems class in Burnsville, Minnesota by calling us @303.377.6176. Like all HSG classes, C Programming for Embedded Systems may be offered either onsite or via instructor led virtual training. Consider looking at our public training schedule to see if it is scheduled: Public Training Classes
Provided there are enough attendees, C Programming for Embedded Systems may be taught at one of our local training facilities.
We offer private customized training for groups of 3 or more attendees.

Course Description

 
Embedded Systems is a hands-on course aimed at software, firmware, and hardware engineers who need to learn the practical skills necessary to program embedded microcontrollers in C.
Course Length: 3 Days
Course Tuition: $2090 (US)

Prerequisites

Previous experience with C is advantageous but is not essential. Embedded programming experience is not necessary. A working knowledge of programming language concepts and syntax. In particular, students should have a working knowledge of functions, variables, data types, operators, and statements.

Course Outline

 

Introduction

  • ANSI Standard
  • Fundamentals of C
  • Datatypes and Constants
  • Simple & Formatted I/O
  • Memory Usage
  • Operators & Expressions
  • Flow Control
  • Loops

Functions

  • Role of Functions
  • Pass by value / reference
  • Returning values from Functions
  • Recursive Functions
  • Call Back Functions
  • Implications on Stack
  • Library Vs User defined function
  • Passing variable number of arguments

Arrays

  • Defining, initializing and using arrays
  • Multi Dimensional Arrays
  • Arrays of Characters and Strings
  • Arrays and Pointers
  • Passing arrays to functions
  • String handling with and without library functions

Storage Classes

  • Scope and Life
  • Automatic, Static, External, Register
  • Memory(CPU / RAM)

Structures & Unions

  • What structures are for
  • Declaration, initialization
  • Accessing like objects
  • Nested Structures
  • Array of Structures
  • Passing structures through functions
  • Allocation of memory and holes
  • Structure Comparison
  • Structure bit operation
  • Typedef for portability
  • Unions
  • Overlapping members

Enumerated data types

  • Enum, Indexing, enum Vs #define

Bit Operations

  • AND ( & ), OR ( | ), XOR ( ^ )
  • Compliment ( ~ )
  • Left-Shift ( << ), Right Shift ( >> )
  • Masking, Setting, Clearing and Testing of Bit / Bits

Pointers

  • The purpose of pointers
  • Defining pointers
  • The & and * operators
  • Pointer Assignment
  • Pointer Arithmetic
  • Multiple indirections
  • Advanced pointer types
  • Generic and Null Pointer
  • Function Pointers
  • Pointers to Arrays and Strings
  • Array of Pointers
  • Pointers to Structure and Union
  • Pointers to Dynamic memory
  • Far, Near and Huge Pointers
  • Pointer Type Casting

Dynamic Memory Allocation

  • Malloc(), Calloc(), Realloc(), Free()
  • Farmalloc(), Farcalloc()

File Handling Concepts

  • Concept of a FILE data type
  • Inode, FILE structure
  • File pointer
  • Character handling routines
  • Formatted Data Routines
  • Raw data Routines
  • Random Access to FILE

Command line Arguments

  • Argc, argv
  • Variable Inputs to the main

Compiler in Practical

  • Preprocessor Directives
  • Compiler, Assembler, Linker
  • Conditional Compilation
  • Multiple File Compilation
  • Code Optimization techniques
  • Volatile, #pragma

Data Structures

  • Linear & non-linear
  • Homogeneous & non-homogeneous
  • Static & Dynamic
  • Single, Double & Circular Linked Lists
  • Stacks & Queues
  • Binary Trees

Sorting and Searching Techniques

  • Insertion, Selection, Bubble, Merge, Quick, Heap

Concepts and Real-time Exposure

  • Development Tools and Environment
  • Make Utility
  • Industry Coding Standards
  • Object / Executable File Format
  • Debugger

Software Design/Development and System Integration Uses & Stats

Software Design/Development and System Integration is Used For:
Operating Systems Software Development Hardware Embedded Systems
Difficulty
Popularity
Year Created
1972
Pros
Tried and True: 
Since there a many programs that have been influenced by C, knowing C makes it that much easier to learn other languages. 
 
Access To Machine Level Hardware API's: 
Various features of C make it an optimum choice for scripting applications and drivers of embedded systems.
 
 
Has a Rich Library: 
C provides a number of built-in functions and offers dynamic memory allocation.
 
Implements Algorithms And Data Structures: 
C can facilitate faster computations in programs. This has enabled the use of C in applications requiring higher degrees of calculations like MATLAB and Mathematica.
 
Transferable:
Developers can develop software in C software with little to no modification that can run on different platforms . 
Cons
Object Oriented Programming:
C does not support Object Oriented programming which support source code reusability and it's also the reason that C++ was invented. 
 
No Run-Time Checking: 
The C language does not allow runtime checking making it difficult to fix the bugs if you extend the program. 
 
Data Security: 
There is a lot of buffer overflow in C language and this can lead to overwriting information in the memory. When pointers are updated with the incorrect data, it will result in memory corruption.
 
Namespace Concept: 
It is impossible to declare two variables at the same time because C language doesn’t support program name-space like in the C++ program.
 
Learning Curve: 
Depending on your grasp for software concepts, learning C can take as little as two to six months. 
Software Design/Development and System Integration Job Market
Average Salary
102000
Job Count
38456
Top Job Locations

New York City 
Washington D.C. 
San Francisco 

Complimentary Skills to have along with Software Design/Development and System Integration

- C was created between 1969 and 1973 at ATT&T Bell Labs by Dennis Richie and used to re-implement the Unix operating system. 

-  The Top 10 programming languages, according to the TIOBE index seem to be heavily influenced by C:

1. Java derives much of its syntax from C and C++
2. C# is an object-oriented programming language that was “inspired by” C.
3. C++ was developed by Bjarne Stroustrup starting at Bell Labs starting in1979 as an enhanced version of C. 
4. Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language
5. PHP developed in 1995 by Rasmus Lerdorf is widely used as a server-side HTML scripting language with a C-like syntax.
6. Python, is a general-purpose language that is often used outside of websites. It was created as a scripting language to bridge the gap between the Shell and C.
7. Perl borrows features from other programming languages including C, shell scripting (sh), AWK, and sed. 
8. JavaScript uses syntax influenced by that of C. 

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.