Compiling with a Custom Configuration¶
The VI firmware doesn’t understand the JSON configuration file format natively,
so next you have to convert it to a C++ implementation. The OpenXC Python
library includes a tool that will generate the C++ for
your configuration file, so you still don’t have to write any code.
You should already have the Python library installed from the environment setup
you did earlier (and if not, run pip install openxc). Assuming the
accelerator-config.json file we created is in our home directory, run this
to generate a valid
signals.cpp for our CAN signal:
vi-firmware/src $ openxc-generate-firmware-code --message-set ~/accelerator-config.json > signals.cpp
and then re-compile the firmware:
vi-firmware $ fab reference build Compiling for FORDBOARD... ... 15 Compiling build/FORDBOARD/signals.o Producing build/FORDBOARD/vi-firmware-FORDBOARD.elf Producing build/FORDBOARD/vi-firmware-FORDBOARD.bin Compiled successfully for FORDBOARD running under a bootloader.
Success! The compiled firmware is located at
build/FORDBOARD/vi-firmware-FORDBOARD.bin. We can use the same VI
re-flashing procedure that we used for a binary firmware from an
automaker with our custom firmware - the process is going to depend on
the VI you have, so see the list of supported
VIs to find the right
There’s a lot more you can do with the firmware - many more CAN
signals simultaneously, raw CAN messages, diagnostic reqwuests, advanced data
transformation, etc. For complete details, see the VI Firmware docs. You can find the right
value for your VI in the VI firmware supported platforms page.