Advanced C, data structures, algorithms, modular programming and device driver and interrupt handling
Course
In Carshalton
Description
-
Type
Course
-
Location
Carshalton
-
Duration
5 Days
Students completing this course will considerably improve the discipline and rigour with which they design and write embedded systems applications in C. You'll be able to implement classical data structures such as circular buffers, linked lists, and trees -- and you'll know when it's appropriate to use them. You'll be exposed to a variety of advanced programming idioms. Suitable for: Attendees should have some experience of embedded systems programming and a sound basic knowledge of the C language. Course IAR101, "Introduction to C for Embedded Systems Developers" provides suitable background.
Facilities
Location
Start date
Start date
Reviews
Course programme
The course emphasises the implementation of disciplined and well structured code and the design of modules with clean interfaces. Topics include:
- Advanced use of dynamic data structures and algorithms for manipulating them.
- Structured interrupt handling
- Strategies and patterns for the implementation of basci multi-tasking applications
- Principles of Working with embedded operating systems
- Understanding basic techniques for inter-process communication and synchronisation
- Finite state machines, statecharts, and their uses
- More advanced data structures and algorithms - binary trees, heaps, hash tables, CRC checksums
The course uses ARM / AVR processors as a target platforms for hands-on work. However, the techniques taught can be readily applied to other architectures. Similarly, the course uses uCOSII and Powerpac as example operating systems, but Inter-Process Communication techniques are covered in a generic way so that they can be applied to other architectures and operating systems.
Course Benefits
Students completing this course will considerably improve the discipline and rigour with which they design and write embedded systems applications in C.
You'll be able to implement classical data structures such as circular buffers, linked lists, and trees -- and you'll know when it's appropriate to use them.
You'll be exposed to a variety of advanced programming idioms and algorithms with their associated data structures, for tasks such as indexing, data compression and error detection.
You'll learn to write event driven programs, to implement Finite State Machines, and to design hierarchical state machines using statecharts.
You'll learn structured programming techniques for implementing multi-tasking applications, and you'll be able to start working with embedded operating systems.
Course Contents
Intensive overview of essential C concepts and idioms
- Data types, data structures, pointers and arrays
- Using pointers to search collections of data
- Circular buffers
- Polygonal buffers
- I/O vectors
- Singly linked and doubly linked lists
- Using lists to implements FIFO queues and LIFO queues (stacks)
- Using lists of linked lists
- Using linked list nodes containing void * pointers to implement heterogeneous collections of data
- Using linked lists to implement resizeable arrays
- Basic binary trees
- Self-balancing binary trees (AVL, Red-Black, Splay)
- Heaps and their uses
- Huffman encoding
- Priority queues
- CRC checksums (16 bit and 32 bit)
- Event driven programming
- Basic FSMs
- Pattern matching
- Parsing
- State driven hardware and communication protocols
- Implementing FSMs using switch statements
- Implementing FSMs using a table driven approach
- Limitations of FSMs
- Extended FSMs and hierarchical FSMs
- Extending FSMs by adding variables and conditional transitions
- Nesting state machines (push down automata)
- Hierachical FSMs and extended FSMs (simple statecharts)
- Orthogonal statecharts and concurrency
- Active objects - linking multi-tasking, message passing and event driven programming
- Task life cycle
- Task management
- Communication between tasks
- Controlling access to shared resources using semaphores
- Timers and schedulers
- Device drivers
Advanced C, data structures, algorithms, modular programming and device driver and interrupt handling