Vex Robotics
Heading into the 2010 Vex Robotics Competition season, our team heard some great news: we were being issued a pre-release beta of the Vex Cortex Microcontroller based on the the ARM Cortex processor, Compared to the original Vex Microcontroller V0.5, which was based on a PIC18 processor, the new microcontroller was blazing fast and used an architecture that has a full-featured open-soruce toolchain. Unfortunately, the new microcontroller would not be available a scant few months before the World Championship.
This was a daunting problem. With the new microcontroller arriving so late it was very unlikely that we would have time to port and test our competition code to the new architecture. Instead, we decided to design a hardware abstraction layer that serves as a layer of indirection between the high-level user-code and low-level hardware access. As long as our programs only interacted with the hardware through this abstraction layer, the same code could be easily modified to run on both platforms.
Accepting the 2010 Innovate Award for HAX