Arthur Heymans

I'm Arthur Heymans. I've always been quite interested in how computers work, however, this interest only fully developed much later. While studying physics and philosophy at the university, I became very interested in the concept of free software via the "about GNU" page in my editor of choice, Emacs. The GNU/Linux OS is very usable as free software these days, however, firmware and some low-level drivers tend to present a different, much more closed story. This led me to discover coreboot, which is a project that offers an alternative to closed-source firmware/BIOS. Fast forward a few years and I'm a regular contributor to coreboot and have learned a great deal from incredible people who were willing to invest time in reviewing my patches. I secured a job at 9elements, which professionally involved me in multiple open-source firmware projects.

These days I'm expanding my horizon with firmware related web applications, rust firmware and FPGA programming.

Country:

Belgium

Employer:

9elements

Github:

ArthurHeymans


Sessions

09-17
11:15
15min
NORbert: Open source SPI flash emulation
Arthur Heymans

SPI NOR flash is a very common IC used as a boot medium for both BMC and Host firwmare. Data can be read bytewise and pretty fast. Writes on the other hand are much slower. NORbert is an open source RTL project with open source tooling that emulates this kind of IC.

The content of the talk will be about why you'd want to emulate a SPI NOR flash and why you need to use an FPGA for this. I want to touch on what similar tools were previously available (dediprog EM100 & Trammel's spispy) and how NORbert improves upon them. IThe talk will showcase NORbert's functionality like logging and automated TOCTOU (time of check, time of use) vulnerability exploits. Lastly I will talk about the co-designed rust tooling which works also on the web.

Link to NORbert: https://github.com/ArthurHeymans/NORbert

Main
09-17
11:30
15min
Rewriting firware tools in rust, lowering the barrier with web tools
Arthur Heymans

"If you cannot use a CLI, you probably have no business in doing firmware."

This used to be true. Firmware is a hard thing to get into. You need to get familiar with a lot of things before you can do something meaningful. At least part of this barrier is having to use a CLI.

Rust has many advantages. When people advocate for rust it's usually about it being memory safe, rust having a good tooling like package managers and linters/formatters, a strong compiler telling exactly what you messed up, ... This is all very true and also applies when making CLI tools that relate to firmware development, but this talk wants to highlight another advantage of rust.

Rust has a wasm target arch which makes it easy to support both a CLI as well as a web application in the same codebase. The advantage of a web application for beginners is substantial: no need to download and compile a tool, no need to copy a command of which you understand only half, just visit a website and be greeted with an intuitive UI.

The goal of this talk is to showcase how making a webui alongside a CLI is possible and give some examples.

Some examples
https://rflasher.9elements.com
https://rem100.9ements.com
https://github.com/ArthurHeymans/NORbert/pull/9 (PR for web tool)

Main