Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Hi, thanks for being interested in installing the OpenMV Firmware Development Environment. This guide will cover how to install the development environment on Windows, Mac, and Linux.
Okay, I lied, there's no Windows development environment. Instead you can install Ubuntu on a virtual machine running on your windows machine:
- You can get VMware Player for free here to run Ubuntu. Or, you can get VirtualBox here. Both options are free, but, I've never used VirtualBox so I can't vouch for it. VMware player is great however.
- Download Ubuntu here. Then use whatever virtual machine software you installed to install the operating system. VMware Player makes this easy with a automated install option where it will install everything for you without you having to do anything other than enter your name and password initially.
- Install any updates, etc. for your operating system. Also, if you're using VMware Player make sure to install VMware Tools so you can drag and drop files between your Windows desktop and Ubuntu desktop.
Okay, I lied, there's no Mac development environment. Instead you can install Ubuntu on a virtual machine running on your mac machine:
- You can get VMware Fusion (paid) here to run Ubuntu. Or, you can get VirtualBox here. VirtualBox is free, but, I've never used VirtualBox so I can't vouch for it. VMware Fusion is great however.
- Download Ubuntu here. Then use whatever virtual machine software you installed to install the operating system. VMware Fusion makes this easy with a automated install option where it will install everything for you without you having to do anything other than enter your name and password initially.
- Install any updates, etc. for your operating system. Also, if you're using VMware Fusion make sure to install VMware Tools so you can drag and drop files between your Mac desktop and Ubuntu desktop.
Open a terminal and run the following commands:
sudo apt-get remove gcc-arm-none-eabi sudo apt-get autoremove sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt-get update sudo apt-get install gcc-arm-embedded sudo apt-get install libc6-i386 sudo apt-get install python2.7 python-dev python-pip sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev sudo apt-get install python-gtksourceview2 sudo pip install numpy pyserial==2.7 pyusb==1.0.0b2 Pillow sudo apt-get install git
This should install all the libraries and stuff on your computer. If you get an error Google for the solution. You also need to install OpenMV IDE which you can download here. Anyway, next you need to install the OpenMV GitHub Repo. First,
cd in your terminal to a place where you want to put the repo then:
git clone --recursive https://github.com/openmv/openmv.git cd openmv/udev sudo cp 50-openmv.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo adduser (username) dialout
Then log back out and log back in again. You should be ready to go now with the Firmware Development Environment.
If you're interested in submitting code fixes back to us you'll need to fork our repo first and clone your fork so that you can send pull requests. You need to fork these two repos:
If you are forking and cloning your own micropython repo in /src make sure to checkout the openmv branch:
git checkout openmv
Please follow this guide here for how to set the upstream repo after doing the fork so you can get our updates and see this here for how to merge our updates into your fork. You need to do this for both repos. Anyway, we'll only accept pull requests for a few files at a time. So, make sure that your edits are concise.
Qt Creator Installation
Alright, so if you're a VIM or Emacs user skip this section. If you're not, or you're looking for something new download QtCreator here. QtCreator will give you a great development environment to work with on Linux.
I have the complete Qt Development Environment installed on my Linux machine. If you just install QtCreator without the Qt Libraries you may run into Kit issues. Just Google for how to setup a GCC kit on Linux for QtCreator to get around these issues.
After installing QtCreator open it up and:
- Go to
File -> New File or Project... -> Import Project -> Import Existing Project- a dialog box will then popup.
- Set the project name to
openmvand the location to
openmv(the git repo you just installed) and then click
- QtCreator will scan the Repo for all the source files and let you select which files to be part of the project. Set
Show files matching:to
Hide files matching:.
Apply Filterand then click
- Finally, hit the
Finishbutton. Also, notice that QtCreator has automatically detected that the project is a Git Repo. However, we don't want QtCreator's project files added to Git Repo, so, please switch the
Add to version control:combo box to
<None>. Then click
Finish. If QtCreator crashes on you after this go to
Options -> Build & Run -> Kitsand make one of the
Auto-detectedkits the default by clicking
- Next, we really don't want to see
*.includesfiles in the Repo. So, please open up a terminal and execute the following commands:
echo "*.config" >> ~/.gitignore_global echo "*.creator" >> ~/.gitignore_global echo "*.files" >> ~/.gitignore_global echo "*.includes " >> ~/.gitignore_global echo "*.creator.user" >> ~/.gitignore_global
This will make sure these files don't show up in the Git Repo without you having to modify the
.gitignore file in the Repo. Note: We may change our mind on QtCreator files being in the repo in the future so as to make this setup process easier. The above ignores are completely undoable by just removing the
.gitignore_global in your home directory. Anyway, for now, QtCreator is just something I (Kwabena) am using to develop with. You may like it too.
- Next, click on
Projectsin the left hand sidebar. Add
- Under make arguments add
TARGET=OPENMV3to build for the OpenMV Cam M7 (or
TARGET=OPENMV2to build for the OpenMV Cam M4). If you don't add this the firmware is built for the OpenMV Cam M4 by default.
- Then switch over to the Run Tab (top area) and go to the
Run configurationarea on the same page. Add a
Custom Executableoption. For the executable write
/home/(username)/openmvide/bin/openmvideif you installed OpenMV IDE to the default location. This will allow you to launch OpenMV IDE from Qt-Creator which has the boot loader we'll use to program your OpenMV Cam.
- And... that's it, you're all setup now.
Okay, so now go back to the edit pane by clicking the
Edit button on the left hand side bar. Feel free to explore the and play around with QtCreator - it's a very powerful IDE. Next, click on the
Hammer icon on the bottom left hand corner. This will build all the code. If there's a problem building the firmware the IDE will automatically find all of the sections of the code with issues and take you exactly to the file with the problem when you clicking on the issue in the issues pane. When you're ready update the firmware click the
Run button (green arrow) and this should launch OpenMV IDE. From there you can use OpenMV IDE to update the firmware and then test your changes.
There are two ways to use OpenMV IDE to update your firmware, either through BIN files or DFU files. Both binary file types are generated by our build system. To update your firmware go to
Tools -> Run Bootloader in OpenMV IDE. Then browse for the
openmv/firmware/openmv3 (or openmv2) directory and select either the
firmware.bin file or the
openmv.dfu file. If you're lucky (you may not be if you are on a VM) then OpenMV IDE should be able to re-program your OpenMV Cam using our fast bootloader using the
firmware.bin file. If you aren't luckily (because you're using a VM) then OpenMV IDE won't be able to connect our our bootloader in time to update the firmware. In this case you have to use DFU then (which is slooow). So, select the
openmv.dfu file instead and load this onto your OpenMV Cam. Note that you have to put your OpenMV Cam into DFU mode first by attaching a jumper between the
RESET pins. OpenMV IDE will walk you through the steps you need to do for either firmware programming case.
As a note, here's some info about the binary files generated:
- bootloader.bin -> Pure binary of the bootloader (no firmware) - intermediate output.
- bootloader.elf -> Raw ELF file output from compile - intermediate output.
- bootloader.dfu -> DFU file of the bootloader - not useful.
- firmware.bin -> Pure binary of the firmware (no bootloader). OpenMV IDE's BIN loader uses this.
- firmware.elf -> Raw ELF file output from compile - intermediate output.
- firmware.dfu -> DFU file of the firmware - not useful.
- openmv.bin -> Pure binary of the bootloader+firmware - intermediate output.
- openmv.dfu -> DFU file of the bootloader+binary. OpenMV IDE's DFU loader uses this.
Anyway, to end this section - QtCreator is awesome. I love the IDE. You're going to love the fact that it indexes the whole project and makes it super easy to edit the code. The IDE has a ton of features. I implore you to explore the menus, options, and click on everything to see what the IDE has to offer. Your ability to navigate through the code will be greatly increased with QtCreator.
If you notice the IDE has a green line under includes this means you need to add the directory that include is starting from to the include path. Micropython always processes includes from the top level source directory which has no files in it so OpenMV IDE usually doesn't automatically add that directory to the search path.
I hope you read the above section. It automates all this for you using QtCreator. Anyway, you need to use OpenMV IDE to load firmware onto your cam if you want to program it. Please see the last section on using QtCreator (directly above).
If you want to use released firmware versus code that's on the bleeding edge of development then do
git checkout (tag) to checkout a versioned firmware release. For example
git checkout v2.5 will point your Repo Clone to that release. Then, once you've done this you can follow all the above steps like normal. When you're ready to switch back to the main firmware branch do
git checkout master.