Table of Contents |
---|
...
Table of Contents |
---|
Introduction
You can refrain from downloading anything on the linked websites unless it is in the Installation section, —we have set up a template package that already contains most of the libraries and it should be straightforward to get set up on the rest of the development environmentVagrant box that packages the development environment for you. This guide is meant to help you understand the layout of the template and understand the toolchain required for developing embedded software for the solar car. It aims to be a comprehensive guide to getting you to the point where you can start developing as soon as you feel comfortable with the C paradigms for embedded programming.
...
Prerequisites
Before we get started if you have not yet done so, please read up on Software in particular, the Coding Standards! These will be necessary to actually do any development on the car. It is also recommended that you spend some time working with the MSP430 launchpads which were part of the architecture from the previous vehicle MSXI and will provide a good basis for getting started.
...
Supported Development Toolchain
Compiler
...
A compiler builds human readable source code into a machine readable target language, usually a machine executable or binary for a specific architecture. GCC ARM compiles C code into machine readable .elf, .hex or .bin files which can be flashed onto the MCU. GCC ARM
...
is the standard open source compiler for ARM architecture, which is also what we're using. Compilers are powerful and often catch typos, errors, and warnings; they also optimize code for efficiency or size. The compiler flags set these
...
behaviours of the compiler.
Build Tools
...
Build tools usually instruct the compiler on where the source files it is building are located and which files to look at in order to build the target program. Often a Linker will be used with a Makefile to build a collection of C and header files into a standard library which can be included in your program. GNU Make
...
and GNU Linker (aka ld) are long-standing open source standard build tools used by many developers (including us!), although many alternatives do exist.
Linter
...
A linter is a program that checks the style of source code for errors. Some linters also
...
perform static analysis, ours does not, which look to catch programming errors before the code is executed. cpplint
...
is Google's open source linter for C/C++ programs, note that our Coding Standards closely follow Google's and as a result, this linter works well for us. The linter has been modified to support some slightly different standards and will be less pedantic.
Flasher
...
A flasher will transfer firmware (our compiled program) onto the MCU. Typically, this is done with a special cable or by a chip on the PCB and requires flashing software to transfer the contents of the source code into the memory of the MCU. For our purposes, we will be using st-link
...
with GDB
...
for debug which is the chip manufacturer supported method, or OpenOCD
...
, the open source
...
equivalent.
...
- Anyone just starting out and especially those using Windows are strongly encouraged to use the Eclipse IDE which is one of the few ways to get a working Toolchain on a Windows machine. Note that we will not be supporting any issues you may encounter using other methods on Windows although, we will also support Linux if you want a VM or dual boot but you will need to figure out the install on your own.
...
IDE
Just about any text editor is supported, since you can perform builds and flashing via the Vagrant box, using the shared/ directory between your host operating system and the Vagrant image.
Some recommendations that core members like include Vim, Sublime Text and Visual Studio Code.
Source Control
We use GitHub for our source and versioning control. In order to contribute to the codebase, you will also need to start using GitHub. If you are new to GitHub you may want to check out
...
these guides. We have tight controls on out git repositories and require all commits to come from pull requests and that they are squashed prior to submitting
...
.
Installation
If you don't already have one, get a GitHub account, and join our GitHub organization uw-midsun.
...
Note: If any of the vagrant commands gives an error, you might need to have VT-x/AMD-v enabled. This can be done through your BIOS settings (the setting is probably called Intel(R) Virtualization Technology, or something).
Prerequisites
...
These 3 commands only need to be run the first time you start working with uwmidsun/box. More details can be found in the README.md file.
The shared/ directory will be shared between your host operating system and the virtual environmnent (/home/vagrant/shared/). You can clone the uw-midsun/firmware repo here from the ssh session, and then use your editor of choice from your host operating system
...
Note: There's a regression in VirtualBox that prevents USB passthrough from working correctly with STLink/JTag. On a Mac, ensure that you install VirtualBox 5.0.8, and the 5.0.8 Extension Pack.
Prerequisites
...
Then clone the uw-midsun/box repository somewhere
Code Block | ||||
---|---|---|---|---|
| ||||
git clone https://github.com/uw-midsun/box.git && cd box/ |
And start the box using
Code Block | ||||
---|---|---|---|---|
| ||||
vagrant up && vagrant reload |
This will download the Vagrant box, which might take a while.
Then, to access the box, ssh in
Code Block | ||||
---|---|---|---|---|
| ||||
vagrant ssh |
These 3 commands only need to be run the first time you start working with uwmidsun/box. More details can be found in the README.md file.
The shared/ directory will be shared between your host operating system and the virtual environment (/home/vagrant/shared/). You can clone the uw-midsun/firmware repo here from the ssh session, and then use your editor of choice from your host operating system
...
These commands are for a Debian-based distribution (like Ubuntu).
Prerequisites
Make sure git is installed
Code Block | ||||
---|---|---|---|---|
| ||||
sudo apt-get install git |
...
After installing VirtualBox, you'll have to add your user to the vboxusers group, so that the virtual machine can access your USB devices.
Code Block | ||||
---|---|---|---|---|
| ||||
sudo usermod -a -G vboxusers $USER |
...
These 3 commands only need to be run the first time you start working with uwmidsun/box. More details can be found in the README.md file.
The shared/ directory will be shared between your host operating system and the virtual environmnent (/home/vagrant/shared/). You can clone the uw-midsun/firmware repo here from the ssh session, and then use your editor of choice from your host operating system
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ make all |
Same as make
Code Block | ||||
---|---|---|---|---|
| ||||
$ make clean |
...
In addition to doing what make clean does it also cleans the library from the libraries/libraries driectory directory
Code Block | ||||
---|---|---|---|---|
| ||||
$ make program |
...