Riot-OS Setup

From Embedded Lab Vienna for IoT & Security
Jump to navigation Jump to search

Summary

Setting up Riot-OS on a Atmel SAM R21 Xpro Board.

Requirements

  • Operating system: Ubuntu 20.04
  • Packages: git

Description

Step 1

Install the following packages


sudo apt-get update
sudo apt-get install git 
                     openocd
                     gcc-multilib
                     build-essential
                     python3-serial
                     libudev-dev
                     moserial

Step 2

Install the toolchain

sudo apt-get install gcc-arm-none-eabi

If you use a recent version of RIOT-OS (Release-2021.07) you can go on with Step 3.


If you use an older RIOT-OS version, you will have to do the following steps:

Goto https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm and download

gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2

Move it to your home directory.

Uninstall old packages

sudo apt remove binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi

Unzip the downloaded file

tar -xjvf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2

Add the toolchain to your path

export PATH=$PATH:/home/(your user)/gcc-arm-none-eabi-7-2018-q2-update/bin/

For now: you will have to do this in the bash where you build your application - after each restart.

Add toolchain permanently to PATH (otherwise it's necessary to do it manually after every restart):

vim ~/.profile 

and/or

vim ~/.bashrc 

Add the following line to the bottom and save (adapt to your used ARM toolchain!):

export PATH=$PATH:<path to unzipped folder>/gcc-arm-none-eabi-9-2020-q2-update/bin

Apply changes for current shell:

source ~/.profile
source ~/.bashrc

Step 3

Download Riot-OS

git clone https://github.com/RIOT-OS/RIOT.git myRIOT

Move to the "Hello World"-Example

cd myRIOT/examples/hello-world

Build the application on "native"

make all term

Now, you should see this output in your terminal:

RIOT native interrupts/signals initialized.
LED_RED_OFF
LED_GREEN_ON
RIOT native board initialized.
RIOT native hardware initialization complete.

main(): This is RIOT! (Version: 2022.01-devel-129-g554d3)
Hello World!
You are running RIOT on a(n) native board.
This board features a(n) native MCU.

Step 4

Build and run "Hello World" on the SAM R21 Board.

Set the rights for your username to be able to flash the application on the board.

sudo usermod -a -G dialout <username>

Then reboot your computer.

Connect the board to your computer via micro USB cable (USB EDBG interface).

Samr21EDBGconnect.jpg

Connect via Moserial.

MoSerial.jpg

Build and flash the application.

cd myRIOT/examples/hello-world
make BOARD=samr21-xpro
make BOARD=samr21-xpro flash

If you do not use a serial terminal like moserial or terraterm use term

make BOARD=samr21-xpro term

Or via pyterm (which is shipped with RIOT-OS):

sudo pip3 install pyserial
cd RIOT/dist/tools/pyterm
./pyterm -p /dev/ttyACM0

You may also set the BOARD in the Makefile of the application.

To find out the correct tty when multiple (SAMR21-xpro) boards are connected to your system:

$ cd RIOT/examples/hello-world
$ make list-ttys
/sys/bus/usb/devices/1-3: Atmel Corp. EDBG CMSIS-DAP, serial: 'ATMLXXXXXXX80000XXX1', tty(s): ttyACM0
/sys/bus/usb/devices/1-2: Atmel Corp. EDBG CMSIS-DAP, serial: 'ATMLXXXXXXX80000XXX2', tty(s): ttyACM1

If you have multiple boards connected to your computer it is necessary to provide the serial during flashing:

BOARD=samr21-xpro SERIAL="ATMLXXXXXXX80000XXX1" make flash

Used Hardware

Courses

RIOT More Information/Resources/Links

References