"Я подразумеваю, что слой, где происходит разделение на
виртуальный/реальный драйвер может архитектурно быть несколько
выше. Не обязательно симулировать I2C на уровне ножек SCL и SDA." -
это изначально и предполагалось. Симуляцию того же I2C я
предполагал с помощью пакетов, например I2C-устройство получит
сообщение с содержанием <ADDR> <REG>
<DATA> (или похожее). Аналогично с PWM или SPI.