Difference between revisions of "Riot-OS Setup"

From Embedded Lab Vienna for IoT & Security
Jump to navigation Jump to search
Line 120: Line 120:
* [[Mobile and Embedded Security]] (2019)
* [[Mobile and Embedded Security]] (2019)


== RIOT More Information/Resources/Links ==
* Paper (optional): Baccelli, Emmanuel, et al. _"RIOT: An open source operating system for low-end embedded devices in the IoT."_ IEEE Internet of Things Journal 5.6 (2018): 4428-4440.
* Riot-OS Setup (ELVIS Wiki): https://wiki.elvis.science/index.php?title=Riot-OS_Setup
** RIOT-OS+SAMR21 Setup (CoMatrix): https://comatrix.eu/setup/samr21_and_RIOT-OS/
* RIOT-OS Github repository: https://github.com/RIOT-OS/RIOT
** Examples: https://github.com/RIOT-OS/RIOT/tree/master/examples
** Tests: https://github.com/RIOT-OS/RIOT/tree/master/tests
* Getting Started: https://doc.riot-os.org/getting-started.html
** Introduction: https://github.com/RIOT-OS/RIOT/wiki/Introduction
** Changelog/Release Notes: https://doc.riot-os.org/changelog.html
** Use Docker to build RIOT:
*** https://doc.riot-os.org/getting-started.html#docker
*** https://doc.riot-os.org/build-in-docker.html
*** Podman: https://github.com/RIOT-OS/RIOT/pull/18671
* API documentation: https://doc.riot-os.org/
* Wiki: https://github.com/RIOT-OS/RIOT/wiki
** FAQ: https://github.com/RIOT-OS/RIOT/wiki/FAQ
** Best Practice for RIOT Programming: https://github.com/RIOT-OS/RIOT/wiki/Best-Practice-for-RIOT-Programming
* Tutorials: https://github.com/RIOT-OS/Tutorials
** RIOT online course: https://github.com/RIOT-OS/riot-course
** RIOT Beginner Tutorial - RIOT Summit 2021: https://riot-os.github.io/riot-course/slides/tutorial-summit-networking/
** Networking in RIOT: https://riot-os.github.io/riot-course/slides/04-networking-in-riot/
** RIOT Tutorial - IoT Security with Microcontrollers: https://riot-os.github.io/riot-course/slides/tutorial-summit-security
* Forum: https://forum.riot-os.org/
** Matrix Channel: https://matrix.to/#/#riot-os:matrix.org
* ... and slides from Silvie
* pyterm is an alternative to Moserial
** i.e. implicit use with <code>make BOARD=samr21-xpro term</code>
* <code>make list-ttys</code>: returns the list of serial ports available with information on the board connected (useful when working with multiple boards)
** afterwards e.g. <code>make term SERIAL="1232135328821"`</code>
* <code>make debug</code>
* '''Remember that the examples directory is very helpful - as well as the test directories :)'''


== References ==
== References ==

Revision as of 15:22, 24 November 2023

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.

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

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

Used Hardware

Atmel SAM R21 Xplained Pro Evaluation Platform

Courses


RIOT More Information/Resources/Links

References