diff --git a/Libraries/CMSIS/Documentation/General/html/index.html b/Libraries/CMSIS/Documentation/General/html/index.html new file mode 100644 --- /dev/null +++ b/Libraries/CMSIS/Documentation/General/html/index.html @@ -0,0 +1,158 @@ + + + + + +CMSIS: Introduction + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS +  Version 3.20 +
+
Cortex Microcontroller Software Interface Standard
+
+
+ +
+ +
+ + +
+
+ +
+
+
+ +
+
+
+
Introduction
+
+
+

The Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series. The CMSIS enables consistent and simple software interfaces to the processor and the peripherals, simplifying software re-use, reducing the learning curve for microcontroller developers, and reducing the time to market for new devices.

+

The CMSIS is defined in close cooperation with various silicon and software vendors and provides a common approach to interface to peripherals, real-time operating systems, and middleware components. The CMSIS is intended to enable the combination of software components from multiple middleware vendors.

+

The CMSIS components are:

+
    +
  • CMSIS-CORE: API for the Cortex-M processor core and peripherals. It provides at standardized interface for Cortex-M0, Cortex-M3, Cortex-M4, SC000, and SC300. Included are also SIMD intrinsic functions for Cortex-M4 SIMD instructions.
  • +
+
    +
  • CMSIS-DSP: DSP Library Collection with over 60 Functions for various data types: fix-point (fractional q7, q15, q31) and single precision floating-point (32-bit). The library is available for Cortex-M0, Cortex-M3, and Cortex-M4. The Cortex-M4 implementation is optimized for the SIMD instruction set.
  • +
+
    +
  • CMSIS-RTOS API: Common API for Real-Time operating systems. It provides a standardized programming interface that is portable to many RTOS and enables therefore software templates, middleware, libraries, and other components that can work acrosss supported the RTOS systems.
  • +
+
    +
  • CMSIS-SVD: System View Description for Peripherals. Describes the peripherals of a device in an XML file and can be used to create peripheral awareness in debuggers or header files with peripheral register and interrupt definitions.
  • +
+
    +
  • CMSIS-DAP: Debug Access Port. Standardized firmware for a Debug Unit that connects to the CoreSight Debug Access Port. CMSIS-DAP is distributed as separate package and well suited for integration on evaluation boards.
  • +
+
+CMSIS_V3_small.png +
+CMSIS Structure
+

+Motivation

+

CMSIS has been created to help the industry in standardization. It is not a huge software layer that introduces overhead and does not define standard peripherals. The silicon industry can therefore support the wide variations of Cortex-M processor-based devices with this common standard. In detail the benefits of the CMSIS are:

+
    +
  • Consistent software interfaces improve the software portability and re-usability. Generic software libraries can interface with device libraries from various silicon vendors.
  • +
  • Reduces the learning curve, development costs, and time-to-market. Developers can write software quicker through an easy to use and standardized software interface.
  • +
  • Provides a compiler independent layer that allows using different compilers. CMSIS is supported by all mainstream compilers (ARMCC, IAR, and GNU).
  • +
  • Enhances program debugging with peripheral information for debuggers and ITM channels for printf-style output and RTOS kernel awareness.
  • +
+

+Coding Rules

+

The CMSIS uses the following essential coding rules and conventions:

+
    +
  • Compliant with ANSI C and C++.
  • +
  • Uses ANSI C standard data types defined in <stdint.h>.
  • +
  • Variables and parameters have a complete data type.
  • +
  • Expressions for #define constants are enclosed in parenthesis.
  • +
  • Conforms to MISRA 2004. MIRSA rule violations are documented.
  • +
+

In addition, the CMSIS recommends the following conventions for identifiers:

+
    +
  • CAPITAL names to identify Core Registers, Peripheral Registers, and CPU Instructions.
  • +
  • CamelCase names to identify function names and interrupt functions.
  • +
  • Namespace_ prefixes avoid clashes with user identifiers and provide functional groups (i.e. for peripherals, RTOS, or DSP Library).
  • +
+

The CMSIS is documented within the source files with:

+
    +
  • Comments that use the C or C++ style.
  • +
  • Doxygen compliant function comments that provide:
      +
    • brief function overview.
    • +
    • detailed description of the function.
    • +
    • detailed parameter explanation.
    • +
    • detailed information about return values.
    • +
    +
  • +
+

Doxygen comment example:

+
/** 
+ * @brief  Enable Interrupt in NVIC Interrupt Controller
+ * @param  IRQn  interrupt number that specifies the interrupt
+ * @return none.
+ * Enable the specified interrupt in the NVIC Interrupt Controller.
+ * Other settings of the interrupt such as priority are not affected.
+ */
+

+Licence

+

The CMSIS is provided free of charge by ARM and can be used for all Cortex-M based devices.

+

The software portions that are deployed in the application program are under a BSD license which allows usage of CMSIS in any commercial or open source projects.

+

View the LICENCE AGREEMENT for CMSIS in detail.

+
+
+ + + +