Hi all,
It is my first time posting but I am a long time user of Kicad and follower of the forum.
I have been working on a general firmware for some AVR-based projects I have with a OO board-level abstraction layer composed from individual OO hardware abstraction layers, so that I can construct a new board firmware by simple linking components. Something like this:
Blockquote
#include <Components/ATMEGA328PB.h>
#include <Components/M24M0X.h>
#include <Components/DS3231.h>
#include <Components/SDCard.h>
class Board
{
private:
///< board traits
static constexpr uint16_t boardVoltage = 12;
static constexpr uint16_t avrDigitalVoltage = 3.3;
static constexpr uint16_t avrAnalogVoltage = 3.3;
static constexpr JUMPER1 jumper1 = OPEN;
public:
// board AVR
static ATMEGA328PB avr;
///< board bus
static Stream<decltype(avr.twi0)> I2CBus;
static Stream<decltype(avr.usart0)> USARTBus;
static Stream<decltype(avr.spi0)> SPIBus;
///< board Components
static DS3231<decltype(I2CBus), decltype(avr.pb0)> ds3231;
static M24M0X<1, 0, 0, decltype(I2CBus)> eeprom;
static SDCard<decltype(SPIBus), decltype(avr.pc0)> SDCard;
static LED<decltype(avr.pd7)> ledGPIO;
};
I was thinking the components inclusion and liking could be easilly done from a netlist, allowing firmware generation from board design. I was wondering whether anyone has been working with this or know if this idea has been implemented somewhere.
I did saw a generator of pindefs from netlists (https://github.com/DeshmukhMalhar/sch2header) but not a firmware generator.
Thanks,
Paulo.
(btw, sorry, I am looking how to properlly format code in the forum, I will change it as soon as I find)