Experimental feature with unstable API! Don't use it, except you want to experiment and you are prepared for severe bugs and other limitations.
As of MDD v1.6.0, only the STM32F4-Discovery board is supported. The code can easily be extended, but requires checking the data sheets in order to write to the correct bits.
So far only known to work with OpenModelica's ExperimentalEmbeddedC code generation. However, in principle it should work similarly with other (low foot-print) code generators.
OpenModelica v1.12.0 includes an experimental code generator for low foot-print code. The code generator supports a subset of the Modelica language which will be extended in future versions. The current version is capable of translating the examples in the subpackages, but it is not as automated (no generation of Makefiles). For the examples within package Examples.STM32F4_Discovery corresponding build scripts and Makefiles are shipped with this library. They can be found below the library's Resources subfolder (Resources/Scripts/OpenModelica/EmbeddedTargets/STM32F4/Examples/STM32F4_Discovery). These scripts and Makefiles have only be tested using Linux as the host system.
Following packages are required:
sudo aptitude install arm-none-eabi-gcc sudo aptitude installarm-none-eabi-gdb sudo aptitude install arm-none-eabi-binutils sudo aptitude install openocd
Following packages are required (tested version 16.04.4 LTS):
sudo apt-get install gdb-arm-none-eabi
(should automatically also install binutils-arm-none-eabi and gcc-arm-none-eabi).
Using Ubuntu Linux 14.04.5 LTS with the default repository packages was not successful. Instead follow the installation guide lines in doc.
Download STM32F4CUBE from STM43F4CUBE and unpack to folder of your choice. Set environment variable pointing to the STM32F4 HAL package:
export STM23F4CUBEROOT=/path/to/STM32Cube_FW_F4_V1.XX.X
Go to the directory Script and Makefile Directory. Call "make" When successful, all object code will be in the "Debug" directory and ".elf" and ".hex" file will be created in the current directory.
There are several options how this can be done, e.g., using gdb or using openocd.
First set up stlink:
sudo apt-get install git libusb-1.0.0-dev pkg-config autotools-dev git clone https://github.com/texane/stlink.git mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make sudo make install # Reload udev rules or reboot system: sudo udevadm control --reload-rules sudo udevadm trigger
Now do:
sudo st-util
Check the port which opened (default for me: 4242). Start the debugger:
sudo arm-none-eabi-gdb
In the debugger console enter:
target remote localhost:4242 monitor reset halt file Blink_main.elf load monitor reset continue
openocd -f /usr/share/openocd/scripts/board/stm32f4discovery.cfg
In a new console open a telnet terminal:
telnet localhost 4444
In the telnet terminal enter:
> reset halt > flash write_image erase Blink_main.hex > reset run
Name | Description |
---|---|
Blocks | |
Functions | |
Constants | |
Types | |
Examples |