Here are some concepts which are useful to know before starting to deal with skyward, boardcore and embedded development.
Embedded Systems
If you are reading this guide, it is very likely that you will work on some kind embedded system sooner or later, so it's useful to know some basics. Here
- Introduction what is an embedded system?
- Device Drivers and RTOS basic blocks for embedded development
Moreover, it is a good idea to know something about how these work:
- USART, I2C, SPI
- Interrupts
- PWM
C++
C++ is a quite vast language that can be very powerful, but also very dangerous for those who don't know it. You can approach it by reading about some of these things:
- inheritance, children, instances
- what's a header file (
.h
) and what goes there - namespaces
- scopes
- references vs pointers
virtual
-
std::vector
andstd::map
-
cin
andcout
- templates
- static and dynamic allocation
Also some basic C knowledge is required, such as:
malloc
-
stdint.h
that contains things likeuint8_t
,int32_t
etc - bitwise operands
<<
,>>
,&
and|
#define
Git
We use Git as our source version control system, and we love it. Git is fun, but you should be very careful of doing it the right way:
- Commit messages should always be
[topic] Short description
*blank line*
Long description
- Learn to use the Issue tab
- Read our Git Workflow
Style
Follow our Codestyle guide. Really, do it. As a quick recap:
- Never use
printf()
, useTRACE()
instead - Every class and function you write should have Doxygen comments like this
- Download the
clang-format
plugin for your favourite IDE and tell it to apply our .clang-format style
Miosix and Multithreading
Sice we are using an Operating System, you have to be aware of what multithreading is. Taking a look at this presentation will give you all the information you need, and even something more.