Skip to content

Main sPrinter rover control software for STM32F446ZE in c++17

Notifications You must be signed in to change notification settings

xgallom/sprinter

Repository files navigation

Main sPrinter control software

This repository contains the control software of the sPrinter rover, developed by students of the Faculty of Electrical Engineering and Information Technology STU in Bratislava.

While it was previously developed in ac6 System Workbench, we decided to transfer to regain control over our toolchain and transfer to non-managed environment. We currently use cmake and compile with arm-none-eabi-gcc with newlib and c++17.

We generate the initialization via STM CubeMX, and use CLion as our IDE.

Debugging is done via the open source Open OCD debugger. It's pretty cool.

Fuck Eclipse dude, seriously.

Project Structure

  • The root contains the CMakeLists_template.txt, which is used to generate the root CMakeLists on configuration update. There is also the .ld linker script, and the .svd file of the chip for peripheral mapping for the debugger.

  • docs contains markdown sources for documentation, which are used to generate HTML via mdbook. You can browse them in github as markdown, or view the build docs here.

  • startup contains a standard generated loader in assembly, with interrupt vectors and so on.

  • Drivers contains the CMSIS and the STM32F4 HAL Driver, which are used so we don't have to memory map peripheral's ourselves (miss those good old times).

  • Inc / Src contain the generated code which contains some macros and globals, as well as the initialization code.

  • sprinter is where the fun is at. This is our application root, which is linked via the sprinter library to the CubeMX core, via the run() entry point, and has additional specific configuration for our c++17 sources.

    • sprinter is the top-most library, which is linked to the rest of the application. it privately links every other library into itself, and provides the entry point to transfer to cpp land. It also contains the global symbols for the stack protection mechanism.

    • core is the core library, which will eventually contain everything that is cory.

    • There is nothing else at the moment, as I said we are in the process of transfer and rewriting all the code from the stdperiph to HAL.

Documentation

The documentation is available here.

Building requirements

  • cmake >= 3.7
  • arm-none-eabi-binutils
  • arm-none-eabi-gcc
  • arm-none-eabi-newlib
  • open-ocd

Remarks

I guess the sources are pretty useless for you, unless you have a copy of our rover, which you don't! Just kidding, please fund us.

License

I don't actually know how does this academic stuff works, and if we have any license requirements as it was developed as a part of our school project (as if there was anyone putting in money and time except us). So I would release it under the MIT License, but I don't know if I can, so I won't put any on it.

About

Main sPrinter rover control software for STM32F446ZE in c++17

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages