Skip to content

orgua/shepherd-targets

Repository files navigation

Target Boards & Firmware

Build MSP430 Build nRF52 QC-Tests

Main Documentation: https://orgua.github.io/shepherd

Source Code: https://github.com/orgua/shepherd-targets

Main Project: https://github.com/orgua/shepherd


The repository contains a collection of target-hardware and mcu-firmwares used by the shepherd-testbed. In the past shepherd had a nRF52-only target but can now leverage an additional FRAM, as demonstrated successfully by the Riotee-Platform.

NOTE: The shepherd testbed has a second target-port (unused) and is looking for ideas. Just contact us.

nRF52 with MSP430FR as FRAM

Hardware v1.0 uses

  • nRF52840 (Panasonic PAN1780)
  • MSP430FR5962 (TI)
  • RTC

Target_nRF_MSP430

BOM, gerber-files and schematics are available in the PCB-Directory. This folder also contains a guide for testing new target-PCBs.

Target_nRF_MSP430_render

Features

  • freedom to use both MCUs as needed (just as radio or FRAM) or disable when not needed (deep sleep)
  • over-voltage protection for V_LV (max 3.9V)
  • two debug LEDs with external supply (minimal impact on pwr-budget)
  • one self-powered LED to "burn" energy
  • io pins not interfering with RF (nRF PS v1.6 page 578)
  • LEDs / UART similar to Riotee
  • nRF uses low voltage mode (PSv1.1 page 61)

nRF52-Firmwares

  • nrf52_demo_rf: demo implementation for a simple node that sends BLE packets when energy budget allows it

  • nrf52_testable: watches all gpio and reports with UART messages (verification after assembly)

    • ensures that pcb is assembled OK and both MCUs are programmable and show basic functions
    • what is not tested: watchdog, FRAM, RF-Frontend (-> use rf-demo or rf-survey), sleep power consumption
  • nrf52_rf_test: sends out 1 BLE-Packet per second (verify with an app like RaMBLE)

  • nrf52_rf_survey: Link Matrix Generator - TX-Unit - sends packet with every possible P_TX, loops until stopped

  • nrf52_deep_sleep: practically turned off MCU with the lowest possible consumption

  • TODO: nrf52_spi_radio - default implementation to use nRF as a radio frontend

MSP430FR-Firmwares

  • msp430_deep_sleep: practically turned off MCU with the lowest possible consumption

  • msp430_spi_fram: riotee implementation to use MSP as a flash storage

  • msp430_testable: switches on all shared gpio one by one (verification after assembly)

  • TODO: cleanup-fw - FRAM & program-storage should be wiped between runs

Getting started

Step by step description for installing all prerequisites to compile the firmware.

nRF52

  • Make sure you have the GNU Arm Embedded Toolchain installed
  • If arm-none-eabi-gcc is not in your path, set the environment variable GNU_INSTALL_ROOT accordingly, e.g.: export GNU_INSTALL_ROOT=/opt/toolchain/ (note the trailing foreslash)
  • Download the nRF5 SDK from here. (You don't need a SoftDevice) and extract it
  • Set the environment variables SDK_ROOT to the corresponding absolute path, e.g.: export SDK_ROOT=/home/user/nRF5_SDK_17.0.2_d674dde/
  • run make

Refer to the GitHub workflow for how to install the toolchain and build the project.

MSP430

To build the code, you'll need the gcc toolchain for the MSP430 microcontroller series. Refer to the GitHub workflow for how to install the toolchain and build the project.

Controlling the Node-ID

When an elf-firmware contains a SHEPHERD_NODE_ID the variable will patched with the actual target-ID before running the experiment. See the proposed c-file for more information.