This library provides C++ functionallity which is used to communicate with different types of memories to test them according to PUF behavior. There exists wrappers for all device specific functions like initialization functions for interfaces like UART or SPI. It is also possible to dynamically add memory modules to the library.
- Run ./compile_fw_STM32F4.sh to build for a STM32F4 board
- The
- Check this official post about STM32CubeMX projects in CLion (Do not need the OpenOCD + STM32CubeMX plugin).
- Git clone this project.
- Open(file --> Open...) this project in CLion
- Add ocd debug
- Go to Run/Debug Configuration
- Add New OpenOCD Download & Run
- Select Target memory_control_fw.elf
- Select Executable memory_control_fw.elf
- Select Board Config File (stm32f429disc1.cfg in this project)
- Select Download Always
- Select Reset Halt
- Change Cmake options
- Go to File → Settings → Build, Execution, Deployment → Cmake
- Add
-DBoardName="stm32f429" -DBoardClass=STM32F4 -DCPU=cortex-m4 -DFPUType=hard -DFPUSpecification=fpv4-sp-d16 -Dspecs=rdimon.specs
to Cmake options → click Apply and Ok
- Build & Debug (test with flash_leds function in gpio.c file).
- add git submoudle, run
git submodule add git@git.fim.uni-passau.de:frankfl/stm_measurement_firmware.git
- change submodule branch to CXX_implementation, edit .gitmodules file
[submodule "stm_measurement_firmware"]
path = stm_measurement_firmware
url = git@git.fim.uni-passau.de:frankfl/stm_measurement_firmware.git
branch = CXX_implementation
- update git submodule, run
git submodule update --remote
- add the following part to your CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
# IMPORTANT: set DEP_ROOT_DIR to access cmake files
set(DEP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/stm_measurement_firmware)
include(${DEP_ROOT_DIR}/settings.cmake)
include(${DEP_ROOT_DIR}/cmake/device_specific_defines.cmake)
include(${DEP_ROOT_DIR}/cmake/file_list.cmake)
# IMPORTANT: project must be after includes
project(you_project CXX C ASM)
add_executable(you_project.elf main.cpp ${ProjectFiles} ${MiddlewareFiles} ${DriverFiles} ${StartUpFile})
target_include_directories(you_project.elf PUBLIC ${include_dirs})


