Skip to content

The Core is highly configurable, straightforward C++ embedded framework with minimum set of development dependencies.

License

LGPL-3.0 and 2 other licenses found

Licenses found

LGPL-3.0
LICENSE
GPL-3.0
COPYING
LGPL-3.0
COPYING.LESSER
Notifications You must be signed in to change notification settings

vadimol/theCore

 
 

Build Status Join the chat at https://gitter.im/forGGe/theCore

Description

theCore is highly configurable and straightforward C++ framework aimed to reduce development efforts for embedded applications. The main idea of theCore is to make as much as possible in the compile time. This affects the way how the device drivers and peripherals are represented. In fact, each driver is the template class that is instantiated with all the dependencies in a distinct type by user of theCore in the compile time.

You can check out more directly in the code of the SPI driver or the USART bus.

The project is at the initial stage. But something is already in there:

  • CMake-based build-system
  • Dependency management through nix
  • Unit tests using CppUTest
  • Filesystem Petite FAT
  • Thread, allocators, devices abstractions
  • Platform-level drivers, the IRQ manager, console, startup code
  • Useful libraries
  • Doxygen documentation

Getting started

If you are interested in the simplest, ready-made demo project based on theCore, refer to the blinky example project.

You may also check examples within theCore source tree.

In order to proceed with theCore itself, start cloning this repository:

git clone https://github.com/forGGe/theCore.git
cd theCore
git checkout master # Stable branch
git submodule update --init --recursive

When the code is received, you have to download and install all the dependencies. The process can take some time. To make it easier, I’d strongly recommend to download and install nix. The installation guide can be found on the official website or Domenkozar's blog.

After nix installation, run:

nix-shell --pure
...

Examples

Examples reside in the examples dir. Each example contains instructions how to compile and use the example.

To build all examples at once you can use nix and specially crafted superproject. To do that, enter the nix shell and proceed as follows.

cd examples
mkdir build
cd build
cmake ..
make

Resulting binaries will be placed under corresponding directories. I.e. the cs43l22 example if built that way, will be placed under build/stm32f4_cs43l22_audio-prefix/src/stm32f4_cs43l22_audio-build/ directory. You can refer to the external project CMake documetation and the superproject CMake list file to figure out where binaries will be placed. Instructions describing how to flash binary onto the device placed in the readme file inside each example.

Unit tests

theCore's unit tests can be built and run on the host machine. For this you have to run the nix-shell and trigger a build:

cd /path/to/the/core
nix-shell . --pure
mkdir build
cd build
cmake ..
make

Then, you should run the unit tests:

ctest . --output-on-failure

On-device tests

theCore comes with tests that can be executed on the device itself. Refer to the theCore testing documentation to figure out how to build, use and manage on-device theCore tests. To build all tests, enter the nix shell and proceed as follows:

cd tests
mkdir build
cd build
cmake ..
make

Supported platforms

Short name Full name List of supported MCUs Path in project
stm32f4xx STM32 F4 series STM32F407VG stm32 multiplatform
stm32l1xx STM32 L1 series STM32L152RE stm32 multiplatform
tm4c Texas Instrument TM4C TM4C123GH6PM platform/tm4c
host Host platform - platform/host

Documentation

The current documentation of theCore is completely stated in the code (as doxygen comments). To generate the HTML pages from Doxygen is quite enough to run:

make core_doc

in the build directory (see unit tests section).

License

The source code is distributed under LGPL v3.0 License.

Contribution & Using

The project is on its very beginning, so any help is more than welcome and highly appreciated. If you'd like to take a part in the project growth and (or) have any questions – feel free to email me at forgge@gmail.com, leave message at gitter or simply check out a list of issues. If you have any suggestions on theCore improvement or just like it how it is, don’t keep silence! I’ll be happy to read your reviews.

When making pull requests, make sure that code conforms to theCore code style guide.

You are welcome to use theCore in your own projects. If there is something that it’s not enough for this, please let me know via email or open some issues and we will do our best to handle this ASAP. Good luck!

About

The Core is highly configurable, straightforward C++ embedded framework with minimum set of development dependencies.

Resources

License

LGPL-3.0 and 2 other licenses found

Licenses found

LGPL-3.0
LICENSE
GPL-3.0
COPYING
LGPL-3.0
COPYING.LESSER

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 68.4%
  • C++ 26.8%
  • CMake 4.0%
  • Assembly 0.4%
  • Python 0.3%
  • Nix 0.1%