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.
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 \
texinfoThe benchmarking tool is using hardware debugger to reduce the overhead in code. Status about the different debugger/serial/board:
List of debug probe supported:
| Debugger Probe | Status |
|---|---|
| ST Link v2.1 | Working |
Every UART device that support the format 115200 8N1 should be working.
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
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 |
To compile:
foo@bar:~$ ./autogen.sh # Will retrieve dependencies and compile them.
foo@bar:~$ ./configure
foo@bar:~$ makeThe tool generates two executables:
- pea (performance execution analysis)
- mfa (memory footprint analysis)
- msfa (memory stack footprint analysis TBD)
This tool will perform new analysis execution analysis (CPU usage).
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
The compiled application will be located at apps/pea.
To execute it:
foo@bar:~$ ./apps/peaBefore executing, the configuration file shall be filled appropriately and UART and SWD debugger shall be connected to the targeted embedded platform.
This tool will perform a memory analysis on an embedded platform.
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
The compiled application will be located at apps/mfa.
To execute it:
foo@bar:~$ ./apps/mfaBelow are some link to some website and repos related to this repository:
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 .