Experience as an embedded systems developer

A summary of experiences as an embedded systems developer.

Author
Affiliation

Abdul Rehman

Published

October 2, 2024

Most of my experience as an embedded systems developer has been focused on virtualization and type 1 hypervisors. I have had the chance to work on cutting edge hardware (at the time) Intel Embedded Processor Elkhartlake (2021) and reslove many interesting issues related to ACPI, AHCI-virt, NVMe-virt etc. On the hypervisor side I really enjoyed adding support for various virtualization solutions.

VT-d DMAR/IOMU driver: Added support for IOMMU driver to allow device isolation and memory remapping of the VM.

UEFI virtualization: Developed infrastructure to provide virtual UEFI interface for guest VMs. Designed and developed caching solution for non-volatile variables to avoid SMI generation.

Intel Graphics Device Driver(Linux-i915): Ported Linux device driver (i915) for Intel Graphics Device to a UEFI driver. It allowed early graphics for Linux and Windows guests - stuff like splash screen and recovery mode menus.

NVMe virtualization: Contributed to the design and development of the infrastructure. I was responsible for interrupt handling and I/O queue segregation components. Interrupt handling component was implemented using MMIO trap and emulation of PCI MSI-X capability. To verify the paravirtualized implementation, I modified the Linux driver for NVMe into a paravirtualized client.

QT Framework: Ported QT framework 5.4 to Nucleus RTOS.