Introducing the ‘ARMinARM’ board for the Pi Family

PDF24    Send article as PDF   
The ARMinARM board is an STM32 ARM Cortex-M3 microcontroller add-on board for the Raspberry Pi Model B+ with a focus on flexibility and hackability, while still being easy to use. The STM32 runs on 72MHz and has 512KB Flash and 64KB SRAM memory.

ARMinARM Raspberry Pi Plate

The Raspberry Pi is used as an “all-in-onecode-editor/compiler/programmer/debugger/communicator for the STM32 Cortex-M3 on the ARMinARM board. All software is open source, and runs on the Raspberry Pi.

This board comes as a partially complete kit (solder through hole headers yourself) for US$39.95, and without a Raspberry Pi. Shipping is extra and will vary on where in the world you are.

For more information, please visit

The kit contains:

  • One ARMinARM board with all SMD components already soldered on
  • All male and female pin headers you need
  • Plenty of jumpers (20 pieces)
  • Four standoffs and screws
  • One 32.768KHz crystal oscillator for the RTC


All STM32 and Raspberry Pi GPIO pins are available on easy accessible headers, that align on a 0.1″ grid. There are 77 GPIO pins in total (the STM32 has 51 and the Raspberry Pi has 26 usable GPIOs).

All GPIO’s are 3.3 Volt logic, but most of the STM32 GPIO pins are 5 Volt tolerant. That means that generally, you can connect your sensors and chips without having to worry too much about voltage level conversion.

And it’s usable as a stand alone board too! Remove it from the Raspberry Pi (keep the standoffs on), move 1 jumper and plug in a PC or laptop with a USB cable.

ARMinARM Raspberry Pi Plate

Having an ARM Cortex microcontroller on your Raspberry Pi adds a lot of extra features.

  • ARM Cortex-M3 microcontroller (STM32F103RET6) with 512KB Program Flash
  • 64KB SRAM
  • 72MHz clockspeed
  • ​GPIO


    • ​1x USB
    • 1x CAN
    • 1x SDIO
    • 2x I2C
    • 3x ADC (16 channels, 12 bit)
    • 2x DAC
    • 5x USART
    • 3x SPI
    • 2x I2S
    • 2x PWM
  • 8x Timer: 2x basic + 4x 16bit
  • Temperature sensor
  • JTAG
  • watchdog
  • RTC.
  • Fits the Raspberry Pi perfectly, but also great to use stand alone.
  • Female extension headers for all STM32 and Raspberry Pi GPIO pins.
  • All pins align to the standard 0.1″ grid. Create your own shields on any cheap proto/veroboard.
  • All pins are 3.3V logic, most (but not all) STM32 pins are 5V tolerant.
  • USB mini connector. Can act as “programmable High Speed USB client” (HID/DFU/CDC).
  • Reset button.
  • User button (bypass with jumper to free up analog pin PA0).
  • Power from Raspberry Pi or USB (selectable with jumper).
  • 3.3V voltage regulator (600 mA, bypassable with jumper).
  • Green Power LED.
  • Red user LED (bypass with jumper to free up digital pin PB0).
  • Footprint for 32.768KHz crystal + supporting caps for RTC.
  • Jumper Bank to connect commonly made connections (UART, I2C, SPI, BOOT0, RESET) between the Raspberry Pi and STM32 on the ARMinARM board.
  • Jumper to bypass “USB Disconnect” to free up digital pin PC13.

Hardware is only useful with a decent amount of software to go with it. A set of open source commandline tools is provided to compile, upload and debug your firmware. All software and example source code is customized to run on the ARMinARM board, and most (if not all) of the installation is automated.

  • GCC based toolchain (arm-none-eabi) provided. Compile, upload and debug on the Raspberry Pi itself.
  • Runs libmaple, an Arduino/Wiring compatible software library.
  • Runs Espruino, a javascript interpreter for microcontrollers.
  • Runs elua, a lua interpreter for microcontrollers.
  • Runs libopencm3, a C abstraction layer for ARM Cortex-M microcontrollers.
  • Runs CMSIS/Std_Periph, the ‘Cortex Microcontroller Software Interface Standard’.
  • Use the Raspberry Pi as a JTAG debugger with OpenOCD’s sysfsgpio interface (or bring your own ST-LinkV2 compatible SWD debugger).

