]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core/src/MISRA.txt
ARMv8M changes
[cmsis] / CMSIS / DoxyGen / Core / src / MISRA.txt
1 /** \page CORE_MISRA_Exceptions_pg MISRA-C:2004 Compliance Exceptions\r
2 CMSIS-CORE uses the common coding rules for CMSIS components that are documented under \r
3 <a href="../../General/html/index.html"><b>Introduction</b></a>.\r
4 \r
5 \r
6 CMSIS-CORE violates the following MISRA-C:2004 rules:\r
7   \r
8 - Required Rule 8.5, object/function definition in header file.<br>\r
9   Violated since function definitions in header files are used for function inlining'. \r
10    \r
11 - Advisory Rule 12.4, Side effects on right hand side of logical operator.<br>\r
12   Violated because  volatile is used for core register definitions. \r
13    \r
14 - Advisory Rule 14.7, Return statement before end of function.<br>\r
15   Violated to simplify code logic. \r
16 \r
17 - Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\r
18   Violated since unions are used for effective representation of core registers.\r
19    \r
20 - Advisory Rule 19.4, Disallowed definition for macro.<br>\r
21   Violated since macros are used for assembler keywords. \r
22    \r
23 - Advisory Rule 19.7, Function-like macro defined.<br>\r
24   Violated since function-like macros are used to generate more efficient code. \r
25    \r
26 - Advisory Rule 19.16, all preprocessing directives must be valid.<br>\r
27   Violated to set default settings for macros. \r
28 \r
29   \r
30 &lt;device&gt;.h files generated by <b>SVDConv.exe</b> violate the following MISRA-C:2004 rules:\r
31 \r
32 - Advisory Rule 20.2, Re-use of C90 identifier pattern.<br>\r
33   Violated since CMSIS macros begin with '__'. Since CMSIS is developed and verified with various compilers this approach is acceptable and avoids conflicts with user symbols. \r
34 \r
35 - Advisory Rule 19.1, Declaration before \#include.<br>\r
36   Violated since Interrupt Number Definition Type (IRQn_Type) must be defined before including the core header file. \r
37  */\r
38