Home
Company Profile
Our Clients
Training
Courses
course list
roadmap
all dates
forthcoming
booking
Graduate
Training
Mentoring
Location
Links
Contact us

 


 C Training Courses
AC-401
Advanced C Programming

Length: 4 days
Cost: £1694 - 10% discount given if a previous C course has been attended
Course description - see below or view PDF
Check course dates - click here
Booking information - click here
 Course Detail

Course Description:
Many engineers work with the C programming language everyday for real-time embedded development. However some hit a plateau and never feel comfortable with certain aspects of the language. This course aims to move people off that plateau and give them a fuller appreciation of the more advanced aspects of the language. Because of the requirements for programming real-time embedded systems, this course goes beyond just addressing the language issues and explores compile, link and run-time issues. In addition it covers interrupts and multi-tasking areas specific to C.

As part of the course, approximately 50% of the time is given over to writing code for a real target.

Overview:
An intensive four day course covering the advanced aspects of the C programming for the real-time embedded programmer.

Course Objectives:
• To become comfortable with the advanced aspects of the C programming language
• To gain an in-depth knowledge on what is happening at compile, link and runtime on a target processor
• To introduce good quality and style for real-time embedded programming
• To gain hands-on experiences of programming up interrupts and real-time operating systems.

Delegates will learn:
• Advanced aspects of the C programming language
• The traps and pitfalls of the language (e.g. structure packing, dynamic memory, etc.)
• Compile, link, and run-time memory models
• MISRA-C (www.mira.org) guidelines
• What parts of C should and should not be used in real-time embedded systems programming.

Pre-requisites:
• A good grasp of the fundamentals of C, or
• Attendance of Feabhas course C-501 : C for Real-Time Programmers.

Who Should Attend:
The course is designed for engineers who want to improve their grounding and understanding of the C programming language. It is specifically aimed at issues relevant to real-time embedded software engineers.

Duration:
Four days

Course Materials:
• Delegate Handbook

Related Courses:
• RTOS-201 Fundamentals of Real-Time Operating Systems
• OO-503 Real-Time Software Design with UML 2.0
• MC-101 Guidelines for Writing High Integrity Software in C
• C-501 C for Real-Time Developers

Course Workshop:
The course workshop uses the GNU compiler and the Philips LCP2129 ARM7TDMI microcontroller as a target for the handson sessions. Exercises are designed to stretch attendees’ abilities and explore subtleties of the language. A good working knowledge of the C programming language is essential as some of the exercises involve extensive programming. The µC/OS-II RTOS is used for the hands-on exercises relating to multitasking.

Course Outline:

Day 1
Introduction

Program Structure
- Importance of good structure
- Quality and style
Pointers, Arrays & Dynamic
Allocation

- Arrays & pointers; compatibility
and incompatibility
Function Pointers
- Basics
- Callbacks
- State machine
Unscrambling Declarations
- Rules
- Using typedef
Day 2
Enumerations, Structures and
Unions

- Enum vs. #define
- Struct layout
- Uses of union
Interrupts
- Hardware interrupt models
- Software interrupts
Multi-Tasking (Multi-Threading)
- Terminology
- Advantages and disadvantages
- Intertask Communication &
synchronisation
Day 3
The Linker

- Memory sections
Start-up, Runtime and the Stack
- What happens before main
- What is happening at runtime
- Estimation of stack requirements
Dynamic Memory
- Malloc, calloc and realloc
- Variable sized structures
- Dangers
Memory Management and Protection
- Memory protection
- MMU
- Segmentation and paging
Day 4
Writing Safer C

- MISRA-C Guidelines
OOP with C
- Object-based and objectoriented
- Classes, inheritance and polymorphism
- Associations and aggregation
Number Crunching
- Floating-point and fixed-point number systems
- IEEE Standard 754
The Standard Library
- Major issues
C99
- Summary of significant new features

 telelogic website

Training Courses
C Training Courses
C++ Training Courses
Design Patterns for
Embedded Systems
Training Courses

Embedded Linux
Training Courses

Java Training Courses
Microsoft Embedded Training Courses
MISRA-C Training Courses
RTOS Training Courses
Software Engineering Training Courses
SNMP Training Courses
SysML Training Courses
TCP/IP Training Courses
Testing Training Courses
Microsoft Windows Device Driver Courses
UML Training Courses

Feabhas Codes
AC-401
AC++-501
AWDM-501
CE-501
C-501
C++-303
C++-501
C++-502
C++-503
DP-401
EL-201
EL-202
EL-301
EL-503
EL-504
J-501
J-502
MC-101
MSDN-2530
MSDN-2535
MSDN-2540
MSDN-2545
MSDN-2540N
NDIS-501
OO-101
OO-301
OO-503
RB-201
RTOS-201
SE-401
SE-501
SNMP-301
T-301
TCP-401
WDF-501
WDM-501