This document (Unique Identifier: DOC-QPC-CSC) describes the compliance of the QP/C Real-Time Embedded Framework as well as the Application code based on this framework with the Motor Industry Software Reliability Association (MISRA) Guidelines for the use of the C Language in Critical Systems [MISRA3], [MISRA3-A1], [MISRA3-A2]. This MISRA-C compliance report is designed to be applicable to safety-related real-time embedded systems.
The revision history of the document DOC-QPC-CSC is as follows:
Revision | QP/C version | Date (YYYY-MM-DD) | By | Description |
---|---|---|---|---|
1.0 | 5.0.0 | 2018-05-30 | MMS | Initial release for MISRA-C:2004 |
2.0 | 7.3.0 | 2023-06-30 | MMS | Initial release for MISRA-C:2023 |
MISRA C was originally developed to fulfill the need for a restricted subset of a standardized programming language identified in the 1994 “Development guidelines for vehicle based software” and against the background of the emerging use of C for developing embedded software in automotive applications. However, once MISRA C was published its relevance to other applications was quickly noted and subsequent revisions of the MISRA-C subset have involved a number of experts from different industries and from tool vendors.
Today MISRA C is the de facto standard for developing software in C where safety, security and code quality are important. Future developments of MISRA-C will continue to extend support for newer versions of the language, and additional language features.
In the context of functional safety standards the full C programming language is generally not recommended. However, safer subsets of C, such as MISRA-C or CERT-C, are highly recommended, especially for higher SIL levels (see [IEC-61508-3] Table A.3, [IEC-61508-7] C.4.6 Table C.1).
The QP/C Framework has a long history of compliance with the MISRA-C Coding Standards. Earlier versions of QP/C were compliant with the MISRA-C:2004 Standards, see [QPC-MC2]. Starting with QP/C version 7.x, the framework was adapted for the C99 language standard and compliance with MISRA-C:2023 [MISRA4].
[MISRA4] | MISRA C:2023 Guidelines for the use of the C language in critical systems (Third Edition, Second Revision), ISBN 978-1-911700-08-1 (paperback), ISBN 978-1-911700-09-8 (PDF), MISRA Consortium Limited, April 2023 |
[MISRA-Comply] | MISRA Compliance:2020 Achieving compliance with MISRA Coding Guidelines, ISBN 978-1-906400-11-8 (PDF), MIRA Limited, February 2020 |
[ISO-C99] | ISO/IEC 9899:1999, Programming languages — C, International Organization for Standarization, 1999 |
[PCLP] | Reference Manual for PC-lint® Plus™ Version 2.0, A diagnostic facility for C and C++, Vector Informatik |
[PCLP-Cert] | Using PCLP in Safety Critical Applications Version 2.0, Vector Informatik |
[BARR-C:2018] | BARR-C:2018 Embedded C Coding Standard, Michael Barr, ISBN-13: 978-1-72112-798-6, Barr Group 2018, (https://barrgroup.com/sites/default/files/barr_c_coding_standard_2018.pdf) |
[Saks-1998] | Dan Saks, "Programming Pointers - Placing const in Declarations", Embedded Systems Programming, June 1998, (https://www.dansaks.com/articles/1998-06%20Placing%20const%20in%20Declarations.pdf) |
[PSiCC2] | Practical UML Statecharts in C/C++, 2nd Edition, Event-Driven Programming for Embedded Systems, Miro Samek, ISBN 978-0750687065, Newnes 2008 (https://www.state-machine.com/psicc2) |
[QPC-MC2] | Application Note: QP/C MISRA-C:2004 Compliance Matrix, Quantum Leaps (https://www.state-machine.com/doc/AN_QP-C_MISRA.pdf) |