\chapter{Methods}
\label{ch:methods}
This chapter outlines the methods used while developing the SM4 stepper motor controller.

First, an introduction is given about the problematics of stepper motors and their control and about communication buses utilized by the project.
Second, a brief introduction to the Rust programming language is given, alongside a more in-depth introduction to the current state of using Rust programming language for embedded systems.

Furthermore, we declare the requirements for the resulting hardware and software.
These requirements consist of functional requirements, non-functional requirements, and constraints.

The development of two hardware revisions is described in the further sections.
The hardware design choices are described.
These choices are based on the requirements and the Chapter~\ref{ch:related_work} on related work.
Electrical schematics of the vital parts of the electronics are described.

Further, the development of the firmware itself is outlined, with some interesting parts being described in detail.
Finally, the development of a control software used for controlling the stepper motor controller is gone over.
