This block diagram only illustrate a few of the modules in the Abstraction Layer – loads of more will be added as needed. I started this library years ago so it has existed in various versions, but are re-designing it to be cleaner now. This is a C++ library designed to make coding of user applications fast and easy and will contain a variety of modules that is needed organized in a matter that makes sence.
At the bottom you have native HAL drivers. ESP32, ESP8285, Pico and STM32 have different HAL libraries, and while it is funto write bare-bone libraries using registers etc it is also to time-consuming, so I leave that to people with more time & interest. I will write bare-bone and even assembly as needed, but only if needed.
Ethernet & Wifi are full TCP/IP stacks with extras.
LoRa is Long Range Radio covering up to 10km of range with reduced bandwidth.
Display is a generic display interface consisting of multiple LCD/TFT drivers.
FRAM and Flash are various persistent storage technologies.
GPIO, RTC, ADC etc are interface to various IO technologies.
System is a the rest including RTOS and timers, stuff that I want available on all platforms.
The cost of doing this is that I bloat the Flash a bit – currently working on STM32F401CC (Blackpill) I use ca 60Kb Flash (30 with optimization), so it’s not that bad. But, using this library on less than 128Kb Flash will be tight because it will have a lot of content. This is a trade – functionality – time to marked – versus flash.
I use this manually for now as I create the library, but BSA will generate code towards this.