Prior Work
In the summer of 2024, I went to Madrid as part of the UC Education Abroad Program. As part of the program, I worked part time in a research lab, where I joined the Microelectronic Design and Application Group at Universidad Carlos III de Madrid. The group studied how commercial microprocessors hold up when exposed to radiation in space. I came in with experience writing C, but virtually no background in embedded systems, so most of what I learned I had to figure out on my own as I went. The project itself was driven by a real practical question: as private companies push further into space, can they use cheap off-the-shelf chips instead of the expensive radiation-hardened parts traditionally required for satellites?
My main job was writing benchmarks for ARM Cortex-M and RISC-V processors that would reveal how a chip behaves when bits get corrupted by stray particles. The benchmarks ran common algorithms like matrix multiplication, quicksort, and SHA-256, and had to be kept as small and predictable as possible so that any errors could be traced back to radiation effects rather than noise in the test itself.
I wrote these for several boards, including the STM32H7 and ATSAMV71 (both Cortex-M7), an SiFive HiFive board running a RISC-V processor, and a smaller Cortex-M4 board. Some versions ran on bare metal with no operating system at all, and others used FreeRTOS, since the research wanted to understand whether running an OS changed a chip's sensitivity to faults.
To validate the benchmarks before any real radiation exposure, I built a fault injection testbench that simulated what particles do: a script would randomly flip bits in the processor's working registers while the benchmark ran, and a separate Python script would sort each flip into one of three outcomes: no effect, a data error, or a watchdog reset. The watchdog itself was something I set up in hardware, so that if a fault crashed the processor, it would automatically reboot and keep logging. One of the STM32H7 boards did go through actual radiation testing while I was there, though the beam killed it almost immediately and no usable data came out of that run.
Going in with basically no embedded experience and coming out comfortable writing bare-metal C, reading processor reference manuals, configuring peripherals by hand, and porting code across architectures was the most practically valuable thing I got out of this. I spent a lot of hours outside the lab continuing to work on things because I genuinely found it interesting. The skills transferred directly to my ECE coursework afterward, and the exposure to radiation effects as a real engineering concern gave me a perspective on hardware reliability that I had not gotten in any class.
At the end of my time doing the research, I wrote an informal but in depth write-up of the work I had accomplished. Check it out if you're interested! View the write-up (PDF)