Course M324
PIC32 Advanced Embedded Systems C Programming
PIC32 Advanced Embedded Systems C Programming
| Duration: 5 Days | Microchip Certified Training |
Intended Audience
This course is aimed at experiened embedded systems engineers experienced in developing embedded systems applications in C. This course is a follow on to the Embedded C Programming for the PIC32 course, and covers a variety of more advanced topics that include more advanced dynamic data structures and algorithms such as heaps, self balancing binary trees and hashing, low level ethernet, TCP/IP and USB programming as well as programming with the Microchip graphics library and the Microchip file system libraries, and the impementation of deterministic timer interrupt driven schedulers based on the Pont scheduler design pattern. The course also provides an in depth introduction to bootloaders, their implementation, and their integration into embedded systems applications.
A good knowledge of 'C' programming as well as embedded systems programming is assumed. The emphasis of the course is on developing embedded systems applications that integrate mutliple peripherals and complex application level protocols. The course also covers the implementation of smart sensors and sensor boards that can be connected to PCs via ethernet, RS232 or USB, especially the design of micro-message protocols for both the configuration and control of such sensors as well as the retrieval of current and logged sensor readings.
Course Overview
This "hands-on" course aims to provide engineers with idioms, patterns and templates for constructing and implementing a variety of devices from smart sensors to control systems to communication systems that can be glued together to form networks of objects ranging from a few nodes to many nodes depending on application requirements.
Key Skills
- Advanced data structures and algorithms for embedded systems
- Smart sensors and controllers communicating with windows and linux based systems over USB, ethernet, wireless and serial communications links
- Micro-messaging protocols for data acquisition and control
- Understanding and extending the lessons learned from Phidgets, Velleman and similar systems
- Understanding the lessons learned from HART, CanOpen, BACS and KNX
Practical Work
Building micro-messaging applications over USB, Ethernet, CAN and Wireless links
You will learn how to:
- Build PIC32 systems that can communicate with PCs and Mobile devices for data acquisition, monitoring and control purposes
- Build applications that make use of SDCard and Flash memory filesystems for both logging and code loading
- Implement deterministic timer interrupt driven schedulers
- Understand simple, extended and hierarchical Finite State Machines and Statecharts and their uses in designing and implementing rich multi-tasking embedded systems
- Implement intelligent web server and RESTful server nodes
- Create effective GUI interfaces using the Microchip graphics library
- Build basic image capture and speech synthesis applications for use in toys and in interactive applications
- Implement basic gesture recognition applications using I2C based accelerometer devices
Course Contents
Advanced Data Structures and Algorithms
- Circular buffers, polygonal buffers and IO-Vector scatter-gather
- Direct Memory Access(DMA)programming techniques
- DMA for multi-analog-input data acquisition
- Realisation of simple and advanced state machine designs in C
- Implementing component interfaces via pointers to data structures of function pointers
- Singly linked and doubly linked lists and their uses
- Indexing using hashing and self-balancing binary trees
- Heaps and their uses
- Basics of Hidden Markov Modeling and its applications to embedded systems
Overview of Development Tools
- Microchip development software: MPLAB, C32, MPSIM and associated tools
- Microchip In-Circuit Debugger (ICD3) and In-Circuit Emulator (ICE) hardware
- Device programmers, and the design option of In-Circuit Serial Programming (ICSP)
- Demonstration boards and kits
- Third-party development tools and libraries
The PIC32 Architecture - In depth overviews of
- The PIC32 architecture and instruction set
- The C32 and Hitech PIC32 compilers and their support for code optimisation
- On-chip peripherals available on PIC32 microcontrollers
- Support for power conservation
- Interrupts
- Direct Memory Access (DMA) and DMA programming techniques
State Machines, Schedulers, RTOS and Multi-tasking
- Classical embedded systems multi-tasking using polling, mosaic scheduling, interrupt driven and hybrid approaches
- Analysis and design for multi-tasking using Extended Finite State Machines and Statecharts
- Protocol analysis and design using extended finite state machines
- Understanding implementing the Pont approach to scheduling on PIC32 devices
- Comparing and contrasting various embedded operating systems - FreeRTOS, CMX, uCOSII/III and ThreadX
Buses and Bus Protocols and their APIs
- USB
- Ethernet and TCP/IP
- HTTP based services - classical HTTP, RESTful services
- HART, BACS, KNX and CAN Open - compared and contrasted
- Bootloading over serial, ethernet and USB connections
File systems, GUIs and HCI
- Microchip file system, FAT32 file system, CMX and uCOS filesystem implementations
- GUI displays - Microhip graphics library
- Buttons, keypads and touch input technologies
