Member-only story
Framework — SSD Firmware Development — Part 10
In this part, we’ll discuss the next phase in the code development to introduce a few new concepts thus far. First, let’s visualize how an application on the host communicates with a device. Figure 1 shows in a simplified way how an application typically communicates with an SSD. At the first level, it would typically make a series of system calls. The requests will flow to the driver, then to the host controller, and across the bus. On the device side, the host interface interacts with the bus, typically via hardware to perform communication with the host. For storage, the bus is commonly SATA, USB, or PCIe. The communication contract specification is the protocol defined by ATA, SCSI, or NVMe.
In order to model this from a functional perspective, let’s take a look at Figure 2.
As we can see, the simulation can technically run on the same system as the application. We are substituting the driver, host controller, bus, and hardware host interface with the Framework Message System using the Framework Message Client and Framework Message Server.
The Framework Message System defines a Messaage
that contains a type, buffer, and buffer size, which can…