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!
📝 Basics
Read these before you start coding
- Getting Started: what you need to know about Embedded Development, C++, Git etc...
Deep dives:
📚 Tutorials
Getting familiar with Boardcore, MIOSIX and STM32 boards
- LED blink example
- Flashing on a board
- GPIO
- USART
- SPI
- [I2C]: hw and sw I2C drivers
- [CanBus]: CanBus driver
- Interrupts
- State Machines
Advanced
- [Synchronization]: mutex, cond variables, kernelpause, disable interrupts...
-
Designing a New Board
🔗 : steps to take into consideration when designing a new system - BSP (Board Support Package)
- Testing
- [Watchdogs]
- [DMA]
🛠️ Available Components
Specific documentation about Boardcore components
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
Utilities
- [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]