update README
This commit is contained in:
parent
cfa3e8e80c
commit
117b9c220f
197
README.md
197
README.md
@ -1,4 +1,4 @@
|
||||
<img align="center" src="https://egit.irs.uni-stuttgart.de/fsfw/fsfw/raw/branch/mueller/master/misc/logo/FSFW_Logo_V3_bw.png" width="50%">
|
||||
<img align="center" src="https://egit.irs.uni-stuttgart.de/fsfw/fsfw/raw/branch/development/misc/logo/FSFW_Logo_V3_bw.png" width="50%">
|
||||
|
||||
# <a id="top"></a> <a name="linux"></a> FSFW Example Application
|
||||
|
||||
@ -54,17 +54,22 @@ as long as OpenOCD integration is given. The example demo uses newlib nano (glib
|
||||
Some system calls were overriden so the C and C++ stdio functions work. IO is sent via the HUART3,
|
||||
so debug output can be read directly from the USB connection to the board.
|
||||
|
||||
## Prerequisite
|
||||
## Prerequisites
|
||||
|
||||
1. [MinGW64](https://www.msys2.org/) or [Ninja Build](https://ninja-build.org/) installed on Windows.
|
||||
Not required on Linux.
|
||||
2. [GNU ARM Toolchain](https://xpack.github.io/arm-none-eabi-gcc/install/) installed, recommended
|
||||
to add binaries to system path.
|
||||
3. Recommended for application code development:
|
||||
If you have not set up the prerequisites yet, go to the [prerequisites chapter](#prereq) for
|
||||
detailed instructions on how to install these.
|
||||
|
||||
Here is a brief overview of the required tools to develop software for the STM32H7 microcontroller:
|
||||
|
||||
1. CMake build system generator installed
|
||||
2. Build system like [Ninja Build](https://ninja-build.org/) or [Make](https://www.msys2.org/)
|
||||
installed.
|
||||
3. Bare-Metal ARM toolchain installed
|
||||
4. Recommended for application code development:
|
||||
[Eclipse for C/C++](https://www.eclipse.org/downloads/packages/) installed with the Eclipse MCU
|
||||
plugin
|
||||
4. [OpenOCD](https://xpack.github.io/openocd/) installed for Eclipse debugging
|
||||
5. STM32 USB drivers installed, separate steps for
|
||||
5. [OpenOCD](https://xpack.github.io/openocd/) installed for Eclipse debugging
|
||||
6. STM32 USB drivers installed, separate steps for
|
||||
[Windows](https://www.st.com/en/development-tools/stsw-link009.html) or
|
||||
[Linux](https://fishpepper.de/2016/09/16/installing-using-st-link-v2-to-flash-stm32-on-linux/)
|
||||
|
||||
@ -131,79 +136,143 @@ after installing MSYS2 or inside another Unix shell like `git bash`.
|
||||
The debug output is also sent via the connected USB port and a blink pattern (1 second interval)
|
||||
can be used to verify the software is running properly.
|
||||
|
||||
## Setting up the prerequisites
|
||||
## <a name="prereq"></a> Setting up Prerequisites
|
||||
|
||||
### Windows
|
||||
### CMake
|
||||
|
||||
It is recommended to install [MSYS2](https://www.msys2.org/) first.
|
||||
Open MinGW64 and run the following commands to update it and install make and cmake
|
||||
(replace x86_64 if compiling on different architecture):
|
||||
**Linux**
|
||||
|
||||
```sh
|
||||
pacman -Syu
|
||||
sudo apt-get install cmake
|
||||
```
|
||||
|
||||
```sh
|
||||
pacman -S mingw-w64-x86_64-make mingw-w64-x86_64-cmake
|
||||
```
|
||||
**Windows**
|
||||
|
||||
Alternatively, you can install [Ninja Build](https://ninja-build.org/), but you need
|
||||
to add the folder containing the `ninja.exe` executable to the system path so you
|
||||
can run `ninja -v` from the command line. If you do this, you can also use
|
||||
`git bash` or the Windows command lines with the CMake Ninja generator
|
||||
to build the software.
|
||||
On Windows, you can use `pacman -S mingw-w64-x86_64-cmake`, but you can also install the Windows
|
||||
CMake via the [installer](https://cmake.org/download/). It is recommended to pick the install
|
||||
option `Add CMake to system PATH for all users` to CMake can be used from the command line.
|
||||
Please note that you need to add the Windows CMake path to the MinGW64 path manually
|
||||
if you want to use it in CMake.
|
||||
|
||||
The code needs to be cross-compiled for the ARM target system and we will use the
|
||||
[GNU ARM Toolchain](https://xpack.github.io/arm-none-eabi-gcc/install/).
|
||||
### Cross-Compiler
|
||||
|
||||
1. Install NodeJS LTS. Add nodejs folder (e.g. "C:\Program Files\nodejs\")
|
||||
to system variables. Test by running `npm --version` in command line
|
||||
2. Install [XPM](https://www.npmjs.com/package/xpm)
|
||||
```sh
|
||||
npm install --global xpm
|
||||
```
|
||||
|
||||
3. Install gnu-arm Toolchain for Eclipse (version can be specified)
|
||||
```sh
|
||||
xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest
|
||||
```
|
||||
|
||||
`xpm` will display where the package was installed. Search in that path for
|
||||
the hidden `.content` folder, which will contain a `bin` folder and store
|
||||
the full path to that `bin` folder for later.
|
||||
|
||||
Install OpenOCD for STM32 debugging
|
||||
```sh
|
||||
xpm install --global @xpack-dev-tools/openocd@latest
|
||||
```
|
||||
|
||||
4. If you want to build from the command line, you need to add the `arm-none-eabi-gcc`
|
||||
binary location in the xPack folder to system variables. You can do this in a Unix
|
||||
shell like `git bash` or `MinGW64` with the following command
|
||||
|
||||
```sh
|
||||
export PATH=$PATH:"<pathToToolchain>"
|
||||
```
|
||||
|
||||
You can also add these lines to a shell script like `path_setter.sh` and then source
|
||||
the script with `. path_setter.sh` to do this conveniently. You can test whether
|
||||
the path was set up properly by running `arm-none-eabi-gcc -v`
|
||||
|
||||
5. Install the [STM32 USB drivers](https://www.st.com/en/development-tools/stsw-link009.html)
|
||||
The instuctions here specify how to install and use a specific version of the xPacks cross-compiler
|
||||
but you can use any other ARM cross-compiler which can generate bare-metal code, usually denoted by
|
||||
the `arm-none-eabi` cross-compiler triplet.
|
||||
|
||||
If you don't want to install nodejs you may go with the
|
||||
[four-command manual installation](https://xpack.github.io/arm-none-eabi-gcc/install/#manual-install).
|
||||
|
||||
### Linux
|
||||
**Windows**
|
||||
|
||||
Install the [GNU ARM toolchain](https://xpack.github.io/arm-none-eabi-gcc/install/)
|
||||
like explained above.
|
||||
On Windows, it is recommended to perform the `xpm` and toolchain installation from the Windows
|
||||
command line.The simple way required npm, which can be installed by installing
|
||||
[NodeJS](https://nodejs.org/en/). Make sure `npm` can be run from the command line by adding
|
||||
the folder containing `npm.exe` to the system path and running the following command
|
||||
|
||||
To install general buildtools for the linux binary, run:
|
||||
```sh
|
||||
sudo apt-get install build-essential
|
||||
npm install --global xpm@latest
|
||||
xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@10.3.1-2.3.1 --verbose
|
||||
```
|
||||
|
||||
On Windows, the toolchain binaries will be located in a folder like this
|
||||
|
||||
```sh
|
||||
C:\Users\<User>\AppData\Roaming\xPacks\@xpack-dev-tools\arm-none-eabi-gcc\<version>\.content\bin
|
||||
```
|
||||
|
||||
You can now run the following commands in the repository root:
|
||||
|
||||
```sh
|
||||
xpm init
|
||||
xpm install @xpack-dev-tools/arm-none-eabi-gcc@10.3.1-2.3.1
|
||||
```
|
||||
|
||||
to create symlinks to the toolchain in `./xpacks/.bin`.
|
||||
You can now set up the environment by using `. load_path.sh` or the following command
|
||||
|
||||
```sh
|
||||
export PATH="$(pwd)/xpacks/.bin":$PATH
|
||||
```
|
||||
|
||||
On Windows, you can use the graphical system environmental variables editor to add the
|
||||
`.bin` path to the system variables permanently or use the appriate command for `CMD` or
|
||||
PowerShell to update the `PATH`
|
||||
|
||||
|
||||
**Linux**
|
||||
|
||||
Install `npm` and `nodejs` first. Example for Ubuntu according to
|
||||
[this guide](https://linuxize.com/post/how-to-install-node-js-on-ubuntu-20-04/).
|
||||
|
||||
```sh
|
||||
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
|
||||
sudo apt-get update && sudo apt-get install nodejs
|
||||
```
|
||||
|
||||
Check that `npm` is installed with `npm --version`.
|
||||
Then `xpm` and the cross-compiler are installed.
|
||||
|
||||
```sh
|
||||
sudo npm install --global xpm@latest
|
||||
xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@10.3.1-2.3.1 --verbose
|
||||
```
|
||||
|
||||
You can now run the following commands in the repository root:
|
||||
|
||||
```sh
|
||||
xpm init
|
||||
xpm install @xpack-dev-tools/arm-none-eabi-gcc@10.3.1-2.3.1
|
||||
```
|
||||
|
||||
to create symlinks to the toolchain in `./xpacks/.bin`.
|
||||
You can now set up the environment by using `. load_path.sh` or the following command
|
||||
|
||||
```sh
|
||||
export PATH="$(pwd)/xpacks/.bin":$PATH
|
||||
```
|
||||
|
||||
### Build System
|
||||
|
||||
It is recommended to use `ninja` or `make` as the software build system.
|
||||
|
||||
**Windows**
|
||||
|
||||
It is recommended to use the [Ninja build system](https://ninja-build.org/). Download the ninja
|
||||
executable and place it somewhere.
|
||||
You need to add the folder containing the ninja executable to the system environmental variables
|
||||
so it can be used in the build process. You can test whether `ninja` works by running
|
||||
`ninja --version` in the command line.
|
||||
|
||||
Alternatively or additionally, you can also install `mingw32-make`
|
||||
which comes bundled with [MinGW64](https://www.msys2.org/). Make sure to add the binaries path to
|
||||
the Windows path during installation. Otherwise, you need to add `msys64/mingw64/bin` to the
|
||||
Windows path so you can run installed binaries from the command line.
|
||||
Open the `MinGW64` shell and run the following commands.
|
||||
|
||||
```sh
|
||||
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-make mingw-w64-x86_64-cmake
|
||||
```
|
||||
|
||||
You can test successfull installation with `mingw32-make -v` from the Windows Command Line.
|
||||
|
||||
**Linux**
|
||||
|
||||
On Linux, `make` is pre-installed and it is recommended to use it directly.
|
||||
You can install `ninja` with
|
||||
|
||||
```sh
|
||||
sudo apt-get install ninja-build
|
||||
```
|
||||
|
||||
### USB Drivers
|
||||
|
||||
**Windows**
|
||||
|
||||
Install the [STM32 USB drivers](https://www.st.com/en/development-tools/stsw-link009.html).
|
||||
|
||||
**Linux**
|
||||
|
||||
Install the [USB drivers](https://github.com/stlink-org/stlink) on Linux.
|
||||
On Ubuntu, you can run the following command to install it:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user