This section is dedicated to exploring various mechanisms and communication protocols used in embedded devices for working with peripheral devices.

\subsection{GPIO}
General-Purpose Input/Output, abbreviated as GPIO, is one of the most basic means of communication between a micro-controller and a peripheral device that is connected to it.

General-purpose Input/Output pins have no predetermined usage. As such, various aspects of a GPIO pin may be configured:\cite{giometti2017gnu}
\begin{itemize}
    \item Enabled or disabled
    \item Used as input or output
    \item Read or write output value
    \item Read input value
    \item Set value as pulled-up or pulled-down by default
\end{itemize}

In fact, the GPIO pins are generic enough that they may be used to emulate another digital interface controller. Other than emulating, GPIO pins may be used for signal control (reset, power enable, suspend), managing relays, LEDS, switches, and buttons.\cite{giometti2017gnu}

\subsection{UART}

\subsection{I2C}

\subsection{SPI}