You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .ci/README.md
+1-3Lines changed: 1 addition & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,9 @@
1
1
# Continuous Integration (CI) test for csolution-examples
2
2
3
-
4
3
Content of `.ci` Directory | Description
5
4
:----------------------------|:-----------------
6
5
`vcpkg-configuration.json` | Tool setup for the CI test.
7
6
8
-
9
7
## GitHub Action Workflows
10
8
11
9
The [**`GitHub Actions`**](https://docs.github.com/en/actions) in the directory `.github/workflows` are the scripts for the CI tests. These scripts contain detailed comments about each step that is executed.
@@ -17,4 +15,4 @@ Projects in the Arm csolution-examples uses the **`ARM compiler (AC6)`** as well
17
15
18
16
-**`SimpleTZ-CI.yml`** implements build tests for a **`TrustZone`** based project by using the **`AC6`** and **`GCC`** toolchains. The execution tests runs on [**`Arm Virtual Hardware - Fixed Virtual Platforms (AVH FVP)`**](https://arm-software.github.io/AVH/main/simulation/html/index.html) simulation models. The directory **`FVP`** contains configuration files for the **`FVP simulation models`**.
19
17
20
-
-**`CubeMX-CI.yml`** implements a build test for a **`CubeMX`** generated project by using only the **`AC6`** toolchain. The output of this build test is stored as artifact and can be downloaded.
18
+
-**`CubeMX-CI.yml`** implements a build test for a **`CubeMX`** generated project by using only the **`AC6`** toolchain.
This project shows the usage of CubeMX. Refer to the documentation chapter
4
-
[**CMSIS-Toolbox > Configure STM32 Devices with CubeMX**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/tree/main/docs/CubeMX.md) for details.
3
+
This *csolution project* shows the usage of [STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html) which uses a [generator import file](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/YML-CBuild-Format.md#generator-import-file) to obtain the device configuration and HAL driver source files.
4
+
5
+
This project uses two different target-types to configure execution from Flash ROM or execution from RAM. It uses a [variable](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/YML-Input-Format.md#variables) to define the regions header file for each target in the file [`CubeMX.csolution.yml`](./CubeMX.csolution.yml).
5
6
6
7
## Prerequisites
7
8
8
9
### Tools
9
10
10
-
-[CMSIS-Toolbox 2.3.0](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases) or higher
11
-
-[Keil MDK 5.37](https://www2.keil.com/mdk5/) or higher
11
+
-[CMSIS-Toolbox 2.6.0](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases) or higher
12
+
-[Keil MDK 5.40](https://www2.keil.com/mdk5/) or higher
12
13
-[STM32CubeMX 6.11](https://www.st.com/en/development-tools/stm32cubemx.html) or higher
13
14
14
-
>**Note:** later versions will also compile with GCC.
15
+
>**Note:**
16
+
>
17
+
> This example uses the Arm Compiler 6 (AC6). [Using GCC Compiler](#using-gcc-compiler) explains how to configure for different compiler. A similar process also works for IAR.
15
18
16
19
### Packs
17
20
18
-
- Required packs are listed in the file [`CubeMX.csolution.yml`](./CubeMX.csolution.yml) and [`CubeMX.cproject.yml`](./CubeMX.cproject.yml)
21
+
- Required packs are listed in the file [`CubeMX.csolution.yml`](./CubeMX.csolution.yml)
22
+
23
+
## Build Project
19
24
20
-
DFP and BSP development packs are available here [github.com/Open-CMSIS-Pack/pack-examples](https://github.com/Open-CMSIS-Pack/pack-examples). Clone the repo to `<working-dir>` and install the packs by executing:
25
+
This command builds the project and downloads missing packs. If the file `CubeMX.cbuild-set.yml` is missing it creates this file with the context-set selection of the first `target-type` and the first `build-type`.
The source code generated by CubeMX is imported using the file [STM32CubeMX\<target-type>\CubeMX.cgen.yml](./STM32CubeMX/MyBoard_ROM/CubeMX.cgen.yml). This allows you to create different settings for each target, for example evaluation board and custom hardware.
43
43
44
-
>**Note:** During the build process required packs may be downloaded.
44
+
>**Note:**
45
+
>
46
+
> Refer to the pack overview page, for example the [STM32F4_DFP](https://www.keil.arm.com/packs/stm32f4xx_dfp-keil) for information on how to use an IDE workflow with CubeMX.
45
47
46
48
## Execute Project
47
49
48
50
You may use the debugger of choice for executing this program.
51
+
52
+
## Using GCC Compiler
53
+
54
+
By default this project is the Arm Compiler 6 (AC6). Using STM32CubeMX it can be reconfigured for the GCC or IAR compiler. To configure it for the GCC compiler execute these steps:
55
+
56
+
- In the file [`CubeMX.csolution.yml`](./CubeMX.csolution.yml) set `compiler: GCC`.
57
+
58
+
- Launch the STM32CubeMX generator with this CMSIS-Toolbox command: csolution <solution_name>.csolution.yml run -g CubeMX -c <context>
59
+
60
+
- In STM32CubeMX:
61
+
- Open from the menu Project Manager - Project - Toolchain/IDE:
62
+
- Select STM32CubeIDE and disable Generate Under Root.
63
+
- Click GENERATE CODE to recreate the CubeMX generated files for the GCC compiler.
64
+
65
+
In the file [CubeMX.cproject.yml](./CubeMX.cproject.yml), update `linker:` node configuration to reference appropriate [GCC linker script template](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/build-overview.md#linker-script-templates). You may customize this GCC linker script template file to your project's requirements.
66
+
67
+
[Rebuild the project](#build-project) using the CMSIS-Toolbox command `cbuild` with the option `--rebuild`.
Copy file name to clipboardExpand all lines: Hello/README.md
+19-12Lines changed: 19 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,13 +9,11 @@ This project prints "Hello World" and a counter value via the UART output. It is
9
9
-[CMSIS-Toolbox 2.6.0](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases) or higher
10
10
- Arm Compiler 6.22 or higher
11
11
- GCC Compiler 13.2.1 or higher
12
-
- Arm Virtual Hardware for Corstone-300 v11.26.11
13
-
14
-
All these tools can be installed via [vcpkg](https://learn.arm.com/learning-paths/microcontrollers/vcpkg-tool-installation/)
12
+
- Arm Virtual Hardware for Corstone-300 v11.26.11 or higher
15
13
16
14
### Packs
17
15
18
-
- Required packs are listed in the file [`Hello.csolution.yml`](./Hello.csolution.yml)
16
+
- Required packs are listed in the file [`Hello.csolution.yml`](./Hello.csolution.yml). The file [`Hello.cbuild-pack.yml`](./Hello.cbuild-pack.yml) records the versions that have been used to generate the application.
19
17
20
18
## Project Structure
21
19
@@ -24,10 +22,14 @@ The project is generated using the [CMSIS-Toolbox](https://github.com/Open-CMSIS
24
22
-[`Hello.csolution.yml`](./Hello.csolution.yml) lists the required packs, defines,hardware targets, and thebuild-types (along with the compiler).
25
23
-[`Hello.cproject.yml`](./Hello.cproject.yml) defines the source files and the software components.
>**Note:** During the build process required packs may be downloaded.
@@ -37,16 +39,21 @@ The project is generated using the [CMSIS-Toolbox](https://github.com/Open-CMSIS
37
39
The project is configured for execution on [**Arm Virtual Hardware**](https://developer.arm.com/Tools%20and%20Software/Arm%20Virtual%20Hardware) which removes the requirement for a physical hardware board.
38
40
39
41
### Execute this project via command line
42
+
40
43
#### For debug type
41
-
```txt
42
-
> FVP_Corstone_SSE-300 -f FVP/FVP_Corstone_SSE-300/fvp-config.txt -a ./out/Debug/Hello.axf
43
-
```
44
+
45
+
```bash
46
+
> FVP_Corstone_SSE-300 -f FVP/FVP_Corstone_SSE-300/fvp-config.txt -a ./out/Debug/Hello.axf
47
+
```
48
+
44
49
#### For release type
45
-
```txt
46
-
> FVP_Corstone_SSE-300 -f FVP/FVP_Corstone_SSE-300/fvp-config.txt -a ./out/Release/Hello.axf
47
-
```
50
+
51
+
```bash
52
+
> FVP_Corstone_SSE-300 -f FVP/FVP_Corstone_SSE-300/fvp-config.txt -a ./out/Release/Hello.axf
53
+
```
48
54
49
55
### Execute this project in [**Keil Studio Cloud**](https://studio.keil.arm.com/)
56
+
50
57
- Keil Studio Cloud integrates also the Arm Virtual Hardware for FVP_Corstone_SSE-300/_Ethos-U55/_Ethos-U65 models. The steps to use the example are:
51
58
- Start [Keil Studio Cloud](https://studio.keil.arm.com/) and login to the system using your account.
52
59
- Use **File - Clone** and enter the URL: (https://github.com/Open-CMSIS-Pack/csolution-examples).
[](/.github/workflows/Hello-CI.yml)
3
3
[](/.github/workflows/DualCore-CI.yml)
4
4
[](/.github/workflows/CubeMX-CI.yml)
5
5
[](/.github/workflows/SimpleTZ-CI.yml)
6
6
7
-
# CMSIS-Toolbox Examples in `csolution` project format
7
+
# CMSIS-Toolbox Examples in *csolution project format*
8
8
9
-
This is a collection of [CMSIS-Toolbox](https://github.com/Open-CMSIS-Pack/cmsis-toolbox) project examples using the [`csolution` project format](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/YML-Input-Format.md) utility. The project files are provided for experimentation, exploration and education purposes.
9
+
This is a collection of [CMSIS-Toolbox](https://github.com/Open-CMSIS-Pack/cmsis-toolbox) project examples in [*csolution project format*](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/YML-Input-Format.md). The project examples are provided for experimentation, exploration and education purposes.
10
10
11
-
> **Note:** These examples use **CMSIS-Toolbox 2.6.0** or higher.
12
-
>
13
-
> Refer to [**Installation of the CMSIS-Toolbox**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/installation.md) for information how to setup an environment.
11
+
## Tool Requirements
12
+
13
+
The examples use **CMSIS-Toolbox 2.6.0** or higher and require additional tools such as CMake, Ninja, Arm Compiler 6, GCC Compiler, and Arm Fixed Virtual Platforms (AVH-FVP).
14
+
15
+
Refer to [**Installation of the CMSIS-Toolbox**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/installation.md) for information on the setup of a development environment with these tools.
16
+
17
+
When using VS Code with the [Arm Environment Manager](https://marketplace.visualstudio.com/items?itemName=Arm.environment-manager) the required tools are installed based on the settings in the file [`vcpkg-configuration.json`](./vcpkg-configuration.json) using the [Arm Tools Artifactory](https://artifacts.tools.arm.com/).
[CubeMX](./CubeMX) | Project that uses [STM32Cube](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/tree/main/docs/CubeMX.md) as generator for device configuration.
25
+
[Hello](./Hello) | A simple project to get started. Requires no hardware as it runs on [AVH-FVP](https://github.com/ARM-software/AVH) simulation models.
26
+
[DualCore](./DualCore) | Application with multiple processors that runs on the [NXP FRDM-K32L3A6](https://www.keil.arm.com/boards/nxp-frdm-k32l3a6-989d2e5/projects/) board.
27
+
[SimpleTrustZone](./SimpleTrustZone) | Simple TrustZone example that shows the concept of secure and non-secure projects. Runs on [AVH-FVP](https://github.com/ARM-software/AVH) simulation models.
28
+
[CubeMX](./CubeMX) | Project that uses [STM32Cube](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/tree/main/docs/CubeMX.md) for device configuration and contains a RAM and ROM target.
29
+
30
+
Each *csolution project* example shows different aspects of the CMSIS-Toolbox. For example, the [CubeMX](./CubeMX)*csolution project* contains two targets that show RAM and ROM execution.
25
31
26
32
## Build Projects
27
33
@@ -37,12 +43,18 @@ The project files contain a list of software packs that are used. When using th
The directory [Templates](./Templates) may be used as starting point for different types of embedded applications: simple single core, multi-core, TrustZone, and unit test.
49
+
50
+
## GitHub Action Workflows
51
+
52
+
The directory [.ci](./.ci) contains the required setup for the Continuous Integration (CI) test of these examples with [GitHub action](./.github) workflows. The tools are downloaded from the [Arm Tools Artifactory](https://artifacts.tools.arm.com/). The test results are available in the [*Actions*](/../../actions) view.
[Hello](./Hello) | A simple project to get started
45
-
[AWS_MQTT_MutualAuth_Demo](https://github.com/Open-CMSIS-Pack/AWS_MQTT_MutualAuth_SW_Framework) | MQTT demo that uses layers for re-targeting to different physical boards
46
-
[Arm TrustZone Demo](https://github.com/MDK-Packs/TrustZone) | Example that uses TF-M and Bootloader for firmware update. Runs on [STM32U5 board](https://www.st.com/en/evaluation-tools/b-u585i-iot02a.html) or [AVH](https://avh.arm.com/)
47
-
48
-
>**Note:** The examples may require additional tools. Refer to the instructions for each example to install the required toolchain.
58
+
[github.com/Arm-Examples](https://github.com/Arm-Examples) | A collection of several example projects
59
+
[AWS_MQTT_MutualAuth_Demo](https://github.com/Open-CMSIS-Pack/AWS_MQTT_MutualAuth_SW_Framework) | MQTT demo that uses layers for re-targeting to different physical boards
60
+
[AVH_CI_Template](https://github.com/Arm-Examples/AVH_CI_Template) | CI Template for unit test automation that uses [GitHub Actions](https://github.com/features/actions)
Copy file name to clipboardExpand all lines: SimpleTrustZone/README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,8 +42,10 @@ The project is generated using the [CMSIS-Toolbox](https://github.com/Open-CMSIS
42
42
43
43
## Generate the project binaries
44
44
45
+
Note that the file [SimpleTZ.cbuild-set.yml](./SimpleTZ.cbuild-set.yml) contains the selected [context set](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/build-overview.md#working-with-context-set) for the application.
0 commit comments