|
1 | 1 | # The Core: C++ Embedded Framework
|
2 | 2 |
|
| 3 | +[](https://travis-ci.org/forGGe/theCore) |
3 | 4 | [](https://gitter.im/forGGe/theCore?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4 | 5 |
|
5 |
| -[](https://travis-ci.org/forGGe/theCore) |
6 | 6 | ## Description
|
7 | 7 |
|
8 |
| -The Core is highly configurable, straightforward C++ framework with minimum |
9 |
| -set of development dependencies. It aimed to reduce development efforts for |
10 |
| -embedded applications. |
| 8 | +The Core is highly configurable, straightforward C++ framework with minimum set of development dependencies. It aimed to reduce development efforts for embedded applications. |
| 9 | +The main idea of The Core 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 The Core in compile-time. |
| 10 | + |
| 11 | +You can check out more directly in the code of [the SPI driver](/blob/master/platform/stm32f4xx/export/platform/spi_bus.hpp) or [the USART bus](/blob/master/platform/stm32f4xx/export/platform/usart_bus.hpp). |
| 12 | + |
| 13 | +The project is at the initial stage. But something is already in there: |
| 14 | +- CMake-based build-system |
| 15 | +- Dependency management through [nix](https://nixos.org/nix/) |
| 16 | +- Unit tests using [CppUTest](http://cpputest.github.io/) |
| 17 | +- Filesystem [Petite FAT](http://elm-chan.org/fsw/ff/00index_p.html) |
| 18 | +- Thread, allocators, devices abstractions |
| 19 | +- Platform-level drivers, the IRQ manager, console, startup code |
| 20 | +- Useful libraries |
| 21 | +- Doxygen documentation |
11 | 22 |
|
12 | 23 | ## Getting started
|
13 |
| -Refer to [the blinky example](https://github.com/forGGe/theCore-blinky) project in order to start developing |
14 |
| -using The Core. |
| 24 | + |
| 25 | +If you are interested in the simplest, ready-made demo project based on The Core, |
| 26 | +refer to [the blinky example project](https://github.com/forGGe/theCore-blinky). |
| 27 | + |
| 28 | +In order to proceed with The Core itself, start cloning this repository: |
| 29 | +``` |
| 30 | +git clone https://github.com/forGGe/theCore.git |
| 31 | +``` |
| 32 | + |
| 33 | +When the code is received, you have to download and install all the dependencies. |
| 34 | +The process can take some time. |
| 35 | +To make it easier, I’d strongly recommend to download and install `nix`. |
| 36 | +The installation guide could be found |
| 37 | +[on the official website](https://nixos.org/nixos/manual/index.html#ch-installation) or |
| 38 | +[Domenkozar's blog](https://www.domenkozar.com/2014/01/02/getting-started-with-nix-package-manager/) |
| 39 | +. |
| 40 | + |
| 41 | +After `nix` installation, run: |
| 42 | +```bash |
| 43 | +nix-shell core --pure |
| 44 | +... |
| 45 | +``` |
| 46 | + |
| 47 | +## Unit tests |
| 48 | + |
| 49 | +The Core's unit tests can be built and run on the host machine. |
| 50 | +For this you have to run the nix-shell and trigger a build: |
| 51 | + |
| 52 | +```bash |
| 53 | +cd /path/to/the/core |
| 54 | +nix-shell . --pure |
| 55 | +mkdir build |
| 56 | +cd build |
| 57 | +cmake .. |
| 58 | +make |
| 59 | +``` |
| 60 | + |
| 61 | +Then, you should run the unit tests: |
| 62 | +```bash |
| 63 | +ctest . --output-on-failure |
| 64 | +``` |
15 | 65 |
|
16 | 66 | ## Supported platforms
|
17 |
| -At this moment only host and stm32f4xx platforms are supported. |
| 67 | + |
| 68 | +Currently, the stm32f4xx platform is supported and available for further development, as well as the host-platform, used for unit tests. |
| 69 | + |
| 70 | +## Documentation |
| 71 | + |
| 72 | +The current documentation of The Core is completely stated in the code (as doxygen comments). To generate the HTML pages from Doxygen is quite enough to run: |
| 73 | + |
| 74 | +```bash |
| 75 | +make core_doc |
| 76 | +``` |
| 77 | + |
| 78 | +in the build directory (see [units](#Unit tests)). |
18 | 79 |
|
19 | 80 | ## License
|
| 81 | + |
20 | 82 | The source code is distributed under LGPL v3.0 License.
|
21 | 83 |
|
22 |
| -**Configuration description, examples and guides are pending.** |
| 84 | + |
| 85 | +## Contribution & Using |
| 86 | + |
| 87 | +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 [email protected], leave message at [gitter ](https://gitter.im/forGGe/theCore) or simply check out [a list of issues ](/issues). If you have any suggestions on The Core improvement or just like it how it is, don’t keep silence! I’ll be happy to read your reviews. |
| 88 | + |
| 89 | +You are welcome to use The Core 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! |
| 90 | + |
0 commit comments