Experience as an embedded systems developer
A summary of experiences as an embedded systems developer.
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.