ARMinARM Ssoftware Install Scripts:

The ARMinARM installation scripts assume you’re running an up-to-date Raspbian distribution on your Raspberry Pi. Other distributions will probably also work, but you may need to install additional software.


You’ll want to install the following additional packages on Raspbian 2014-06-20 or newer:


​Setup and install software for the ARMinARM board by cloning the repository from github, and run setup.


When you run setup, you’ll see a menu.

############################################################### # ARMinARM # ###############################################################

Essentials: 0) Update Self 1) Update/Install ARMinARM GCC Toolchain 2) Add /opt/arminarm* to PATH env 3) Disable serial port (required for ARMinARM board, needs reboot) 4) Enable serial port (for booting RPI over serial port, default) 5) Update/Install node.js

Fast start: 10) Upload espruino.bin to ARMinARM board 11) Upload elua.bin to ARMinARM board

Source code: a) Update/Install CMSIS_StdPeriph Examples b) Update/Install Espruino source code c) Update/Install esp-cli d) Update/Install eLua source code e) Update/Install libmaple f) Update/Install libopencm3 g) Update/Install OpenOCD h) Update/Install ST-Link i) Update/Install dfu-util

q) Quit

Enter your choice: You’ll want to run the numeric options (0-3) at least once, to install all the basic tools and make the serial port available.

The alphabetic options (a-i) installs optional tools, frameworks or projects. Install all of them, or pick and choose as you like. If you want to start right away, choose option 10 (espruino) or 11 (elua). After you uploaded one of them, start ‘minicom’ or ‘screen’ to start an interactive session. Espruino communicates on 9600 baud, elua on 115200. Both use

as the serial port.

Toolchain (



toolchain is installed in

. This toolchain is optimized to compile code for ARM Cortex M0/M1/M3/M4 microcontrollers with thumb, thumb2, and FPU hard float (M4) instructions.

The scripts that were used to build the toolchain can be found here:


A set of tools for uploading firmware to the STM32 on the ARMinARM board come with the toolchain. The tool ‘arminarm’ is automatically installed to

when you install the toolchain from the ‘setup’ menu. It uses the default bootloader that’s available on every STM32 chip.

Whatever firmware you have compiled (say ‘blinky.bin’), you can upload it with:


To reset the STM32 on the ARMinARM board:


To put the STM32 in bootloader mode:


​To start openocd server using



​Connect to it in a



You can only use the tool ‘arminarm’ if the path to it (

) is added to your PATH environment variable. There’s a menu option in ‘setup’ to do this for you. You only have to run this option once. The path is remembered even after reboots.

Put jumpers on the first 2 and last 2 set of pins on the CONN header on the board (BOOT0, NRST, RX, TX).

Uploading firmware

Using the ‘

‘ tool to upload firmware with the ST bootloader looks like this:

If ‘stm32flash’ for some reason didn’t compile successfully during installation of the toolchain, it will look like this:

The repository with all installation scripts can be found here:

Previous Post

Raspberry Pi Network File Share Using Samba (SMB)

You can share your Raspberry Pi's files and folders across a network using a piece of software called Samba, a Linux implementation of the Server Message Block protocol. The following ... Read more

Next Post
OpenCV RasPi CSI Camera

Using OpenCV with the Raspberry Pi Camera

OpenCV doesn’t work natively with the Rasperry Pi Camera as it is not a usb-webcam. That said, the applications such as raspivid or raspistill controls the Raspberry Pi Camera using ... Read more

Short URL:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Do NOT follow this link or you will be banned from the site!
error: Content is protected !!