Price: $1,699.00

Length: 2 Days
Print Friendly, PDF & Email

MISRA-C Training

Back in the late 1990s, the Motor Industry Software Reliability Association (MISRA) introduced a set of guidelines for the use of C in vehicle systems, which became known as MISRA C.

MISRA C came about due to necessary refinements for the C programming language, especially to help embedded developers who at that time felt there was no programming language specifically for their needs.

The problem was that, while the C language is compact, expressive and powerful and provides a programmer with the means to write efficient, readable and maintainable code, there is also a downside. The C language also enables the unwary developer to write dangerous, insecure code that can cause serious problems at all stages of a development project and into deployment.

For embedded applications where safety and/or security are a major priority, these shortcomings of the language were a major concern.

Although MISRA C was originally aimed at developers of software for use in cars, after steady refinement, it was quickly realized that MISRA C is equally applicable to many other application areas where safety is critical.

Consequently, MISRA C is now widely adopted in many industries, including those where embedded developers thrive.

In the guidance, Rule 1.3 (“There shall be no occurrence of undefined or critical unspecified behavior.”) and Directive 4.1 (“Run-time failures shall be minimized.”) are of particular importance. Many of the most serious bugs in C arise from undefined behavior, such as:

  • Buffer overruns and underruns
  • Invalid pointer direction
  • Double close
  • Data races
  • Division by zero
  • Use of uninitialized memory

As a result, MISRA C recommends the use of an automated static analysis tool to find violations of the standard. But keep in mind that all tools are not created equal, however, and some can only reason about superficial syntactic properties of the code. More advanced tools have deep semantic knowledge of the entire program.


To this end, experts in this are avoid lightweight static analysis tools, which can find syntactic violations but are generally not capable of finding the deeper defects. A clean report from a lightweight tool can give you a false sense of security because it will miss serious defects.

While MISRA was originally specific to the C programming language, MISRA has added a coding standard for C++.

Complying with MISRA is important for many development teams today, especially as virtualization rises.

MISRA-C Training Course by Tonex

MISRA-C Training is designed for C programmers, engineers and managers working on safety-critical applications for automotive, medical, military, aerospace, avionics,  or other life-critical applications. MISRA-C training covers the MISRA C:2012 guidelines to ensure safe coding practices can be achieved efficiently.  For example in avionics DO-178B/C compliance, developers have to practice coding techniques to be an integrated part of the requirements traceability for assurance and safety and mitigate liability and risk.

Motor Industry Software Reliability Association (MISRA) focuses on safety covering vulnerable to C’s limitations and ways to make C safer.

Learn about MISRA C as set of guidelines for software development promoting C programming language in safety-critical embedded applications with adoption and enforcement of coding standards within multiple domains. MISRA-C was originally was released in 1998 (MISRA C:1998)/C90, and the 2004 version (MISRA-C:2004) was designed to include a host of extensions and improvements to the original version.

Who Should Attend

  • Engineering Manager
  • Project Managers
  • Software Architect
  • Software Developers
  • Software Engineers
  • V&V Engineers
  • Project Managers
  • and anyone else need to learn the details about MISRA compliance

Learning Objectives

Upon completion of MISRA-C training, the attendees are able to:

  • Improve understanding of critical systems requirements using C language
  • Become familiar with MISRA C guidelines for the use of the C language in critical systems
  • Understand weaknesses and strength of C language applied to critical safety situations
  • Lean ways to use C safely in critical systems
  • Learn techniques and procedures to produce MISRA C compliant code
  • Apply best practices in your C development using MISRA-C guidelines
  • Understand improvements to reduce the cost and complexity of intended compliance
  • Learn about changes and new extensions in MISRA C:2012
  • Learn interpret the output of MIRS C;2012 checking tools

Course Agenda


  • What is MISRA-C?
  • Motor Industry Software Reliability Association (MISRA) guidelines
  • Overview of coding safety and reliabiity principles
  • Introduction to MISRA-C guidelines
  • Key benefits of MISRA-C
  • MISRA standards for C programming language
  • What are MISRA-C rules?
  • Applying and best practices using MISRA-C rules
  • MISRA-C Categories
  • Versions of MISRA C
  • MISRA C: 99, MISRA C:2012 extensions and C language guidelines
  • MISRA-C:1998 or MISRA-C1 required and advisory rules
  • MISRA-C:2004 or MISRA-C2 required and advisory rules
  • MISRA-C:2012 or MISRA-C3 directives, mandatory, required and advisory rules
  • MISRA C:2023 (Third Edition, Second Revision) – published 2023, the current version incorporating support for C11 and C18 language features

Introduction to MISRA C:2012

  • MISRA C99 and C11
  • MC3 project
  • Changes and summary of guidelines
  • ISO/IEC TS 17961:2013 “C Secure”
  • MISRA C:2012 conformance and compliance
  • MISRA C:2012 Tools
  • Improvements and rules definition
  • New directives on code design
  • New rules
  • Expressions
  • Standard libraries
  • Types of arithmetic expressions
  • essentially Boolean
  • essentially character
  • essentially enum
  • essentially signed
  • essentially unsigned
  • essentially floating
  • Mandatory rules
  • “Single Translation Unit” or “System”
  • Decidability
  • Applying systems engineering principles
  • User requirements
  • System analysis and design
  • Verification and Validation (V&V)
  • Operation and maintenance
  • MISRA security guidelines and conformance
  • Migration guidelines

MISRA C:2023 (MISRA C Third edition, Second revision).

  •  Amendments 2 – 4 (AMD2, AMD3, AMD4) and Technical Corrigendum 2 (TC2)
  • Support for C11 and C18 language features.

Other Optional Topics and References

  • MISRA C:2012 – Technical Corrigendum 1: Technical clarification of MISRA C:2012, ISBN 978-906400-17-0, June 2017.
  • MISRA C:2012 – Addendum 2: Coverage of MISRA C:2012 against ISO/IEC TS 17961:2013 “C Secure”, ISBN 978-906400-15-6 (PDF), April 2016.
  • MISRA C:2012 – Amendment 1: Additional security guidelines for MISRA C:2012, ISBN 978-906400-16-3, April 2016.
  • MISRA Compliance 2016: Achieving compliance with MISRA coding guidelines, ISBN 978-906400-13-2, April 2016.
  • MISRA C:2004 Permits: Deviation permits for MISRA compliance, ISBN 978-906400-14-9 , Edition 1, April 2016.
  • MISRA AC INT: Introduction to the MISRA guidelines for the use of automatic code generation in automotive systems, ISBN 978-906400-00-2, November 2007.
  • MISRA AC GMG: Generic modelling design and style guidelines, ISBN 978-906400-06-4, May 2009.
  • Software Readiness for Production (SRfP), ISBN 0 9524156 8 2, March 2006.
  • MISRA C ADC: Approved deviation compliance for MISRA C:2004, ISBN 978-906400-09-5, February 2013.
  • ISO 26262 compliance with MISRA C: Adhering to the ISO 26262 Standard

MISRA Training

Request More Information

Please enter contact information followed by your questions, comments and/or request(s):
  • Please complete the following form and a Tonex Training Specialist will contact you as soon as is possible.

    * Indicates required fields

  • This field is for validation purposes and should be left unchanged.

Request More Information

  • Please complete the following form and a Tonex Training Specialist will contact you as soon as is possible.

    * Indicates required fields

  • This field is for validation purposes and should be left unchanged.