75 lines
2.8 KiB
Markdown
75 lines
2.8 KiB
Markdown
|
The following information will focus on the software development.
|
||
|
|
||
|
board
|
||
|
=====
|
||
|
|
||
|
The BusVoodoo uses a [custom board](https://bus.cuvoodoo.info/manual/index.html#_hardware_development) based on a [STM32F103RC](http://www.st.com/en/microcontrollers/stm32f103rc.html) micro-controller.
|
||
|
|
||
|
code
|
||
|
====
|
||
|
|
||
|
dependencies
|
||
|
------------
|
||
|
|
||
|
To develop the firmware, following Linux packages are required:
|
||
|
|
||
|
- _arm-none-eabi-gcc_ to compile the source code
|
||
|
- _arm-none-eabi-binutils_ to create the firmware binaries
|
||
|
- _arm-none-eabi-gdb_ to debug the firmware
|
||
|
- _rake_ automate development steps
|
||
|
- _openocd_ to flash and debug over SWD (when using an ST-Link V2 adapter)
|
||
|
- _doxygen_ to compile the documentation
|
||
|
|
||
|
The source code uses the [libopencm3](http://libopencm3.org/) library.
|
||
|
The projects is already a git submodules.
|
||
|
It will be initialized when compiling the firmware.
|
||
|
Alternatively you can run once: `git submodule init` and `git submodule update`.
|
||
|
|
||
|
firmware
|
||
|
--------
|
||
|
|
||
|
To compile the firmware files run `rake`.
|
||
|
This will generate two firmware:
|
||
|
|
||
|
- _bootloader_: a USB DFU bootloader
|
||
|
- _application_: the main application
|
||
|
|
||
|
*IMPORTANT*: to build the firmware for BusVoodoo hardware version 0, prepend `BUSVOODOO_HARDWARE_VERSION=0` before every `rake` command. This will make sure the few pin assignment differences are taken into account in the firmware.
|
||
|
|
||
|
documentation
|
||
|
-------------
|
||
|
|
||
|
To generate doxygen documentation run `rake doc`.
|
||
|
The documentation describing all files, functions, and variables will be available in the _doc_ folder.
|
||
|
|
||
|
Further comments are in the source code.
|
||
|
|
||
|
flash
|
||
|
-----
|
||
|
|
||
|
There are two firmware images: `bootloader` and `application`.
|
||
|
The `bootloader` image allows to flash the `application` over USB using the DFU protocol.
|
||
|
The `bootloader` is started first and immediately jumps to the `application` if it is valid and the DFU mode is not forced.
|
||
|
The `application` image is the main application and is implemented in `application.c`.
|
||
|
|
||
|
The `bootloader` image will be flashed using SWD (Serial Wire Debug).
|
||
|
For that you need an SWD adapter.
|
||
|
The `Makefile` uses a Black Magic Probe (per default), or a ST-Link V2 along OpenOCD software.
|
||
|
To flash the `booltoader` using SWD run `rake flash_booloader`.
|
||
|
|
||
|
Once the `bootloader` is flashed it is possible to flash the `application` over USB using the DFU protocol by running `rake flash`.
|
||
|
The `application` advertises USB DFU support (along with the USB CDC ACM class).
|
||
|
If the application is broken, force the bootloader to start the DFU mode by shorting the contacts marked as DFU on the board while powering up.
|
||
|
It is also possible to flash the `application` image using SWD by running `rake flash_application`.
|
||
|
|
||
|
debug
|
||
|
-----
|
||
|
|
||
|
SWD also allows to debug the code running on the micro-controller using GDB.
|
||
|
To start the debugging session run `rake debug`.
|
||
|
|
||
|
USB
|
||
|
---
|
||
|
|
||
|
The firmware offers serial communication over USART 1 and USB (using the CDC ACM device class).
|