diff --git a/.github/workflows/pack.yml b/.github/workflows/pack.yml index eb48d7e68..e5277389f 100644 --- a/.github/workflows/pack.yml +++ b/.github/workflows/pack.yml @@ -29,9 +29,9 @@ jobs: with: doxygen-version: 1.9.6 packchk-version: 1.3.98 - gen-doc-script: ./CMSIS/DoxyGen/gen_doc.sh - check-links-script: ./CMSIS/DoxyGen/check_links.sh - doc-path: ./CMSIS/Documentation/ + gen-doc-script: ./CMSIS/Documentation/Doxygen/gen_doc.sh + check-links-script: ./CMSIS/Documentation/Doxygen/check_links.sh + doc-path: ./CMSIS/Documentation/html gen-pack-script: ./gen_pack.sh --no-preprocess gen-pack-output: ./output gh-pages-branch: gh-pages diff --git a/.gitignore b/.gitignore index 6c60f34ad..ea71c30d1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ *.junit **/__pycache__ -CMSIS/Documentation/ -CMSIS/DoxyGen/**/*.dxy +CMSIS/Documentation/html +CMSIS/Documentation/Doxygen/**/*.dxy CMSIS/Core/Test/*.o CMSIS/Core/Test/*.xunit CMSIS/Core/Test/.lit_test_times.txt diff --git a/ARM.CMSIS.pdsc b/ARM.CMSIS.pdsc index 333efee2a..821b96bfd 100644 --- a/ARM.CMSIS.pdsc +++ b/ARM.CMSIS.pdsc @@ -406,9 +406,9 @@ Generic Interfaces for Evaluation and Development Boards Drivers that support an external component available on an evaluation board Compiler Software Extensions - Cortex Microcontroller Software Interface Components - Unified Device Drivers compliant to CMSIS-Driver Specifications - Startup, System Setup + Cortex Microcontroller Software Interface Components + Unified Device Drivers compliant to CMSIS-Driver Specifications + Startup, System Setup Data exchange or data formatter Drivers that support an extension board or shield File Drive Support and File System @@ -442,7 +442,7 @@ CMSIS-RTOS API for Cortex-M, SC000, and SC300 - + @@ -450,63 +450,63 @@ USART Driver API for Cortex-M - + SPI Driver API for Cortex-M - + SAI Driver API for Cortex-M - + I2C Driver API for Cortex-M - + CAN Driver API for Cortex-M - + Flash Driver API for Cortex-M - + MCI Driver API for Cortex-M - + NAND Flash Driver API for Cortex-M - + Ethernet MAC and PHY Driver API for Cortex-M - + @@ -514,49 +514,49 @@ Ethernet MAC Driver API for Cortex-M - + Ethernet PHY Driver API for Cortex-M - + USB Device Driver API for Cortex-M - + USB Host Driver API for Cortex-M - + GPIO Driver API for Cortex-M - + WiFi driver - + Virtual I/O - + @@ -654,7 +654,7 @@ CMSIS-CORE for Cortex-M, SC000, SC300, Star-MC1, ARMv8-M, ARMv8.1-M - + @@ -667,7 +667,7 @@ CMSIS-CORE for Cortex-A - + diff --git a/CMSIS/DoxyGen/Compiler/Compiler.dxy.in b/CMSIS/Documentation/Doxygen/Compiler/Compiler.dxy.in similarity index 99% rename from CMSIS/DoxyGen/Compiler/Compiler.dxy.in rename to CMSIS/Documentation/Doxygen/Compiler/Compiler.dxy.in index 0ab779b5e..cce5d12ea 100644 --- a/CMSIS/DoxyGen/Compiler/Compiler.dxy.in +++ b/CMSIS/Documentation/Doxygen/Compiler/Compiler.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/Compiler +OUTPUT_DIRECTORY = ../../html/Compiler # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/Compiler/src/images/.gitignore b/CMSIS/Documentation/Doxygen/Compiler/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/Compiler/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/Compiler/src/images/.gitignore diff --git a/CMSIS/DoxyGen/Compiler/src/images/cmsis_compiler_overview.png b/CMSIS/Documentation/Doxygen/Compiler/src/images/cmsis_compiler_overview.png similarity index 100% rename from CMSIS/DoxyGen/Compiler/src/images/cmsis_compiler_overview.png rename to CMSIS/Documentation/Doxygen/Compiler/src/images/cmsis_compiler_overview.png diff --git a/CMSIS/Documentation/Doxygen/Compiler/src/mainpage.md b/CMSIS/Documentation/Doxygen/Compiler/src/mainpage.md new file mode 100644 index 000000000..5f6c28d34 --- /dev/null +++ b/CMSIS/Documentation/Doxygen/Compiler/src/mainpage.md @@ -0,0 +1,25 @@ +# CMSIS-Compiler {#mainpage} + +**CMSIS-Compiler** provides software components for retargeting I/O operations in standard C run-time libraries. Following interfaces are supported for retargeting: + + - File interface for reading and writing files. + - I/O interface for standard I/O stream retargeting (stderr, stdin, stdout). + - OS interface for multithread safety using an arbitrary RTOS. + +![Overview of CMSIS-Compiler](./images/cmsis_compiler_overview.png) + +Standard C library functions are platform independent, but the implementations of the low-level I/O and multithreading support are tailored to the target compiler toolchains. + +## Access to CMSIS-Compiler + +CMSIS-Compiler is maintained in a GitHub repository and is also released as a standalone package in CMSIS Pack format. + + - [**CMSIS-Compiler GitHub Repo**](https://github.com/Arm-Software/CMSIS-Compiler) provides the full source code as well as releases in CMSIS-Pack format. + - [**CMSIS-Compiler Documentation**](https://arm-software.github.io/CMSIS-Compiler/latest/) explains how to use the library and describes the implemented functions in details. + +## Key Features and Benefits + + - CMSIS-Compiler allows individual retargeting configuration for common I/O interfaces: file, stderr, stdin, stdout. + - Implements several ready-to-use retarget variants: into File, Breakpoint, Event Recorder, ITM, as well as user-specific variant. + - Supports common standard C libraries, such as from Arm Compiler and GCC (Newlib) toolchains. IAR support is planned. + - Provides implementation templates and examples to get started. diff --git a/CMSIS/DoxyGen/Core/Core.dxy.in b/CMSIS/Documentation/Doxygen/Core/Core.dxy.in similarity index 99% rename from CMSIS/DoxyGen/Core/Core.dxy.in rename to CMSIS/Documentation/Doxygen/Core/Core.dxy.in index 6e1bca78b..351b81b6c 100644 --- a/CMSIS/DoxyGen/Core/Core.dxy.in +++ b/CMSIS/Documentation/Doxygen/Core/Core.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/Core +OUTPUT_DIRECTORY = ../../html/Core # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1086,7 +1086,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = ../../Core/Template/Device_M/ +EXAMPLE_PATH = ../../../Core/Template/Device_M/ # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -1339,7 +1339,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -2458,7 +2458,7 @@ TAGFILES = # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. -GENERATE_TAGFILE = ../../Documentation/Core/cmsis_core_m.tag +GENERATE_TAGFILE = ../../html/Core/cmsis_core_m.tag # If the ALLEXTERNALS tag is set to YES, all external class will be listed in # the class index. If set to NO, only the inherited external classes will be diff --git a/CMSIS/DoxyGen/Core/src/Ref_CompilerControl.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_CompilerControl.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_CompilerControl.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_CompilerControl.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_CoreRegister.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_CoreRegister.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_CoreRegister.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_CoreRegister.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_DataStructs.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_DataStructs.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_DataStructs.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_DataStructs.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_Debug.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_Debug.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_Debug.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_Debug.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_DevCaps.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_DevCaps.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_DevCaps.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_DevCaps.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_FPU.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_FPU.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_FPU.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_FPU.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_MPU.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_MPU.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_MPU.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_MPU.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_MPU8.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_MPU8.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_MPU8.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_MPU8.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_MVE.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_MVE.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_MVE.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_MVE.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_NVIC.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_NVIC.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_NVIC.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_NVIC.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_PMU8.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_PMU8.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_PMU8.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_PMU8.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_Peripheral.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_Peripheral.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_Peripheral.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_Peripheral.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_SystemAndClock.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_SystemAndClock.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_SystemAndClock.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_SystemAndClock.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_Systick.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_Systick.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_Systick.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_Systick.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_Trustzone.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_Trustzone.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_Trustzone.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_Trustzone.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_VersionControl.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_VersionControl.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_VersionControl.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_VersionControl.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_cm4_simd.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_cm4_simd.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_cm4_simd.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_cm4_simd.txt diff --git a/CMSIS/DoxyGen/Core/src/Ref_cmInstr.txt b/CMSIS/Documentation/Doxygen/Core/src/Ref_cmInstr.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/Ref_cmInstr.txt rename to CMSIS/Documentation/Doxygen/Core/src/Ref_cmInstr.txt diff --git a/CMSIS/DoxyGen/Core/src/core_cm7.txt b/CMSIS/Documentation/Doxygen/Core/src/core_cm7.txt similarity index 100% rename from CMSIS/DoxyGen/Core/src/core_cm7.txt rename to CMSIS/Documentation/Doxygen/Core/src/core_cm7.txt diff --git a/CMSIS/DoxyGen/Core/src/core_device_files.md b/CMSIS/Documentation/Doxygen/Core/src/core_device_files.md similarity index 100% rename from CMSIS/DoxyGen/Core/src/core_device_files.md rename to CMSIS/Documentation/Doxygen/Core/src/core_device_files.md diff --git a/CMSIS/DoxyGen/Core/src/core_device_h.md b/CMSIS/Documentation/Doxygen/Core/src/core_device_h.md similarity index 100% rename from CMSIS/DoxyGen/Core/src/core_device_h.md rename to CMSIS/Documentation/Doxygen/Core/src/core_device_h.md diff --git a/CMSIS/DoxyGen/Core/src/core_files_in_packs.md b/CMSIS/Documentation/Doxygen/Core/src/core_files_in_packs.md similarity index 91% rename from CMSIS/DoxyGen/Core/src/core_files_in_packs.md rename to CMSIS/Documentation/Doxygen/Core/src/core_files_in_packs.md index 7f2ca20d1..4a4c253c8 100644 --- a/CMSIS/DoxyGen/Core/src/core_files_in_packs.md +++ b/CMSIS/Documentation/Doxygen/Core/src/core_files_in_packs.md @@ -2,7 +2,7 @@ In simple individual cases the \ref cmsis_core_files can be delivered to developers as part of example projects and SDKs. But the most scalable approach with improved usability is to provide them packaged in [Open-CMSIS-Pack format](https://www.open-cmsis-pack.org), and this page explains how to do this. -The \ref cmsis_standard_files are provided as part of [CMSIS Software pack](../../General/html/cmsis_pack.html) under **CMSIS** class of components and compose there the **CORE** group. +The \ref cmsis_standard_files are provided as part of [CMSIS Software pack](../General/cmsis_pack.html) under **CMSIS** class of components and compose there the **CORE** group. The \ref cmsis_device_files are delivered in [CMSIS Device Family Packs (DFPs)](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/cp_PackTutorial.html#createPack_DFP) that provide necessary mechanisms for device support in embedded software. The DFPs are typically maintained by device vendors. @@ -49,7 +49,7 @@ Since the \ref cmsis_device_files require access to implementations from \ref cm ## Device Examples {#device_examples} -The [CMSIS-DFP pack](https://github.com/ARM-software/CMSIS-DFP) provides generic device definitions for standard Arm Cortex-M cores and contains corresponding \ref cmsis_device_files. +The [Cortex_DFP pack](https://github.com/ARM-software/Cortex_DFP) provides generic device definitions for standard Arm Cortex-M cores and contains corresponding \ref cmsis_device_files. These files can be used as a reference for device support in a DFP pack, but can also be used in projects that require standard Arm processors functionality. See \ref using_arm. diff --git a/CMSIS/DoxyGen/Core/src/core_linker_sct.md b/CMSIS/Documentation/Doxygen/Core/src/core_linker_sct.md similarity index 86% rename from CMSIS/DoxyGen/Core/src/core_linker_sct.md rename to CMSIS/Documentation/Doxygen/Core/src/core_linker_sct.md index b979a3a00..6c5836c03 100644 --- a/CMSIS/DoxyGen/Core/src/core_linker_sct.md +++ b/CMSIS/Documentation/Doxygen/Core/src/core_linker_sct.md @@ -3,6 +3,7 @@ A scatter file for linking is required when using a \ref startup_c_pg. The \ref linker_sct_pg contains regions for: + - Code (read-only data, execute-only data) - RAM (read/write data, zero-initialized data) - Stack @@ -10,8 +11,7 @@ The \ref linker_sct_pg contains regions for: - Stack seal (for Armv8-M/v8.1-M) - CMSE veneer (for Armv8-M/v8.1-M) -Within the scatter file, the user needs to specify a set of macros. The scatter file is passed through the -C preprocessor which uses these macros to calculate the start address and the size of the different regions. +Within the scatter file, the user needs to specify a set of macros. The scatter file is passed through the C preprocessor which uses these macros to calculate the start address and the size of the different regions. ``` /*--------------------- Flash Configuration ---------------------------------- @@ -49,13 +49,13 @@ C preprocessor which uses these macros to calculate the start address and the si #define __CMSEVENEER_SIZE 0x200 ``` -\note -The stack is placed at the end of the available RAM and is growing downwards -whereas the Heap is placed after the application data and growing upwards. +> **Note** +> - The stack is placed at the end of the available RAM and is growing downwards whereas the Heap is placed after the application data and growing upwards. ## Preprocessor command {#linker_sct_preproc_sec} The scatter file uses following preprocessor command for Arm Compiler v6 + ``` #! armclang -E --target=arm-arm-none-eabi -mcpu=<mcpu> -xc ``` diff --git a/CMSIS/DoxyGen/Core/src/core_partition_device_h.md b/CMSIS/Documentation/Doxygen/Core/src/core_partition_device_h.md similarity index 94% rename from CMSIS/DoxyGen/Core/src/core_partition_device_h.md rename to CMSIS/Documentation/Doxygen/Core/src/core_partition_device_h.md index 0c54c3131..50d2319e0 100644 --- a/CMSIS/DoxyGen/Core/src/core_partition_device_h.md +++ b/CMSIS/Documentation/Doxygen/Core/src/core_partition_device_h.md @@ -3,18 +3,21 @@ The TrustZone header file contains the initial setup of the TrustZone hardware in an Armv8-M system. This file implements the function \ref TZ_SAU_Setup that is called from \ref SystemInit. It uses settings in these files: + - \ref partition_h_pg "partition_.h" that defines the initial system configuration and during SystemInit in Secure state. - - \ref partition_gen_h_pg "partition_gen.h" that contains SAU region and interrupt target assignments. This file may be generated using [CMSIS-Zone](../../Zone/html/index.html). + - \ref partition_gen_h_pg "partition_gen.h" that contains SAU region and interrupt target assignments. This file may be generated using [CMSIS-Zone](../Zone/index.html). -\note -\ref partition_gen_h_pg "partition_gen.h" is optional and can be generated using [CMSIS-Zone](../../Zone/html/index.html). In previous versions of CMSIS-Core(M) this settings were part of \ref partition_h_pg "partition_.h". +> **Note** +> - \ref partition_gen_h_pg "partition_gen.h" is optional and can be generated using [CMSIS-Zone](../Zone/index.html). In previous versions of CMSIS-Core(M) this settings were part of \ref partition_h_pg "partition_.h". The \ref partition_h_pg "partition_.h" file contains the following configuration settings for: + - \ref sau_ctrlregister_sec provides settings for the SAU CTRL register. - \ref sau_sleepexception_sec provides device-specific deep-sleep and exception settings. - \ref sau_fpu_sec defines the usage of the Floating Point Unit in secure and non-secure state. The \ref partition_h_pg "partition_.h" file includes the \ref partition_gen_h_pg "partition_gen.h" file with configuration settings for: + - \ref sau_regions_sect provides configuration of the SAU Address Regions. - \ref sau_interrupttarget_sec provides device-specific interrupt target settings. @@ -158,14 +161,15 @@ The \ref partition_h_pg "partition_.h" file includes the \ref partition_ ## Region/ISR setup: partition_gen.h {#partition_gen_h_pg} -The \ref partition_gen_h_pg "partition_gen.h" header file can be generated using [CMSIS-Zone](../../Zone/html/index.html). +The \ref partition_gen_h_pg "partition_gen.h" header file can be generated using [CMSIS-Zone](../Zone/index.html). The \ref partition_h_pg "partition_.h" file includes the \ref partition_h_pg "partition_gen.h" file with configuration settings for: + - \ref sau_regions_sect provides configuration of the SAU Address Regions. - \ref sau_interrupttarget_sec provides device-specific interrupt target settings. -\note -In previous versions of CMSIS-Core(M) the above settings were part of \ref partition_h_pg "partition_.h" +> **Note** +> - In previous versions of CMSIS-Core(M) the above settings were part of \ref partition_h_pg "partition_.h" ### Configuration of the SAU Address Regions {#sau_regions_sect} @@ -266,9 +270,7 @@ The following example shows a set of SAU region macros. ### Configuration of Interrupt Target settings {#sau_interrupttarget_sec} -Each interrupt has a configuration bit that defines the execution -in Secure or Non-secure state. The Non-Secure interrupts have a separate -vector table. Refer to \ref Model_TrustZone for more information. +Each interrupt has a configuration bit that defines the execution in Secure or Non-secure state. The Non-Secure interrupts have a separate vector table. Refer to \ref Model_TrustZone for more information. diff --git a/CMSIS/DoxyGen/Core/src/core_startup_c.md b/CMSIS/Documentation/Doxygen/Core/src/core_startup_c.md similarity index 96% rename from CMSIS/DoxyGen/Core/src/core_startup_c.md rename to CMSIS/Documentation/Doxygen/Core/src/core_startup_c.md index 455794694..76e38f123 100644 --- a/CMSIS/DoxyGen/Core/src/core_startup_c.md +++ b/CMSIS/Documentation/Doxygen/Core/src/core_startup_c.md @@ -3,6 +3,7 @@ The startup file defines device exceptions and interrupts, and provides their initial (weak) handler functions. The file has a naming convention `startup_.c` where `` corresponds to the device name. Specifically, following functionalities are provided in the startup file: + - The reset handler `Reset_Handler` which is executed upon CPU reset and typically calls the `SystemInit()` function. After the system init the control is transferred to the C/C++ run-time library which performs initialization and calls the `main` function in the user code. - The setup values for the Main Stack Pointer (MSP). - Exception vectors of the Cortex-M Processor with weak functions that implement default routines. @@ -71,6 +72,7 @@ extern const pFunc __VECTOR_TABLE[240]; CMSIS-Core \ref cmsis_template_files include a `startup_Device.c` file that can be used as a starting point for chip vendors to implement own device-specific startup file. The C startup file relys on certain compiler specific preprocessor defines specified in CMSIS compiler headers: + - \ref __INITIAL_SP - \ref __STACK_LIMIT - \ref __PROGRAM_START @@ -101,4 +103,5 @@ __NO_RETURN void Reset_Handler(void) } ``` -\note Stack Sealing also requires the application project to use a scatter file (or a linker script) as explained in \ref RTOS_TrustZone_stacksealing section. +> **Note** +> - Stack Sealing also requires the application project to use a scatter file (or a linker script) as explained in \ref RTOS_TrustZone_stacksealing section. diff --git a/CMSIS/DoxyGen/Core/src/core_std_files.md b/CMSIS/Documentation/Doxygen/Core/src/core_std_files.md similarity index 95% rename from CMSIS/DoxyGen/Core/src/core_std_files.md rename to CMSIS/Documentation/Doxygen/Core/src/core_std_files.md index 683852b2f..d9e567436 100644 --- a/CMSIS/DoxyGen/Core/src/core_std_files.md +++ b/CMSIS/Documentation/Doxygen/Core/src/core_std_files.md @@ -2,8 +2,8 @@ CMSIS-Core files can be differentiated in two main groups: - -# \subpage cmsis_standard_files are provided by Arm for supported CPU cores as part of the CMSIS-Core software component. These files typically do not require any modifications and are expected to be included via CMSIS-Core device files. - -# \subpage cmsis_device_files are specified in CMSIS-Core methodology, and are typically provided by CPU device vendors to correctly cover their specific functionalities. Some of them may expect additional application-specific changes. + 1. \subpage cmsis_standard_files are provided by Arm for supported CPU cores as part of the CMSIS-Core software component. These files typically do not require any modifications and are expected to be included via CMSIS-Core device files. + 2. \subpage cmsis_device_files are specified in CMSIS-Core methodology, and are typically provided by CPU device vendors to correctly cover their specific functionalities. Some of them may expect additional application-specific changes. The detailed file structure of the CMSIS-Core files is shown in the following picture. @@ -15,7 +15,7 @@ The detailed file structure of the CMSIS-Core files is shown in the following pi The CMSIS-Core Standard file implement all attributes specific to Arm processor cores and generally do not need any modifications. -The files are provided by Arm as CMSIS-Core software component that is part of the [CMSIS Software pack](../../General/html/cmsis_pack.html). The CMSIS-Core standard files can be split into following categories explained below: +The files are provided by Arm as CMSIS-Core software component that is part of the [CMSIS Software pack](../General/cmsis_pack.html). The CMSIS-Core standard files can be split into following categories explained below: - \ref cmsis_processor_files - \ref cmsis_compiler_files diff --git a/CMSIS/DoxyGen/Core/src/core_system_files.md b/CMSIS/Documentation/Doxygen/Core/src/core_system_files.md similarity index 100% rename from CMSIS/DoxyGen/Core/src/core_system_files.md rename to CMSIS/Documentation/Doxygen/Core/src/core_system_files.md diff --git a/CMSIS/DoxyGen/Core/src/history.md b/CMSIS/Documentation/Doxygen/Core/src/history.md similarity index 98% rename from CMSIS/DoxyGen/Core/src/history.md rename to CMSIS/Documentation/Doxygen/Core/src/history.md index deee81fe4..1d82d7e7f 100644 --- a/CMSIS/DoxyGen/Core/src/history.md +++ b/CMSIS/Documentation/Doxygen/Core/src/history.md @@ -1,8 +1,8 @@ # Revision History {#core_revisionHistory} -CMSIS-Core (M) component is maintaned with own versioning that gets incremented together with the [CMSIS Software Pack](../../General/html/cmsis_pack.html) releases. +CMSIS-Core (M) component is maintained with its own versioning that gets offically updated upon releases of the [CMSIS Software Pack](../General/cmsis_pack.html). -The table below provides information about the changes delivered with specific versions of CMSIS-Core (M) updates. +The table below provides information about the changes delivered with specific versions of CMSIS-Core (M).
diff --git a/CMSIS/DoxyGen/Core/src/images/ARMv8-M_images.pptx b/CMSIS/Documentation/Doxygen/Core/src/images/ARMv8-M_images.pptx similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/ARMv8-M_images.pptx rename to CMSIS/Documentation/Doxygen/Core/src/images/ARMv8-M_images.pptx diff --git a/CMSIS/DoxyGen/Core/src/images/CMSIS_CORE_Files.png b/CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_CORE_Files.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/CMSIS_CORE_Files.png rename to CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_CORE_Files.png diff --git a/CMSIS/DoxyGen/Core/src/images/CMSIS_CORE_Files_USER.png b/CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_CORE_Files_USER.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/CMSIS_CORE_Files_USER.png rename to CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_CORE_Files_USER.png diff --git a/CMSIS/DoxyGen/Core/src/images/CMSIS_TZ_files.png b/CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_TZ_files.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/CMSIS_TZ_files.png rename to CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_TZ_files.png diff --git a/CMSIS/DoxyGen/Core/src/images/CMSIS_V3_V5.pptx b/CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_V3_V5.pptx similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/CMSIS_V3_V5.pptx rename to CMSIS/Documentation/Doxygen/Core/src/images/CMSIS_V3_V5.pptx diff --git a/CMSIS/DoxyGen/Core/src/images/MemoryMap_NS.png b/CMSIS/Documentation/Doxygen/Core/src/images/MemoryMap_NS.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/MemoryMap_NS.png rename to CMSIS/Documentation/Doxygen/Core/src/images/MemoryMap_NS.png diff --git a/CMSIS/DoxyGen/Core/src/images/MemoryMap_S.png b/CMSIS/Documentation/Doxygen/Core/src/images/MemoryMap_S.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/MemoryMap_S.png rename to CMSIS/Documentation/Doxygen/Core/src/images/MemoryMap_S.png diff --git a/CMSIS/DoxyGen/Core/src/images/Registers.png b/CMSIS/Documentation/Doxygen/Core/src/images/Registers.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/Registers.png rename to CMSIS/Documentation/Doxygen/Core/src/images/Registers.png diff --git a/CMSIS/DoxyGen/Core/src/images/SimpleUseCase.png b/CMSIS/Documentation/Doxygen/Core/src/images/SimpleUseCase.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/SimpleUseCase.png rename to CMSIS/Documentation/Doxygen/Core/src/images/SimpleUseCase.png diff --git a/CMSIS/DoxyGen/Core/src/images/TZ_context.png b/CMSIS/Documentation/Doxygen/Core/src/images/TZ_context.png similarity index 100% rename from CMSIS/DoxyGen/Core/src/images/TZ_context.png rename to CMSIS/Documentation/Doxygen/Core/src/images/TZ_context.png diff --git a/CMSIS/DoxyGen/Core/src/mainpage.md b/CMSIS/Documentation/Doxygen/Core/src/mainpage.md similarity index 98% rename from CMSIS/DoxyGen/Core/src/mainpage.md rename to CMSIS/Documentation/Doxygen/Core/src/mainpage.md index 286bb7967..785852818 100644 --- a/CMSIS/DoxyGen/Core/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/Core/src/mainpage.md @@ -3,6 +3,7 @@ CMSIS-Core (Cortex-M) implements the basic run-time system for a Cortex-M device and gives the user access to the processor core and the device peripherals. In detail it defines: + - **Hardware Abstraction Layer (HAL)** for Cortex-M processor registers with standardized definitions for the SysTick, NVIC, System Control Block registers, MPU registers, FPU registers, and core access functions. - **System exception names** to interface to system exceptions without having compatibility issues. - **Methods to organize header files** that makes it easy to learn new Cortex-M microcontroller products and improve software portability. This includes naming conventions for device-specific interrupts. @@ -12,6 +13,7 @@ In detail it defines: The following sections provide details about the CMSIS-Core (Cortex-M): + - \ref using_pg explains the project setup and shows a simple program example. \if ARMv8M - \ref using_TrustZone_pg "Using TrustZone® for Armv8-M" describes how to use the security extensions available in the Armv8-M architecture. @@ -23,14 +25,14 @@ The following sections provide details about the CMSIS-Core (Cortex-M): ## Access to CMSIS-Core (Cortex-M) -CMSIS-Core is actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../../General/html/cmsis_pack.html). +CMSIS-Core is actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../General/cmsis_pack.html). The following directories and files relevant to CMSIS-Core (Cortex-M) are present in the **ARM::CMSIS** Pack: Directory | Content :---------------------------------|:------------------------------------------------------------------------ 📂 CMSIS | CMSIS Base software components folder - ┣ 📂 Documentation/Core | A local copy of this CMSIS-Core (M) documentation + ┣ 📂 Documentation/html/Core | A local copy of this CMSIS-Core (M) documentation â”— 📂 Core | CMSIS-Core files    ┣ 📂 Include | \ref cmsis_processor_files.     â”— 📂 m-profile| Header files specific for Arm M-Profile.
See \ref cmsis_compiler_files and \ref cmsis_feature_files. @@ -75,6 +77,7 @@ More information about Armv8.1-M architecture is available under [Arm Helium tec ## Tested and Verified Toolchains {#tested_tools_sec} The \ref cmsis_core_files supplied by Arm have been tested and verified with the following toolchains: + - Arm: Arm Compiler 5.06 update 7 (not for Cortex-M23/33/35P/55/85, Armv8-M, Armv8.1-M) - Arm: Arm Compiler 6.16 - Arm: Arm Compiler 6.6.4 (not for Cortex-M0/23/33/35P/55/85, Armv8-M, Armv8.1-M) diff --git a/CMSIS/DoxyGen/Core/src/misra.md b/CMSIS/Documentation/Doxygen/Core/src/misra.md similarity index 93% rename from CMSIS/DoxyGen/Core/src/misra.md rename to CMSIS/Documentation/Doxygen/Core/src/misra.md index d8b891187..3d0e7660a 100644 --- a/CMSIS/DoxyGen/Core/src/misra.md +++ b/CMSIS/Documentation/Doxygen/Core/src/misra.md @@ -1,6 +1,6 @@ # MISRA-C Deviations {#coreMISRA_Exceptions_pg} -CMSIS-Core (Cortex-M) uses the common coding rules for CMSIS components that are documented in [CMSIS Introduction](../../General/html/index.html). +CMSIS-Core (Cortex-M) uses the common coding rules for CMSIS components that are documented in [CMSIS Introduction](../General/index.html). CMSIS-Core (Cortex-M) violates the following MISRA-C:2012 rules: diff --git a/CMSIS/DoxyGen/Core/src/register_mapping.md b/CMSIS/Documentation/Doxygen/Core/src/register_mapping.md similarity index 100% rename from CMSIS/DoxyGen/Core/src/register_mapping.md rename to CMSIS/Documentation/Doxygen/Core/src/register_mapping.md diff --git a/CMSIS/DoxyGen/Core/src/using.md b/CMSIS/Documentation/Doxygen/Core/src/using.md similarity index 92% rename from CMSIS/DoxyGen/Core/src/using.md rename to CMSIS/Documentation/Doxygen/Core/src/using.md index 516f7782f..a7d000126 100644 --- a/CMSIS/DoxyGen/Core/src/using.md +++ b/CMSIS/Documentation/Doxygen/Core/src/using.md @@ -3,6 +3,7 @@ [TOC] To use the CMSIS-Core (Cortex-M) in an embedded software project at the following \ref cmsis_device_files need to be added to the application: + - \ref startup_c_pg with reset handler and exception vectors. - \ref system_c_pg with general device configuration (i.e. for clock and BUS setup). - \ref device_h_pg gives access to processor core and all peripherals. @@ -13,10 +14,11 @@ The \ref startup_c_pg is executed after reset and calls `SystemInit()` in the re The \ref system_c_pg performs the setup for the processor clock. The variable \ref SystemCoreClock indicates the CPU clock speed. In addition the file may contain functions for the memory BUS setup and clock re-configuration. -\note -The files \ref startup_c_pg and \ref system_c_pg may require application specific adaptations and therefore should be copied into the application project folder prior configuration. +> **Note** +> - The files \ref startup_c_pg and \ref system_c_pg may require application specific adaptations and therefore should be copied into the application project folder prior configuration. The \ref device_h_pg provides access to the following device-specific functionalities: + - \ref peripheral_gr provides a standardized register layout for all peripherals. Optionally functions for device-specific peripherals may be available. - \ref NVIC_gr can be accessed with standardized symbols and functions for the Nested Interrupt Vector Controller (NVIC) are provided. - \ref intrinsic_CPU_gr allow to access special instructions, for example for activating sleep mode or the NOP instruction. @@ -30,7 +32,7 @@ The easiest way to use CMSIS-Core in a project is with CMSIS Packs. The \ref cmsis_device_files are typically provided in a [CMSIS Device Family Pack (DFP)](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/cp_PackTutorial.html#createPack_DFP) that is maintained by the chip vendor for the target device family. The list of public CMSIS packs (including DFPs) can be found at [keil.arm.com/packs](https://www.keil.arm.com/packs/). -A Device Family Pack (DFP) usually has a requirement for using the **CMSIS:CORE** component from the [CMSIS Software pack](../../General/html/cmsis_pack.html) that contains the \ref cmsis_standard_files. In such case the CMSIS Software pack needs to be installed as well. +A Device Family Pack (DFP) usually has a requirement for using the **CMSIS:CORE** component from the [CMSIS Software pack](../General/cmsis_pack.html) that contains the \ref cmsis_standard_files. In such case the CMSIS Software pack needs to be installed as well. The files \ref startup_c_pg and \ref system_c_pg are typically provided in the DFP as part of **Device** class in the **Startup** group and are defined as configuration files, meaning they are copied from the pack into a project folder and can be modifed there if necessary. @@ -56,6 +58,7 @@ File | Description ## Usage Examples {#usage_examples} **Examples** + - \ref using_basic is a simple example that shows the usage of the CMSIS layer. - \ref using_vtor shows how to remap the interrupt vector table. - \ref using_arm explains how to use CMSIS-Core (Cortex-M) for Arm processors. @@ -181,14 +184,14 @@ int main (void) { Test and example projects of many software components have a need for implementations that are independent from specific device vendors but still have adaptations for various Arm Cortex-M cores to benefit from their architectural differenceis. -The [CMSIS-DFP pack](https://github.com/ARM-software/CMSIS-DFP) provides generic device definitions for standard Arm Cortex-M cores and contains corresponding \ref cmsis_device_files. These generic Arm devices can be used as a target for embedded programs, with execution, for example, on processor simulation models. +The [Cortex_DFP pack](https://github.com/ARM-software/Cortex_DFP) provides generic device definitions for standard Arm Cortex-M cores and contains corresponding \ref cmsis_device_files. These generic Arm devices can be used as a target for embedded programs, with execution, for example, on processor simulation models. -Validation suits and example projects for such components as [CMSIS-DSP](../../DSP/html/index.html), [CMSIS-RTOS](../../RTOS2/html/index.html) and [CMSIS-Core](index.html) itself use that approach already. +Validation suits and example projects for such components as [CMSIS-DSP](../DSP/index.html), [CMSIS-RTOS](../RTOS2/index.html) and [CMSIS-Core](index.html) itself use that approach already. ### Create generic libraries {#using_ARM_Lib_sec} The CMSIS Processor and Core Peripheral files allow also to create generic libraries. -The [CMSIS-DSP libraries](../../DSP/html/index.html) are an example for such a generic library. +The [CMSIS-DSP libraries](../DSP/index.html) are an example for such a generic library. To build a generic Library set the define `__CMSIS_GENERIC` and include the relevant `core_.h` CMSIS CPU & Core Access header file for the processor. diff --git a/CMSIS/DoxyGen/Core/src/using_tz.md b/CMSIS/Documentation/Doxygen/Core/src/using_tz.md similarity index 96% rename from CMSIS/DoxyGen/Core/src/using_tz.md rename to CMSIS/Documentation/Doxygen/Core/src/using_tz.md index 1c0c1a60a..325f27f35 100644 --- a/CMSIS/DoxyGen/Core/src/using_tz.md +++ b/CMSIS/Documentation/Doxygen/Core/src/using_tz.md @@ -5,6 +5,7 @@ The [TrustZone for Cortex-M](https://www.arm.com/technologies/trustzone-for-cortex-m) is a security extension for Armv8-M architecture that is optimized for ultra-low power embedded applications. It enables software security domains that restrict access to secure memory and I/O only for trusted software. TrustZone for Armv8-M: + - preserves low interrupt latencies for both Secure and Non-secure domains. - does not impose code overhead, cycle overhead or the complexity of a virtualization based solution. - introduces the Secure Gateway (SG) processor instruction for calls to the secure domain. @@ -71,8 +72,7 @@ The \ref partition_h_pg defines the initial setup of the .h" defines the initial system configuration and during SystemInit in Secure state. - The file \ref partition_gen_h_pg "partition_gen.h" is optional and contains SAU region and interrupt target assignments. This file may be generated using CMSIS-Zone. -\note -Refer to \ref using_pg for a general description of the CMSIS-Core (Cortex-M) files. +> **Note** +> - Refer to \ref using_pg for a general description of the CMSIS-Core (Cortex-M) files. ![CMSIS with extensions for TrustZone](./images/CMSIS_TZ_files.png) @@ -118,8 +118,7 @@ As the *non-secure state* and *secure state* parts of an application are separat ![RTOS Thread Context Management for Armv8-M TrustZone](./images/TZ_context.png) -To allocate the context memory for threads, an RTOS kernel that runs in *non-secure state* calls the interface functions defined by the header file **tz_context.h**. The **TZ Context** functions themselves are part of the *secure state* application. An minimum implementation is provided as part of RTOS2 and should handle the secure stack for the thread execution. However it is also possible to implement the context memory -management system with additional features such as access control to *secure state* memory regions using an MPU. +To allocate the context memory for threads, an RTOS kernel that runs in *non-secure state* calls the interface functions defined by the header file **tz_context.h**. The **TZ Context** functions themselves are part of the *secure state* application. An minimum implementation is provided as part of RTOS2 and should handle the secure stack for the thread execution. However it is also possible to implement the context memory management system with additional features such as access control to *secure state* memory regions using an MPU. The API functions of **TZ Context** are described in the chapter [API Reference](modules.html) under \ref trustzone_functions - \ref context_trustzone_functions. diff --git a/CMSIS/DoxyGen/Core_A/Core_A.dxy.in b/CMSIS/Documentation/Doxygen/Core_A/Core_A.dxy.in similarity index 99% rename from CMSIS/DoxyGen/Core_A/Core_A.dxy.in rename to CMSIS/Documentation/Doxygen/Core_A/Core_A.dxy.in index 547835352..4e7d96a13 100644 --- a/CMSIS/DoxyGen/Core_A/Core_A.dxy.in +++ b/CMSIS/Documentation/Doxygen/Core_A/Core_A.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/Core_A +OUTPUT_DIRECTORY = ../../html/Core_A # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -921,11 +921,11 @@ INPUT = ./src/mainpage.md \ ./src/using.md \ ./src/template.md \ ./src/misra.md \ - ./../../Core/Include/core_ca.h \ - ./../../Core/Include/a-profile/cmsis_armclang_a.h \ - ./../../Core/Include/a-profile/cmsis_cp15.h \ - ./../../Core/Include/a-profile/irq_ctrl.h \ - ./../../Core/Source/irq_ctrl_gic.c \ + ./../../../Core/Include/core_ca.h \ + ./../../../Core/Include/a-profile/cmsis_armclang_a.h \ + ./../../../Core/Include/a-profile/cmsis_cp15.h \ + ./../../../Core/Include/a-profile/irq_ctrl.h \ + ./../../../Core/Source/irq_ctrl_gic.c \ ./src/Ref_SystemAndClock.txt \ ./src/Ref_GIC.txt \ ./src/Ref_CoreRegister.txt \ @@ -1069,7 +1069,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = ../../Core/Template/Device_A/ +EXAMPLE_PATH = ../../../Core/Template/Device_A/ # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -1322,7 +1322,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -2450,7 +2450,7 @@ TAGFILES = # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. -GENERATE_TAGFILE = ../../Documentation/Core/cmsis_core_a.tag +GENERATE_TAGFILE = ../../html/Core/cmsis_core_a.tag # If the ALLEXTERNALS tag is set to YES, all external class will be listed in # the class index. If set to NO, only the inherited external classes will be diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_Cache.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_Cache.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_Cache.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_Cache.txt diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_CompilerControl.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_CompilerControl.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_CompilerControl.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_CompilerControl.txt diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_CoreRegister.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_CoreRegister.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_CoreRegister.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_CoreRegister.txt diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_GIC.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_GIC.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_GIC.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_GIC.txt diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_IRQCtrl.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_IRQCtrl.txt similarity index 99% rename from CMSIS/DoxyGen/Core_A/src/Ref_IRQCtrl.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_IRQCtrl.txt index 9951a2cbb..128db321d 100644 --- a/CMSIS/DoxyGen/Core_A/src/Ref_IRQCtrl.txt +++ b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_IRQCtrl.txt @@ -26,7 +26,7 @@ The Armv7-A architecture defines a common set of first level exceptions, see tab By default those handlers are defined as weak empty functions by the \ref startup_c_sec "device specific startup code". Software and peripheral interrupts are all handled by one of the both central interrupt handlers (IRQ and FIQ). These needs to be implemented application specific. If an RTOS is used the interrupt handlers are typically provided by the RTOS, e.g. when using -CMSIS-RTX. +CMSIS-RTX. The interrupts available depends on the actual device in use. According to CMSIS specification the interrupts are defined in \ref IRQn_Type in \ref device_h_pg. Using the generic IRQ API one can easily enable and disable interrupts, set up priorities, modes and preemption rules, and register interrupt callbacks. diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_MMU.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_MMU.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_MMU.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_MMU.txt diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_SystemAndClock.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_SystemAndClock.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_SystemAndClock.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_SystemAndClock.txt diff --git a/CMSIS/DoxyGen/Core_A/src/Ref_Timer.txt b/CMSIS/Documentation/Doxygen/Core_A/src/Ref_Timer.txt similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/Ref_Timer.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/Ref_Timer.txt diff --git a/CMSIS/DoxyGen/Core_A/src/core_ca.txt b/CMSIS/Documentation/Doxygen/Core_A/src/core_ca.txt similarity index 98% rename from CMSIS/DoxyGen/Core_A/src/core_ca.txt rename to CMSIS/Documentation/Doxygen/Core_A/src/core_ca.txt index c58671b83..188c91230 100644 --- a/CMSIS/DoxyGen/Core_A/src/core_ca.txt +++ b/CMSIS/Documentation/Doxygen/Core_A/src/core_ca.txt @@ -12,9 +12,8 @@ The section below describes the naming conventions, requirements, and optional f Most of the rules also apply to the core peripherals. The \ref device_h_pg "Device Header File \" contains typically these definition and also includes the core specific header files. -The definitions for \ref peripheral_gr can be generated using the CMSIS-SVD System View Description for Peripherals. -Refer to SVDConv.exe for more information. - +The definitions for \ref peripheral_gr can be generated using the CMSIS-SVD System View Description for Peripherals. + Each peripheral provides a data type definition with a name that is composed of: - an optional prefix <device abbreviation>_ - <peripheral name> diff --git a/CMSIS/DoxyGen/Core_A/src/history.md b/CMSIS/Documentation/Doxygen/Core_A/src/history.md similarity index 95% rename from CMSIS/DoxyGen/Core_A/src/history.md rename to CMSIS/Documentation/Doxygen/Core_A/src/history.md index bdc46ec08..4e73e4eb3 100644 --- a/CMSIS/DoxyGen/Core_A/src/history.md +++ b/CMSIS/Documentation/Doxygen/Core_A/src/history.md @@ -1,6 +1,6 @@ # Revision History of CMSIS-Core (Cortex-A) {#rev_histCoreA} -CMSIS-Core (A) component is maintaned with own versioning that gets incremented together with the [CMSIS Software Pack](../../General/html/cmsis_pack.html) releases. +CMSIS-Core (A) component is maintaned with own versioning that gets incremented together with the [CMSIS Software Pack](../General/cmsis_pack.html) releases. The table below provides information about the changes delivered with specific versions of CMSIS-Core (A) updates. diff --git a/CMSIS/DoxyGen/Core_A/src/images/CMSIS_CORE_A_Files.png b/CMSIS/Documentation/Doxygen/Core_A/src/images/CMSIS_CORE_A_Files.png similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/images/CMSIS_CORE_A_Files.png rename to CMSIS/Documentation/Doxygen/Core_A/src/images/CMSIS_CORE_A_Files.png diff --git a/CMSIS/DoxyGen/Core_A/src/images/CMSIS_CORE_A_Files_user.png b/CMSIS/Documentation/Doxygen/Core_A/src/images/CMSIS_CORE_A_Files_user.png similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/images/CMSIS_CORE_A_Files_user.png rename to CMSIS/Documentation/Doxygen/Core_A/src/images/CMSIS_CORE_A_Files_user.png diff --git a/CMSIS/DoxyGen/Core_A/src/images/CMSIS_Core_A.pptx b/CMSIS/Documentation/Doxygen/Core_A/src/images/CMSIS_Core_A.pptx similarity index 100% rename from CMSIS/DoxyGen/Core_A/src/images/CMSIS_Core_A.pptx rename to CMSIS/Documentation/Doxygen/Core_A/src/images/CMSIS_Core_A.pptx diff --git a/CMSIS/DoxyGen/Core_A/src/mainpage.md b/CMSIS/Documentation/Doxygen/Core_A/src/mainpage.md similarity index 96% rename from CMSIS/DoxyGen/Core_A/src/mainpage.md rename to CMSIS/Documentation/Doxygen/Core_A/src/mainpage.md index 4de3f5e6a..f59cbd6da 100644 --- a/CMSIS/DoxyGen/Core_A/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/Core_A/src/mainpage.md @@ -18,14 +18,14 @@ The following sections provide details about the CMSIS-Core (Cortex-A): ## Access to CMSIS-Core (Cortex-A) -CMSIS-Core is actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../../General/html/cmsis_pack.html). +CMSIS-Core is actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../General/cmsis_pack.html). The following directories and files relevant to CMSIS-Core (Cortex-A) are present in the **ARM::CMSIS** Pack: Directory | Content :---------------------------------|:------------------------------------------------------------------------ 📂 CMSIS | CMSIS Base software components folder - ┣ 📂 Documentation/Core_A | A local copy of this CMSIS-Core (A) documentation + ┣ 📂 Documentation/html/Core_A | A local copy of this CMSIS-Core (A) documentation â”— 📂 Core | CMSIS-Core files    ┣ 📂 Include | \ref CMSIS_Processor_files.     â”— 📂 a-profile| Header files specific for Arm A-Profile. diff --git a/CMSIS/DoxyGen/Core_A/src/misra.md b/CMSIS/Documentation/Doxygen/Core_A/src/misra.md similarity index 96% rename from CMSIS/DoxyGen/Core_A/src/misra.md rename to CMSIS/Documentation/Doxygen/Core_A/src/misra.md index 62cf908c5..a372b17de 100644 --- a/CMSIS/DoxyGen/Core_A/src/misra.md +++ b/CMSIS/Documentation/Doxygen/Core_A/src/misra.md @@ -1,7 +1,7 @@ # MISRA-C Deviations {#coreMISRA_Exceptions_pg} CMSIS-Core (Cortex-A) uses the common coding rules for CMSIS components that are documented in -[CMSIS Introduction](../../General/html/index.html). +[CMSIS Introduction](../General/index.html). CMSIS-Core (Cortex-A) violates the following MISRA-C:2012 rules: diff --git a/CMSIS/DoxyGen/Core_A/src/template.md b/CMSIS/Documentation/Doxygen/Core_A/src/template.md similarity index 98% rename from CMSIS/DoxyGen/Core_A/src/template.md rename to CMSIS/Documentation/Doxygen/Core_A/src/template.md index 98ba6885a..a3c6b293c 100644 --- a/CMSIS/DoxyGen/Core_A/src/template.md +++ b/CMSIS/Documentation/Doxygen/Core_A/src/template.md @@ -20,7 +20,7 @@ Header File | Target Processor Core ## Device Examples {#device_examples} -The [CMSIS-DFP pack](https://github.com/ARM-software/CMSIS-DFP) provides generic device definitions for supported Arm Cortex-A cores and contains corresponding CMSIS-Core device files. +The [Cortex_DFP pack](https://github.com/ARM-software/Cortex_DFP) provides generic device definitions for supported Arm Cortex-A cores and contains corresponding CMSIS-Core device files. ## Template Files {#template_files_sec} @@ -32,7 +32,7 @@ Silicon vendors add to these template files the following information: Template File | Description :-----------------------------------|:---------------------------------------- -📂 CMSIS/Core/Template/Device_A | Folder with CMSIS-Core device file templates ([See on GitHub](https://github.com/ARM-software/CMSIS_6/blob/main/CMSIS/Core/Template/Device_A/)) +📂 CMSIS/Core/Template/Device_A | Folder with CMSIS-Core device file templates ([See on GitHub](https://github.com/ARM-software/CMSIS_6/tree/main/CMSIS/Core/Template/Device_A/)) ┣ 📂 Config | Template configuration files    ┣ 📄 Device_ac6.sct | Linker scatter file template for Arm C/C++ Compiler    â”— 📄 mem_Device.h |\ref mem_h_pg template diff --git a/CMSIS/DoxyGen/Core_A/src/using.md b/CMSIS/Documentation/Doxygen/Core_A/src/using.md similarity index 86% rename from CMSIS/DoxyGen/Core_A/src/using.md rename to CMSIS/Documentation/Doxygen/Core_A/src/using.md index 98767958d..9f727f744 100644 --- a/CMSIS/DoxyGen/Core_A/src/using.md +++ b/CMSIS/Documentation/Doxygen/Core_A/src/using.md @@ -7,9 +7,8 @@ To use the CMSIS-Core-A the following files are added to the embedded applicatio - \ref mem_h_pg contains basic memory configurations. - \ref mmu_c_pg contains the memory management unit setup. -\note The files \ref startup_c_pg, \ref system_c_pg, \ref mem_h_pg, and \ref mmu_c_pg may require application specific adaptations and therefore should be copied - into the application project folder prior configuration. The \ref device_h_pg is included in all source files that need device access - and can be stored on a central include folder that is generic for all projects. +> **Note** +> - The files \ref startup_c_pg, \ref system_c_pg, \ref mem_h_pg, and \ref mmu_c_pg may require application specific adaptations and therefore should be copied into the application project folder prior configuration. The \ref device_h_pg is included in all source files that need device access and can be stored on a central include folder that is generic for all projects. The `Reset_Handler` defined in \ref startup_c_pg is executed after reset. The default initialization sequence is @@ -44,7 +43,8 @@ The use of \ref device_h_pg can be abstracted with the `#define CMSIS_header_fil The CMSIS-Core-A user files are device specific. In addition, the \ref startup_c_pg is also compiler vendor specific. The various compiler vendor tool chains may provide folders that contain the CMSIS files for each supported device. -\note The silicon vendors create these device-specific CMSIS-Core-A files based on \ref templates_pg provide by Arm. +> **Note** +> - The silicon vendors create these device-specific CMSIS-Core-A files based on \ref templates_pg provide by Arm. Thereafter, the functions described under [API Reference](modules.html) can be used in the application. @@ -116,4 +116,4 @@ int main(void) ## Using CMSIS with generic Arm Processors {#using_ARM_pg} -The [CMSIS-DFP pack](https://github.com/ARM-software/CMSIS-DFP) provides generic device definitions for standard Arm Cortex-A cores and contains corresponding. These generic Arm devices can be used as a target for embedded programs, with execution, for example, on processor simulation models. +The [Cortex_DFP pack](https://github.com/ARM-software/Cortex_DFP) provides generic device definitions for standard Arm Cortex-A cores and contains corresponding. These generic Arm devices can be used as a target for embedded programs, with execution, for example, on processor simulation models. diff --git a/CMSIS/DoxyGen/DAP/DAP.dxy.in b/CMSIS/Documentation/Doxygen/DAP/DAP.dxy.in similarity index 99% rename from CMSIS/DoxyGen/DAP/DAP.dxy.in rename to CMSIS/Documentation/Doxygen/DAP/DAP.dxy.in index 1bd4e47b9..b5015412b 100644 --- a/CMSIS/DoxyGen/DAP/DAP.dxy.in +++ b/CMSIS/Documentation/Doxygen/DAP/DAP.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/DAP +OUTPUT_DIRECTORY = ../../html/DAP # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/DAP/src/images/.gitignore b/CMSIS/Documentation/Doxygen/DAP/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/DAP/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/DAP/src/images/.gitignore diff --git a/CMSIS/DoxyGen/DAP/src/images/cmsis_dap_interface.png b/CMSIS/Documentation/Doxygen/DAP/src/images/cmsis_dap_interface.png similarity index 100% rename from CMSIS/DoxyGen/DAP/src/images/cmsis_dap_interface.png rename to CMSIS/Documentation/Doxygen/DAP/src/images/cmsis_dap_interface.png diff --git a/CMSIS/DoxyGen/DAP/src/mainpage.md b/CMSIS/Documentation/Doxygen/DAP/src/mainpage.md similarity index 89% rename from CMSIS/DoxyGen/DAP/src/mainpage.md rename to CMSIS/Documentation/Doxygen/DAP/src/mainpage.md index 0d7ef132a..ff776a06b 100644 --- a/CMSIS/DoxyGen/DAP/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/DAP/src/mainpage.md @@ -13,8 +13,8 @@ CMSIS-DAP provides the interface firmware for a debug unit that implements the c ## Access to CMSIS-DAP -- [**CMSIS-DAP GitHub Repo**](https://github.com/ARM-software/CMSIS-DAP) provides the full source code. -- [**CMSIS-DAP Documentation**](https://arm-software.github.io/CMSIS-DAP/latest/) describes the implemented functions in details. + - [**CMSIS-DAP GitHub Repo**](https://github.com/ARM-software/CMSIS-DAP) provides the full source code. + - [**CMSIS-DAP Documentation**](https://arm-software.github.io/CMSIS-DAP/latest/) describes the implemented functions in details. ## Key Features and Benefits diff --git a/CMSIS/DoxyGen/DSP/DSP.dxy.in b/CMSIS/Documentation/Doxygen/DSP/DSP.dxy.in similarity index 99% rename from CMSIS/DoxyGen/DSP/DSP.dxy.in rename to CMSIS/Documentation/Doxygen/DSP/DSP.dxy.in index 167660176..f67b987a9 100644 --- a/CMSIS/DoxyGen/DSP/DSP.dxy.in +++ b/CMSIS/Documentation/Doxygen/DSP/DSP.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/DSP +OUTPUT_DIRECTORY = ../../html/DSP # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/DSP/src/images/.gitignore b/CMSIS/Documentation/Doxygen/DSP/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/DSP/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/DSP/src/images/.gitignore diff --git a/CMSIS/Documentation/Doxygen/DSP/src/mainpage.md b/CMSIS/Documentation/Doxygen/DSP/src/mainpage.md new file mode 100644 index 000000000..adc981fd2 --- /dev/null +++ b/CMSIS/Documentation/Doxygen/DSP/src/mainpage.md @@ -0,0 +1,24 @@ +# CMSIS-DSP {#mainpage} + +**CMSIS-DSP** is an open-source software library that implements common compute processing functions optimized for use on Arm Cortex-M and Cortex-A processors. The library covers such compute categories as (list not exhaustive): + + - Basic mathematics (real, complex, quaternion, linear algebra, fast math functions) + - DSP (filtering) + - Transforms (FFT, MFCC, DCT) + - Statistics + - Classical ML (Support Vector Machine, Distance functions for clustering, ...) + +## Access to CMSIS-DSP + +CMSIS-DSP is actively maintained in a dedicated GitHub repository and is also published as a standalone release in [CMSIS Pack format](). + + - [**CMSIS-DSP GitHub Repo**](https://github.com/ARM-software/CMSIS-DSP) provides the full source code as well as releases in CMSIS-Pack format. + - [**CMSIS-DSP Documentation**](https://arm-software.github.io/CMSIS-DSP/latest/) explains how to use the library and describes the implemented functions in details. + +## Key Features and Benefits + + - CMSIS-DSP covers a broad set of compute functions common for use in embedded systems. + - Supports operations on 8-bit integers, 16-bit integers, 32-bit integer and 32-bit floating-point values. + - Provides vectorized versions of most algorthms for [Arm Helium Technology](https://developer.arm.com/Architectures/Helium) and of most f32 algorithms for [Arm Neon Technology](https://developer.arm.com/Architectures/Neon). + - Includes test framework. + - Provides examples demonstating how to use the library functions. diff --git a/CMSIS/DoxyGen/Doxygen_Templates/Layout_forUser.xml b/CMSIS/Documentation/Doxygen/Doxygen_Templates/Layout_forUser.xml similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/Layout_forUser.xml rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/Layout_forUser.xml diff --git a/CMSIS/DoxyGen/Doxygen_Templates/Layout_forUser_Core.xml b/CMSIS/Documentation/Doxygen/Doxygen_Templates/Layout_forUser_Core.xml similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/Layout_forUser_Core.xml rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/Layout_forUser_Core.xml diff --git a/CMSIS/DoxyGen/Doxygen_Templates/cmsis_logo_white_small.png b/CMSIS/Documentation/Doxygen/Doxygen_Templates/cmsis_logo_white_small.png similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/cmsis_logo_white_small.png rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/cmsis_logo_white_small.png diff --git a/CMSIS/DoxyGen/Doxygen_Templates/darkmode_toggle.js b/CMSIS/Documentation/Doxygen/Doxygen_Templates/darkmode_toggle.js similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/darkmode_toggle.js rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/darkmode_toggle.js diff --git a/CMSIS/DoxyGen/Doxygen_Templates/dropdown.png b/CMSIS/Documentation/Doxygen/Doxygen_Templates/dropdown.png similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/dropdown.png rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/dropdown.png diff --git a/CMSIS/DoxyGen/Doxygen_Templates/extra_navtree.css b/CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_navtree.css similarity index 99% rename from CMSIS/DoxyGen/Doxygen_Templates/extra_navtree.css rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_navtree.css index aef388595..f4d03b5b9 100644 --- a/CMSIS/DoxyGen/Doxygen_Templates/extra_navtree.css +++ b/CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_navtree.css @@ -102,7 +102,7 @@ display:block; position: absolute; left: 0px; - width: 350px; + width: 320px; } .ui-resizable .ui-resizable-handle { diff --git a/CMSIS/DoxyGen/Doxygen_Templates/extra_search.css b/CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_search.css similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/extra_search.css rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_search.css diff --git a/CMSIS/DoxyGen/Doxygen_Templates/extra_stylesheet.css b/CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_stylesheet.css similarity index 99% rename from CMSIS/DoxyGen/Doxygen_Templates/extra_stylesheet.css rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_stylesheet.css index 7546988b3..4d0e132b7 100644 --- a/CMSIS/DoxyGen/Doxygen_Templates/extra_stylesheet.css +++ b/CMSIS/Documentation/Doxygen/Doxygen_Templates/extra_stylesheet.css @@ -1232,6 +1232,15 @@ address { color: #293C63; } +blockquote.doxtable { + margin-left:-7px; + margin-bottom: 6px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; + background-color: var(--page-background-color); +} + table.doxtable { border-collapse:collapse; margin-top: 4px; diff --git a/CMSIS/DoxyGen/Doxygen_Templates/footer.html b/CMSIS/Documentation/Doxygen/Doxygen_Templates/footer.html similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/footer.html rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/footer.html diff --git a/CMSIS/DoxyGen/Doxygen_Templates/footer.js.in b/CMSIS/Documentation/Doxygen/Doxygen_Templates/footer.js.in similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/footer.js.in rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/footer.js.in diff --git a/CMSIS/DoxyGen/Doxygen_Templates/header.html b/CMSIS/Documentation/Doxygen/Doxygen_Templates/header.html similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/header.html rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/header.html diff --git a/CMSIS/DoxyGen/Doxygen_Templates/navtree.css b/CMSIS/Documentation/Doxygen/Doxygen_Templates/navtree.css similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/navtree.css rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/navtree.css diff --git a/CMSIS/DoxyGen/Doxygen_Templates/navtree.js b/CMSIS/Documentation/Doxygen/Doxygen_Templates/navtree.js similarity index 100% rename from CMSIS/DoxyGen/Doxygen_Templates/navtree.js rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/navtree.js diff --git a/CMSIS/DoxyGen/Doxygen_Templates/printComponentTabs.js b/CMSIS/Documentation/Doxygen/Doxygen_Templates/printComponentTabs.js similarity index 85% rename from CMSIS/DoxyGen/Doxygen_Templates/printComponentTabs.js rename to CMSIS/Documentation/Doxygen/Doxygen_Templates/printComponentTabs.js index b8f5bb855..644e79193 100644 --- a/CMSIS/DoxyGen/Doxygen_Templates/printComponentTabs.js +++ b/CMSIS/Documentation/Doxygen/Doxygen_Templates/printComponentTabs.js @@ -5,8 +5,8 @@ function tabElement(id, folderName, tabTxt ) { this.id = id; // elementID as needed in html; this.folderName = folderName; // folder name of the component this.tabTxt = tabTxt; // Text displayed as menu on the web - this.currentListItem = '
  • ' + this.tabTxt + '
  • '; - this.listItem = '
  • ' + this.tabTxt + '
  • '; + this.currentListItem = '
  • ' + this.tabTxt + '
  • '; + this.listItem = '
  • ' + this.tabTxt + '
  • '; }; // constructor for the array of objects @@ -14,8 +14,8 @@ function tabSubElement(id, folderName, tabTxt ) { this.id = id; // elementID as needed in html; this.folderName = folderName; // folder name of the component this.tabTxt = tabTxt; // Text displayed as menu on the web - this.currentListItem = '
  • ' + this.tabTxt + '
  • '; - this.listItem = '
  • ' + this.tabTxt + '
  • '; + this.currentListItem = '
  • ' + this.tabTxt + '
  • '; + this.listItem = '
  • ' + this.tabTxt + '
  • '; }; // array of main tabs @@ -61,7 +61,7 @@ function writeComponentTabs() { // write sub-tabs (can't use layout XML as will show all other sub-tabs as well (API, usage, et.)) // called from the header file function writeSubComponentTabs() { - if((strgURL.search("/Core/html/")>0)||(strgURL.search("/Core_A/html/")>0)){ + if((strgURL.search("/Core/")>0)||(strgURL.search("/Core_A/")>0)){ document.write('
    diff --git a/CMSIS/DoxyGen/Driver/src/images/CAN_Bit_Timing.png b/CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Bit_Timing.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/CAN_Bit_Timing.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Bit_Timing.png diff --git a/CMSIS/DoxyGen/Driver/src/images/CAN_Bit_Timing.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Bit_Timing.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/CAN_Bit_Timing.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Bit_Timing.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/CAN_Node.png b/CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Node.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/CAN_Node.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Node.png diff --git a/CMSIS/DoxyGen/Driver/src/images/CAN_Node.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Node.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/CAN_Node.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/CAN_Node.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/ComponentSelection.png b/CMSIS/Documentation/Doxygen/Driver/src/images/ComponentSelection.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/ComponentSelection.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/ComponentSelection.png diff --git a/CMSIS/DoxyGen/Driver/src/images/EthernetSchematic.png b/CMSIS/Documentation/Doxygen/Driver/src/images/EthernetSchematic.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/EthernetSchematic.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/EthernetSchematic.png diff --git a/CMSIS/DoxyGen/Driver/src/images/EthernetSchematic.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/EthernetSchematic.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/EthernetSchematic.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/EthernetSchematic.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/I2C_BlockDiagram.png b/CMSIS/Documentation/Doxygen/Driver/src/images/I2C_BlockDiagram.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/I2C_BlockDiagram.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/I2C_BlockDiagram.png diff --git a/CMSIS/DoxyGen/Driver/src/images/I2C_BlockDiagram.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/I2C_BlockDiagram.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/I2C_BlockDiagram.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/I2C_BlockDiagram.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/NAND_PageLayout.png b/CMSIS/Documentation/Doxygen/Driver/src/images/NAND_PageLayout.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NAND_PageLayout.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/NAND_PageLayout.png diff --git a/CMSIS/DoxyGen/Driver/src/images/NAND_PageLayout.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/NAND_PageLayout.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NAND_PageLayout.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/NAND_PageLayout.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/NAND_Schematics.png b/CMSIS/Documentation/Doxygen/Driver/src/images/NAND_Schematics.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NAND_Schematics.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/NAND_Schematics.png diff --git a/CMSIS/DoxyGen/Driver/src/images/NAND_Schematics.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/NAND_Schematics.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NAND_Schematics.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/NAND_Schematics.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/NAND_SpareArea.png b/CMSIS/Documentation/Doxygen/Driver/src/images/NAND_SpareArea.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NAND_SpareArea.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/NAND_SpareArea.png diff --git a/CMSIS/DoxyGen/Driver/src/images/NAND_SpareArea.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/NAND_SpareArea.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NAND_SpareArea.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/NAND_SpareArea.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/NOR_Schematics.png b/CMSIS/Documentation/Doxygen/Driver/src/images/NOR_Schematics.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NOR_Schematics.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/NOR_Schematics.png diff --git a/CMSIS/DoxyGen/Driver/src/images/NOR_Schematics.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/NOR_Schematics.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/NOR_Schematics.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/NOR_Schematics.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/Non_blocking_transmit_small.png b/CMSIS/Documentation/Doxygen/Driver/src/images/Non_blocking_transmit_small.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/Non_blocking_transmit_small.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/Non_blocking_transmit_small.png diff --git a/CMSIS/DoxyGen/Driver/src/images/PDSC_Example.png b/CMSIS/Documentation/Doxygen/Driver/src/images/PDSC_Example.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/PDSC_Example.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/PDSC_Example.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SAI_Schematics.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SAI_Schematics.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SAI_Schematics.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SAI_Schematics.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SAI_Schematics.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SAI_Schematics.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SAI_Schematics.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SAI_Schematics.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SAI_TimingDiagrams.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SAI_TimingDiagrams.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SAI_TimingDiagrams.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SAI_TimingDiagrams.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SD_1BitBusMode.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SD_1BitBusMode.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SD_1BitBusMode.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SD_1BitBusMode.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SD_1BitBusMode.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SD_1BitBusMode.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SD_1BitBusMode.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SD_1BitBusMode.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SD_4BitBusMode.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SD_4BitBusMode.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SD_4BitBusMode.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SD_4BitBusMode.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SD_4BitBusMode.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SD_4BitBusMode.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SD_4BitBusMode.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SD_4BitBusMode.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_BusMode.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_BusMode.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_BusMode.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_BusMode.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_BusMode.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_BusMode.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_BusMode.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_BusMode.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_Master1Slaves.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master1Slaves.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_Master1Slaves.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master1Slaves.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_Master1Slaves.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master1Slaves.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_Master1Slaves.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master1Slaves.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_Master2Slaves.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master2Slaves.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_Master2Slaves.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master2Slaves.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_Master2Slaves.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master2Slaves.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_Master2Slaves.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master2Slaves.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_Master3Slaves.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master3Slaves.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_Master3Slaves.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master3Slaves.png diff --git a/CMSIS/DoxyGen/Driver/src/images/SPI_Master3Slaves.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master3Slaves.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SPI_Master3Slaves.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/SPI_Master3Slaves.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/SoftwarePacks.png b/CMSIS/Documentation/Doxygen/Driver/src/images/SoftwarePacks.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/SoftwarePacks.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/SoftwarePacks.png diff --git a/CMSIS/DoxyGen/Driver/src/images/Storage.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/Storage.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/Storage.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/Storage.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/USB_Schematics.png b/CMSIS/Documentation/Doxygen/Driver/src/images/USB_Schematics.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/USB_Schematics.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/USB_Schematics.png diff --git a/CMSIS/DoxyGen/Driver/src/images/USB_Schematics.vsd b/CMSIS/Documentation/Doxygen/Driver/src/images/USB_Schematics.vsd similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/USB_Schematics.vsd rename to CMSIS/Documentation/Doxygen/Driver/src/images/USB_Schematics.vsd diff --git a/CMSIS/DoxyGen/Driver/src/images/WiFi.png b/CMSIS/Documentation/Doxygen/Driver/src/images/WiFi.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/WiFi.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/WiFi.png diff --git a/CMSIS/DoxyGen/Driver/src/images/driver.png b/CMSIS/Documentation/Doxygen/Driver/src/images/driver.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver.png diff --git a/CMSIS/DoxyGen/Driver/src/images/driver.pptx b/CMSIS/Documentation/Doxygen/Driver/src/images/driver.pptx similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver.pptx rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver.pptx diff --git a/CMSIS/DoxyGen/Driver/src/images/driver_sai_i2s.png b/CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_i2s.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver_sai_i2s.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_i2s.png diff --git a/CMSIS/DoxyGen/Driver/src/images/driver_sai_lsb.png b/CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_lsb.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver_sai_lsb.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_lsb.png diff --git a/CMSIS/DoxyGen/Driver/src/images/driver_sai_msb.png b/CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_msb.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver_sai_msb.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_msb.png diff --git a/CMSIS/DoxyGen/Driver/src/images/driver_sai_pcm.png b/CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_pcm.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver_sai_pcm.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_pcm.png diff --git a/CMSIS/DoxyGen/Driver/src/images/driver_sai_user.png b/CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_user.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/driver_sai_user.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/driver_sai_user.png diff --git a/CMSIS/DoxyGen/Driver/src/images/image001.png b/CMSIS/Documentation/Doxygen/Driver/src/images/image001.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/image001.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/image001.png diff --git a/CMSIS/DoxyGen/Driver/src/images/image002.png b/CMSIS/Documentation/Doxygen/Driver/src/images/image002.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/image002.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/image002.png diff --git a/CMSIS/DoxyGen/Driver/src/images/image003.png b/CMSIS/Documentation/Doxygen/Driver/src/images/image003.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/image003.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/image003.png diff --git a/CMSIS/DoxyGen/Driver/src/images/image004.png b/CMSIS/Documentation/Doxygen/Driver/src/images/image004.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/image004.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/image004.png diff --git a/CMSIS/DoxyGen/Driver/src/images/image005.png b/CMSIS/Documentation/Doxygen/Driver/src/images/image005.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/image005.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/image005.png diff --git a/CMSIS/DoxyGen/Driver/src/images/image006.png b/CMSIS/Documentation/Doxygen/Driver/src/images/image006.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/image006.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/image006.png diff --git a/CMSIS/DoxyGen/Driver/src/images/storage_sw_stack.png b/CMSIS/Documentation/Doxygen/Driver/src/images/storage_sw_stack.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/storage_sw_stack.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/storage_sw_stack.png diff --git a/CMSIS/DoxyGen/Driver/src/images/vioComponentViewer.png b/CMSIS/Documentation/Doxygen/Driver/src/images/vioComponentViewer.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/vioComponentViewer.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/vioComponentViewer.png diff --git a/CMSIS/DoxyGen/Driver/src/images/vioRationale.png b/CMSIS/Documentation/Doxygen/Driver/src/images/vioRationale.png similarity index 100% rename from CMSIS/DoxyGen/Driver/src/images/vioRationale.png rename to CMSIS/Documentation/Doxygen/Driver/src/images/vioRationale.png diff --git a/CMSIS/DoxyGen/Driver/src/implementations.md b/CMSIS/Documentation/Doxygen/Driver/src/implementations.md similarity index 99% rename from CMSIS/DoxyGen/Driver/src/implementations.md rename to CMSIS/Documentation/Doxygen/Driver/src/implementations.md index ceed51884..09fa900ef 100644 --- a/CMSIS/DoxyGen/Driver/src/implementations.md +++ b/CMSIS/Documentation/Doxygen/Driver/src/implementations.md @@ -4166,4 +4166,4 @@ Some CMSIS-Driver implementations for external MCU-independent peripheral device
    -Last update: 2023-06-13. \ No newline at end of file +Last update: 2023-06-13. diff --git a/CMSIS/DoxyGen/Driver/src/mainpage.md b/CMSIS/Documentation/Doxygen/Driver/src/mainpage.md similarity index 97% rename from CMSIS/DoxyGen/Driver/src/mainpage.md rename to CMSIS/Documentation/Doxygen/Driver/src/mainpage.md index fadce9f38..e99edafa2 100644 --- a/CMSIS/DoxyGen/Driver/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/Driver/src/mainpage.md @@ -43,7 +43,7 @@ A list of current CMSIS-Driver implementations is available \ref listOfImplement ## Access to CMSIS-Driver {#cmsis_driver_pack} -CMSIS-Driver intefaces are actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../../General/html/cmsis_pack.html). +CMSIS-Driver intefaces are actively maintained in [CMSIS 6 GitHub repository](https://github.com/ARM-software/CMSIS_6) and released as part of the [CMSIS Software Pack](../General/cmsis_pack.html). The CMSIS Software Pack publishes the API Interface under the Component Class **CMSIS Driver** with header files and a documentation. These header files are the reference for the implementation of the standardized peripheral driver interfaces. @@ -54,7 +54,7 @@ The following directories and files relevant to CMSIS-Driver are present in the Directory | Content :---------------------------------|:------------------------------------------------------------------------ 📂 CMSIS | CMSIS Base software components folder - ┣ 📂 Documentation/Driver | A local copy of this CMSIS-Driver documentation + ┣ 📂 Documentation/html/Driver | A local copy of this CMSIS-Driver documentation ┣ 📂 Driver | Directory with CMSIS-Driver component, see \ref cmsis_driver_files    ┣ 📂 DriverTemplates | Driver Template files (Driver_interface.c)    ┣ 📂 Include | API header files (Driver_interface.h, %Driver_Common.h) diff --git a/CMSIS/DoxyGen/Driver/src/operation.md b/CMSIS/Documentation/Doxygen/Driver/src/operation.md similarity index 79% rename from CMSIS/DoxyGen/Driver/src/operation.md rename to CMSIS/Documentation/Doxygen/Driver/src/operation.md index cad8f53dc..afecc60cb 100644 --- a/CMSIS/DoxyGen/Driver/src/operation.md +++ b/CMSIS/Documentation/Doxygen/Driver/src/operation.md @@ -2,12 +2,9 @@ [TOC] -This section gives an overview of the general operation of CMSIS-Drivers. It explains the \ref DriverFunctions that are -common in all CMSIS-Drivers along with the \ref CallSequence. The topic \ref Data_Xfer_Functions describes how data -read/write operations to the peripheral are implemented. +This section gives an overview of the general operation of CMSIS-Drivers. It explains the \ref DriverFunctions that are common in all CMSIS-Drivers along with the \ref CallSequence. The topic \ref Data_Xfer_Functions describes how data read/write operations to the peripheral are implemented. -Each CMSIS-Driver defines an \ref AccessStruct for calling the various driver functions and each peripheral (that is accessed -via a CMSIS-Driver) has one \ref DriverInstances "Driver Instance". +Each CMSIS-Driver defines an \ref AccessStruct for calling the various driver functions and each peripheral (that is accessed via a CMSIS-Driver) has one \ref DriverInstances "Driver Instance". ## Common Driver Functions {#DriverFunctions} @@ -22,30 +19,22 @@ Each CMSIS-Driver contains these functions: - allocate I/O resources. - register an optional `SignalEvent` callback function. - - `SignalEvent`: is an optional callback function that is registered with the `Initialize` function. This callback - function is initiated from interrupt service routines and indicates hardware events or the completion of a data block - transfer operation. + - `SignalEvent`: is an optional callback function that is registered with the `Initialize` function. This callback function is initiated from interrupt service routines and indicates hardware events or the completion of a data block transfer operation. - - `PowerControl`: Controls the power profile of the peripheral and needs to be called after `Initialize`. Typically, three - power options are available (see \ref ARM_POWER_STATE): + - `PowerControl`: Controls the power profile of the peripheral and needs to be called after `Initialize`. Typically, three power options are available (see \ref ARM_POWER_STATE): - `ARM_POWER_FULL`: Peripheral is turned on and fully operational. The driver initializes the peripheral registers, interrupts, and (optionally) DMA. - - `ARM_POWER_LOW` : (optional) Peripheral is in low power mode and partially operational; usually, it can detect - external events and wake-up. - - `ARM_POWER_OFF`: Peripheral is turned off and not operational (pending operations are terminated). This is the state - after device reset. + - `ARM_POWER_LOW` : (optional) Peripheral is in low power mode and partially operational; usually, it can detect external events and wake-up. + - `ARM_POWER_OFF`: Peripheral is turned off and not operational (pending operations are terminated). This is the state after device reset. - `Uninitialize`: Complementary function to Initialize. Releases the I/O pin resources used by the interface. - - `Control`: Several drivers provide a control function to configure communication parameters or execute miscellaneous - control functions. + - `Control`: Several drivers provide a control function to configure communication parameters or execute miscellaneous control functions. -The section \ref CallSequence contains more information on the operation of each function. Additional functions are specific -to each driver interface and are described in the individual sections of each driver. +The section \ref CallSequence contains more information on the operation of each function. Additional functions are specific to each driver interface and are described in the individual sections of each driver. ## Cortex-M Processor Mode {#ProcessorMode} -The CMSIS-Driver functions access peripherals and interrupts and are designed to execute in **Privileged** mode. -When calling CMSIS-Driver functions from RTOS threads, it should be ensure that these threads execute in **Privileged** mode. +The CMSIS-Driver functions access peripherals and interrupts and are designed to execute in **Privileged** mode. When calling CMSIS-Driver functions from RTOS threads, it should be ensure that these threads execute in **Privileged** mode. ## Function Call Sequence {#CallSequence} @@ -77,42 +66,39 @@ For normal operation of the driver, the API functions `GetVersion`, `GetCapabili a=>b [label="Uninitialize (...)", textcolor="red", linecolor="red"]; \endmsc -The functions `GetVersion` and `GetCapabilities` can be called any time to obtain the required information from the driver. -These functions return always the same information. +The functions `GetVersion` and `GetCapabilities` can be called any time to obtain the required information from the driver. These functions return always the same information. ### Start Sequence {#CS_start} To start working with a peripheral the functions `Initialize` and `PowerControl` need to be called in this order: + ```c drv->Initialize (...); // Allocate I/O pins drv->PowerControl (ARM_POWER_FULL); // Power up peripheral, setup IRQ/DMA ``` -- `Initialize` typically allocates the I/O resources (pins) for the peripheral. The function can be called multiple times; - if the I/O resources are already initialized it performs no operation and just returns with \ref ARM_DRIVER_OK. -- `PowerControl` (`ARM_POWER_FULL`) sets the peripheral registers including interrupt (NVIC) and optionally DMA. - The function can be called multiple times; if the registers are already set it performs no operation and just returns with \ref ARM_DRIVER_OK. + - `Initialize` typically allocates the I/O resources (pins) for the peripheral. The function can be called multiple times; if the I/O resources are already initialized it performs no operation and just returns with \ref ARM_DRIVER_OK. + - `PowerControl` (`ARM_POWER_FULL`) sets the peripheral registers including interrupt (NVIC) and optionally DMA. The function can be called multiple times; if the registers are already set it performs no operation and just returns with \ref ARM_DRIVER_OK. ### Stop Sequence {#CS_stop} To stop working with a peripheral the functions `PowerControl` and `Uninitialize` need to be called in this order: + ```c drv->PowerControl (ARM_POWER_OFF); // Terminate any pending transfers, reset IRQ/DMA, power off peripheral drv->Uninitialize (...); // Release I/O pins ``` -The functions `PowerControl` and `Uninitialize` always execute and can be used to put the peripheral into a **Safe State**, -for example after any data transmission errors. To restart the peripheral in a error condition, you should first execute -the \ref CS_stop and then the \ref CS_start. +The functions `PowerControl` and `Uninitialize` always execute and can be used to put the peripheral into a **Safe State**, for example after any data transmission errors. To restart the peripheral in a error condition, you should first execute the \ref CS_stop and then the \ref CS_start. -- `PowerControl` (`ARM_POWER_OFF`) terminates any pending data transfers with the peripheral, disables the peripheral and leaves it in a defined mode (typically the reset state). + - `PowerControl` (`ARM_POWER_OFF`) terminates any pending data transfers with the peripheral, disables the peripheral and leaves it in a defined mode (typically the reset state). - when DMA is used it is disabled (including the interrupts) - peripheral interrupts are disabled on NVIC level - the peripheral is reset using a dedicated reset mechanism (if available) or by clearing the peripheral registers - pending peripheral interrupts are cleared on NVIC level - driver variables are cleared -- `Uninitialize` always releases I/O pin resources. + - `Uninitialize` always releases I/O pin resources. ## Shared I/O Pins {#Share_IO} @@ -134,21 +120,18 @@ All CMSIS-Driver provide a \ref CS_start and \ref CS_stop. Therefore two differe ## Data Transfer Functions {#Data_Xfer_Functions} -A CMSIS-Driver implements non-blocking functions to transfer data to a peripheral. This means that the driver configures the -read or write access to the peripheral and instantly returns to the calling application. The function names for data -transfer end with: +A CMSIS-Driver implements non-blocking functions to transfer data to a peripheral. This means that the driver configures the read or write access to the peripheral and instantly returns to the calling application. The function names for data transfer end with: + - `Send` to write data to a peripheral. - `Receive` to read data from a peripheral. - `Transfer` to indicate combined read/write operations to a peripheral. -During a data transfer, the application can query the number of transferred data items using functions named -GetxxxCount. On completion of a data transfer, the driver calls a callback function with a specific event code. +During a data transfer, the application can query the number of transferred data items using functions named GetxxxCount. On completion of a data transfer, the driver calls a callback function with a specific event code. During the data exchange with the peripheral, the application can decide to: - - Wait (using an RTOS scheduler) for the callback completion event. The RTOS is controlled by the application code which - makes the driver itself RTOS independent. - - Use polling functions that return the number of transferred data items to show progress information or partly read or fill - data transfer buffers. + + - Wait (using an RTOS scheduler) for the callback completion event. The RTOS is controlled by the application code which makes the driver itself RTOS independent. + - Use polling functions that return the number of transferred data items to show progress information or partly read or fill data transfer buffers. - Prepare another data transfer buffer for the next data transfer. The following diagram shows the basic communication flow when using the `_Send` function in an application. @@ -157,10 +140,10 @@ The following diagram shows the basic communication flow when using the `_Send` ## Access Struct {#AccessStruct} -A CMSIS-Driver publishes an \ref AccessStruct with the data type name `ARM_DRIVER_xxxx` that gives to access the driver -functions. +A CMSIS-Driver publishes an \ref AccessStruct with the data type name `ARM_DRIVER_xxxx` that gives to access the driver functions. **Code Example:** Function Access of the SPI driver + ```c typedef struct _ARM_DRIVER_SPI { ARM_DRIVER_VERSION (*GetVersion) (void); @@ -179,10 +162,10 @@ typedef struct _ARM_DRIVER_SPI { ### Driver Instances {#DriverInstances} -A device may offer several peripherals of the same type. For such devices, the CMSIS-Driver publishes multiple instances -of the \ref AccessStruct. The name of each driver instance reflects the names of the peripheral available in the device. +A device may offer several peripherals of the same type. For such devices, the CMSIS-Driver publishes multiple instances of the \ref AccessStruct. The name of each driver instance reflects the names of the peripheral available in the device. **Code Example:** \ref AccessStruct for three SPIs in a microcontroller device. + ```c ARM_DRIVER_SPI Driver_SPI1; // access functions for SPI1 interface ARM_DRIVER_SPI Driver_SPI2; // access functions for SPI2 interface @@ -193,9 +176,8 @@ The access functions can be passed to middleware to specify the driver instance **Naming Convention** -The access structs need to follow this naming convention: the keyword `Driver` followed by an underscore `_`, the interface -name `IFNAME` (usually in upper case letters), and the instance number `n`. Here's the full list of access struct names for -all drivers (n to be replaced with the actual instance number): +The access structs need to follow this naming convention: the keyword `Driver` followed by an underscore `_`, the interface name `IFNAME` (usually in upper case letters), and the instance number `n`. Here's the full list of access struct names for all drivers (n to be replaced with the actual instance number): + ```c Driver_CANn Driver_ETH_MACn @@ -216,6 +198,7 @@ Driver_WiFin **Example:** + ```c void init_middleware (ARM_DRIVER_SPI *Drv_spi) ... \\ inside the middleware the SPI driver functions are called with: @@ -261,8 +244,7 @@ The table below summarizes the API header and template files for CMSIS-Driver in ## Driver Configuration {#DriverConfiguration} -For a device family, the drivers may be configurable, but the configuration of the drivers itself is not part of the CMSIS-Driver -specification. +For a device family, the drivers may be configurable, but the configuration of the drivers itself is not part of the CMSIS-Driver specification. ## Code Example {#CodeExample} diff --git a/CMSIS/DoxyGen/Driver/src/validation.md b/CMSIS/Documentation/Doxygen/Driver/src/validation.md similarity index 99% rename from CMSIS/DoxyGen/Driver/src/validation.md rename to CMSIS/Documentation/Doxygen/Driver/src/validation.md index f2ce2b821..22786f197 100644 --- a/CMSIS/DoxyGen/Driver/src/validation.md +++ b/CMSIS/Documentation/Doxygen/Driver/src/validation.md @@ -7,6 +7,7 @@ The CMSIS-Driver Validation is maintained in a separate public [GitHub repositor This page gives an overview about driver validation. Refer to [CMSIS-Driver Validation Guide](https://arm-software.github.io/CMSIS-Driver_Validation/latest/index.html)) for full documentation. The CMSIS-Driver Validation Suite performs the following tests: + - Generic Validation of API function calls - Validation of Configuration Parameters - Validation of Communication with loopback tests @@ -14,6 +15,7 @@ The CMSIS-Driver Validation Suite performs the following tests: - Validation of Event functions The following CMSIS-Drivers can be tested with the current release: + - \ref can_interface_gr : with loop back test of communication. - \ref eth_interface_gr : MAC and PHY with loop back test of communication. - \ref i2c_interface_gr : only API and setup; does not test data transfer. @@ -68,6 +70,7 @@ SPI | Connect MISO to MOSI USART | Connect TX with RX The following picture shows the necessary external loop back connections for the Keil MCBSTM32F400 evaluation board: + - SPI: PB14 (SPI2_MISO) and PB15 (SPI2_MOSI) - USART: PB6 (USART1_TX) and PB7 (USART1_RX) - Ethernet: Pin 1 (TX+) and Pin 3 (RX+), Pin 2 (TX-) and Pin 6 (RX-) diff --git a/CMSIS/DoxyGen/General/General.dxy.in b/CMSIS/Documentation/Doxygen/General/General.dxy.in similarity index 99% rename from CMSIS/DoxyGen/General/General.dxy.in rename to CMSIS/Documentation/Doxygen/General/General.dxy.in index cb1724838..62ba04572 100644 --- a/CMSIS/DoxyGen/General/General.dxy.in +++ b/CMSIS/Documentation/Doxygen/General/General.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/General +OUTPUT_DIRECTORY = ../../html/General # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1168,7 +1168,7 @@ INLINE_SOURCES = NO # Fortran comments will always remain visible. # The default value is: YES. -STRIP_CODE_COMMENTS = YES +STRIP_CODE_COMMENTS = NO # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # entity all documented functions referencing it will be listed. @@ -1305,7 +1305,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/General/src/cmsis_sw_pack.md b/CMSIS/Documentation/Doxygen/General/src/cmsis_sw_pack.md similarity index 83% rename from CMSIS/DoxyGen/General/src/cmsis_sw_pack.md rename to CMSIS/Documentation/Doxygen/General/src/cmsis_sw_pack.md index 52cb549c6..c5c00e38a 100644 --- a/CMSIS/DoxyGen/General/src/cmsis_sw_pack.md +++ b/CMSIS/Documentation/Doxygen/General/src/cmsis_sw_pack.md @@ -6,11 +6,11 @@ The table below shows the high-level structure of the **ARM::CMSIS** pack. Detai File/Directory | Content :---------------------|:------------------- -📄 ARM.CMSIS.pdsc | Package description file in CMSIS-Pack format -📄 LICENSE | CMSIS License Agreement (Apache 2.0) 📂 CMSIS | CMSIS Base software components folder - ┣ 📂 Core | Processor files for the [CMSIS-Core (Cortex-M)](../../Core/html/index.html) - ┣ 📂 Core_A | Processor files for the [CMSIS-Core (Cortex-A)](../../Core_A/html/index.html) + ┣ 📂 Core | Processor files for the [CMSIS-Core (Cortex-M)](../Core/index.html) + ┣ 📂 Core_A | Processor files for the [CMSIS-Core (Cortex-A)](../Core_A/index.html) ┣ 📂 Documentation | A local copy of this documentation - ┣ 📂 Driver | API header files and template implementations for the [CMSIS-Driver](../../Driver/html/index.html) - â”— 📂 RTOS2 | API header files and OS tick implementations for the [CMSIS-RTOS2](../../RTOS2/html/index.html) + ┣ 📂 Driver | API header files and template implementations for the [CMSIS-Driver](../Driver/index.html) + â”— 📂 RTOS2 | API header files and OS tick implementations for the [CMSIS-RTOS2](../RTOS2/index.html) +📄 ARM.CMSIS.pdsc | Package description file in CMSIS-Pack format +📄 LICENSE | CMSIS License Agreement (Apache 2.0) diff --git a/CMSIS/Documentation/Doxygen/General/src/images/cmsis_components.png b/CMSIS/Documentation/Doxygen/General/src/images/cmsis_components.png new file mode 100644 index 000000000..daff6ccd0 Binary files /dev/null and b/CMSIS/Documentation/Doxygen/General/src/images/cmsis_components.png differ diff --git a/CMSIS/DoxyGen/General/src/images/overview.pptx b/CMSIS/Documentation/Doxygen/General/src/images/overview.pptx similarity index 74% rename from CMSIS/DoxyGen/General/src/images/overview.pptx rename to CMSIS/Documentation/Doxygen/General/src/images/overview.pptx index e20c143b0..71a574d9f 100644 Binary files a/CMSIS/DoxyGen/General/src/images/overview.pptx and b/CMSIS/Documentation/Doxygen/General/src/images/overview.pptx differ diff --git a/CMSIS/DoxyGen/General/src/mainpage.md b/CMSIS/Documentation/Doxygen/General/src/mainpage.md similarity index 60% rename from CMSIS/DoxyGen/General/src/mainpage.md rename to CMSIS/Documentation/Doxygen/General/src/mainpage.md index 3e605dd6c..86808f089 100644 --- a/CMSIS/DoxyGen/General/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/General/src/mainpage.md @@ -8,61 +8,65 @@ CMSIS has been created to help the industry in standardization. It enables consi ## CMSIS Components {#cmsis_components} -![CMSIS Structure](./images/Overview.png) +![CMSIS Structure](./images/cmsis_components.png)

    CMSIS Base Software Components

    + - Provide software abstractions for basic level functionalities of a device. - - Maintained in the same GitHub repository and delivered as a bundle in \ref cmsis_pack. + - Maintained in the same GitHub repository and delivered as one \ref cmsis_pack with the name `Arm::CMSIS`.
    -
    - CMSIS-CoreStandardized access to Arm Cortex processor coresGuide | GitHub +
    + CMSIS-CoreStandardized access to Arm Cortex processor coresGuide | GitHub | Pack
    -
    - CMSIS-DriverGeneric peripheral driver interfaces for middlewareGuide | GitHub +
    + CMSIS-DriverGeneric peripheral driver interfaces for middlewareGuide | GitHub | Pack
    -
    - CMSIS-RTOS2Common API for real-time operating systemsGuide | GitHub +
    + CMSIS-RTOS2Common API for real-time operating systemsGuide | GitHub | Pack

    CMSIS Extended Software Components

    -- Implement specific functionalities optimized for execution on Arm processors. -- Maintained in separate GitHub repositories and delivered in standalone CMSIS-Packs. + + - Implement specific functionalities optimized for execution on Arm processors. + - Maintained in separate GitHub repositories and delivered in standalone CMSIS-Packs.
    -
    - CMSIS-DSPCollection of optimized compute library for embedded systemsGuide | GitHub +
    + CMSIS-DSPOptimized compute functions for embedded systemsGuide | GitHub | Pack
    -
    - CMSIS-NNCollection of efficient and optimized neural network kernelsGuide | GitHub +
    + CMSIS-NNEfficient and performant neural network kernelsGuide | GitHub | Pack
    -
    - CMSIS-ViewEvent Recorder and Component Viewer technologyGuide | GitHub +
    + CMSIS-ViewEvent Recorder and Component Viewer technologyGuide | GitHub | Pack
    -
    - CMSIS-CompilerRetarget I/O functions of the standard C run-time libraryGuide | GitHub +
    + CMSIS-CompilerRetarget I/O functions of the standard C run-time libraryGuide | GitHub | Pack

    CMSIS Tools

    + - Provide useful utilities for software development workflows with CMSIS-based components. - Maintained in separate GitHub repositories.
    -
    +
    CMSIS-ToolboxA set of command-line tools to work with software packsGuide | GitHub
    -
    +
    CMSIS-StreamPeripheral description of a device for debug viewGuide | GitHub
    -
    +
    CMSIS-DAPFirmware for debug units interfacing to CoreSight Debug Access PortGuide | GitHub
    -
    - CMSIS-ZoneDefines methods to describe system resources and to partition themGuide | GitHub +
    + CMSIS-ZoneDefines methods to describe system resources and to partition themGuide | GitHub

    CMSIS Specifications

    + - Define methodologies and workflows for embedded software development.
    @@ -77,37 +81,29 @@ CMSIS has been created to help the industry in standardization. It enables consi The benefits of the CMSIS are: - - CMSIS reduces the learning curve, development costs, and time-to-market. Developers can write software quicker through a - variety of easy-to-use, standardized software interfaces. - - Consistent software interfaces improve the software portability and re-usability. Generic software libraries and - interfaces provide consistent software framework. - - It provides interfaces for debug connectivity, debug peripheral views, software delivery, and device support to reduce - time-to-market for new microcontroller deployment. + - CMSIS reduces the learning curve, development costs, and time-to-market. Developers can write software quicker through a variety of easy-to-use, standardized software interfaces. + - Consistent software interfaces improve the software portability and re-usability. Generic software libraries and interfaces provide consistent software framework. + - It provides interfaces for debug connectivity, debug peripheral views, software delivery, and device support to reduce time-to-market for new microcontroller deployment. - It allows to use the compiler of your choice, as it is compiler independent and thus supported by mainstream compilers. - It enhances program debugging with peripheral information for debuggers and ITM channels for printf-style output. - - CMSIS is delivered in CMSIS-Pack format which enables fast software delivery, simplifies updates, and enables consistent - integration into development tools. - - CMSIS-Zone will simplify system resource and partitioning as it manages the configuration of multiple processors, memory - areas, and peripherals. - - Continuous integration is common practice for most software developers nowadays. CMSIS-Build supports these workflows - and makes continuous testing and validation easier. + - CMSIS is delivered in CMSIS-Pack format which enables fast software delivery, simplifies updates, and enables consistent integration into development tools. + - CMSIS-Zone will simplify system resource and partitioning as it manages the configuration of multiple processors, memory areas, and peripherals. + - IDE and Continuous Integration (CI) are important workflows for embedded software developers. The CMSIS-Toolbox provides command-line build tools with CMake backend and integration into IDEs such as VS Code. ## Development {#development} -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. It is intended to enable the combination of software -components from multiple vendors. +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. It is intended to enable the combination of software components from multiple vendors. CMSIS is open-source and collaboratively developed. The repository for the base components is [github.com/Arm-software/CMSIS_6](https://github.com/ARM-software/CMSIS_6). -## CodingRules {#coding_rules} +## Coding Rules {#coding_rules} The CMSIS uses the following essential coding rules and conventions: - Compliant with ANSI C (C99) and C++ (C++03). - - Uses ANSI C standard data types defined in \b . + - Uses ANSI C standard data types defined in ****. - Variables and parameters have a complete data type. - - Expressions for \c \#define constants are enclosed in parenthesis. + - Expressions for `#define` constants are enclosed in parenthesis. - Conforms to MISRA 2012 (but does not claim MISRA compliance). MISRA rule violations are documented. In addition, the CMSIS recommends the following conventions for identifiers: @@ -117,16 +113,17 @@ In addition, the CMSIS recommends the following conventions for identifiers: - **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: - \li Comments that use the C or C++ style. - \li Doxygen compliant function comments that provide: + + - Comments that use the C or C++ style. + - [Doxygen](https://www.doxygen.nl/) compliant **function comments** that provide: - brief function overview. - detailed description of the function. - detailed parameter explanation. - detailed information about return values. -Doxygen comment example: +Doxygen comment example: -``` c +```c /** * @brief Enable Interrupt in NVIC Interrupt Controller * @param IRQn interrupt number that specifies the interrupt @@ -138,24 +135,14 @@ Doxygen comment example: ## Validation {#validation} -The various components of CMSIS are validated using mainstream compilers. To get a diverse coverage, -Arm Compiler v6 (based on LLVM front-end) and GCC are used in the various tests. For each component, the -section **Validation** describes the scope of the various verification steps. +The various components of CMSIS are validated using mainstream compilers. To get a diverse coverage, Arm Compiler v6 (based on LLVM front-end) and GCC are used in the various tests. For each component, the section **Validation** describes the scope of the various verification steps. -CMSIS components are compatible with a range of C and C++ language standards. The CMSIS components comply with the -[Application Binary Interface (ABI) for the Arm Architecture](https://github.com/ARM-software/abi-aa). This ensures -C API interfaces that support inter-operation between various toolchains. +CMSIS components are compatible with a range of C and C++ language standards. The CMSIS components comply with the [Application Binary Interface (ABI) for the Arm Architecture](https://github.com/ARM-software/abi-aa). This ensures C API interfaces that support inter-operation between various toolchains. -As CMSIS defines API interfaces and functions that scale to a wide range of processors and devices, the scope of -the run-time test coverage is limited. However, several components are validated using dedicated test suites -(CMSIS-Driver, - and CMSIS-RTOS v2). +As CMSIS defines API interfaces and functions that scale to a wide range of processors and devices, the scope of the run-time test coverage is limited. However, several components are validated using dedicated test suites ([CMSIS-Driver](../Driver/driverValidation.html), and [CMSIS-RTOS v2](../RTOS2/rtosValidation.html)). -The CMSIS source code is checked for MISRA C:2012 conformance. MISRA deviations are documented with -reasonable effort, however Arm does not claim MISRA compliance as there is today for example no guideline enforcement -plan. The CMSIS source code is not checked for MISRA C++:2008 conformance as there is a risk that it is incompatible -with C language standards, specifically warnings that may be generated by the various C compilers. +The CMSIS source code is checked for MISRA C:2012 conformance. MISRA deviations are documented with reasonable effort, however Arm does not claim MISRA compliance as there is today for example no guideline enforcement plan. The CMSIS source code is not checked for MISRA C++:2008 conformance as there is a risk that it is incompatible with C language standards, specifically warnings that may be generated by the various C compilers. ## License {#License} -CMSIS is provided free of charge by Arm under the Apache 2.0 License. +CMSIS is provided free of charge by Arm under the [Apache 2.0 License](https://raw.githubusercontent.com/ARM-software/CMSIS_6/main/LICENSE). diff --git a/CMSIS/DoxyGen/General/src/revision_history.md b/CMSIS/Documentation/Doxygen/General/src/revision_history.md similarity index 96% rename from CMSIS/DoxyGen/General/src/revision_history.md rename to CMSIS/Documentation/Doxygen/General/src/revision_history.md index 253a218d1..9679f6f22 100644 --- a/CMSIS/DoxyGen/General/src/revision_history.md +++ b/CMSIS/Documentation/Doxygen/General/src/revision_history.md @@ -1,10 +1,13 @@ ## Revision History {#revision_history} -The table on this page provides high-level overview of the CMSIS Base Software release history. In addition, each component of the CMSIS Base software has its own release history: -- CMSIS-Core (Cortex-M) Revision History -- CMSIS-Core (Cortex-A) Revision History -- CMSIS-Driver Revision History -- CMSIS-RTOS2 Revision History +The table on this page provides high-level overview of the CMSIS Base Software release history. + +In addition, each component of the CMSIS Base software has its own release history listed on following pages: + + - [**CMSIS-Core (Cortex-M) Revision History**](../Core/core_revisionHistory.html) + - [**CMSIS-Core (Cortex-A) Revision History**](../Core_A/rev_histCoreA.html) + - [**CMSIS-Driver Revision History**](../Driver/driver_revisionHistory.html) + - [**CMSIS-RTOS2 Revision History**](../RTOS2/rtos_revisionHistory.html) Release history of other CMSIS components and tools can be found in their documentation referenced in \ref cmsis_components. @@ -17,6 +20,7 @@ Release history of other CMSIS components and tools can be found in their docume 6.0.0-dev In development. + - CMSIS-Core(A): - CMSIS-Core(M): - CMSIS-Driver: diff --git a/CMSIS/DoxyGen/NN/NN.dxy.in b/CMSIS/Documentation/Doxygen/NN/NN.dxy.in similarity index 99% rename from CMSIS/DoxyGen/NN/NN.dxy.in rename to CMSIS/Documentation/Doxygen/NN/NN.dxy.in index 9c57da66a..c36a18e5f 100644 --- a/CMSIS/DoxyGen/NN/NN.dxy.in +++ b/CMSIS/Documentation/Doxygen/NN/NN.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/NN +OUTPUT_DIRECTORY = ../../html/NN # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/NN/src/images/.gitignore b/CMSIS/Documentation/Doxygen/NN/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/NN/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/NN/src/images/.gitignore diff --git a/CMSIS/DoxyGen/NN/src/images/cmsis-nn-overview.png b/CMSIS/Documentation/Doxygen/NN/src/images/cmsis-nn-overview.png similarity index 100% rename from CMSIS/DoxyGen/NN/src/images/cmsis-nn-overview.png rename to CMSIS/Documentation/Doxygen/NN/src/images/cmsis-nn-overview.png diff --git a/CMSIS/Documentation/Doxygen/NN/src/mainpage.md b/CMSIS/Documentation/Doxygen/NN/src/mainpage.md new file mode 100644 index 000000000..546672da2 --- /dev/null +++ b/CMSIS/Documentation/Doxygen/NN/src/mainpage.md @@ -0,0 +1,26 @@ +# CMSIS-NN {#mainpage} + +**CMSIS-NN** is an open-source software library that provides a collection of efficient neural network (NN) kernels developed to maximize the performance and minimize the memory footprint of neural networks running on Arm Cortex-M processors. + +![Overview of CMSIS-NN](./images/cmsis-nn-overview.png) + +CMSIS-NN functions are implemented in several variants and the optimal solution is automatically taken at compile time depending on the features available on the target processor architecture. Implementations for the following features are available: + + - Single Instruction Multiple Data (SIMD) capability (e.g, Cortex-M0) + - DSP extension (e.g Cortex-M4) + - Arm M-Profile Vector Extension(MVE) (e.g Cortex-M55). + +## Access to CMSIS-NN + +CMSIS-NN is actively maintained in a GitHub repository and is also released as a standalone package in CMSIS Pack format. + + - [**CMSIS-NN GitHub Repo**](https://github.com/ARM-software/CMSIS-NN) provides the full source code as well as releases in CMSIS-Pack format. + - [**CMSIS-NN Documentation**](https://arm-software.github.io/CMSIS-NN/latest/) explains how to use the library and describes the implemented functions in details. + +## Key Features and Benefits + + - CMSIS-NN provides a broad set of neural network kernels for Cortex-M devices. + - Optimized implementations for different Cortex-M capabilities (SIMD, FPU, MVE). + - Arm Compiler 6 and on Arm GNU Toolchain support. + - Follows int8 and int16 quantization specification of TensorFlow Lite for Microcontrollers. + - Widely adopted in the industry. diff --git a/CMSIS/DoxyGen/RTOS2/RTOS2.dxy.in b/CMSIS/Documentation/Doxygen/RTOS2/RTOS2.dxy.in similarity index 99% rename from CMSIS/DoxyGen/RTOS2/RTOS2.dxy.in rename to CMSIS/Documentation/Doxygen/RTOS2/RTOS2.dxy.in index 9a58a264f..1047ec2ee 100644 --- a/CMSIS/DoxyGen/RTOS2/RTOS2.dxy.in +++ b/CMSIS/Documentation/Doxygen/RTOS2/RTOS2.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/RTOS2 +OUTPUT_DIRECTORY = ../../html/RTOS2 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -941,8 +941,8 @@ INPUT = ./src/mainpage.md \ ./src/cmsis_os2_Message.txt \ ./src/cmsis_os2_Status.txt \ ./src/cmsis_os2_Tick.txt \ - ../../RTOS2/Include/cmsis_os2.h \ - ../../RTOS2/Include/os_tick.h + ../../../RTOS2/Include/cmsis_os2.h \ + ../../../RTOS2/Include/os_tick.h # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1076,8 +1076,8 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = ../../RTOS2/Include \ - ../../RTOS2 +EXAMPLE_PATH = ../../../RTOS2/Include \ + ../../../RTOS2 # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -1330,7 +1330,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -2457,7 +2457,7 @@ TAGFILES = # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. -GENERATE_TAGFILE = ../../Documentation/RTOS2/cmsis_rtos2.tag +GENERATE_TAGFILE = ../../html/RTOS2/cmsis_rtos2.tag # If the ALLEXTERNALS tag is set to YES, all external class will be listed in # the class index. If set to NO, only the inherited external classes will be diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Event.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Event.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Event.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Event.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Groups.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Groups.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Groups.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Groups.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Kernel.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Kernel.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Kernel.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Kernel.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_MemPool.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_MemPool.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_MemPool.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_MemPool.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Message.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Message.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Message.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Message.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Mutex.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Mutex.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Mutex.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Mutex.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Sema.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Sema.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Sema.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Sema.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Status.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Status.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Status.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Status.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Thread.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Thread.txt similarity index 99% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Thread.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Thread.txt index 16bec5b31..4f62efeb0 100644 --- a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Thread.txt +++ b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Thread.txt @@ -1024,7 +1024,7 @@ void osZoneSetup_Callback (uint32_t zone) { \endcode \c ZONES_NUM is the total amount of zones allocated by the application. -For \c ARM_MPU_... functions refer to MPU Functions in CMSIS-Core documentation. +For \c ARM_MPU_... functions refer to MPU Functions in CMSIS-Core documentation. */ /// @} @@ -1087,7 +1087,7 @@ Default: \token{0} as the default is no memory provided with \ref stack_mem. TrustZone Thread Context Management Identifier to allocate context memory for threads. The RTOS kernel that runs in non-secure state calls the interface functions defined by the header file TZ_context.h. Can safely be set to zero for threads not using secure calls at all. -See TrustZone RTOS Context Management. +See TrustZone RTOS Context Management. Default: \token{0} not thread context specified. \else diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_ThreadFlags.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_ThreadFlags.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_ThreadFlags.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_ThreadFlags.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Tick.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Tick.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Tick.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Tick.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Timer.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Timer.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Timer.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Timer.txt diff --git a/CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Wait.txt b/CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Wait.txt similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/cmsis_os2_Wait.txt rename to CMSIS/Documentation/Doxygen/RTOS2/src/cmsis_os2_Wait.txt diff --git a/CMSIS/Documentation/Doxygen/RTOS2/src/history.md b/CMSIS/Documentation/Doxygen/RTOS2/src/history.md new file mode 100644 index 000000000..c969b1700 --- /dev/null +++ b/CMSIS/Documentation/Doxygen/RTOS2/src/history.md @@ -0,0 +1,129 @@ +# Revision History {#rtos_revisionHistory} + +CMSIS-RTOS2 API component is maintained with its own versioning that gets offically updated upon releases of the [CMSIS Software Pack](../General/cmsis_pack.html) releases. + +The table below provides information about the changes delivered with specific versions of CMSIS-RTOS2 API. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VersionDescription
    V2.3.0 + Added: + - Provisional support for processor affinity in SMP systems: + - \ref osThreadAttr_t :: affinity_mask + - \ref osThreadSetAffinityMask, \ref osThreadGetAffinityMask +
    V2.2.0 + Added: + - support for \ref CMSIS_RTOS_ProcessIsolation : + - Kernel Management: \ref osKernelProtect, \ref osKernelDestroyClass + - Thread Management: \ref osThreadGetClass, \ref osThreadGetZone, \ref osThreadSuspendClass, \ref osThreadResumeClass, \ref osThreadTerminateZone, \ref osThreadFeedWatchdog, \ref osThreadProtectPrivileged + - Thread attributes: \ref osThreadZone, \ref osThreadUnprivileged, \ref osThreadPrivileged + - Object attributes: \ref osSafetyClass + - Handler functions: \ref osWatchdogAlarm_Handler + - Zone Management: \ref osZoneSetup_Callback + - Exception Faults: \ref osFaultResume + - Additional functions allowed to be called from Interrupt Service Routines: + - \ref osThreadGetName, \ref osEventFlagsGetName, \ref osTimerGetName, \ref osMutexGetName, \ref osSemaphoreGetName, \ref osMemoryPoolGetName, \ref osMessageQueueGetName +
    V2.1.3 + Added: + - Additional functions allowed to be called from Interrupt Service Routines: + - \ref osThreadGetId +
    V2.1.2 + Added: + - Additional functions allowed to be called from Interrupt Service Routines: + - \ref osKernelGetInfo, \ref osKernelGetState +
    V2.1.1 + Additional functions allowed to be called from Interrupt Service Routines: + - \ref osKernelGetTickCount, \ref osKernelGetTickFreq + + Changed Kernel Tick type to uint32_t: + - updated: \ref osKernelGetTickCount, \ref osDelayUntil +
    V2.1.0 + Support for critical and uncritical sections (nesting safe): + - updated: \ref osKernelLock, \ref osKernelUnlock + - added: \ref osKernelRestoreLock + + Updated \ref CMSIS_RTOS_ThreadFlagsMgmt "Thread Flags" and \ref CMSIS_RTOS_EventFlags "Event Flags": + - changed flags parameter and return type from int32_t to uint32_t +
    V2.0.0 + New API Version 2.0 available. + - See \ref CMSIS_RTOS for a detailed function reference. +
    V1.02 - only documentation changes + Added: + - Overview of the \ref rtosValidation "CMSIS-RTOS Validation" Software Pack. + + Clarified: + - Behavior of \ref CMSIS_RTOS_TimeOutValue. +
    V1.02 + Added: + - New control functions for short timeouts in microsecond resolution **osKernelSysTick**, **osKernelSysTickFrequency**, **osKernelSysTickMicroSec**. + + Removed: + - osSignalGet. +
    V1.01 + Added: + - capabilities for C++, kernel initialization and object deletion. + - Prepared for C++ class interface. In this context to \em const attribute has been moved from osXxxxDef_t typedefs to the osXxxxDef macros. + - \ref osTimerDelete, \ref osMutexDelete, \ref osSemaphoreDelete . + - \ref osKernelInitialize that prepares the kernel for object creation. +
    + V1.00First official Release.
    + Added: + - \ref osKernelStart; starting 'main' as a thread is now an optional feature. + - Semaphores have now the standard behavior. + - osTimerCreate does no longer start the timer. + - \ref osTimerStart (replaces osTimerRestart). + + Changed: + - osThreadPass is renamed to \ref osThreadYield. +
    V0.02Preview Release.
    diff --git a/CMSIS/DoxyGen/RTOS2/src/images/API_Structure.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/API_Structure.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/API_Structure.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/API_Structure.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/API_Structure.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/API_Structure.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/API_Structure.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/API_Structure.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/CMSIS_RTOS_Files.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/CMSIS_RTOS_Files.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/CMSIS_RTOS_Files.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/CMSIS_RTOS_Files.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/KernelStackUsage.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/KernelStackUsage.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/KernelStackUsage.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/KernelStackUsage.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/MailQueue.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/MailQueue.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/MailQueue.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/MailQueue.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/MemAllocGlob.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/MemAllocGlob.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/MemAllocGlob.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/MemAllocGlob.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/MemAllocSpec.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/MemAllocSpec.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/MemAllocSpec.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/MemAllocSpec.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/MemAllocStat.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/MemAllocStat.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/MemAllocStat.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/MemAllocStat.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/MessageQueue.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/MessageQueue.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/MessageQueue.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/MessageQueue.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/MessageQueue.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/MessageQueue.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/MessageQueue.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/MessageQueue.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/Mutex.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/Mutex.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/Mutex.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/Mutex.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/Mutex.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/Mutex.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/Mutex.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/Mutex.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/PC-Lint.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/PC-Lint.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/PC-Lint.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/PC-Lint.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/RTX5_Migrate1.PNG b/CMSIS/Documentation/Doxygen/RTOS2/src/images/RTX5_Migrate1.PNG similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/RTX5_Migrate1.PNG rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/RTX5_Migrate1.PNG diff --git a/CMSIS/DoxyGen/RTOS2/src/images/Semaphore.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/Semaphore.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/Semaphore.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/Semaphore.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/Semaphores.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/Semaphores.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/Semaphores.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/Semaphores.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/TheoryOfOperation.pptx b/CMSIS/Documentation/Doxygen/RTOS2/src/images/TheoryOfOperation.pptx similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/TheoryOfOperation.pptx rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/TheoryOfOperation.pptx diff --git a/CMSIS/DoxyGen/RTOS2/src/images/ThreadStatus.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/ThreadStatus.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/ThreadStatus.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/ThreadStatus.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/ThreadStatus.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/ThreadStatus.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/ThreadStatus.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/ThreadStatus.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/Timer.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/Timer.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/Timer.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/Timer.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/TimerValues.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/TimerValues.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/TimerValues.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/TimerValues.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/TimerValues.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/TimerValues.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/TimerValues.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/TimerValues.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/add_item.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/add_item.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/add_item.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/add_item.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/cmsis_rtos2_overview.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/cmsis_rtos2_overview.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/cmsis_rtos2_overview.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/cmsis_rtos2_overview.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/cmsis_rtos_file_structure.vsd b/CMSIS/Documentation/Doxygen/RTOS2/src/images/cmsis_rtos_file_structure.vsd similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/cmsis_rtos_file_structure.vsd rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/cmsis_rtos_file_structure.vsd diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_eventFlags.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_eventFlags.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_eventFlags.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_eventFlags.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrec.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrec.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrec.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrec.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecGeneration.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecGeneration.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecGeneration.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecGeneration.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecGlobEvtFiltSetup.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecGlobEvtFiltSetup.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecGlobEvtFiltSetup.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecGlobEvtFiltSetup.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecGlobIni.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecGlobIni.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecGlobIni.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecGlobIni.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecRTOSEvtFilterSetup.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecRTOSEvtFilterSetup.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_evtrecRTOSEvtFilterSetup.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_evtrecRTOSEvtFilterSetup.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_memPool.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_memPool.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_memPool.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_memPool.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_msgQueue.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_msgQueue.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_msgQueue.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_msgQueue.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_mutex.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_mutex.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_mutex.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_mutex.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_semaphore.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_semaphore.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_semaphore.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_semaphore.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_system.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_system.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_system.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_system.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_threads.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_threads.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_threads.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_threads.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/config_wizard_timer.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_timer.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/config_wizard_timer.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/config_wizard_timer.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/event_recorder_rte.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/event_recorder_rte.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/event_recorder_rte.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/event_recorder_rte.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/manage_rte_cortex-a.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/manage_rte_cortex-a.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/manage_rte_cortex-a.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/manage_rte_cortex-a.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/manage_rte_output.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/manage_rte_output.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/manage_rte_output.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/manage_rte_output.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/mempool.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/mempool.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/mempool.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/mempool.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/mutex_states.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/mutex_states.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/mutex_states.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/mutex_states.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/own_lib_projwin.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/own_lib_projwin.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/own_lib_projwin.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/own_lib_projwin.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/project_window.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/project_window.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/project_window.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/project_window.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/rtos_components.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/rtos_components.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/rtos_components.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/rtos_components.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/rtos_mpu.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/rtos_mpu.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/rtos_mpu.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/rtos_mpu.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/scheduling.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/scheduling.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/scheduling.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/scheduling.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/semaphore_states.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/semaphore_states.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/semaphore_states.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/semaphore_states.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/simple_signal.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/simple_signal.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/simple_signal.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/simple_signal.png diff --git a/CMSIS/DoxyGen/RTOS2/src/images/thread_watchdogs.png b/CMSIS/Documentation/Doxygen/RTOS2/src/images/thread_watchdogs.png similarity index 100% rename from CMSIS/DoxyGen/RTOS2/src/images/thread_watchdogs.png rename to CMSIS/Documentation/Doxygen/RTOS2/src/images/thread_watchdogs.png diff --git a/CMSIS/DoxyGen/RTOS2/src/mainpage.md b/CMSIS/Documentation/Doxygen/RTOS2/src/mainpage.md similarity index 90% rename from CMSIS/DoxyGen/RTOS2/src/mainpage.md rename to CMSIS/Documentation/Doxygen/RTOS2/src/mainpage.md index 61216e4aa..4d8a5936c 100644 --- a/CMSIS/DoxyGen/RTOS2/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/RTOS2/src/mainpage.md @@ -19,34 +19,42 @@ CMSIS-RTOS2 provides great benefits to the embedded developers and software vend - \ref rtosValidation "RTOS Validation Suite" provides a set of tests to verify compatibility to CMSIS-RTOS2 API definitions. - CMSIS-RTOS2 is well adopted by the industry, has many years of continuous improvements and commitment for future developments. -\note The CMSIS-RTOS2 defines a minimum feature set. It's architecture allows to use advanced vendor-specific features directly as well. +> **Note** +> - The CMSIS-RTOS2 defines a minimum feature set. It's architecture allows to use advanced vendor-specific features directly as well. ## Supported RTOS kernels {#rtos2_kernels} Several popular RTOS kernels include support for CMSIS-RTOS2 API: **CMSIS-RTX** (or Keil RTX5): provides most complete support for CMSIS-RTOS2 API and uses it as native interface. For more information see: + - [CMSIS-RTX GitHub repository](https://github.com/ARM-software/CMSIS-RTX) - [CMSIS-RTX Documentation](https://arm-software.github.io/CMSIS-RTX/) **FreeRTOS** : this popular RTOS kernel is enabled with CMSIS-RTOS2 API in the *CMSIS-FreeRTOS* variant. To learn more see: + - [CMSIS-FreeRTOS GitHub repository](https://github.com/ARM-software/CMSIS-FreeRTOS) - [CMSIS-FreeRTOS Documentation](https://arm-software.github.io/CMSIS-FreeRTOS/) **Zephyr RTOS**: is developed under governance of Linux Foundation and includes CMSIS-RTOS2 support. See more at: + - [Zephyr GitHub repository](https://github.com/zephyrproject-rtos/zephyr), see folder *subsys/portability/cmsis_rtos_v2/* - [Zephyr documentation about CMSIS-RTOS2 support](https://docs.zephyrproject.org/latest/services/portability/cmsis_rtos_v2.html) +**Micrium OS** is developed and maintained by Silicon Labs. See more at: + + - [Micrium OS overview and comparison](https://www.silabs.com/developers/rtos) + ## Access to CMSIS-RTOS2 {#rtos2_access} -CMSIS-RTOS2 and OS Tick intefaces are actively maintained in [**CMSIS 6 GitHub repository**](https://github.com/ARM-software/CMSIS_6) and provided as part of the [CMSIS Software Pack](../../General/html/cmsis_pack.html). +CMSIS-RTOS2 and OS Tick intefaces are actively maintained in [**CMSIS 6 GitHub repository**](https://github.com/ARM-software/CMSIS_6) and provided as part of the [CMSIS Software Pack](../General/cmsis_pack.html). The following files relevant to CMSIS-RTOS2 are present in the **ARM::CMSIS** Pack directories: File/Directory | Content :-------------------------------------|:---------------------------------------------------- 📂 CMSIS | CMSIS Base software components folder - ┣ 📂 Documentation/RTOS2 | A local copy of this CMSIS-RTOS2 documentation + ┣ 📂 Documentation/html/RTOS2 | A local copy of this CMSIS-RTOS2 documentation â”— 📂 RTOS2 | CMSIS-RTOS2 API header files and OS tick implementations    ┣ 📂 Include | API header files     ┣ 📄 cmsis_os2.h | \ref cmsis_os2_h @@ -55,4 +63,3 @@ File/Directory | Content     ┣ 📄 os_systick.c | OS tick implementation using Cortex-M SysTick timer     ┣ 📄 os_tick_gtim.c | OS tick implementation using Cortex-A Generic Timer     â”— 📄 os_tick_ptim.c | OS tick implementation using Cortex-A Private Timer - diff --git a/CMSIS/DoxyGen/RTOS2/src/processIsolation.md b/CMSIS/Documentation/Doxygen/RTOS2/src/processIsolation.md similarity index 68% rename from CMSIS/DoxyGen/RTOS2/src/processIsolation.md rename to CMSIS/Documentation/Doxygen/RTOS2/src/processIsolation.md index 3ab5351df..086407c4d 100644 --- a/CMSIS/DoxyGen/RTOS2/src/processIsolation.md +++ b/CMSIS/Documentation/Doxygen/RTOS2/src/processIsolation.md @@ -4,16 +4,16 @@ CMSIS-RTOS2 API supports a concept of **process isolation** that allows develope Process Isolation in CMSIS-RTOS2 is enabled by following features: -- \subpage rtos_process_isolation_mpu for memory access protection in the system using Memory Protection Unit (MPU).
    + - \subpage rtos_process_isolation_mpu for memory access protection in the system using Memory Protection Unit (MPU).
    RTOS threads are executed with permission to access only memory regions and peripherals required for their operation. Hence thread code cannot accidentally modify critical RTOS kernel data or memory dedicated to other tasks. -. -- \subpage rtos_process_isolation_safety_class for access protection to RTOS objects via RTOS APIs.
    + . + - \subpage rtos_process_isolation_safety_class for access protection to RTOS objects via RTOS APIs.
    The RTOS objects with a higher safety class assigned to them cannot be modified via RTOS API functions from threads that have lower safety class assigned. -. -- \subpage rtos_process_isolation_thread_wdt to verify execution times of threads.
    + . + - \subpage rtos_process_isolation_thread_wdt to verify execution times of threads.
    Each thread can maintain own thread watchdog and in case of timing violations, corresponding thread watchdog alarm will be triggered. -. -- \subpage rtos_process_isolation_faults in case of a detected failure (for example thread watchdog alarm or MPU Fault).
    + . + - \subpage rtos_process_isolation_faults in case of a detected failure (for example thread watchdog alarm or MPU Fault).
    The RTOS provides functions to block execution of malfunctioning components and with that dedicate system resources for operation of the safety critical threads. \if FuSaRTS @@ -23,7 +23,7 @@ Section \ref fusa_process_isolation lists safety requirements for Process Isolat \page rtos_process_isolation_mpu MPU Protected Zones -Memory Protection Unit (MPU) is available on many Cortex-M devices and allows to execute code with restricted access to memory regions and peripherals. Detailed information about the MPU can be found in [Cortex-M Reference Manuals](../../Core/html/index.html#ref_man_sec). +Memory Protection Unit (MPU) is available on many Cortex-M devices and allows to execute code with restricted access to memory regions and peripherals. Detailed information about the MPU can be found in [Cortex-M Reference Manuals](../Core/index.html#ref_man_sec). CMSIS-RTOS2 provides a concept of **MPU Protected Zones** as a simple and flexible mechanism for using MPUs with RTOS threads. MPU Protected Zones are defined by a user as a set of memory regions and peripherals with specified access rights, and each RTOS threads gets assigned to a specific MPU Protected Zone that it is allowed to use. @@ -32,29 +32,30 @@ The figure below illustrates the concept for MPU Protected Zones for isolating t ![System partitioning with MPU Protected Zones](./images/rtos_mpu.png) Sections below explain in details how to define and use MPU Protected Zones: -- \ref rtos_process_isolation_mpu_def -- \ref rtos_process_isolation_mpu_load -- \ref rtos_process_isolation_mpu_objects -- \ref rtos_process_isolation_mpu_fault + + - \ref rtos_process_isolation_mpu_def + - \ref rtos_process_isolation_mpu_load + - \ref rtos_process_isolation_mpu_objects + - \ref rtos_process_isolation_mpu_fault **Function references** Following functions implement and use MPU Protected Zone functionality: -- \ref osThreadNew : \copybrief osThreadNew -- \ref osThreadZone : \copybrief osThreadZone -- \ref osThreadGetZone : \copybrief osThreadGetZone -- \ref osThreadTerminateZone : \copybrief osThreadTerminateZone -- \ref osZoneSetup_Callback : \copybrief osZoneSetup_Callback + - \ref osThreadNew : \copybrief osThreadNew + - \ref osThreadZone : \copybrief osThreadZone + - \ref osThreadGetZone : \copybrief osThreadGetZone + - \ref osThreadTerminateZone : \copybrief osThreadTerminateZone + - \ref osZoneSetup_Callback : \copybrief osZoneSetup_Callback ## Define MPU Protected Zones {#rtos_process_isolation_mpu_def} In the architectural design phase an application is logically split into functionalities with the same integrity level (same safety requirements). They can safely operate within the same MPU Protected Zone and hence access same memory areas and peripherals. -MPU protected zones are defined in an MPU table where each row describes an individual MPU zone and each cell in the row specifies an MPU region within that zone. For details see section [MPU Functions](../../Core/html/group__mpu__functions.html) in CMSIS-Core(M) documentation. +MPU protected zones are defined in an MPU table where each row describes an individual MPU zone and each cell in the row specifies an MPU region within that zone. For details see section [MPU Functions](../Core/group__mpu__functions.html) in CMSIS-Core(M) documentation. -\note -Interrupt handlers bypass the MPU protection. For this reason, it is required that potential impact of all interrupt handlers is strictly analyzed to exclude unintended memory accesses. +> **Note** +> - Interrupt handlers bypass the MPU protection. For this reason, it is required that potential impact of all interrupt handlers is strictly analyzed to exclude unintended memory accesses. **Zone Identifier** (Zone ID) is used to refer to a specific MPU protected zone. Zone ID value equals to the row index (starting from 0) in the MPU table that describes corresponding MPU Protected Zone. @@ -71,13 +72,14 @@ const osThreadAttr_t thread_A_attr = { osThreadNew(ThreadA, NULL, &thread_A_attr); ``` -[CMSIS-Zone](https://arm-software.github.io/CMSIS_5/Zone/html/index.html) provides a utility that allows graphic configuration of MPU protected zones and generates MPU table in the CMSIS format. +[CMSIS-Zone](../Zone/index.html) provides a utility that allows graphic configuration of MPU protected zones and generates MPU table in the CMSIS format. ## Load MPU Protected Zone {#rtos_process_isolation_mpu_load} When switching threads the RTOS kernel compares Zone IDs of the currently running thread and the next thread to be executed. If the Zone Ids are different then a callback function \ref osZoneSetup_Callback is called. This callback function shall be implemented in the user application code to actually switch to the new MPU Protected Zone. In the function the user should load the MPU Protected Zone according to the Zone Id provided in the argument. **Example:** + ```c /* Update MPU settings for newly activating Zone */ void osZoneSetup_Callback (uint32_t zone) { @@ -91,6 +93,7 @@ void osZoneSetup_Callback (uint32_t zone) { ``` ## RTOS Objects and MPU Protection {#rtos_process_isolation_mpu_objects} + To access RTOS objects from the application RTOS APIs rely on a numeric `xxx_id` parameter associated with the object as explained in \ref rtos_objects. For example as `evt_flags` in this code: ```c @@ -105,7 +108,7 @@ To enable access control for RTOS objects the \ref rtos_process_isolation_safety ## Handle Memory Access Faults {#rtos_process_isolation_mpu_fault} -A memory access fault is triggered when a thread tries to access memory or peripherals outside of the MPU Protected Zone loaded while the thread is running. In such case Memory Management Interrupt [MemoryManagement_IRQn](../../Core/html/group__NVIC__gr.html) is triggered by the processor and its handling function is executed according to the exception vector table specified in the device startup file (by default \token{MemManage_Handler(void)} ). +A memory access fault is triggered when a thread tries to access memory or peripherals outside of the MPU Protected Zone loaded while the thread is running. In such case Memory Management Interrupt [MemoryManagement_IRQn](../Core/group__NVIC__gr.html) is triggered by the processor and its handling function is executed according to the exception vector table specified in the device startup file (by default \token{MemManage_Handler(void)} ). The \e MemManage_Handler() interrupt handler is application specific and needs to be implemented by the user. In the handler it is possible to identify the thread that caused the memory access fault, the corresponding zone id and the safety class. This information can be used to define actions for entering a safe state. \ref rtos_process_isolation_faults provides more details on the available system recovery possibilities. @@ -119,17 +122,17 @@ For example, it is not possible to change the priority or suspend a thread that **Function references** -- Following functions and macros are used explicitly for managing safety classes: - - \ref osSafetyClass : \copybrief osSafetyClass - - \ref osThreadGetClass : \copybrief osThreadGetClass - - \ref osSafetyWithSameClass : \copybrief osSafetyWithSameClass - - \ref osSafetyWithLowerClass : \copybrief osSafetyWithLowerClass - - \ref osKernelProtect : \copybrief osKernelProtect - - \ref osThreadSuspendClass : \copybrief osThreadSuspendClass - - \ref osThreadResumeClass : \copybrief osThreadResumeClass - - \ref osKernelDestroyClass : \copybrief osKernelDestroyClass -- CMSIS-RTOS2 API functions that support safety class assignment when creating RTOS objects are listed in \ref rtos_process_isolation_safety_class_assign. -- CMSIS-RTOS2 API functions that verify safety class assignment before execution are listed in \ref rtos_process_isolation_safety_class_error lists. + - Following functions and macros are used explicitly for managing safety classes: + - \ref osSafetyClass : \copybrief osSafetyClass + - \ref osThreadGetClass : \copybrief osThreadGetClass + - \ref osSafetyWithSameClass : \copybrief osSafetyWithSameClass + - \ref osSafetyWithLowerClass : \copybrief osSafetyWithLowerClass + - \ref osKernelProtect : \copybrief osKernelProtect + - \ref osThreadSuspendClass : \copybrief osThreadSuspendClass + - \ref osThreadResumeClass : \copybrief osThreadResumeClass + - \ref osKernelDestroyClass : \copybrief osKernelDestroyClass + - CMSIS-RTOS2 API functions that support safety class assignment when creating RTOS objects are listed in \ref rtos_process_isolation_safety_class_assign. + - CMSIS-RTOS2 API functions that verify safety class assignment before execution are listed in \ref rtos_process_isolation_safety_class_error lists. ## Assign Safety Class to an RTOS Object {#rtos_process_isolation_safety_class_assign} @@ -147,13 +150,13 @@ evt_flags = osEventFlagsNew(&evt_flags_attr); The following object types support safety class assignment when creating an object with corresponding \e osNew function: -- \ref osThreadAttr_t \copybrief osThreadAttr_t Used in the \ref osThreadNew function. -- \ref osEventFlagsAttr_t \copybrief osEventFlagsAttr_t Used in the \ref osThreadNew function. -- \ref osTimerAttr_t \copybrief osTimerAttr_t Used in the \ref osTimerNew function. -- \ref osMutexAttr_t \copybrief osMutexAttr_t Used in the \ref osMutexNew function. -- \ref osSemaphoreAttr_t \copybrief osSemaphoreAttr_t Used in the \ref osSemaphoreNew function. -- \ref osMemoryPoolAttr_t \copybrief osMemoryPoolAttr_t Used in the \ref osMemoryPoolNew function. -- \ref osMessageQueueAttr_t \copybrief osMessageQueueAttr_t Used in the \ref osMessageQueueNew function. + - \ref osThreadAttr_t \copybrief osThreadAttr_t Used in the \ref osThreadNew function. + - \ref osEventFlagsAttr_t \copybrief osEventFlagsAttr_t Used in the \ref osThreadNew function. + - \ref osTimerAttr_t \copybrief osTimerAttr_t Used in the \ref osTimerNew function. + - \ref osMutexAttr_t \copybrief osMutexAttr_t Used in the \ref osMutexNew function. + - \ref osSemaphoreAttr_t \copybrief osSemaphoreAttr_t Used in the \ref osSemaphoreNew function. + - \ref osMemoryPoolAttr_t \copybrief osMemoryPoolAttr_t Used in the \ref osMemoryPoolNew function. + - \ref osMessageQueueAttr_t \copybrief osMessageQueueAttr_t Used in the \ref osMessageQueueNew function. If safety class is not provided when creating the RTOS object then it inherits the safety class of the current running thread that creates the object. If the object is created before kernel is started and no safety class is provided, then it receives default safety class 0. This simplifies integration of third-party code that can be classified as non-safety critical. @@ -174,62 +177,71 @@ Following functions compare the safety class of the running thread with the safe In \ref CMSIS_RTOS_KernelCtrl functions: Comparison is done with safety class configured with \ref osKernelProtect -- \ref osKernelLock -- \ref osKernelRestoreLock -- \ref osKernelSuspend -- \ref osKernelProtect -- \ref osKernelDestroyClass + + - \ref osKernelLock + - \ref osKernelRestoreLock + - \ref osKernelSuspend + - \ref osKernelProtect + - \ref osKernelDestroyClass In \ref CMSIS_RTOS_ThreadMgmt functions: -- \ref osThreadNew -- \ref osThreadSetPriority -- \ref osThreadSuspend -- \ref osThreadResume -- \ref osThreadDetach -- \ref osThreadJoin -- \ref osThreadTerminate -- \ref osThreadSuspendClass -- \ref osThreadResumeClass + + - \ref osThreadNew + - \ref osThreadSetPriority + - \ref osThreadSuspend + - \ref osThreadResume + - \ref osThreadDetach + - \ref osThreadJoin + - \ref osThreadTerminate + - \ref osThreadSuspendClass + - \ref osThreadResumeClass In \ref CMSIS_RTOS_ThreadFlagsMgmt functions: -- \ref osThreadFlagsSet + + - \ref osThreadFlagsSet In \ref CMSIS_RTOS_EventFlags functions: -- \ref osEventFlagsNew -- \ref osEventFlagsSet -- \ref osEventFlagsClear -- \ref osEventFlagsWait -- \ref osEventFlagsDelete + + - \ref osEventFlagsNew + - \ref osEventFlagsSet + - \ref osEventFlagsClear + - \ref osEventFlagsWait + - \ref osEventFlagsDelete In \ref CMSIS_RTOS_TimerMgmt functions: -- \ref osTimerNew -- \ref osTimerStart -- \ref osTimerStop -- \ref osTimerDelete + + - \ref osTimerNew + - \ref osTimerStart + - \ref osTimerStop + - \ref osTimerDelete In \ref CMSIS_RTOS_MutexMgmt functions: -- \ref osMutexNew -- \ref osMutexAcquire -- \ref osMutexDelete + + - \ref osMutexNew + - \ref osMutexAcquire + - \ref osMutexDelete In \ref CMSIS_RTOS_SemaphoreMgmt functions: -- \ref osSemaphoreNew -- \ref osSemaphoreAcquire -- \ref osSemaphoreRelease -- \ref osSemaphoreDelete + + - \ref osSemaphoreNew + - \ref osSemaphoreAcquire + - \ref osSemaphoreRelease + - \ref osSemaphoreDelete In \ref CMSIS_RTOS_PoolMgmt functions: -- \ref osMemoryPoolNew -- \ref osMemoryPoolAlloc -- \ref osMemoryPoolFree -- \ref osMemoryPoolDelete + + - \ref osMemoryPoolNew + - \ref osMemoryPoolAlloc + - \ref osMemoryPoolFree + - \ref osMemoryPoolDelete In \ref CMSIS_RTOS_Message functions: -- \ref osMessageQueueNew -- \ref osMessageQueuePut -- \ref osMessageQueueGet -- \ref osMessageQueueReset -- \ref osMessageQueueDelete + + - \ref osMessageQueueNew + - \ref osMessageQueuePut + - \ref osMessageQueueGet + - \ref osMessageQueueReset + - \ref osMessageQueueDelete \page rtos_process_isolation_thread_wdt Thread Watchdogs @@ -245,15 +257,17 @@ Figure below explains the concept with an example: !["Example use of Thread Watchdogs](./images/thread_watchdogs.png) \ref rtos_process_isolation_faults provides more details on the available possibilities for system recovery. -\note If the application suspends a thread from scheduling by calling \ref osThreadSuspend or \ref osThreadSuspendClass, the thread watchdog still continues to run, and it is expected to expire and trigger \ref osWatchdogAlarm_Handler because the thread will not be serviced as expected. -\note Hence it may be necessary to differentiate handling of thread watchdogs that expired unexpectedly from the thread watchdog alarms of intentionally suspended threads. + +> **Note** +> - If the application suspends a thread from scheduling by calling \ref osThreadSuspend or \ref osThreadSuspendClass, the thread watchdog still continues to run, and it is expected to expire and trigger \ref osWatchdogAlarm_Handler because the thread will not be serviced as expected. +> - Hence it may be necessary to differentiate handling of thread watchdogs that expired unexpectedly from the thread watchdog alarms of intentionally suspended threads. **Function references** Summary of functions that implement thread watchdog functionality: -- \ref osThreadFeedWatchdog : \copybrief osThreadFeedWatchdog -- \ref osWatchdogAlarm_Handler : \copybrief osWatchdogAlarm_Handler + - \ref osThreadFeedWatchdog : \copybrief osThreadFeedWatchdog + - \ref osWatchdogAlarm_Handler : \copybrief osWatchdogAlarm_Handler \page rtos_process_isolation_faults Fault Handling @@ -261,6 +275,7 @@ Summary of functions that implement thread watchdog functionality: When a failure, or an error is detected in a system (for example \ref rtos_process_isolation_mpu_fault "memory access fault", \ref rtos_process_isolation_thread_wdt "thread watchdog alarm", or others) CMSIS-RTOS2 API allows to stop further execution of selected RTOS threads. This can be used to block malfunctioning components or free computing resources and so enable execution of the safety critical threads. Following approaches are available: + - function \ref osThreadTerminateZone can be called in case of a fault exception. It will terminate all threads from the specified MPU Protected Zone (for example, can be the zone that has caused the fault). The function cannot be called in thread context or interrupts other than faults. Note that \ref osFaultResume can be called at the end of the handling code to return program execution into a known context and let kernel schedule the next thread ready for execution. - function \ref osThreadSuspendClass can be called in case of a thread watchdog alarm or other errors handled in thread context. It allows to suspend operation of threads based on the safety class assignment. Function \ref osThreadResumeClass can be used to resume operation of threads based on their safety class. \ref rtos_process_isolation_thread_wdt contains an example that demonstrates fault handling concept for thread watchdogs. @@ -270,13 +285,13 @@ Function \ref osKernelDestroyClass fully removes RTOS objects of specific safety Following CMSIS-RTOS2 functions and macros support fault handling: -- \ref osThreadGetZone : \copybrief osThreadGetZone -- \ref osThreadTerminateZone : \copybrief osThreadTerminateZone -- \ref osThreadGetClass : \copybrief osThreadGetClass -- \ref osSafetyWithSameClass : \copybrief osSafetyWithSameClass -- \ref osSafetyWithLowerClass : \copybrief osSafetyWithLowerClass -- \ref osThreadSuspendClass : \copybrief osThreadSuspendClass -- \ref osThreadResumeClass : \copybrief osThreadResumeClass -- \ref osKernelDestroyClass : \copybrief osKernelDestroyClass -- \ref osFaultResume : \copybrief osFaultResume -- \ref osWatchdogAlarm_Handler : \copybrief osFaultResume + - \ref osThreadGetZone : \copybrief osThreadGetZone + - \ref osThreadTerminateZone : \copybrief osThreadTerminateZone + - \ref osThreadGetClass : \copybrief osThreadGetClass + - \ref osSafetyWithSameClass : \copybrief osSafetyWithSameClass + - \ref osSafetyWithLowerClass : \copybrief osSafetyWithLowerClass + - \ref osThreadSuspendClass : \copybrief osThreadSuspendClass + - \ref osThreadResumeClass : \copybrief osThreadResumeClass + - \ref osKernelDestroyClass : \copybrief osKernelDestroyClass + - \ref osFaultResume : \copybrief osFaultResume + - \ref osWatchdogAlarm_Handler : \copybrief osFaultResume diff --git a/CMSIS/DoxyGen/RTOS2/src/using.md b/CMSIS/Documentation/Doxygen/RTOS2/src/using.md similarity index 79% rename from CMSIS/DoxyGen/RTOS2/src/using.md rename to CMSIS/Documentation/Doxygen/RTOS2/src/using.md index b56bd1ada..0e787e975 100644 --- a/CMSIS/DoxyGen/RTOS2/src/using.md +++ b/CMSIS/Documentation/Doxygen/RTOS2/src/using.md @@ -9,7 +9,8 @@ This sections explains concepts for using CMSIS-RTOS2 interface. They are recomm - \ref CMSIS_RTOS_MemoryMgmt provides information about options for memory management with CMSIS-RTOS2. - \subpage CMSIS_RTOS_ProcessIsolation describes the CMSIS-RTOS2 concepts for protecting execution of critical software tasks against potential flaws in other parts of a program. -\note For the guidance on migration from CMSIS-RTOS API v1 to CMSIS-RTOS2, see section [Detailed API Function Differences](https://arm-software.github.io/CMSIS_5/latest/RTOS2/html/os2MigrationFunctions.html) in CMSIS 5 documentation. +> **Note** +> - For the guidance on migration from CMSIS-RTOS API v1 to CMSIS-RTOS2, see section [Detailed API Function Differences](https://arm-software.github.io/CMSIS_5/latest/RTOS2/html/os2MigrationFunctions.html) in CMSIS 5 documentation. ## Functionality overview {#rtos2_functionalities} @@ -37,30 +38,30 @@ An implementation specific header file (*rtos*.h in the picture below) provides Once the files are added to a project, the user can start working with the CMSIS-RTOS functions. -CMSIS-RTOS2 is especially easy use to integrate in projects that support [CMSIS-Pack format](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html). CMSIS-RTOS2 is provided in the [CMSIS 6 Software Pack](../../General/html/cmsis_pack.html) as a software component in form of [a central API defintion](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/cp_Packs.html#cp_APIDef) It is part of component class **CMSIS** and belongs to component group **RTOS2**. +CMSIS-RTOS2 is especially easy use to integrate in projects that support [CMSIS-Pack format](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html). CMSIS-RTOS2 is provided in the [CMSIS 6 Software Pack](../General/cmsis_pack.html) as a software component in form of [a central API defintion](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/cp_Packs.html#cp_APIDef) It is part of component class **CMSIS** and belongs to component group **RTOS2**. ## Coding Rules {#cmsis_os2_coding_rules} -CMSIS-RTOS2 follows [the general CMSIS coding rules](../../General/html/index.html#coding_rules). Additionally following Namespace prefixes are used in CMSIS-RTOS2 API: +CMSIS-RTOS2 follows [the general CMSIS coding rules](../General/index.html#coding_rules). Additionally following Namespace prefixes are used in CMSIS-RTOS2 API: -- `os` for all definitions and function names. Examples: \ref osThreadPrivileged, \ref osKernelStart. -- `os` with postfix `_t` for all typedefs. Examples: \ref osStatus_t, \ref osThreadAttr_t. + - `os` for all definitions and function names. Examples: \ref osThreadPrivileged, \ref osKernelStart. + - `os` with postfix `_t` for all typedefs. Examples: \ref osStatus_t, \ref osThreadAttr_t. ## System Startup {#SystemStartup} When program execution reaches `main()` function there is a recommended order to initialize the hardware and start the kernel. Your application's `main()` should implement at least the following in the given order: - -# Initialize and configure hardware including peripherals, memory, pins, clocks and the interrupt system. - -# Update the system core clock using the respective - [CMSIS-Core (Cortex-M)](../../Core/html/group__system__init__gr.html) \if ARMCA or [CMSIS-Core (Cortex-A)](../../Core_A/html/group__system__init__gr.html) \endif function. - -# Initialize the RTOS kernel using \ref osKernelInitialize. - -# Optionally, create one thread (for example `app_main`) using \ref osThreadNew, which will be used as a main thread . This thread should take care of creating and starting objects, once it is run by the scheduler. Alternatively, threads can be created directly in `main()`. - -# Start the RTOS scheduler using \ref osKernelStart which also configures the system tick timer and initializes RTOS specific interrupts. This function does not return in case of successful execution. Therefore, any application code after `osKernelStart` will not be executed. -\note -- Modifying priorities and groupings in the NVIC by the application after the above sequence is not recommended. -- Before executing \ref osKernelStart, only the functions \ref osKernelGetInfo, \ref osKernelGetState, and object creation functions (osXxxNew) may be called. + 1. Initialize and configure hardware including peripherals, memory, pins, clocks and the interrupt system. + 2. Update the system core clock using the respective [CMSIS-Core (Cortex-M)](../Core/group__system__init__gr.html) \if ARMCA or [CMSIS-Core (Cortex-A)](../Core_A/group__system__init__gr.html) \endif function. + 3. Initialize the RTOS kernel using \ref osKernelInitialize. + 4. Optionally, create one thread (for example `app_main`) using \ref osThreadNew, which will be used as a main thread . This thread should take care of creating and starting objects, once it is run by the scheduler. Alternatively, threads can be created directly in `main()`. + 5. Start the RTOS scheduler using \ref osKernelStart which also configures the system tick timer and initializes RTOS specific interrupts. This function does not return in case of successful execution. Therefore, any application code after `osKernelStart` will not be executed. + +> **Note** +> - Modifying priorities and groupings in the NVIC by the application after the above sequence is not recommended. +> - Before executing \ref osKernelStart, only the functions \ref osKernelGetInfo, \ref osKernelGetState, and object creation functions (osXxxNew) may be called. **Code Example** @@ -105,9 +106,8 @@ An RTOS object (thread, timer, flags, mutex, etc.) is created by calling its `os The actual state of an object is typically stored in an object specific control block. The memory layout (and size needed) for the control block is implementation specific. One should not make any specific assumptions about the control block. The control block layout might change and hence should be seen as an implementation internal detail. -In order to expose control about object specific options all `osXxxNew` functions provide an -optional `attr` argument, which can be left as \token{NULL} by default. It takes a pointer to -an object specific attribute structure, commonly containing the fields +In order to expose control about object specific options all `osXxxNew` functions provide an optional `attr` argument, which can be left as \token{NULL} by default. It takes a pointer to an object specific attribute structure, commonly containing the fields: + - `name` to attach a human readable name to the object for identification, - `attr_bits` to control object-specific options, - `cb_mem` to provide memory for the control block manually, and @@ -140,14 +140,13 @@ The only exception one has to take care of are Threads which do not have an expl Timeout value is an argument in many API functions that allows to set the maximum time delay for resolving a request. The timeout value specifies the number of timer ticks until the time delay elapses. The value is an upper bound and depends on the actual time elapsed since the last timer tick. Examples: - - timeout value **0** : the system does not wait, even when no resource is available the RTOS function returns instantly. - - timeout value **1** : the system waits until the next timer tick occurs; depending on the previous timer tick, it may be a - very short wait time. - - timeout value **2** : actual wait time is between 1 and 2 timer ticks. - - timeout value \ref osWaitForever : system waits infinite until a resource becomes available. Or one forces the thread to resume using \ref osThreadResume which is discouraged. -![Example of timeout using osDelay()](./images/TimerValues.png) + - timeout value **0** : the system does not wait, even when no resource is available the RTOS function returns instantly. + - timeout value **1** : the system waits until the next timer tick occurs; depending on the previous timer tick, it may be a very short wait time. + - timeout value **2** : actual wait time is between 1 and 2 timer ticks. + - timeout value \ref osWaitForever : system waits infinite until a resource becomes available. Or one forces the thread to resume using \ref osThreadResume which is discouraged. +![Example of timeout using osDelay()](./images/TimerValues.png) - CPU time can be scheduled with the following functionalities: - A \a timeout parameter is incorporated in many CMSIS-RTOS2 functions to avoid system lockup. When a timeout is specified, the system waits until a resource is available or an event occurs. While waiting, other threads are scheduled. @@ -158,23 +157,22 @@ Examples: ## Calls from Interrupt Service Routines {#CMSIS_RTOS_ISR_Calls} The following CMSIS-RTOS2 functions can be called from threads and Interrupt Service Routines (ISR): - - \ref osKernelGetInfo, \ref osKernelGetState, - \ref osKernelGetTickCount, \ref osKernelGetTickFreq, \ref osKernelGetSysTimerCount, \ref osKernelGetSysTimerFreq - - \ref osThreadGetName, \ref osThreadGetId, \ref osThreadFlagsSet - - \ref osTimerGetName - - \ref osEventFlagsGetName, \ref osEventFlagsSet, \ref osEventFlagsClear, \ref osEventFlagsGet, \ref osEventFlagsWait - - \ref osMutexGetName - - \ref osSemaphoreGetName, \ref osSemaphoreAcquire, \ref osSemaphoreRelease, \ref osSemaphoreGetCount - - \ref osMemoryPoolGetName, \ref osMemoryPoolAlloc, \ref osMemoryPoolFree, - \ref osMemoryPoolGetCapacity, \ref osMemoryPoolGetBlockSize, \ref osMemoryPoolGetCount, \ref osMemoryPoolGetSpace - - \ref osMessageQueueGetName, \ref osMessageQueuePut, \ref osMessageQueueGet, \ref osMessageQueueGetCapacity, - \ref osMessageQueueGetMsgSize, \ref osMessageQueueGetCount, \ref osMessageQueueGetSpace + + - \ref osKernelGetInfo, \ref osKernelGetState, \ref osKernelGetTickCount, \ref osKernelGetTickFreq, \ref osKernelGetSysTimerCount, \ref osKernelGetSysTimerFreq + - \ref osThreadGetName, \ref osThreadGetId, \ref osThreadFlagsSet + - \ref osTimerGetName + - \ref osEventFlagsGetName, \ref osEventFlagsSet, \ref osEventFlagsClear, \ref osEventFlagsGet, \ref osEventFlagsWait + - \ref osMutexGetName + - \ref osSemaphoreGetName, \ref osSemaphoreAcquire, \ref osSemaphoreRelease, \ref osSemaphoreGetCount + - \ref osMemoryPoolGetName, \ref osMemoryPoolAlloc, \ref osMemoryPoolFree, \ref osMemoryPoolGetCapacity, \ref osMemoryPoolGetBlockSize, \ref osMemoryPoolGetCount, \ref osMemoryPoolGetSpace + - \ref osMessageQueueGetName, \ref osMessageQueuePut, \ref osMessageQueueGet, \ref osMessageQueueGetCapacity, \ref osMessageQueueGetMsgSize, \ref osMessageQueueGetCount, \ref osMessageQueueGetSpace Functions that cannot be called from an ISR are verifying the interrupt status and return the status code \ref osErrorISR, in case they are called from an ISR context. In some implementations, this condition might be caught using the HARD_FAULT ## Memory Management {#CMSIS_RTOS_MemoryMgmt} The \ref CMSIS_RTOS offers two options for memory management the user can choose. For object storage one can either use + - \ref CMSIS_RTOS_MemoryMgmt_Automatic (fully portable), or - \ref CMSIS_RTOS_MemoryMgmt_Manual (implementation specific). @@ -213,9 +211,7 @@ The Mutexes in this example are created using automatic memory allocation. ### Manual User-defined Allocation {#CMSIS_RTOS_MemoryMgmt_Manual} -One can get fine grained control over memory allocation by providing user-defined memory. -The actual requirements such user-defined memory are kernel-specific. Thus one -needs to carefully refer to the size and alignment rules of the implementation used. +One can get fine grained control over memory allocation by providing user-defined memory. The actual requirements such user-defined memory are kernel-specific. Thus one needs to carefully refer to the size and alignment rules of the implementation used. **Code Example:** diff --git a/CMSIS/DoxyGen/RTOS2/src/validation.md b/CMSIS/Documentation/Doxygen/RTOS2/src/validation.md similarity index 99% rename from CMSIS/DoxyGen/RTOS2/src/validation.md rename to CMSIS/Documentation/Doxygen/RTOS2/src/validation.md index 086171cc9..35ceb2a95 100644 --- a/CMSIS/DoxyGen/RTOS2/src/validation.md +++ b/CMSIS/Documentation/Doxygen/RTOS2/src/validation.md @@ -3,4 +3,3 @@ [CMSIS-RTOS2 Validation](https://github.com/ARM-software/CMSIS-RTOS2_Validation) framework is available to verify operation of CMSIS-RTOS2 implementations. The test cases validate the functional behavior, test invalid parameters and call management functions from Interrupt Service Routines (ISRs). The test projects are provided based on the [CMSIS-Toolbox](https://github.com/Open-CMSIS-Pack/devtools/tree/main/tools) and integrate well into CI workflows. For details about the scope and usage, please, refer to the [CMSIS-RTOS2 Validation manual](https://arm-software.github.io/CMSIS-RTOS2_Validation/main/index.html). - diff --git a/CMSIS/DoxyGen/Stream/Stream.dxy.in b/CMSIS/Documentation/Doxygen/Stream/Stream.dxy.in similarity index 99% rename from CMSIS/DoxyGen/Stream/Stream.dxy.in rename to CMSIS/Documentation/Doxygen/Stream/Stream.dxy.in index 8467f0d12..d59854834 100644 --- a/CMSIS/DoxyGen/Stream/Stream.dxy.in +++ b/CMSIS/Documentation/Doxygen/Stream/Stream.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/Stream +OUTPUT_DIRECTORY = ../../html/Stream # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/Stream/src/images/.gitignore b/CMSIS/Documentation/Doxygen/Stream/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/Stream/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/Stream/src/images/.gitignore diff --git a/CMSIS/DoxyGen/Stream/src/images/Compute-Graph-Sample.png b/CMSIS/Documentation/Doxygen/Stream/src/images/Compute-Graph-Sample.png similarity index 100% rename from CMSIS/DoxyGen/Stream/src/images/Compute-Graph-Sample.png rename to CMSIS/Documentation/Doxygen/Stream/src/images/Compute-Graph-Sample.png diff --git a/CMSIS/DoxyGen/Stream/src/images/ML-Stack.png b/CMSIS/Documentation/Doxygen/Stream/src/images/ML-Stack.png similarity index 100% rename from CMSIS/DoxyGen/Stream/src/images/ML-Stack.png rename to CMSIS/Documentation/Doxygen/Stream/src/images/ML-Stack.png diff --git a/CMSIS/Documentation/Doxygen/Stream/src/mainpage.md b/CMSIS/Documentation/Doxygen/Stream/src/mainpage.md new file mode 100644 index 000000000..db7a060f2 --- /dev/null +++ b/CMSIS/Documentation/Doxygen/Stream/src/mainpage.md @@ -0,0 +1,45 @@ +# CMSIS-Stream {#mainpage} + +**CMSIS-Stream** is a Python package that provides methods, interfaces, and tools to optimize data block streaming between processing steps of a DSP/ML application. + +## Access to CMSIS-Stream + + - [**CMSIS-Stream GitHub Repo**](https://github.com/ARM-software/cmsis-stream) - provides templates, usage examples, and access to documentation. + - [**CMSIS-Stream Python package**](https://pypi.org/project/cmsis-stream/) - provides easy access to tools via standard Python delivery system. + +## Benefits + + - CMSIS-Stream enables a modular design that makes it easier to develop and maintain DSP pipelines. + - The provided tools generate at build time an optimized scheduling of the processing nodes with minimized memory overhead. + - Creates an easy to understand representation of the design visualized with a compute graph. + +## Components + +The components of CMSIS-Stream are: + + - **Compute Graph** is the decomposition of the application in a directed graph that shows the data flow between processing nodes. It describes the data formats, FIFO buffers, data streams, and processing steps using a Python script file. + - **Tools** convert the Compute Graph with Python into processing steps at build-time with optimized schedule and memory usage. + - **Interfaces** header files, templates, and methods for data management (that works also on AMP systems). + - **Usage Examples** that help a software developer to get started. + +## Example Compute Graph + +The diagram below shows a Compute Graph with four nodes: + + - A source generating 5 values in with data type `q15` each time it is run. + - A processing node (Filter) consuming and producing 7 values with data type `q15` each time it is run. + - A processing node (Detector) consuming 5 values with data type `q15` and producing 2 values with data type `f32` each it is run. + - A sink consuming 10 values with data type `f32` each time it is run. + +![Sample Compute Graph](./images/Compute-Graph-Sample.png) + +This Compute Graph is described with a Python script file that defines the nodes and their connections. This Python script computes a C++ implementation with static schedule and correctly sized memory buffers between each node. Nodes that are implemented in C are integrated using C++ wrappers. + +## Complex DSP Pipelines + +CMSIS-Stream gives the developer a toolbox that allows to create optimized DSP pipelines, that are for example required to optimize machine learning (ML) software stacks. With a Compute Graph complex DSP pipelines like shown in the diagram below can be described. + +By optimizing signal conditioning and feature extraction, the complexity of the ML classifier. More DSP pre-processing helps therefore lowering the overall performance that is required for a ML application. + +![Example Machine Learning Stack](./images/ML-Stack.png) + diff --git a/CMSIS/DoxyGen/Toolbox/Toolbox.dxy.in b/CMSIS/Documentation/Doxygen/Toolbox/Toolbox.dxy.in similarity index 99% rename from CMSIS/DoxyGen/Toolbox/Toolbox.dxy.in rename to CMSIS/Documentation/Doxygen/Toolbox/Toolbox.dxy.in index 18d81685a..9158cadbb 100644 --- a/CMSIS/DoxyGen/Toolbox/Toolbox.dxy.in +++ b/CMSIS/Documentation/Doxygen/Toolbox/Toolbox.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/Toolbox +OUTPUT_DIRECTORY = ../../html/Toolbox # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/Toolbox/src/images/.gitignore b/CMSIS/Documentation/Doxygen/Toolbox/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/Toolbox/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/Toolbox/src/images/.gitignore diff --git a/CMSIS/DoxyGen/Toolbox/src/images/csolution-overview.png b/CMSIS/Documentation/Doxygen/Toolbox/src/images/csolution-overview.png similarity index 100% rename from CMSIS/DoxyGen/Toolbox/src/images/csolution-overview.png rename to CMSIS/Documentation/Doxygen/Toolbox/src/images/csolution-overview.png diff --git a/CMSIS/DoxyGen/Toolbox/src/mainpage.md b/CMSIS/Documentation/Doxygen/Toolbox/src/mainpage.md similarity index 61% rename from CMSIS/DoxyGen/Toolbox/src/mainpage.md rename to CMSIS/Documentation/Doxygen/Toolbox/src/mainpage.md index 36ac24df4..ade193d7f 100644 --- a/CMSIS/DoxyGen/Toolbox/src/mainpage.md +++ b/CMSIS/Documentation/Doxygen/Toolbox/src/mainpage.md @@ -2,26 +2,26 @@ The **CMSIS-Toolbox** provides command-line tools for: -- Project creation and build of embedded applications utilizing [Software Packs](https://www.keil.arm.com/packs/) with support for multiple compilation tools. -- Software Pack creation, maintenance, and distribution utilizing the [CMSIS-Pack format](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html). + - Project creation and build of embedded applications utilizing [Software Packs](https://www.keil.arm.com/packs/) with support for multiple compilation tools. + - Software Pack creation, maintenance, and distribution utilizing the [CMSIS-Pack format](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html). ## Access to CMSIS-Toolbox CMSIS-Toolbox is actively maintained in a dedicated GitHub repository and released as a set of binary utilities. -- [**CMSIS-Toolbox GitHub Repo**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox) - contains the source code and releases. -- [**CMSIS-Toolbox User Guide**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/README.md) - provides user documentation for the CMSIS-Toolbox. + - [**CMSIS-Toolbox GitHub Repo**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox) - contains the source code and releases. + - [**CMSIS-Toolbox User Guide**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/README.md) - provides user documentation for the CMSIS-Toolbox. ## Benefits -- Flexible CLI tools that can be used stand-alone or integrated into [VS Code](https://marketplace.visualstudio.com/items?itemName=Arm.keil-studio-pack) or DevOps systems for Continuous Integration (CI). -- Stand-alone tools that are available for all host platforms (Windows, Mac, Linux) and flexible deployable. -- [Software Packs](https://www.keil.arm.com/packs/) simplify tool setup with `device:` or `board:` selection and project creation with access to reusable software components. -- Organize solutions with projects that are independently managed simplifies a wide range of use cases including multi-processor applications or unit testing. -- Provisions for product lifecycle management (PLM) with versioned software packs that are easy to update and management for configuration files. -- Software layers enable code reuse across similar applications with a pre-configured set of source files and software components. -- Multiple hardware targets allow application deployment to different hardware (test board, production hardware, virtual hardware, etc.). -- Multiple build types support software testing and verification (debug build, test build, release build, ect.). + - Flexible CLI tools that can be used stand-alone or integrated into [VS Code](https://marketplace.visualstudio.com/items?itemName=Arm.keil-studio-pack) or DevOps systems for Continuous Integration (CI). + - Stand-alone tools that are available for all host platforms (Windows, Mac, Linux) and flexible deployable. + - [Software Packs](https://www.keil.arm.com/packs/) simplify tool setup with `device:` or `board:` selection and project creation with access to reusable software components. + - Organize solutions with projects that are independently managed simplifies a wide range of use cases including multi-processor applications or unit testing. + - Provisions for product lifecycle management (PLM) with versioned software packs that are easy to update and management for configuration files. + - Software layers enable code reuse across similar applications with a pre-configured set of source files and software components. + - Multiple hardware targets allow application deployment to different hardware (test board, production hardware, virtual hardware, etc.). + - Multiple build types support software testing and verification (debug build, test build, release build, ect.). ## Project Creation diff --git a/CMSIS/DoxyGen/View/View.dxy.in b/CMSIS/Documentation/Doxygen/View/View.dxy.in similarity index 99% rename from CMSIS/DoxyGen/View/View.dxy.in rename to CMSIS/Documentation/Doxygen/View/View.dxy.in index 81ddb2494..948b8522c 100644 --- a/CMSIS/DoxyGen/View/View.dxy.in +++ b/CMSIS/Documentation/Doxygen/View/View.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/View +OUTPUT_DIRECTORY = ../../html/View # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/View/src/images/.gitignore b/CMSIS/Documentation/Doxygen/View/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/View/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/View/src/images/.gitignore diff --git a/CMSIS/Documentation/Doxygen/View/src/mainpage.md b/CMSIS/Documentation/Doxygen/View/src/mainpage.md new file mode 100644 index 000000000..8cf803d1a --- /dev/null +++ b/CMSIS/Documentation/Doxygen/View/src/mainpage.md @@ -0,0 +1,27 @@ +# CMSIS-View {#mainpage} + +**CMSIS-View** equips software developers with methodologies, software components, and utilities that help to analyze operation of embedded software programs on devices with Arm Cortex-M processors. + +Key elements of CMSIS-View are: + + - **Event Recorder** is an embedded software component that implements functions for event annotations in the code. + - **Exception Fault Analysis** provides functions to store, record, and analyze exception fault information. + - **eventlist** is a command line tool for processing Event Recorder log files. + +## Access to CMSIS-View + +CMSIS-View is maintained in a GitHub repository and is also released as a standalone package in CMSIS Software Pack format. + + - [**CMSIS-View GitHub Repo**](https://github.com/Arm-Software/CMSIS-View) provides the full source code as well as releases in CMSIS-Pack format. + - [**CMSIS-View Documentation**](https://arm-software.github.io/CMSIS-View/latest/) explains how to use the library and describes the implemented functions in details. + +## Key Features and Benefits + + - CMSIS-View enables visibility into the dynamic execution of an application with minimal memory and timing overhead. + - Works on all Cortex-M devices with only simple debug adapters necessary. + - Compiler agnostic implementation allows simple integration in application projects. + - Events are captured with accurate time-stamps. + - Event Statistic functions allow you to collect and analyze statistical data about the code execution. + - Enables RTOS-aware debug for CMSIS-RTX and CMSIS-FreeRTOS. + - Provides logging capabilities for use in regression tests on Arm Virtual Hardware FVP models ([via semihosting](https://arm-software.github.io/CMSIS-View/latest/er_use.html#er_semihosting)). + - Natively supported in [Keil MDK uVision IDE](https://developer.arm.com/documentation/101407/0538/Debugging/Debug-Windows-and-Dialogs/Event-Recorder). diff --git a/CMSIS/DoxyGen/Zone/Zone.dxy.in b/CMSIS/Documentation/Doxygen/Zone/Zone.dxy.in similarity index 99% rename from CMSIS/DoxyGen/Zone/Zone.dxy.in rename to CMSIS/Documentation/Doxygen/Zone/Zone.dxy.in index 299d45f6e..157d023f3 100644 --- a/CMSIS/DoxyGen/Zone/Zone.dxy.in +++ b/CMSIS/Documentation/Doxygen/Zone/Zone.dxy.in @@ -67,7 +67,7 @@ PROJECT_LOGO = ../Doxygen_Templates/cmsis_logo_white_small.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../Documentation/Zone +OUTPUT_DIRECTORY = ../../html/Zone # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -1302,7 +1302,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = ./ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/CMSIS/DoxyGen/Zone/src/images/.gitignore b/CMSIS/Documentation/Doxygen/Zone/src/images/.gitignore similarity index 100% rename from CMSIS/DoxyGen/Zone/src/images/.gitignore rename to CMSIS/Documentation/Doxygen/Zone/src/images/.gitignore diff --git a/CMSIS/Documentation/Doxygen/Zone/src/mainpage.md b/CMSIS/Documentation/Doxygen/Zone/src/mainpage.md new file mode 100644 index 000000000..ab4816b62 --- /dev/null +++ b/CMSIS/Documentation/Doxygen/Zone/src/mainpage.md @@ -0,0 +1,27 @@ +# CMSIS-Zone {#mainpage} + +**CMSIS-Zone** is an open source utility that helps to manage software configurations for partitions that have different access permissions to system resources in devices with Arm Cortex-M processors. It implements the infrastructure that is required for: + + - Split of a multi-processor system for single processor views + - TrustZone setup (SAU, Interrupt assignment to Secure/Non-Secure) + - Setup of Memory Protection Unit (MPU) + - Setup of device specific Memory Protection Controller (MPC) + - Setup of device specific Peripheral Protection Controller (PPC) + +## Acess to CMSIS-Zone + +CMSIS-Zone is maintained in a GitHub repository and is released as a standalone Eclipse plugin. + + - [**CMSIS-Zone GitHub Repo**](https://github.com/Arm-Software/CMSIS-Zone) contains examples, templates and documentation. + - [**CMSIS-Pack Eclipse Plug-ins**](https://github.com/ARM-software/cmsis-pack-eclipse/releases/latest) implement the CMSIS-Zone utility. + - [**CMSIS-Zone Documentation**](https://arm-software.github.io/CMSIS-Zone/latest/) explains in details how to use the CMSIS-Zone in a project. + + +## Key Features and Benefits + + - CMSIS-Zone reduces the complexity of configuring access permissions in embedded software. + - Allows to setup of access permissions to memory and peripherals in secure/non-secure modes, and privilege execution levels. + - Provides graphical (GUI) and command line (CLI) interfaces. + - Generates the code for the setup of protection hardware such as SAU, MPC, PPC, MPU. + - Generates the linker scripts for the defined partitions. + - Includes multiple examples for real hardware. diff --git a/CMSIS/DoxyGen/check_links.sh b/CMSIS/Documentation/Doxygen/check_links.sh similarity index 95% rename from CMSIS/DoxyGen/check_links.sh rename to CMSIS/Documentation/Doxygen/check_links.sh index 6d2f14d66..8469915f3 100755 --- a/CMSIS/DoxyGen/check_links.sh +++ b/CMSIS/Documentation/Doxygen/check_links.sh @@ -48,4 +48,4 @@ find_linkchecker ######################################### -check_links "${DIRNAME}/../Documentation/index.html" "${DIRNAME}" +check_links "${DIRNAME}/../html/index.html" "${DIRNAME}" diff --git a/CMSIS/DoxyGen/gen_doc.sh b/CMSIS/Documentation/Doxygen/gen_doc.sh similarity index 92% rename from CMSIS/DoxyGen/gen_doc.sh rename to CMSIS/Documentation/Doxygen/gen_doc.sh index ed3550973..93452954f 100755 --- a/CMSIS/DoxyGen/gen_doc.sh +++ b/CMSIS/Documentation/Doxygen/gen_doc.sh @@ -16,7 +16,7 @@ set -o pipefail REQUIRED_GEN_PACK_LIB="0.8.4" DIRNAME=$(dirname $(readlink -f $0)) -GENDIR=../Documentation +GENDIR=../html REQ_DXY_VERSION="1.9.6" REQ_MSCGEN_VERSION="0.20" @@ -73,7 +73,7 @@ echo "Generating documentation ..." function generate() { pushd $1 > /dev/null - + projectName=$(grep -E "PROJECT_NAME\s+=" $1.dxy.in | sed -r -e 's/[^"]*"([^"]+)".*/\1/') projectNumberFull="$2" if [ -z "${projectNumberFull}" ]; then @@ -88,21 +88,23 @@ function generate() { sed -e "s/{projectNumber}/${projectNumber}/" $1.dxy.in > $1.dxy + mkdir -p "${DIRNAME}/${GENDIR}/$1/" # git_changelog -f html -p "v" > src/history.txt echo "\"${UTILITY_DOXYGEN}\" $1.dxy" "${UTILITY_DOXYGEN}" $1.dxy - mkdir -p "${DIRNAME}/${GENDIR}/$1/html/search/" - cp -f "${DIRNAME}/Doxygen_Templates/search.css" "${DIRNAME}/${GENDIR}/$1/html/search/" - cp -f "${DIRNAME}/Doxygen_Templates/navtree.js" "${DIRNAME}/${GENDIR}/$1/html/" + mkdir -p "${DIRNAME}/${GENDIR}/$1/search/" + cp -f "${DIRNAME}/Doxygen_Templates/search.css" "${DIRNAME}/${GENDIR}/$1/search/" + cp -f "${DIRNAME}/Doxygen_Templates/navtree.js" "${DIRNAME}/${GENDIR}/$1/" + cp -f "${DIRNAME}/Doxygen_Templates/resize.js" "${DIRNAME}/${GENDIR}/$1/" sed -e "s/{datetime}/${datetime}/" "${DIRNAME}/Doxygen_Templates/footer.js.in" \ | sed -e "s/{year}/${year}/" \ | sed -e "s/{projectName}/${projectName}/" \ | sed -e "s/{projectNumber}/${projectNumber}/" \ | sed -e "s/{projectNumberFull}/${projectNumberFull}/" \ - > "${DIRNAME}/${GENDIR}/$1/html/footer.js" + > "${DIRNAME}/${GENDIR}/$1/footer.js" popd > /dev/null } @@ -121,6 +123,8 @@ generate "Stream" generate "DAP" generate "Zone" +cp -f "${DIRNAME}/index.html" "${DIRNAME}/../html/" + popd > /dev/null exit 0 diff --git a/CMSIS/DoxyGen/index.html b/CMSIS/Documentation/Doxygen/index.html similarity index 60% rename from CMSIS/DoxyGen/index.html rename to CMSIS/Documentation/Doxygen/index.html index 87e7de48f..bd3bc9011 100644 --- a/CMSIS/DoxyGen/index.html +++ b/CMSIS/Documentation/Doxygen/index.html @@ -2,13 +2,13 @@ Redirect to the CMSIS main page after 0 seconds - + -If the automatic redirection is failing, click open CMSIS Documentation. +If the automatic redirection is failing, click open CMSIS Documentation. diff --git a/CMSIS/DoxyGen/linkchecker.rc b/CMSIS/Documentation/Doxygen/linkchecker.rc similarity index 100% rename from CMSIS/DoxyGen/linkchecker.rc rename to CMSIS/Documentation/Doxygen/linkchecker.rc diff --git a/CMSIS/Documentation/README.md b/CMSIS/Documentation/README.md new file mode 100644 index 000000000..c5a9f8458 --- /dev/null +++ b/CMSIS/Documentation/README.md @@ -0,0 +1,15 @@ +# CMSIS 6 Documentation + +CMSIS 6 Documentation in HTML format is published online at [https://arm-software.github.io/CMSIS_6](https://arm-software.github.io/CMSIS_6). + +The version drop-down menu in the "Overview" book allows to switch between the documentation provided with offical releases and the latest draft documentation for the main branch. + +The documentation source is maintained in `/CMSIS/Documentation/Doxygen/` folder as a mixture of markdown and doxygen formats. Software source and header files, templates and examples may also contribute information that gets integrated into the final documentation. + +Generating the HTML-formatted documentation from the source is done with `gen_doc.sh` script: + +```sh +CMSIS_6 $ ./CMSIS/Documentation/Doxygen/gen_doc.sh +``` + +The script expects specific version of [doxygen](https://www.doxygen.nl/) to be installed locally. After successful execution the resulting documentation package is then available in `./CMSIS/Documentation/html/`. diff --git a/CMSIS/Documentation/index.html b/CMSIS/Documentation/index.html index e86662157..69afddb33 100644 --- a/CMSIS/Documentation/index.html +++ b/CMSIS/Documentation/index.html @@ -2,13 +2,13 @@ Redirect to the CMSIS main page after 0 seconds - + -If the automatic redirection is failing, click open CMSIS Documentation. +If the automatic redirection is failing, click open CMSIS Documentation. diff --git a/CMSIS/DoxyGen/Compiler/src/mainpage.md b/CMSIS/DoxyGen/Compiler/src/mainpage.md deleted file mode 100644 index eef9baa04..000000000 --- a/CMSIS/DoxyGen/Compiler/src/mainpage.md +++ /dev/null @@ -1,25 +0,0 @@ -# CMSIS-Compiler {#mainpage} - -**CMSIS-Compiler** provides software components for retargeting I/O operations in standard C run-time libraries. Following interfaces are supported for retargeting: - -- File interface for reading and writing files. -- I/O interface for standard I/O stream retargeting (stderr, stdin, stdout). -- OS interface for multithread safety using an arbitrary RTOS. - -![Overview of CMSIS-Compiler](./images/cmsis_compiler_overview.png) - -Standard C library functions are platform independent, but the implementations of the low-level I/O and multithreading support are tailored to the target compiler toolchains. - -## Access to CMSIS-Compiler - -CMSIS-Compiler is maintained in a GitHub repository and is also released as a standalone package in CMSIS Pack format. - -- [**CMSIS-Compiler GitHub Repo**](https://github.com/Arm-Software/CMSIS-Compiler) provides the full source code as well as releases in CMSIS-Pack format. -- [**CMSIS-Compiler Documentation**](https://arm-software.github.io/CMSIS-Compiler/latest/) explains how to use the library and describes the implemented functions in details. - -## Key Features and Benefits - -- CMSIS-Compiler allows individual retargeting configuration for common I/O interfaces: file, stderr, stdin, stdout. -- Implements several ready-to-use retarget variants: into File, Breakpoint, Event Recorder, ITM, as well as user-specific variant. -- Supports common standard C libraries, such as from Arm Compiler and GCC (Newlib) toolchains. IAR support is planned. -- Provides implementation templates and examples to get started. diff --git a/CMSIS/DoxyGen/DSP/src/mainpage.md b/CMSIS/DoxyGen/DSP/src/mainpage.md deleted file mode 100644 index 1fab42632..000000000 --- a/CMSIS/DoxyGen/DSP/src/mainpage.md +++ /dev/null @@ -1,24 +0,0 @@ -# CMSIS-DSP {#mainpage} - -**CMSIS-DSP** is an open-source software library that implements common compute processing functions optimized for use on Arm Cortex-M and Cortex-A processors. The library covers such compute categories as (list not exhaustive): - -- Basic mathematics (real, complex, quaternion, linear algebra, fast math functions) -- DSP (filtering) -- Transforms (FFT, MFCC, DCT) -- Statistics -- Classical ML (Support Vector Machine, Distance functions for clustering, ...) - -## Access to CMSIS-DSP - -CMSIS-DSP is actively maintained in a dedicated GitHub repository and is also published as a standalone release in [CMSIS Pack format](). - -- [**CMSIS-DSP GitHub Repo**](https://github.com/ARM-software/CMSIS-DSP) provides the full source code as well as releases in CMSIS-Pack format. -- [**CMSIS-DSP Documentation**](https://arm-software.github.io/CMSIS-DSP/latest/) explains how to use the library and describes the implemented functions in details. - -## Key Features and Benefits - -- CMSIS-DSP covers a broad set of compute functions common for use in embedded systems. -- Supports operations on 8-bit integers, 16-bit integers, 32-bit integer and 32-bit floating-point values. -- Provides vectorized versions of most algorthms for [Arm Helium Technology](https://developer.arm.com/Architectures/Helium) and of most f32 algorithms for [Arm Neon Technology](https://developer.arm.com/Architectures/Neon). -- Includes test framework. -- Provides examples demonstating how to use the library functions. diff --git a/CMSIS/DoxyGen/General/src/images/Overview.png b/CMSIS/DoxyGen/General/src/images/Overview.png deleted file mode 100644 index 83cd344c3..000000000 Binary files a/CMSIS/DoxyGen/General/src/images/Overview.png and /dev/null differ diff --git a/CMSIS/DoxyGen/NN/src/mainpage.md b/CMSIS/DoxyGen/NN/src/mainpage.md deleted file mode 100644 index 0813e769d..000000000 --- a/CMSIS/DoxyGen/NN/src/mainpage.md +++ /dev/null @@ -1,25 +0,0 @@ -# CMSIS-NN {#mainpage} - -**CMSIS-NN** is an open-source software library that provides a collection of efficient neural network (NN) kernels developed to maximize the performance and minimize the memory footprint of neural networks running on Arm Cortex-M processors. - -![Overview of CMSIS-NN](./images/cmsis-nn-overview.png) - -CMSIS-NN functions are implemented in several variants and the optimal solution is automatically taken at compile time depending on the features available on the target processor architecture. Implementations for the following features are available: -- Single Instruction Multiple Data (SIMD) capability (e.g, Cortex-M0) -- DSP extension (e.g Cortex-M4) -- Arm M-Profile Vector Extension(MVE) (e.g Cortex-M55). - -## Access to CMSIS-NN - -CMSIS-NN is actively maintained in a GitHub repository and is also released as a standalone package in CMSIS Pack format. - -- [**CMSIS-NN GitHub Repo**](https://github.com/ARM-software/CMSIS-NN) provides the full source code as well as releases in CMSIS-Pack format. -- [**CMSIS-NN Documentation**](https://arm-software.github.io/CMSIS-NN/latest/) explains how to use the library and describes the implemented functions in details. - -## Key Features and Benefits - -- CMSIS-NN provides a broad set of neural network kernels for Cortex-M devices. -- Optimized implementations for different Cortex-M capabilities (SIMD, FPU, MVE). -- Arm Compiler 6 and on Arm GNU Toolchain support. -- Follows int8 and int16 quantization specification of TensorFlow Lite for Microcontrollers. -- Widely adopted in the industry. diff --git a/CMSIS/DoxyGen/RTOS2/src/history.md b/CMSIS/DoxyGen/RTOS2/src/history.md deleted file mode 100644 index babfa3bfe..000000000 --- a/CMSIS/DoxyGen/RTOS2/src/history.md +++ /dev/null @@ -1,113 +0,0 @@ -# Revision History {#rtos_revisionHistory} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fv - - - - - - - - - - - - -
    VersionDescription
    V2.3.0 - Added provisional support for processor affinity in SMP systems: - - \ref osThreadAttr_t :: affinity_mask - - \ref osThreadSetAffinityMask, \ref osThreadGetAffinityMask -
    V2.2.0 - Added support for \ref CMSIS_RTOS_ProcessIsolation : - - Kernel Management: \ref osKernelProtect, \ref osKernelDestroyClass - - Thread Management: \ref osThreadGetClass, \ref osThreadGetZone,
    - \ref osThreadSuspendClass, \ref osThreadResumeClass, \ref osThreadTerminateZone,
    - \ref osThreadFeedWatchdog, \ref osThreadProtectPrivileged - - Thread attributes: \ref osThreadZone, \ref osThreadUnprivileged, \ref osThreadPrivileged - - Object attributes: \ref osSafetyClass - - Handler functions: \ref osWatchdogAlarm_Handler - - Zone Management: \ref osZoneSetup_Callback - - Exception Faults: \ref osFaultResume - - Additional functions allowed to be called from Interrupt Service Routines: - - \ref osThreadGetName, \ref osEventFlagsGetName, \ref osTimerGetName, \ref osMutexGetName, \ref osSemaphoreGetName, \ref osMemoryPoolGetName, \ref osMessageQueueGetName -
    V2.1.3 - Additional functions allowed to be called from Interrupt Service Routines: - - \ref osThreadGetId -
    V2.1.2 - Additional functions allowed to be called from Interrupt Service Routines: - - \ref osKernelGetInfo, \ref osKernelGetState -
    V2.1.1 - Additional functions allowed to be called from Interrupt Service Routines: - - \ref osKernelGetTickCount, \ref osKernelGetTickFreq - - Changed Kernel Tick type to uint32_t: - - updated: \ref osKernelGetTickCount, \ref osDelayUntil -
    V2.1.0 - Support for critical and uncritical sections (nesting safe): - - updated: \ref osKernelLock, \ref osKernelUnlock - - added: \ref osKernelRestoreLock - - Updated \ref CMSIS_RTOS_ThreadFlagsMgmt "Thread Flags" and \ref CMSIS_RTOS_EventFlags "Event Flags": - - changed flags parameter and return type from int32_t to uint32_t -
    V2.0.0 - New API Version 2.0 available. - - See \ref CMSIS_RTOS for a detailed function reference. -
    V1.02 - only documentation changes - Added: Overview of the \ref rtosValidation "CMSIS-RTOS Validation" Software Pack.\n - Clarified: Behavior of \ref CMSIS_RTOS_TimeOutValue. -
    V1.02Added: New control functions for short timeouts in microsecond resolution **osKernelSysTick**, - \b osKernelSysTickFrequency, **osKernelSysTickMicroSec**.\n - Removed: osSignalGet. -
    V1.01Added capabilities for C++, kernel initialization and object deletion.\n - Prepared for C++ class interface. In this context to \em const attribute has been moved from osXxxxDef_t typedefs to - the osXxxxDef macros.\n - Added: \ref osTimerDelete, \ref osMutexDelete, \ref osSemaphoreDelete .\n - Added: \ref osKernelInitialize that prepares the kernel for object creation.\n -
    - V1.00First official Release.\n - Added: \ref osKernelStart; starting 'main' as a thread is now an optional feature.\n - Semaphores have now the standard behavior.\n - \b osTimerCreate does no longer start the timer. Added: \ref osTimerStart (replaces osTimerRestart).\n - Changed: osThreadPass is renamed to \ref osThreadYield. -
    V0.02Preview Release.
    diff --git a/CMSIS/DoxyGen/Stream/src/mainpage.md b/CMSIS/DoxyGen/Stream/src/mainpage.md deleted file mode 100644 index b413e8aef..000000000 --- a/CMSIS/DoxyGen/Stream/src/mainpage.md +++ /dev/null @@ -1,45 +0,0 @@ -# CMSIS-Stream {#mainpage} - -**CMSIS-Stream** is a Python package that provides methods, interfaces, and tools to optimize data block streaming between processing steps of a DSP/ML application. - -## Access to CMSIS-Stream - -- [**CMSIS-Stream GitHub Repo**](https://github.com/ARM-software/cmsis-stream) - provides templates, usage examples, and access to documentation. -- [**CMSIS-Stream Python package**](https://pypi.org/project/cmsis-stream/) - provides easy access to tools via standard Python delivery system. - -## Benefits - -- CMSIS-Stream enables a modular design that makes it easier to develop and maintain DSP pipelines. -- The provided tools generate at build time an optimized scheduling of the processing nodes with minimized memory overhead. -- Creates an easy to understand representation of the design visualized with a compute graph. - -## Components - -The components of CMSIS-Stream are: - -- **Compute Graph** is the decomposition of the application in a directed graph that shows the data flow between processing nodes. It describes the data formats, FIFO buffers, data streams, and processing steps using a Python script file. -- **Tools** convert the Compute Graph with Python into processing steps at build-time with optimized schedule and memory usage. -- **Interfaces** header files, templates, and methods for data management (that works also on AMP systems). -- **Usage Examples** that help a software developer to get started. - -## Example Compute Graph - -The diagram below shows a Compute Graph with four nodes: - -- A source generating 5 values in with data type `q15` each time it is run. -- A processing node (Filter) consuming and producing 7 values with data type `q15` each time it is run. -- A processing node (Detector) consuming 5 values with data type `q15` and producing 2 values with data type `f32` each it is run. -- A sink consuming 10 values with data type `f32` each time it is run. - -![Sample Compute Graph](./images/Compute-Graph-Sample.png) - -This Compute Graph is described with a Python script file that defines the nodes and their connections. This Python script computes a C++ implementation with static schedule and correctly sized memory buffers between each node. Nodes that are implemented in C are integrated using C++ wrappers. - -## Complex DSP Pipelines - -CMSIS-Stream gives the developer a toolbox that allows to create optimized DSP pipelines, that are for example required to optimize machine learning (ML) software stacks. With a Compute Graph complex DSP pipelines like shown in the diagram below can be described. -By optimizing signal conditioning and feature extraction, the complexity of the ML classifier. -More DSP pre-processing helps therefore lowering the overall performance that is required for a ML application. - -![Example Machine Learning Stack](./images/ML-Stack.png) - diff --git a/CMSIS/DoxyGen/View/src/mainpage.md b/CMSIS/DoxyGen/View/src/mainpage.md deleted file mode 100644 index 4e1eb3c49..000000000 --- a/CMSIS/DoxyGen/View/src/mainpage.md +++ /dev/null @@ -1,27 +0,0 @@ -# CMSIS-View {#mainpage} - -**CMSIS-View** equips software developers with methodologies, software components, and utilities that help to analyze operation of embedded software programs on devices with Arm Cortex-M processors. - -Key elements of CMSIS-View are: - -- **Event Recorder** is an embedded software component that implements functions for event annotations in the code. -- **Exception Fault Analysis** provides functions to store, record, and analyze exception fault information. -- **eventlist** is a command line tool for processing Event Recorder log files. - -## Access to CMSIS-View - -CMSIS-View is maintained in a GitHub repository and is also released as a standalone package in CMSIS Software Pack format. - -- [**CMSIS-View GitHub Repo**](https://github.com/Arm-Software/CMSIS-View) provides the full source code as well as releases in CMSIS-Pack format. -- [**CMSIS-View Documentation**](https://arm-software.github.io/CMSIS-View/latest/) explains how to use the library and describes the implemented functions in details. - -## Key Features and Benefits - -- CMSIS-View enables visibility into the dynamic execution of an application with minimal memory and timing overhead. -- Works on all Cortex-M devices with only simple debug adapters necessary. -- Compiler agnostic implementation allows simple integration in application projects. -- Events are captured with accurate time-stamps. -- Event Statistic functions allow you to collect and analyze statistical data about the code execution. -- Enables RTOS-aware debug for CMSIS-RTX and CMSIS-FreeRTOS. -- Provides logging capabilities for use in regression tests on Arm Virtual Hardware FVP models ([via semihosting](https://arm-software.github.io/CMSIS-View/latest/er_use.html#er_semihosting)). -- Natively supported in [Keil MDK uVision IDE](https://developer.arm.com/documentation/101407/0538/Debugging/Debug-Windows-and-Dialogs/Event-Recorder). diff --git a/CMSIS/DoxyGen/Zone/src/mainpage.md b/CMSIS/DoxyGen/Zone/src/mainpage.md deleted file mode 100644 index 55512ca46..000000000 --- a/CMSIS/DoxyGen/Zone/src/mainpage.md +++ /dev/null @@ -1,24 +0,0 @@ -# CMSIS-Zone {#mainpage} - -**CMSIS-Zone** is an open source utility that helps to manage software configurations for partitions that have different access permissions to system resources in devices with Arm Cortex-M processors. It implements the infrastructure that is required for: -- Split of a multi-processor system for single processor views -- TrustZone setup (SAU, Interrupt assignment to Secure/Non-Secure) -- Setup of Memory Protection Unit (MPU) -- Setup of device specific Memory Protection Controller (MPC) -- Setup of device specific Peripheral Protection Controller (PPC) - -## Acess to CMSIS-Zone - -CMSIS-Zone is maintained in a GitHub repository and is released as a standalone Eclipse plugin. - -- [**CMSIS-Zone GitHub Repo**](https://github.com/Arm-Software/CMSIS-Zone) provides the full source code as well as releases as Eclipse Plugins. -- [**CMSIS-Zone Documentation**](https://arm-software.github.io/CMSIS-Zone/latest/) explains in details how to use the utility. - -## Key Features and Benefits - -- CMSIS-Zone reduces the complexity of configuring access permissions in embedded software. -- Allows to setup of access permissions to memory and peripherals in secure/non-secure modes, and privilege execution levels. -- Provides graphical (GUI) and command line (CLI) interfaces. -- Generates the code for the setup of protection hardware such as SAU, MPC, PPC, MPU. -- Generates the linker scripts for the defined partitions. -- Includes multiple examples for real hardware. diff --git a/README.md b/README.md index f67abf140..1449afab2 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Use [Issues](https://github.com/ARM-software/CMSIS_6#issues-and-labels) to provi **Note:** The branch *main* of this GitHub repository reflects our current state of development and is constantly updated. It gives our users and partners contiguous access to the CMSIS development. It allows you to review the work and provide feedback or create pull requests for contributions. A [pre-built documentation](https://arm-software.github.io/CMSIS_5/develop/General/html/index.html) is updated from time to time, but may be also generated using the instructions under [Generate CMSIS Pack for Release](https://github.com/ARM-software/CMSIS_5#generate-cmsis-pack-for-release). +For a list of all CMSIS components refer to [**Introduction - CMSIS Components**](./CMSIS/Documentation/Doxygen/General/src/introduction.md#structure) ## Other related GitHub repositories @@ -50,7 +51,7 @@ To build a complete CMSIS pack for installation the following additional tools a Using these tools, you can generate on a Windows PC: -- **CMSIS Documentation** using the shell script **gen_doc.sh** (located in ./CMSIS/DoxyGen). +- **CMSIS Documentation** using the shell script **gen_doc.sh** (located in ./CMSIS/Documentation/Doxygen). - **CMSIS Software Pack** using the shell script **gen_pack.sh**. ## License diff --git a/gen_pack.sh b/gen_pack.sh index e2ef35316..f10eded95 100755 --- a/gen_pack.sh +++ b/gen_pack.sh @@ -9,7 +9,7 @@ set -o pipefail # Set version of gen pack library # For available versions see https://github.com/Open-CMSIS-Pack/gen-pack/tags. # Use the tag name without the prefix "v", e.g., 0.7.0 -REQUIRED_GEN_PACK_LIB="0.8.3" +REQUIRED_GEN_PACK_LIB="0.8.5" # Set default command line arguments DEFAULT_ARGS=(-c "v") @@ -45,7 +45,10 @@ PACK_BASE_FILES=" # Specify file names to be deleted from pack build directory # Default: empty # -# PACK_DELETE_FILES="" +PACK_DELETE_FILES=" + CMSIS/Documentation/Doxygen + CMSIS/Documentation/README.md +" # Specify patches to be applied # Default: empty @@ -80,7 +83,7 @@ PACK_CHANGELOG_MODE="tag" function preprocess() { # add custom steps here to be executed # before populating the pack build folder - ./CMSIS/DoxyGen/gen_doc.sh + ./CMSIS/Documentation/Doxygen/gen_doc.sh return 0 }