From bd39f6be8469e908950365ebb98725615bddf803 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 13 Dec 2025 16:37:31 -0500 Subject: report: firmware module dependency graph --- doc/report/deps.dot | 17 +++++++++++++++++ doc/report/report.tex | 9 +++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 doc/report/deps.dot diff --git a/doc/report/deps.dot b/doc/report/deps.dot new file mode 100644 index 0000000..1f55dc4 --- /dev/null +++ b/doc/report/deps.dot @@ -0,0 +1,17 @@ +digraph deps { + main -> {system, types, eeprom, dac, can, signal, serial, table} + can -> {system, types, spi} + dac -> {system, types, spi} + eeprom -> {system, types, spi} + serial -> {types, eeprom, can, signal} + signal -> {types, can} + spi -> {system, types} + table -> {types, can, eeprom, signal, serial} + + subgraph cluster_hal { + label="HAL" + style=dashed + rank=same + can; eeprom; dac; + } +} diff --git a/doc/report/report.tex b/doc/report/report.tex index b209f48..927274e 100644 --- a/doc/report/report.tex +++ b/doc/report/report.tex @@ -348,9 +348,14 @@ The EEPROM stores several tables that are mappings from sensor-reading-values to For example, one table maps engine speed (rpm) to tachometer pulse frequency. The \texttt{table} module makes use of the \texttt{eeprom} HAL module and provides a simple interface to read and manipulate these mapping tables stored in the EEPROM. -Dependencies between the modules are shown in Fig. \ref{fig:Dependencies}. +Dependencies between the modules are shown in Fig. \ref{fig:Deps}. -TODO: module dependency graph. +\begin{figure} + \centering + \includegraphics[width=2.5in]{deps.png} + \caption{Firmware module dependency graph.} + \label{fig:Deps} +\end{figure} The \texttt{main} entrypoint of the firmware simply initializes the HAL and waits to receive an interrupt from the CAN controller or from a timer. The ISR (interrupt service routine) handles the reception and decoding of CAN frames. -- cgit v1.2.3