Archive 07/10/2020.

Submitting the experiment

Cyril_Jeanneau

Hello,
On TP4, to submit the experiment you use by default the name “riot-shell” but in makefile, it is defined at “basics-shell”.
I tried both and they both worked fine. Is that because the iotlab-experiment script is using the working directory and the the env PATH of Linux where theirs is probably an application named “riot-shell” ?
Thanks for answering.
Cyril

aabadie2

Hello,

The name “riot-shell” is used to give a name to the experiment on IoT-LAB (so it’s easier to track your experiment on the testbed webportal) whereas the name “basics-shell” is the name of the RIOT application (in the APPLICATION variable in the Makefile). This name “basics-shell” is the filename of the firmware generated by the build system of RIOT The firmware complete path is stored in the variable BINFILE (the full path is printed at the end of the build).

When the IOTLAB_NODE variable is set to auto-ssh, the RIOT build system uses the iot-lab command line interface tools to determine if you have a running experiment (it checks the experiment ID), and it’s the case, it calls the iot-lab flashing tool (iotlab-node) with the file contained in the BINFILE variable. The flashing tool sends the file to the IoT-LAB REST API which does the real flashing for you.

You can check the output of the make flash command:

!make BOARD=iotlab-m3 IOTLAB_NODE=auto-ssh flash

Building application "basic-shell" for "iotlab-m3" with MCU "stm32f1".

"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/boards/iotlab-m3
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/boards/common/iotlab
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/core
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/cpu/stm32f1
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/cpu/cortexm_common
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/cpu/cortexm_common/periph
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/cpu/stm32_common
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/cpu/stm32_common/periph
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/cpu/stm32f1/periph
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/drivers
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/drivers/periph_common
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/auto_init
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/isrpipe
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/newlib_syscalls_default
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/pm_layered
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/shell
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/stdio_uart
"make" -C /home/jovyan/work/iot-lab-training/riot/RIOT/sys/tsrb
   text	   data	    bss	    dec	    hex	filename
   8964	    140	   2620	  11724	   2dcc	/home/jovyan/work/iot-lab-training/riot/basics/shell/bin/iotlab-m3/basic-shell.elf
iotlab-node --jmespath='keys(@)[0]' --format='int'  --list grenoble,m3,101 --flash /home/jovyan/work/iot-lab-training/riot/basics/shell/bin/iotlab-m3/basic-shell.bin | grep 0
0

The generated firmware is in /home/jovyan/work/iot-lab-training/riot/basics/shell/bin/iotlab-m3/basic-shell.elf. The iot-lab flashing tool is called by the command iotlab-node --jmespath='keys(@)[0]' --format='int' --list grenoble,m3,101 --flash /home/jovyan/work/iot-lab-training/riot/basics/shell/bin/iotlab-m3/basic-shell.bin with the name of the M3 device (m3-101) that should be flashed.

Cyril_Jeanneau

Thanks for your answer and to have taking time to do it.