PSAS STM32F4xx firmware development.
C Makefile Python Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ChibiOS @ a75bd0a
common
notes
projects
toolchain
.gitignore
.gitmodules
.travis.yml
Doxyfile
Makefile
README.md
README_build.md

README.md

STM32 Firmware Development

Build Status Coverity Scan Build Status

This repo is for firmware, OS, and application code for the STM32F4xx series of microcontrollers used on the PSAS AV3 avionics system.

To initialize the ChibiOS submodule run:

$ git submodule update --init

When ChibiOS updates you'll need to re-sync it as its origin has changed: The last time ChibiOS was updated: June 2014

$ git submodule sync
$ git submodule update

Directories:

  • projects
    • projects go here.
    • projects used on the rocket are prefixed by flight-[a-zA-z]
      • flight-rnh: Handles power distribution, battery management, and networking.
      • flight-imu: Handles all sensors including accelerometer, gyro, magnetometer, and pressure, and sends samples over ethernet to the Flight Computer.
      • flight-gps: Manages both the COTS and Bespoke GPS, sending data over ethernet to the Flight Computer.
      • flight-servo: Receives commands over ethernet to set servo positions.
    • intro projects or tool chain test projects
      • e407-led: Simple blinking lights demo
      • enet-udp: Demonstration of how to do networking in ChibiOS.
  • common
    • code that tends to be reused in projects. At the top level it has makefiles and is further grouped into
    • boards
      • boardfiles for our own custom boards. Most off the shelf board boardfiles can be found in ChibiOS/boards
    • devices
      • for peripheral drivers
    • net
      • network ports and addresses (IPs)
      • this is common across the RocketNet
        • maintained outside of the stm32 repo
    • util
      • general programming utilities
      • other utilities
  • ChibiOS
    • git submodule pulled from our own fork of ChibiOS
  • toolchain
    • development directory for cross compilers and openocd
  • notes
    • general notes that don't have a more specific location

CHIBIOS

- As of Tue 04 March 2014 20:56:56 (PST)
- We are using a slightly modified version of Chibios Release 2.6.3
    - This is maintained in the PSAS Github Repository
- It is a submodule of the stm32 git project.

BOARDS

- PSAS is currently using two boards
    - Olimex e407
    - PSAS Rocketnet Hub

TOOLCHAIN SETUP

Debugger

OpenOCD is the tool we use to communicate, flash, and debug the microcontroller via JTAG.

  • Version v0.8.0 as of February 2015
  • Instillation instructions:
    • The Debian and Ubuntu v0.7.0 packages now have the correct build flags so it's as simple as
      • sudo apt-get install openocd
    • For other systems, or if you are building it yourself, ensure that it's built with --enable-ft2232_libftdi --enable-stlink
  • udev rules
    • To use OpenOCD without sudo, move 99-psas-jtag.rules in common/ to /etc/udev/rules.d/ and the run sudo udevadm control --restart. Alternativly some versions of OpenOCD ship with a more complete udev rule set in /usr/share/openocd/contrib/

Compiler

GNU Tools for ARM Embedded Processors

  • Version 4.8 as of March 2014

  • Instillation instructions:

    • The prefered way is to use the provided PPA
  • Ubuntu 14.04 and Debian testing recently (April 2014) introduced their own compiler package named gcc-arm-none-eabi, but it's not the same as ours and the packaging is broken anyway. If you've just upgraded to 14.04 run:

    sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
    sudo apt-get autoremove
    sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
    sudo apt-get update
    sudo apt-get install gcc-arm-none-eabi=4-8-2014q1-0trusty8
    

Other

  • Programmers used for JTAG
    • Olimex-arm-usb-ocd and STLinkV2 are what we currently use, but any supported by OpenOCD should work
  • Debugging flow with GDB
    • make gdb will start gdb and connect it to openocd. make gdb_stl if you're using the StlinkV2 debugger.