diff --git a/documentation/doxygen/src/images/blocks.pptx b/documentation/doxygen/src/images/blocks.pptx index c005bd3..f034678 100644 Binary files a/documentation/doxygen/src/images/blocks.pptx and b/documentation/doxygen/src/images/blocks.pptx differ diff --git a/documentation/doxygen/src/images/component-selection.png b/documentation/doxygen/src/images/component-selection.png index 3c223d1..07e8456 100644 Binary files a/documentation/doxygen/src/images/component-selection.png and b/documentation/doxygen/src/images/component-selection.png differ diff --git a/documentation/doxygen/src/images/retarget_io_std.png b/documentation/doxygen/src/images/retarget_io_std.png index 1328245..f208d2f 100644 Binary files a/documentation/doxygen/src/images/retarget_io_std.png and b/documentation/doxygen/src/images/retarget_io_std.png differ diff --git a/documentation/doxygen/src/images/stdio_evr_components.png b/documentation/doxygen/src/images/stdio_evr_components.png new file mode 100644 index 0000000..ddf1bbd Binary files /dev/null and b/documentation/doxygen/src/images/stdio_evr_components.png differ diff --git a/documentation/doxygen/src/images/stdio_evr_pack.png b/documentation/doxygen/src/images/stdio_evr_pack.png new file mode 100644 index 0000000..78ee729 Binary files /dev/null and b/documentation/doxygen/src/images/stdio_evr_pack.png differ diff --git a/documentation/doxygen/src/images/stdio_rtt_components.png b/documentation/doxygen/src/images/stdio_rtt_components.png new file mode 100644 index 0000000..4ce5a9f Binary files /dev/null and b/documentation/doxygen/src/images/stdio_rtt_components.png differ diff --git a/documentation/doxygen/src/images/stdio_rtt_pack.png b/documentation/doxygen/src/images/stdio_rtt_pack.png new file mode 100644 index 0000000..acad69d Binary files /dev/null and b/documentation/doxygen/src/images/stdio_rtt_pack.png differ diff --git a/documentation/doxygen/src/images/stdio_uart_components.png b/documentation/doxygen/src/images/stdio_uart_components.png new file mode 100644 index 0000000..2c20a47 Binary files /dev/null and b/documentation/doxygen/src/images/stdio_uart_components.png differ diff --git a/documentation/doxygen/src/rt_io.md b/documentation/doxygen/src/rt_io.md index 8d62328..9978275 100644 --- a/documentation/doxygen/src/rt_io.md +++ b/documentation/doxygen/src/rt_io.md @@ -34,13 +34,14 @@ The subcomponent selection allows you to change the target hardware interface of The following subcomponents are available: - Variant | Description -:---------------------|:------------------- -**Breakpoint** | When the I/O stream is used, the application stops with [BKPT](https://developer.arm.com/documentation/100073/latest/The-Arm-C-and-C---Libraries/Support-for-building-an-application-with-the-C-library/Using-the-C-and-C---libraries-with-an-application-in-a-semihosting-environment?lang=en) instruction. No additional code is required. -**Event Recorder** | STDOUT and STDERR can be redirected using the [Event Recorder](https://arm-software.github.io/CMSIS-View/main/evr.html) (especially interesting for targets without ITM (such as Cortex-M0/M0+/M23)). -**ITM** | Use [Instrumentation Trace Macrocell (ITM)](https://developer.arm.com/documentation/ddi0314/h/Instrumentation-Trace-Macrocell?lang=en) for I/O communication via the debugger (only available for Cortex-M3/M4/M7/M33/M55/M85 processors).
Usually, data is shown in a dedicated window.
No additional code is required to output or input data through the ITM channel. However, you have to configure the ITM channel for tracing. -**UART** | Retarget I/O streams to UART. Default implementation variant uses CMSIS-Driver USART. -**Custom** | Retarget I/O stream to a user defined interface (such as custom UART implementation or other application specific interface).
See \subpage custom_subcomponent for further details. + Variant | Description +:------------------|:------------------- +**Breakpoint** | When the I/O stream is used, the application stops with [BKPT](https://developer.arm.com/documentation/100073/latest/The-Arm-C-and-C---Libraries/Support-for-building-an-application-with-the-C-library/Using-the-C-and-C---libraries-with-an-application-in-a-semihosting-environment?lang=en) instruction. No additional code is required. +**Event Recorder** | STDOUT and STDERR can be redirected using the [Event Recorder](https://arm-software.github.io/CMSIS-View/main/evr.html) (especially interesting for targets without ITM (such as Cortex-M0/M0+/M23)). +**ITM** | Use [Instrumentation Trace Macrocell (ITM)](https://developer.arm.com/documentation/ddi0314/h/Instrumentation-Trace-Macrocell?lang=en) for I/O communication via the debugger (only available for Cortex-M3/M4/M7/M33/M55/M85 processors).
Usually, data is shown in a dedicated window.
No additional code is required to output or input data through the ITM channel. However, you have to configure the ITM channel for tracing. +**RTT** | Retarget I/O streams to SEGGER RTT Channel 0. +**UART** | Retarget I/O streams to UART. Default implementation variant uses CMSIS-Driver USART. +**Custom** | Retarget I/O stream to a user defined interface (such as custom UART implementation or other application specific interface).
See \subpage custom_subcomponent for further details. > **Note** diff --git a/documentation/doxygen/src/usage.md b/documentation/doxygen/src/usage.md index e43f6f8..dc0a817 100644 --- a/documentation/doxygen/src/usage.md +++ b/documentation/doxygen/src/usage.md @@ -19,7 +19,7 @@ cpackget add ARM::CMSIS-Compiler Alternatively, you can download the latest version from the [CMSIS-Compiler](https://www.keil.arm.com/packs/cmsis-compiler-arm/versions/) page. -## Component selection and usage +## Component selection 1. In your IDE, open the [Manage software components](https://mdk-packs.github.io/vscode-cmsis-solution-docs/create_app.html#software-components) @@ -27,9 +27,108 @@ Alternatively, you can download the latest version from the 2. If you cannot see the **CMSIS-Compiler** component, select to display **All installed packs**. 3. You must select the component **CMSIS-Compiler::CORE** and at least one additional **API**. + ![Manage software components](./images/component-selection.png) +## Resolve Dependencies {#usage_resolve_dependencies} + +### Using Event Recorder {#usage_evr} + +The **Event Recorder** subcomponent requires the `CMSIS-View::Event Recorder` component from the [CMSIS-View](https://www.keil.arm.com/packs/cmsis-view-arm/) pack. + +1) Install the **CMSIS-View** pack: + + ```sh + cpackget add ARM::CMSIS-View + ``` + +2) In the **Manage Software Components** dialog, select **Software Pack**, then choose **All installed packs** and find and select **ARM::CMSIS-View**. + + ![Select CMSIS-View Pack](./images/stdio_evr_pack.png) + +3) Select the **CMSIS-View::Event Recorder** component. + + ![Select CMSIS-View::Event Recorder Component](./images/stdio_evr_components.png) + +The project yml file should contain: + +```yml +packs: + - pack: ARM::CMSIS-Compiler + - pack: ARM::CMSIS-View +``` + +```yml +components: + - component: CMSIS-Compiler:CORE + - component: CMSIS-Compiler:STDOUT:Event Recorder + - component: CMSIS-View:Event Recorder&DAP +``` + +### Using RTT {#usage_rtt} + +The **RTT** subcomponent requires the `SEGGER::RTT` component from the [SEGGER RTT](https://www.keil.arm.com/packs/rtt-segger/) pack. + +1) Install the **SEGGER RTT** pack: + + ```sh + cpackget add SEGGER::RTT + ``` + +2) In the **Manage Software Components** dialog, select **Software Pack**, then choose **All installed packs** and find and select **SEGGER::RTT**. + + ![Select SEGGER Pack](./images/stdio_rtt_pack.png) + +3) Select the **SEGGER::RTT** component. + + ![Select SEGGER::RTT Component](./images/stdio_rtt_components.png) + +The project yml file should contain: + +```yml +packs: + - pack: ARM::CMSIS-Compiler + - pack: SEGGER::RTT +``` + +```yml +components: + - component: CMSIS-Compiler:CORE + - component: CMSIS-Compiler:STDOUT:RTT + - component: SEGGER:RTT +``` + +### Using UART {#usage_uart} + +The **UART** subcomponent provides default implementation variant **CMSIS** which requires the `CMSIS Driver::USART` implementation, typically provided by a Board Support Pack (BSP) or Device Family Pack (DFP) for the target hardware. + > **Note** > -> Refer to the sections [Low-level I/O](./rt_io.md) and -> [Multithreading Support Retarget](./rt_os.md) for more information about the retargeting options. +> Use the [CMSIS Packs catalog](https://www.keil.arm.com/packs/) to find the appropriate pack for your target hardware. + +1) Install the Board Support Pack (BSP) or Device Family Pack (DFP): + + ```sh + cpackget add Vendor::Pack + ``` + +2) In the **Manage Software Components** dialog, select **Software Pack**, then choose **All installed packs** and find and select installed BSP or DFP. + +3) Select the **CMSIS Driver::USART** component. + + ![Select CMSIS Driver::USART Component](./images/stdio_uart_components.png) + +The project yml file should contain: + +```yml +packs: + - pack: ARM::CMSIS-Compiler + - pack: Vendor::Pack +``` + +```yml +components: + - component: CMSIS-Compiler:CORE + - component: CMSIS-Compiler:STDOUT:UART&CMSIS + - component: CMSIS Driver:USART +``` \ No newline at end of file