This is a project for getting Vireo, a runtime engine for LabVIEW VIs saved in VI assembly (.via) format, compiled and running on microprocessor targets like Raspberry Pi Pico (RP2040).
Our "Hello World!" proof of concept will basically look as follows:
- Build Vireo for RPI Pico - Build Vireo into an RF2 file that can be run on the RPI Pico
- Start Vireo in Interactive Mode - Have Vireo start in interactive mode (where it is listening for commands on STDIN and outputting print statement results to STDOUT)
- Use USB Serial for STDIO - Use the Pico's USB serial UART for STDIN and STDOUT, so that VIA commands and results can be sent via serial.
- Send "HelloWorld.vi" via Putty - Use Putty (or Minicom) to send the "HelloWorld.via" VIA data to Vireo and view the response.
Alternatively, it might be easier to not start Vireo in interactive mode and simply build "HelloWorld.via" into the RF2 file and execute it at startup.
A great installation and user experience solution would be something similar to MicroPython/CircuitPython (see Installing CircuitPython and The CircuitPy Drive).
- When a board doesn't have any firmware (or is loaded into the bootloader by holding down the bootloader button at startup) it shows as a USB drive named "PICO" (for the Raspberry Pi Pico).
- The user can copy the Vireo binary (a uf2 file) to the "PICO" USB drive, to install Vireo.
- After copying the file, the board will reset and load the Vireo firmware.
- With the Vireo firmware running, the board will show up as a "VIREO" USB drive on the user's computer.
- The user then copies over a
main.viafile, which causes the Vireo firmware to immediately run it (or restart it when themain.viafile is re-saved). Vireo also runs thismain.viafile at boot/startup if present.
The MicroPython and CircuitPython projects have already solved the challenge of abstracting the handling of Startup and GPIO. Could that codebase be leveraged and linked to the vireo runtime instead of python?