About me
System programmer with extensive ARM architecture and open-source development experience.
Languages: Swedish (native), English (fluent), German (basic)
Location: Strathdon, Scotland (remote)
Employment history
From | To | Where |
---|---|---|
March 2021 | present | Qualcomm |
January 2020 | March 2021 | NUVIA inc (acquired by Qualcomm 2021-03-16) |
May 2018 | December 2019 | Linaro ltd (directly employed) |
January 2013 | May 2018 | Linaro ltd (assignee from ARM) |
December 2005 | May 2018 | ARM ltd, Cambridge, UK |
July 2001 | December 2005 | i3 Micro Technology AB, Akalla, Sweden |
July 2000 | June 2001 | Real Time Logic ltd |
1999 | 2000 | Datessa AB, Södertälje, Sweden |
Open-source contributions
Project | Contribution |
---|---|
EDK2/Tianocore | Tianocore steward, maintainer of edk2 ArmPkg/ArmPlatformPkg/EmbeddedPkg as well as edk2-platforms and edk2-non-osi. Reviewer of initial RiscV64 port. |
GRUB | Ports to ARM architectures. Various EFI contributions. Port to U-Boot API. |
Linux kernel | AArch32 SWP instruction emulation, genericised condition code handling, device tree stdout-path console selection. |
Open-MPI | Port to ARMv7-A |
QEMU | Various minor ARM architectural contributions. Designated reviewer for sbsa-ref. |
U-Boot | Review of UEFI interface implementation, as well as some debug/testing and identifying missing protocols. |
sdate | Added endless March support. |
Projects
Qualcomm inc
Principal Engineer - Core Plaform Boot (March 2023 onwards)
Guiding work to align in-house tianocore fork with upstream, bringing it in line with industry standards it had diverged from, and training the team on the upstreaming process and the use of git.
Principal Engineer - Application processor firmware lead (- March 2023)
Same role and responsibilities as before acquisition.
- Worked with Qualcomm legal and patents teams to enable upstream contributions to EDK2 (previously blanket banned), TF-A and QEMU.
- Pre-Si bring-up of firmware on software models (QEMU and ARM Fast Models).
- RTL verification through firmware bring-up on Cadence Palladium emulation platform, including PCIe subsystem using off-the shelf plug-in cards mounted in a SpeedBridge.
NUVIA inc
Application processor firmware lead
- Responsible for TF-A and EDK2 platform ports and services for the Orion AArch64 server platform.
- CPU/Platform prototyping in QEMU
Joined as one of the first members of the software group in January 2020 and helped build up the organisation through the lockdowns.
Together with the SoC firmware lead, defined a "virtual platform progression" approach enabling loosely lock stepped refinement of firmware and models during SoC design and development.
Linaro ltd
UEFI Team Lead
- Marshalling of AArch32 and AArch64 Linux kernel UEFI support patchsets.
- Google Summer of Code mentor: Port of UEFI to low-cost embedded platform
- Set up OpenPlatformPkg to provide a public repository for EDK2 platform ports. Worked to get a defined process in Tianocore to accept and maintain open platform ports. Based on this, migrated the code from OpenPlatformPkg to officially adopted repositories edk2-platforms and edk2-non-osi.
- Appointed one of the original three stewards of the TianoCore project.
Enterprise Software Engineer
- Ported GRUB to AArch64 UEFI
- Ported GRUB to AArch32 UEFI
- Ported GRUB to AArch32 U-Boot
ARM ltd.
Staff/Principal Software Engineer
Joined the architectural software enablement group, initially as the sole resource focusing on SMP software in general, which eventually evolving into the initial ARM server software project.
Started aligning with and working together with the Linaro Enterprise Group (announced November 2012) from around the time of Linaro Connect 2012.Q2 in Hong Kong, eventually leading to my transition from January 2013 into a full-time assignee to Linaro.
Information Developer
The Information Developer role was created to provide a more hands-on approach to documentation. My target audience was software developers targeting ARM processors.
Kept working on and presenting customer training material.
Senior/Staff Applications Engineer
Specialising in the embedded software (TrustZone, JTEK, ...) range of products, and ARM development boards - especially Versatile EB + ARM11MPCore. Created software customer training for ARM11 MPCore and generic multiprocessor software development.
i3 Micro Technology AB
System Developer
- System developer in the MOOD set-top box software team.
Responsibilities including:
- STB production system
- Boot loader for the Mood 300 STB
- In-house embedded Linux distribution for STBs
- Initially natively built x86-based Mood 200 but turned cross-architecture for MIPS32-based Mood 300 and SH4-based Mood 100.
- Platform bring-up
- System developer in the MOOD streaming video (MPEG) server software team.
Datessa AB
In-house system administration for small local database application consultancy. Also consulting as UNIX administrator, and some programming for y2k-proofing of existing applications.
Publications and presentations
- Blog at station.eciton.net.
- Open source UEFI and TianoCore - presented at FOSDEM 2020 session
- How writing portable UEFI drivers improves reliability (and helps me) - presented at Fall 2018 UEFI Plugfest slides
- EDK2 Platforms update - presented at Fall 2017 UEFI Plugfest slides.
- A common platforms tree: presented at UEFI Spring Plugfest 2015 slides video
- UEFI is not your enemy. First presented at Cambridge Mini Debconf 2013. Updated versions presented at FOSDEM 2014 and LinuxTag 2014.
- UEFI and ACPI for ARM - co-presented with Graeme Gregory at Linux Plumbers Cpnference 2013.
- Blog series on memory access ordering: part 1, part 2 and part 3
- Software Considerations When Using High-Performance Memory Systems video slides: presented at ELC Europe 2010.
- porting Linux 2.2 to a custom MPC860 platform: University final year project report written in the form of a project diary.
Longer Education
From | To | Where |
---|---|---|
1996 | 1999 | Computer engineering, specializing in real time systems, at KTH (the Royal Institute of Technology), Sweden. |
1995 | 1996 | Military service as squad leader in a pioneer platoon at the Svea Life Guards |