PCI bus hacking from home – how hard can it be?
Channel: British Computer Society Open Source Specialists
Date: 2020-10-16

Presented by Maxim Blinov

Digital protocols are the bread and butter of virtually every electronic engineer today. UART, SPI, I2C, USB, PCIe, the list goes on. But it’s very rarely that we get the opportunity to actually implement one such protocol ourselves.

This project was an excercise to take the role of implementing a protocol, given all the usual limited constraints of a hobbyist operating from home: Create a very simple (but functional) conventional (33MHz) PCI endpoint, visible from Linux, and capable of transferring data from internal FPGA LUTs to Linux Userspace.

The project touched on aspects of FPGA design, design verification, physical debugging approaches, and just a dash (and I really mean just a dash!) of linux kernel modification.

Maxim Blinov is a toolchain engineer working at Embecosm, supporting and customizing GCC toolchains for client-specific architectures and architecture extensions. His main open source work has been benchmarking and customizing the upcoming RISC-V bitmanip extension.

In his free time he dabbles in MCUs, FPGAs, softcore CPUs, and Windows driver development.