Home Blog Videos Research LispBM About Privacy Policy


Functional Programming and microcontrollers, Functional Programming in hardware design, Functional Programming in IoT
Until May 2022 I worked at Chalmers University of technology doing reserach in the Functional Programming research group. My research is revolving around functional programming for resource constrained platforms.
I work on a bytecode virtual machine together with a bunch of colleagues at Chalmers. The focus of this VM is IoT application and we hope to focus on security and robustness. We call the VM Sense-VM .
Mostly as a hobby, but also as a way to learn about microcontrollers while doing something fun, I develop a Lisp interpreter, bytecode compiler and bytecode virtual machine (work in progress) for the STM32, ESP32 and NRF52 microcontrollers as well as on Xilinx Zynq 7000 (any 32 bit platform with a reasonable amount of memory should be fine) that I call LispBM.

Autonomous Vehicles, Vehicle Electronic Architecture, Embedded Systems
At RISE I was involved in work related to the RISE Self Driving Vehicle Platform together with Benjamin Vedder. Benjamin is not at RISE anymore but I enjoyed working with him a lot. I have also been a part of a research project involving UWB positioning and Galileo and the Chronos projects about testing autonomous and ADAS functionality at AstaZero. At RISE I had the chance to get started on PCB design under the mentorship of Benjamin Vedder.

Reconfigurable computing
I have worked on acceleration of applications by utilising reconfigurable hardware, Field Programmable Gate Arrays (FPGAs), Xiling Zynq 7000 devices to be specific. This work focused on OpenCL (High level synthesis) generated hardware kernels treated as compute black boxes. We experimented with surrounding support infrastructure for making these OpenCL kernels execute more efficiently, for example by moving scheduling of kernels into hardware, relieving the processing system of the ZYNQ of this task. My research in this area ended when I left Chalmers but I continue to explore the Zynq platform and to write down what I learn in the form of guides for beginners of Zynq and FPGAs. The Zynq development/experiment board I use is the Trenz ZynqBerry.

Streaming aggregation on an FPGA
Prajith is doing research on acceleration of streaming computations using FPGAs and I am happy to have worked with him in exploring the capabilities of the Maxeler machine.

Lightweight binary-instrumentation
During a postdoc at Indiana University I participated in work on binary-instrumentation together with Buddhika Chamith and Ryan Newton .

Embedded languages and parallelism
During my Ph.D. studies Mary Sheeran, Koen Claessen, Josef Svenningsson and I were exploring high level and functional approaches to program highly parallel computers such as a GPU. Currently there are GPUs available with over a thousand processing elements. Our approach was to develop an embedded language in the style of Lava, using combinators to describe parallel computation structures. We call this language Obsidian. Running an Obsidian program results in a CUDA C program being generated. We have also experimented with Haskell embeddings of Intel's Array Building Blocks, ArBB. This embedded language we call EmbArBB.

Presentation slides

Experiment documentation

Technical reports


Presentations by others

Related to Obsidian

Download Obsidian, EmbArBB and other Projects

From Github (svenssonjoel)

Counting sort


Related links
Intel's Array Building Blocks

Other links

Google Scholar
© Copyright 2020 Bo Joel Svensson