|
Boardcore is an evolving project to which many have contributed over the years, each with his own style and ideas. Some of the things that you will find can be perfectioned, some other have to be changed and some might have not been used or documented at all.
|
|
Boardcore is an evolving project to which many have contributed over the years, each with his own style and ideas. Some of the things that you will find can be improved, some other have to be changed and some might have not been used or documented at all.
|
|
|
|
|
|
Nothing is written in stone, so if you'd like to contribute with your own discoveries and suggestions, you're more than welcome!
|
|
Nothing is written in stone, so if you'd like to contribute with your own discoveries and suggestions, you're more than welcome!
|
|
|
|
|
|
### 📝 Contributing
|
|
### 📝 Basics
|
|
*Read these before you start coding*
|
|
*Read these before you start coding*
|
|
|
|
|
|
|
|
- [Embedded Systems]
|
|
|
|
- [Miosix](https://drive.google.com/drive/u/1/folders/0B41AbAqKq4JnRE1UR2g4VHNQTkk)
|
|
- [Git Workflow](Git-Workflow)
|
|
- [Git Workflow](Git-Workflow)
|
|
- [Coding Guidelines](Coding-Guidelines)
|
|
- [Coding Rules](Coding-Guidelines)
|
|
- [Templates](Templates) (typical file structure, copyright ecc)
|
|
|
|
|
|
|
|
### 📚 Tutorials
|
|
### 📚 Tutorials
|
|
*Getting familiar with Boardcore, MIOSIX and STM32 boards*
|
|
*Getting familiar with Boardcore, MIOSIX and STM32 boards*
|
|
|
|
|
|
- [**Boardcore Quick Start**](Boardcore-Quick-Start): first tutorial
|
|
- [**Quick Start**](Boardcore-Quick-Start): first tutorial
|
|
- [Flashing on a board](Flashing-on-a-Target-Board)
|
|
- [Flashing on a board](Flashing-on-a-Target-Board)
|
|
- [GPIO Usage](GPIO-Usage-&-Used-Pins)
|
|
- [GPIO Usage](GPIO-Usage-&-Used-Pins)
|
|
- [Serial Communication](Serial-Communication)
|
|
- [USART](Serial-Communication)
|
|
- Writing a Sensor Driver:
|
|
- [SPI](SPIDriver)
|
|
- [SPIDriver](SPIDriver)
|
|
- [I2C]: hw and sw I2C drivers
|
|
- [I2C]: hw and sw
|
|
- [CanBus]: CanBus driver
|
|
- [Interrupts](Interrupts)
|
|
- [Interrupts](Interrupts)
|
|
- [Synchronization]: mutex, cond variables, kernelpause, disable interrupts...
|
|
- [Synchronization]: mutex, cond variables, kernelpause, disable interrupts...
|
|
- [State Machines](State-Machines-Examples-and-Best-Practices)
|
|
- [State Machines](State-Machines-Examples-and-Best-Practices)
|
... | @@ -25,7 +27,7 @@ Nothing is written in stone, so if you'd like to contribute with your own discov |
... | @@ -25,7 +27,7 @@ Nothing is written in stone, so if you'd like to contribute with your own discov |
|
**Advanced**
|
|
**Advanced**
|
|
|
|
|
|
- [Software Design Checklist](https://docs.google.com/document/d/1u_3bGkFCiE6X2i0mnaNqzTScY26b-UPJ1Ju_1dFurco): steps to take into consideration when designing a new system
|
|
- [Software Design Checklist](https://docs.google.com/document/d/1u_3bGkFCiE6X2i0mnaNqzTScY26b-UPJ1Ju_1dFurco): steps to take into consideration when designing a new system
|
|
- [Setting up the BSP]: How the board support package works
|
|
- [Board Support Package](BSP): How does the BSP work
|
|
- [Testing with Catch](Testing)
|
|
- [Testing with Catch](Testing)
|
|
- [Watchdogs]
|
|
- [Watchdogs]
|
|
|
|
|
... | @@ -33,38 +35,52 @@ Nothing is written in stone, so if you'd like to contribute with your own discov |
... | @@ -33,38 +35,52 @@ Nothing is written in stone, so if you'd like to contribute with your own discov |
|
*Specific documentation about Boardcore components*
|
|
*Specific documentation about Boardcore components*
|
|
|
|
|
|
- [Skyward Build System](Skyward-Build-System-(SBS))
|
|
- [Skyward Build System](Skyward-Build-System-(SBS))
|
|
- [Interfaces](Boardcore-Interfaces)
|
|
|
|
|
|
<details>
|
|
|
|
<summary>[Interfaces](Boardcore-Interfaces)</summary>
|
|
|
|
|
|
- [Singleton](Boardcore-Interfaces#singleton)
|
|
- [Singleton](Boardcore-Interfaces#singleton)
|
|
- [ActiveObject](Boardcore-Interfaces#active-object)
|
|
- [ActiveObject](Boardcore-Interfaces#active-object)
|
|
- [EventHandler]: anything that can handle events (reads continuously from an event queue)
|
|
- [EventHandler]: anything that can handle events (reads continuously from an event queue)
|
|
- [FSM]: Finite state machine, handles events using the current state's handler
|
|
- [FSM]: Finite state machine, handles events using the current state's handler
|
|
- [HSM]: Hierarchical State Machine
|
|
- [HSM]: Hierarchical State Machine
|
|
- Stand-alone Components
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>Stand-alone Components</summary>
|
|
|
|
|
|
- [SensorManager]: Periodically samples a set of sensors at different given frequencies through a high-priority, single-threaded TaskScheduler.
|
|
- [SensorManager]: Periodically samples a set of sensors at different given frequencies through a high-priority, single-threaded TaskScheduler.
|
|
- [Logger]: performs triple buffering to optimize SD cart writes.
|
|
- [Logger]: performs triple buffering to optimize SD cart writes.
|
|
- [EventBroker]: central component used in a publish-subscribe architecture to dispatch events between FSMs
|
|
- [EventBroker]: central component used in a publish-subscribe architecture to dispatch events between FSMs
|
|
- Diagnostic Tools
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>Diagnostic Tools</summary>
|
|
|
|
|
|
- [CPUMeter]: measure CPU usage
|
|
- [CPUMeter]: measure CPU usage
|
|
- [StackLogger]: measure stack usage for each thread
|
|
- [StackLogger]: measure stack usage for each thread
|
|
- Drivers
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>Drivers</summary>
|
|
|
|
|
|
- [SPIDriver](SPIDriver)
|
|
- [SPIDriver](SPIDriver)
|
|
- [Mavlink](Mavlink)
|
|
- [Mavlink](Mavlink)
|
|
- [CAN bus]
|
|
- [CAN bus]
|
|
- Utils
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>Utilities</summary>
|
|
|
|
|
|
- [PinObserver]: execute something on GPIO transitions (without using interrupts)
|
|
- [PinObserver]: execute something on GPIO transitions (without using interrupts)
|
|
- [ButtonHandler]: do something when the button is pressed (or pressed for a long time)
|
|
- [ButtonHandler]: do something when the button is pressed (or pressed for a long time)
|
|
- [Queues]: syncQueue, syncCircularBuffer, SyncPacketQueue. Other Queues can be found in MIOSIX's queue.h
|
|
- [Queues]: syncQueue, syncCircularBuffer, SyncPacketQueue. Other Queues can be found in MIOSIX's queue.h
|
|
|
|
</details>
|
|
|
|
|
|
### :zap: Misc
|
|
### :recycle: Misc
|
|
|
|
|
|
*Cheat Sheets*
|
|
*Cheat Sheets*
|
|
- [Git Cheatsheet](Git-Cheat-Sheet)
|
|
- [Git Cheatsheet](Git-Cheat-Sheet)
|
|
- [Events Cheatsheet](Events-Cheatsheet)
|
|
- [Events Cheatsheet](Events-Cheatsheet)
|
|
- [Eclipse IDE Configuration](Eclipse-Configuration)
|
|
- [Eclipse IDE Configuration](Eclipse-Configuration)
|
|
- [Visual Studio Code Configurations] |
|
- [Visual Studio Code Configurations] |
|
|
|
\ No newline at end of file |
|
|
|
|
|
-----------------------------------
|
|
|
|
### External Links
|
|
|
|
|
|
|
|
* [Miosix Wiki](https://miosix.org/wiki/index.php?title=Main_Page) for the installation.
|
|
|
|
* [Miosix for Skyward (slides)](https://drive.google.com/drive/u/1/folders/0B41AbAqKq4JnRE1UR2g4VHNQTkk) |
|
|
|
\ No newline at end of file |
|
|