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.
Nothing is written in stone, so if you'd like to contribute with your own discoveries and suggestions, you're more than welcome!
📝 Contributing
Read these before you start coding
- Git Workflow
- Coding Guidelines
- Templates (typical file structure, copyright ecc)
📚 Tutorials
Getting familiar with Boardcore, MIOSIX and STM32 boards
- Boardcore Quick Start: first tutorial
- Flashing on a board
- GPIO Usage
- Serial Communication
- Writing a Sensor Driver:
- SPIDriver
- [I2C]: hw and sw
- Interrupts
- [Synchronization]: mutex, cond variables, kernelpause, disable interrupts...
- State Machines
Advanced
- Software Development Checklist: steps to take into consideration when designing a new system
- [Setting up the BSP]: How the board support package works
- Testing with Catch
🛠️ Available Components
Specific documentation about Boardcore components
- Skyward Build System
-
Interfaces
- Singleton
- ActiveObject
- [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
- 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
⚡ Misc
Cheat Sheets
- Git Cheatsheet
- Events Cheatsheet
- Eclipse IDE Configuration
- [Visual Studio Code Configurations]
External Links
- Miosix Wiki for the installation.
- Miosix for Skyward (slides)