Research Interests
- Microcontroller Systems
- Real-time Systems
- Microkernel Operating Systems
- Microcontroller Virtualization
- Hardware Abstraction
- AI-based Resource Management
Why Microcontrollers?
Have you wondered what exactly powers your NES gaming consoles? Have you ever taken apart your remote-controlled toys and try to re-purpose them? Have you ever tried to connect your desktop or laptop computers to motors, lights, or sensors, and find these computers too heavy-weight?
Or maybe, you’re already a maker, and are familiar with Arduino, Raspberri Pie, Beaglebone, and quadcopters. Or you’re just bored with regular heavy, complex, power-hungry, and common x86-based computers, and want to have an esoteric take on computing.
If you do, then the microcontrollers (MCU) are the right platform for you. Microcontrollers are system-on-chip hardware that contain CPU, memory, peripherals to function as a complete small computer. They are usually designed for a specific purpose and are embedded into the things that they power, and such systems are called “embedded systems”; when they’re connected to the network, the things they power are also connected. In the Internet-of-Things (IoT) hierachy, these things are the end nodes.
Due to their hardware nature and deployment pervasiveness, microcontrollers pose unique scientific challenges that are not present in general-purpose computers.
Microcontrollers are tangible.
Unlike standalone laptops and desktops, microcontrollers are often integrated into tangible products that are immersed into your living. They are at the core of your remote controls, door locks, washing machines, microwave ovens, power banks, quadcopters, gaming consoles, video cameras, wall clocks, and almost every other minor electronics.
You won’t be able to notice them (unless you’re deliberately doing so), but they do affect your life in a tangible way. This is very different from x86-based computers where every functionality is a software that you cannot physically feel.
In other words, microcontroller-based systems read input from, and direct their output to the physical environment. If you like tangible things, then this is the right building platform for you.
Microcontrollers are simple.
x86-based systems are horrendous in the sense that they contain millions if not billions of code. Want to tap into their circuits? No way. Want to read the linux kernel? Too much code. Want to understand how the graphic cards work? Driver is closed source. Want to understand TCP/IP? Buy big books and they end up sitting beneath your monitor. Literally any momentum to gain a deeper understanding of the system will be suck up into the abyss of seemingly infinite code.
By contrast, microcontrollers are much simpler in every way. It is not to say that microcontroller software are less advanced, but to say that they are prepared for a single scenario or use case, and contains only the code for that scenario. This means that all interaction between software and hardware is straightforward to understand. They’re also easier to start with than x86-based computers where you have to learn a lot to build meaningful applications.
In other words, microcontrollers are easy to learn and straightforward to use (but can be difficult to excel at!). If you want to learn real things, microcontrollers are the learning kickstarter for you.
Microcontrollers are cheap.
x86-based computers dents into your wallet by $1000 or more, and if you keep them on 24/7, the electricity costs even more than the machine itself. By contrast, microcontrollers are cheap and nimble, and you can buy tens of thousands of them for $0.1 each.
Of course, that’s at the lowest end, without networking capability. If you’re willing to pay up to $1, you can get excellent Wi-Fi connectivity on them. And they generally run without any electricity cost at all, being able to be powered by a single battery for years. You simply won’t be able to get that with x86-based computers.
In other words, microcontrollers are cheap to buy and costless to use, even in huge numbers. If you want to scale out, microcontrollers are the deployment platform for you.
Microcontrollers are reliable.
x86-based computers require diligent maintenance to stay functional. Microcontrollers simply don’t need that. Plug them in and they just work like you would expect. Even under extreme heat, excessive electromagnetic interference, G force strikes, or even cosmic ray radiations. Regular x86 computers will always fail due to their complexity and weakness.
In other words, microcontrollers are robust to the teeth, even in harsh environments. If you want to build strong, microcontrollers are the ultimate stronghold that you can rely on.
Microcontrollers are interesting.
x86-based systems are often optimized for a simple, near-sighted goal: maximizing average-case throughput. This is analogously similar to people who care nothing more than money, fame, exam score (and number of publications, yeah!). If that is your only goal, then a single best stereotype pathway exists, and such life is hardly worth living.
You only live once, and there’s always more to secular success in your life. Likewise, microcontroller applications care more than just average-case performance. Sometimes average-case performance does not matter at all, and we’re looking at worst-case execution time, battery conservation and fault tolerance; and the list goes on. This creates a much larger set of goals than regular computer science research, and raises many more interesting questions that could be explored.
In other words, microcontrollers are inherently multi-objective, and the same functionality can have different emphasis in different scenarios. If you have diverse requirements, microcontrollers are the versatile launchpad that can serve any purpose.
Selected Publications
First-authored or correspondence-authored
Predictable Virtualization on Memory Protection Unit-Based Microcontrollers (RTAS 2018)
Runyu Pan, Gregor Peach, Yuxin Ren, Gabriel Parmer
MxU: Towards Predictable, Flexible, and Efficient Memory Access Control for the Secure IoT (EMSOFT 2019)
Runyu Pan, Gabriel Parmer
Practical Principle of Least Privilege for Secure Embedded Systems (RTAS 2021)
Samuel Jero, Juliana Furgala, Runyu Pan, Phani Kishore Gadepalli, Alexandra Clifford, Bite Ye, Roger Khazan, Bryan C. Ward, Gabriel Parmer, Richard Skowyra
SBIs: Application Access to Safe, Baremetal Interrupt Latencies (RTAS 2022)
Runyu Pan, Gabriel Parmer
Second-authored
eWASM : Practical Software Fault Isolation for Reliable Embedded Devices (EMSOFT 2020)
Gregor Peach, Runyu Pan, Zhuoyi Wu, Gabriel Parmer, Christopher Haster, Ludmila Cherkasova
OmniWasm: Efficient, Granular Fault Isolation and Control-Flow Integrity for ARM Microcontrollers (RTAS 2024)
Maorui Bai, Runyu Pan, Gabriel Parmer
Long-Term Projects
RVM Microcontroller Hypervisor
Current Members
Junchao Li