Riot-OS Setup

From Embedded Lab Vienna for IoT & Security
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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