Windows USB Device Driver¶
If you want to send and receive vehicle data in Windows via USB, you must install the VI Windows Driver.
The OpenXC Python library, in particular the
openxc-dashboard tool, is
useful for testing a VI. A quick “smoke test” using the Python tools is
described in the Getting Started Guide for Python developers
at the OpenXC website.
Keep in mind when bench testing that the VI will suspend if no CAN bus activity
is detected. Compiled with
DEFAULT_POWER_MANAGEMENT=ALWAYS_ON to stop this
behavior, but don’t leave it plugged into your car with power management off.
To view debugging information, first compile the firmware with the debugging flag:
$ make clean $ DEBUG=1 make $ make flash
When compiled with
DEBUG=1, two things happen:
- Debug symbols are available in the .elf file generated in the
- Log messages will be output over a separate USB endpoint
required) - see I/O, Data Format and Commands for details. You can optionally enable logging
via UART with the
DEFAULT_LOGGING_OUTPUTconfig option, but there may be a performance hit - see the Makefile Options.
To view the logs via USB, you can use the
--log-mode flag with the Python
CLI tools. See the
--help text for any of those tools for more information.
To view UART logs, you can use an FTDI cable and any of the many available
serial terminal monitoring programs, e.g.
minicom, etc. The pins
for this UART output are different for each board, so see the platform
The non-embedded platform specific code in this repository includes a unit test suite. It’s a good idea to run the test suite before committing any changes to the git repository.
The test suite uses the check library. It
should already be installed if you used
bootstrap.sh to set up your
Running the Suite¶
vi-firmware/src $ make clean && make test
Functional Test Suite¶
For a complete functional test of the firmware code on the support hardware platforms, the repository includes an automated script to program a VI and run a self-test. The VIs are configured to self-receive every CAN message they send, allowing the complete firmware stack to be tested without any physical CAN configuration. The test script is written in Python and uses the OpenXC Python library send commands to the VI, read responses and receive the test vehicle data.
The functional test suite is currently supported on the:
- Ford Reference VI
- chipKIT VI
Running the Suite¶
Make sure you have the following connected to your development machine:
- Reference VI via USB
- USB JTAG programming connected to the refernece VI
- chipKIT micro-USB (for OpenXC interface)
- chipKIT mini-USB (for programming)
Then run the automated functional test suite:
vi-firmware/ $ fab auto_functional_test
which will program each of the VIs and run the tests on them independently. The process takes a couple of minutes.
Other Hardware Tests¶
1 build configuration enables user to test hardware
functionality on the device such as the BLE radio, RTC and SD card.
Supported on CrossChasm C5 hardware this option creates a firmware
build that will check that hardware and glow an onboard LED depending
on the result. The method for programming the test firmware is same as that for
the default settings. If all tests were a sucess then the green LED will glow
on the device. Failure will result in blinking of red LED after which it will
glow continuously red. To repeat the test one has to unplug the device and power
cycle the board.
Blink times = 1, SD Card could not be mounted. Blink times = 2, RTC could not be mounted. Blink times = 3, Bluetooth low energy radio failed to initialize.