DisroopEmbeddedHipster works on Linux, Windows and macOS. You need Docker, Python 3 and pyinvoke preinstalled. All further installation can be done by command of the Project CLI.
To get started run
git clone https://github.com/disroop/DisroopEmbeddedHipster
code DisroopEmbeddedHipster
invoke vscode.open
This will clone the project and via the Project CLI open the project in VSCode.
Note
|
The command open_in_vscode will install all missing dependencies linke VSCode, the required extension, … |
"Text relating to Overview from landing page"
-
Automation
-
Quality built in
-
CI
We need two outputs. A host build (x86) for running the unit tests and a ARM build for the final firmware.
Show an overview about
-
local development
-
Servers ( Artifactory, Build-Automation) For more informatino see Learn how to organize the document into Build Automation.
DisroopEmbeddedHipster is build in a modular architecture. Modularity is the decomposition of the overall functionality into smaller pieces with standardized interfaces.
As illustrated in blinky conan dependencies, the application blinky depends on the BSP (stm32_bsp_iot_node), a runtime (stm32_runtime_l475_vtg)a runtime (stm32_runtime_l475_vtg). Other modules
todo: explain gcc_arm_none_eabi or remove this dependecy.
link:conan_graph_blinky_debug.dot[role=include]
The conan dependency tree in case of creating and running unit tests looks different. There the only dependency used is gtest. cmake_vars is a helper dependency which exports environment variables and options from a conanfile.
link:conan_graph_utest.dot[role=include]
Warning
|
TODO: describe what a project cli is, what advantage it brings and how it is build |
The Disroop Embeded Hipster Project is build with a Project CLI
advantage
-
executable documetnation. no need to read lond getting started instruction. just run
-
tab complete for project cli with source <(inv --print-completion-script bash)
git clone https://github.com/disroop/DisroopEmbeddedHipster
invoke setup
code DisroopEmbeddedHipster
The available command // use Font Awesome for admonition icons :icons: font
link:https://raw.githubusercontent.com/disroop/DisroopEmbeddedHipster/main/doc/project_commands.txt[role=include]
link:../doc/project_commands.txt[role=include]
link:../doc/vscode_commands.txt[role=include]
link:../doc/all_commands.txt[role=include]
The only preconditions are, that Docker and Python are installed.
One of the important goals is to build quality in. This means a new developer does not need to read many pages of paper to get to know how some basic things like formatting the code, or what kind of coding rules exist. Instead, he should be guided as much as possible with an automated solution. This is the aim of quality built in.
We manly use code compiler warnings, code formatters and code analysis tools. Those tools are run in the automated build and if possible we use IDE integration to prevent failing build and assist the developer instantly while editing code.
The compiler warnings are the fist source for code analysis and should be the most important tool to assure the code quality. We use -Werror to assure a minimal code quality must be maintained. A more strick approache could be to use even more restictive settings linke -Wextra.
todo investigate what we should recommend: -Wall -Wextra -Werror? https://sourcegraph.com/search?q=context:global+-Wall+-Wextra+-Werror&patternType=literal
ClangFormat is a very popular code formatting tool with IDE integration in VSCode and CLion.
We use a simple well curated Google style.
link:../.clang-format[role=include]
Renovate Stay up to date WARNING: todo
Obviously one can not back all rules in an automated solutions as we showed in this chapter. But for those wehre an automated solution exist is server a great benefit.