The C programming language continues to be one of the most widely used languages in embedded systems design. Despite its popularity, C is no longer taught at universities and most industry courses just teach the fundamentals. There's no good source for developers who want to take their C programming skills to the expert level in a practical way that can be used even in robust embedded systems.
This technology primer is designed to provide developers expert tips, tricks and insights about how to use C to build real-time embedded systems. The primer will include a weekly blog, expert tip to immediately apply in the design cycle and a monthly video that goes deeper on several expert topics.
- Welcome to Advanced C Techniques
- Professional Coding Conventions
- Professional Software Starts with a SDLC
- Writing MISRA-C Compliant Software
-
Best Practices for using Interrupts
-
An Introduction to Assertions
-
Design by Contract
-
Real-Time Assertions
-
Reviewing Function Pointers
-
Designing a Baremetal Cooperative Scheduler
-
Writing a Cooperative Scheduler
-
Alternative Scheduling Paradigms for Real-Time Systems
-
Designing a lightweight communication protocol
-
Checksums and CRC’s
-
Leveraging CRC Hardware Accelerators
-
Implementing an efficient command parser
-
Accelerating Design through Software Architecture
-
An Introduction to State Machines
-
Techniques for State Machine Implementation Part 1
-
Techniques for State Machine Implementation Part 2
-
Defining Faults, Errors and Bugs
-
Strategies for Handling Errors
-
C Error Handling Techniques
-
Running RAM Tests
-
An Introduction to Watchdog Timers
-
Watchdog Timer Strategies
-
Designing a Watchdog
-
Watchdog Best Practices
-
Concepts for Developing Portable Firmware
-
The Hardware Abstraction Layer (HAL) Design Process
-
HAL Design for MCU Peripherals
-
Implementing Reusable Peripheral Drivers
-
Testing Strategies for Real-Time Embedded Systems
-
Leveraging Cyclomatic Complexity for Unit Testing
-
Test Driven Development
-
Hardware in Loop Testing
-
How to select a Real-Time Operating System (RTOS)
-
RTOS Application Task Decomposition
-
Performing a Rate Monotonic Analysis (RMA)
-
Best Practices for RTOS Application Design
-
Strategies for Minimizing Debug Time
-
Jump Starting Development to Minimize Bugs Process
-
Debugging Interfaces and Tools
-
Best Practices for Performing Code Reviews
-
Best Practices for Securing an Embedded System
-
Securing Embedded Systems through Isolation
-
Leveraging the MPU for Safety and Security
-
How to Select a Microcontroller
-
The Professional Embedded Software Developers Workbench
-
Best Practices for using Assembly Language
-
Leveraging the KT Matrix to Make Decisions
-
Becoming a C Expert
If you have any questions, please contact Jacob at [email protected]