Firmware Stuff
Flashing the Firmware¶
To flash the firmware, you must first have the GrovePi library/repository installed so for this you must follow the Getting Started guide.
Once the library is installed on the Raspberry Pi, run the following commands to have the firmware flashed onto the GrovePi:
cd ~/Dexter/GrovePi/Firmware
bash firmware_update.sh
This updates you to the latest version of the firmware which is the 1.4.0
.
NOTE TO OTHER LIBRARIES
Because the 1.3.0
firmware was recently released, lots of other libraries written in other languages other than Python are yet to be updated, so
they need to run on an older version of the firmware, specifically the 1.2.7
.
The 1.2.7
version can be found in ~/Dexter/GrovePi/Firmware/Archive
as grove_pi_v1_2_7.cpp.hex
. If you need to run on this older version, follow these steps to burn the firmware:
mv ~/Dexter/GrovePi/Firmware/grove_pi_firmware.hex ~/Dexter/GrovePi/Firmware/grove_pi_v1_3_0.hex.bak cp ~/Dexter/GrovePi/Firmware/Archive/grove_pi_v1_2_7.cpp.hex ~/Dexter/GrovePi/Firmware/grove_pi_firmware.hex bash firmware_update.sh
Running Tests¶
To run the entire suite of tests for the GrovePi follow these bash instructions:
cd ~/Dexter/GrovePi/Troubleshooting
sudo bash all_tests.sh
At the end of this process you'll get a log.txt
file on your Desktop at ~/Desktop/log.txt
.
Also, to see with which version of the firmware the library installed on the Raspberry Pi works with you can go to ~/Dexter/GrovePi
directory and run:
python grovepi.py
This should output a version number (of the GrovePi's firmware). Older versions of the firmware (<=v1.2.7
) won't get displayed when calling python grovepi.py
.
pi@raspberrypi:~ $ python grovepi.py
library supports this fw versions: 1.4.0
To see which is the version of the current firmware loaded on the GrovePi you can either run the above test (... all_test.sh
) from the Troubleshooting/
directory or you can run these commands:
import grovepi print(grovepi.version())
There are also cases when the GrovePi doesn't respond to requests. In this situation, you would normally see an exception appearing in Python. More often than not, these can be the source of problems:
- A non-present firmware on the GrovePi.
- A mismatch of versions between the firmware and the library on the Raspberry Pi.
In both of these situations, re-flashing the firmware is all it's needed.
Building the Firmware¶
There may be cases where additional modification to the firmware is required to accommodate someone's particular requirements. In this case, building the firmware and then uploading it is crucial. During our production, we use PlatformIO along with Atom IDE.
Once you get them both installed on your machine, open Atom IDE and add as a project the /Firmware/Source/grovepi
directory. The added directory will have the following structure:
lib/
src/
.gitignore
.travis.yml
extra_script.py
platformio.ini
Next, click on the build button or use ALT-CTRL-B key combination to build the firmware with PlatformIO. Once that it's done, head over to /Firmware/Source/grovepi/.pioenvs/grovepi
directory and notice the firmware.hex
. That's the firmware that was just built. You can then burn that to your GrovePi.
Resetting the GrovePi¶
To reset the GrovePi from your Raspberry Pi, run the following command provided you have installed the GrovePi library on your image:
avrdude -c gpio -p m328p