nppilot

Some things to try as part of fiddling:

  • Using golang as the main language
  • Using libmaple instead of the ST libraries

Investigation stages

[[nppilot/boottime]]

Parts

  • CPU: Arietta G25
    • 3.3 V only.
    • GPIO pins are 8 mA up to 3.6 V
    • 85 mA @ 5 V
    • On board NCP1529 as 5 V regulator. Specified 2.7 to 5.5 V
    • Watchdog
    • Serial: +3V, 5V, RX, TX, WKP, GND
  • GPS: Sparkfun LS20031 (MC-1513)
  • IMU: Drotek MPU6050
    • 3.3 V, I2C, drivers/iio/imu/inv_mpu6050
  • Receiver: FrSky TFR4
    • 5 V+. PPM output. G25 I/O lines can interrupt on change.
  • LCD: MOD-LCD3310
    • 3.3 V, SPI + control, driver
    • pcd8544 based? Or more recent?
  • Serial: Sparkfun FTDI
    • GND CTS VCC TXD RXD RTX

Unknown

  • Arietta power supply

AT91G25 TC unit

There’s bits of a driver under drivers/misc/atmel_tclib.c and include/linux/atmel_tc.h.

Counter mode has two capture registers that can trigger from a TIOAn line. They are:

  • TIOA0: PA21
  • TIOA1: PA22
  • TIOA2: PA23
  • TIOA3: PC2
  • TIOA4: PC5
  • TIOA5: PC12

Development environment

  • GCC 4.8 with gccgo for arm-none-eabi
  • OpenOCD works inside VMWare
  • OpenOCD plus Signalyzer Lite works

CopterControl basics:

  • CopterControl programmer works
  • Serial to JSC cable built
  • Send and receive serial over the main port

Command:

  • Can build and run Mini XPlus kernel

Communications:

  • STM32-H103 shows as a USB CDC device
  • Measure latency and jitter against x86
  • Measure latency and jitter against XPlus

Using golang:

  • Build for arm-none-eabi
  • Interfacing with C functions
  • Interfacing with C types
  • When the runtime is needed

Third party components

Qualities for third party components:

  • Open license
  • Takes patches
  • Healthy community?

RTOS:

  • NuttX (BSD)
  • ChibiOS (GPLv3)
  • TNKernel (BSD-like?)

HAL:

  • ChibiOS
  • libmaple

Drivers and flight:

  • CoperControl / OpenPilot
  • CrazyFlie
  • Ardupilot