... | ... | @@ -2,32 +2,35 @@ Here are some concepts which are useful to know before starting to deal with sky |
|
|
|
|
|
## 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' useful to know some basics. [Here :link:](https://drive.google.com/drive/u/1/folders/1-rwNgoDdOFnwW-rfaqfmUa5ACIVehvXV) you can find some presentations we did on the topic, in particular:
|
|
|
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 :link:](https://drive.google.com/drive/u/1/folders/1-rwNgoDdOFnwW-rfaqfmUa5ACIVehvXV) you can find some presentations we did on the topic, in particular:
|
|
|
|
|
|
* [Introduction](https://docs.google.com/presentation/d/1nw4iXT9VzTU79m23Mcdwbv11BhkN5ngLbFExVh1TVFg/)
|
|
|
* [Device Drivers and RTOS](https://docs.google.com/presentation/d/11HyjMUPK58ir1gQ4Jw4BqTVSZJtGLs77W_s3Zjk5PTs)
|
|
|
* [Introduction](https://docs.google.com/presentation/d/1nw4iXT9VzTU79m23Mcdwbv11BhkN5ngLbFExVh1TVFg/) what is an embedded system?
|
|
|
* [Device Drivers and RTOS](https://docs.google.com/presentation/d/11HyjMUPK58ir1gQ4Jw4BqTVSZJtGLs77W_s3Zjk5PTs) basic blocks for embedded development
|
|
|
|
|
|
More in general, I would suggest to try getting a high-level idea of how these work:
|
|
|
- Registers
|
|
|
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. All the software here is written in C++, so you should start getting familiar with some of these concepts:
|
|
|
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
|
|
|
- references and pointers
|
|
|
- templates
|
|
|
- scopes
|
|
|
- references vs pointers
|
|
|
- `virtual`
|
|
|
- `std::vector` and `std::map`
|
|
|
- `cin` and `cout`
|
|
|
- Doxygen comments like [this](https://github.com/stan-dev/stan/wiki/How-to-Write-Doxygen-Doc-Comments)
|
|
|
- templates
|
|
|
- static and dynamic allocation
|
|
|
|
|
|
Also some basic C knowledge is required, such as:
|
|
|
- `malloc`
|
|
|
- `<<`, `>>`, `&` and `|` bit operators
|
|
|
- `stdint.h` that contains things like `uint8_t`, `int32_t` etc
|
|
|
- bitwise operands `<<`, `>>`, `&` and `|`
|
|
|
- `#define`
|
|
|
|
|
|
## Git
|
... | ... | @@ -45,11 +48,14 @@ Long description |
|
|
|
|
|
## Style
|
|
|
|
|
|
- Never use `printf()`. Never. Use `TRACE()` instead, works exactly the same.
|
|
|
- Don't bother reading codestyle rules, just install `clang-format` and apply our `.clang-format` style
|
|
|
Follow our [Codestyle](Codestyle) guide. Really, do it. As a quick recap:
|
|
|
|
|
|
- Never use `printf()`, use `TRACE()` instead
|
|
|
- Every class and function you write should have Doxygen comments like [this](https://github.com/stan-dev/stan/wiki/How-to-Write-Doxygen-Doc-Comments)
|
|
|
- Download the `clang-format` plugin for your favourite IDE and tell it to apply [our .clang-format](https://git.skywarder.eu/scs/skyward-boardcore/-/blob/master/.clang-format) style
|
|
|
|
|
|
## Miosix and Multithreading
|
|
|
|
|
|
Sice we are using an Operating System, you have to be aware of what multithreading is:
|
|
|
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.
|
|
|
|
|
|
- [Miosix presentation :link:](https://drive.google.com/drive/u/1/folders/0B41AbAqKq4JnRE1UR2g4VHNQTkk) |
|
|
\ No newline at end of file |