|
|
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!
|
|
|
|
|
|
### 📝 Contributing
|
|
|
### 📝 Basics
|
|
|
*Read these before you start coding*
|
|
|
|
|
|
- [Embedded Systems]
|
|
|
- [Miosix](https://drive.google.com/drive/u/1/folders/0B41AbAqKq4JnRE1UR2g4VHNQTkk)
|
|
|
- [Git Workflow](Git-Workflow)
|
|
|
- [Coding Guidelines](Coding-Guidelines)
|
|
|
- [Templates](Templates) (typical file structure, copyright ecc)
|
|
|
- [Coding Rules](Coding-Guidelines)
|
|
|
|
|
|
### 📚 Tutorials
|
|
|
*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)
|
|
|
- [GPIO Usage](GPIO-Usage-&-Used-Pins)
|
|
|
- [Serial Communication](Serial-Communication)
|
|
|
- Writing a Sensor Driver:
|
|
|
- [SPIDriver](SPIDriver)
|
|
|
- [I2C]: hw and sw
|
|
|
- [USART](Serial-Communication)
|
|
|
- [SPI](SPIDriver)
|
|
|
- [I2C]: hw and sw I2C drivers
|
|
|
- [CanBus]: CanBus driver
|
|
|
- [Interrupts](Interrupts)
|
|
|
- [Synchronization]: mutex, cond variables, kernelpause, disable interrupts...
|
|
|
- [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 |
|
|
**Advanced**
|
|
|
|
|
|
- [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)
|
|
|
- [Watchdogs]
|
|
|
|
... | ... | @@ -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*
|
|
|
|
|
|
- [Skyward Build System](Skyward-Build-System-(SBS))
|
|
|
- [Interfaces](Boardcore-Interfaces)
|
|
|
- [Singleton](Boardcore-Interfaces#singleton)
|
|
|
- [ActiveObject](Boardcore-Interfaces#active-object)
|
|
|
- [EventHandler]: anything that can handle events (reads continuously from an event queue)
|
|
|
- [FSM]: Finite state machine, handles events using the current state's handler
|
|
|
- [HSM]: Hierarchical State Machine
|
|
|
- Stand-alone Components
|
|
|
- [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.
|
|
|
- [EventBroker]: central component used in a publish-subscribe architecture to dispatch events between FSMs
|
|
|
- Diagnostic Tools
|
|
|
- [CPUMeter]: measure CPU usage
|
|
|
- [StackLogger]: measure stack usage for each thread
|
|
|
- Drivers
|
|
|
- [SPIDriver](SPIDriver)
|
|
|
- [Mavlink](Mavlink)
|
|
|
- [CAN bus]
|
|
|
- Utils
|
|
|
- [PinObserver]: execute something on GPIO transitions (without using interrupts)
|
|
|
- [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
|
|
|
|
|
|
### :zap: Misc
|
|
|
|
|
|
<details>
|
|
|
<summary>[Interfaces](Boardcore-Interfaces)</summary>
|
|
|
|
|
|
- [Singleton](Boardcore-Interfaces#singleton)
|
|
|
- [ActiveObject](Boardcore-Interfaces#active-object)
|
|
|
- [EventHandler]: anything that can handle events (reads continuously from an event queue)
|
|
|
- [FSM]: Finite state machine, handles events using the current state's handler
|
|
|
- [HSM]: Hierarchical State Machine
|
|
|
</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.
|
|
|
- [Logger]: performs triple buffering to optimize SD cart writes.
|
|
|
- [EventBroker]: central component used in a publish-subscribe architecture to dispatch events between FSMs
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
|
<summary>Diagnostic Tools</summary>
|
|
|
|
|
|
- [CPUMeter]: measure CPU usage
|
|
|
- [StackLogger]: measure stack usage for each thread
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
|
<summary>Drivers</summary>
|
|
|
|
|
|
- [SPIDriver](SPIDriver)
|
|
|
- [Mavlink](Mavlink)
|
|
|
- [CAN bus]
|
|
|
</details>
|
|
|
|
|
|
<details>
|
|
|
<summary>Utilities</summary>
|
|
|
|
|
|
- [PinObserver]: execute something on GPIO transitions (without using interrupts)
|
|
|
- [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
|
|
|
</details>
|
|
|
|
|
|
### :recycle: Misc
|
|
|
|
|
|
*Cheat Sheets*
|
|
|
- [Git Cheatsheet](Git-Cheat-Sheet)
|
|
|
- [Events Cheatsheet](Events-Cheatsheet)
|
|
|
- [Eclipse IDE Configuration](Eclipse-Configuration)
|
|
|
- [Visual Studio Code Configurations]
|
|
|
|
|
|
-----------------------------------
|
|
|
### 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 |
|
|
- [Visual Studio Code Configurations] |
|
|
\ No newline at end of file |