micro-ROS / benchmarking

A sets a tools and framework to develop embedded system benchmarks

Repository from Github https://github.commicro-ROS/benchmarkingRepository from Github https://github.commicro-ROS/benchmarking

Welcome to the Benchmarking tool

The benchmarking tool is intended for embedded software benchmarking with low/none overhead intrusion. The tool (will) be able to benchmark:

  • Performance execution using PC sampling a regular frequency (1/16384 CPU cycle).
  • Memory:
    • Static analysis: (To be implemented) Information of the text + bss usage.
    • Stack analysis per thread: (To be implemented) Retrieve per thread, the amount of stack.
    • Heap analysis per thread: (To be implemented) Retrieve per thread, the amount of dynamic allocation.

The performance execution benchmarking is intended to work with any applications running on a microcontroller with the ARM-coresight debug system implemented.

However the Stack and Heap memory analysis will first target the nuttx kernel.

Software Prerequisites

The application was tested on Ubuntu 18.04.1 LTS. It shall work on other linux distributions.

The list of packet needed for the application to work:

  • autoconf
  • autotools-dev
  • binutils
  • check
  • doxygen
  • gcc-arm-none-eabi
  • git
  • libtool
  • libusb-1.0
  • libftdi-dev
  • make
  • pkg-config
  • texinfo
foo@bar:~$ sudo apt install \
	autoconf \
	autotools-dev \
	binutils \
	check \
	doxygen \
	gcc-arm-none-eabi \
	git \
	libtool \
	libusb-1.0 \
	libftdi-dev \
	make \
	pkg-config \
	texinfo

Hardware Prerequisites

The benchmarking tool is using hardware debugger to reduce the overhead in code. Status about the different debugger/serial/board:

Debuggers

List of debug probe supported:

Debugger Probe Status
ST Link v2.1 Working

UART (SWO output)

Every UART device that support the format 115200 8N1 should be working.

UART permission

It might be necessary to give the user permission to the tty as follow:

foo@bar:~$ sudo usermod -a -G dialout ${USER} # Need to logoff/login

Board

List of boards:

Board Status execution Status memory
Olimex E407 Working Working Heap (Stack and static not available yet)
STM32L152-Discovery Not Tested Not available

Compiling

To compile:

foo@bar:~$ ./autogen.sh # Will retrieve dependencies and compile them.
foo@bar:~$ ./configure
foo@bar:~$ make

The tool generates two executables:

  • pea (performance execution analysis)
  • mfa (memory footprint analysis)
  • msfa (memory stack footprint analysis TBD)

Performance execution analysis

This tool will perform new analysis execution analysis (CPU usage).

Configuration file

Before execution the configuration file need to be changed/adapted depending on the use. The configuration file used by the application is located at res/tests/execution_config.ini

More explanations about the fields are available in the template located at res/configs/default_config.ini

Execution

The compiled application will be located at apps/pea.

To execute it:

foo@bar:~$ ./apps/pea

Before executing, the configuration file shall be filled appropriately and UART and SWD debugger shall be connected to the targeted embedded platform.

Memory footprint analysis

This tool will perform a memory analysis on an embedded platform.

Configuration file

Before execution the configuration file need to be changed/adapted depending on the use. The configuration file used by the application is located at res/tests/memory_heap_config.ini

More explanations about the fields are available in the template located at res/configs/default_config.ini

Execution

The compiled application will be located at apps/mfa.

To execute it:

foo@bar:~$ ./apps/mfa

Other resources

Below are some link to some website and repos related to this repository:

License

Benchmarking tools are to be open-sourced under the Apache-2.0 license. See the LICENSE file for details.

For a list of other open-source components included in Benchmarking tools softwares, see the file 3rd-party-licenses.md .

About

A sets a tools and framework to develop embedded system benchmarks

License:GNU General Public License v3.0


Languages

Language:C 93.7%Language:Shell 3.1%Language:Makefile 1.9%Language:M4 1.3%