The goal of Project Alava is to enable the easy construction, programming and debugging of microcontroller-based systems, followed by refinement to an optimized realization. High-level programming of the desired system in TypeScript using capability-based APIs translates into requirements on the hardware, allowing for many kinds of hardware components to be used with no code changes. A web-based hardware simulator allows for program testing, debugging and performance estimation before deployment. Alava compiles the high-level program into an executable containing a compatible hardware manifest, which greatly aids the configuration and debugging of the resulting system. Alava leverages the open source framework powering Microsoft MakeCode.
Compared to traditional hardware/software co-design, Alava starts at a much higher level of abstraction than gates and circuits. Its initial target is discrete printed circuit boards and hardware modules that encapsulate commodity embedded hardware components such as microcontrollers, sensors and displays. An initial system may include a set of such boards and modules, networked together, to realize the user’s vision. To facilitate rapid prototyping, Alava leverages JACDAC (https://jacdac.org) which provides a lightweight but powerful bus-based communication protocol for embedded systems. JACDAC allows boards and modules to be combined simply and quickly.