How would you write a driver or firmware component that communicates with hardware peripherals over SPI, I2C, UART, USB, or I3C?