Skip to content

luhsra/PARROT

Repository files navigation

Projects regarding ARA combined with Real-time Operating system applications and their Toolchains

This is a meta repository for all that is needed for ARA, the Automatic Real-time System Analyzer. Except for pyllco/svf, all repositories are in this Gitlab.

📦 parrot[@main]
├── 📂 arm_freertos_synthesis               # Legacy applications
├── 📂 build                                # Generated by meson, execute ninja targets here, contains build artifacts 
│   ├── 📂 dumps                                # Generated graphs by ARA
│   ├── 📂 meson-logs                       # Meson+Ninja logs
│   │   ├── meson-setup.txt                     # Output of "meson setup"
│   │   ├── testlog.txt                         # Output of "meson test"
│   │   └──   ...
│   ├── 📂 subprojects                      # Artifacts might be stored into subfolders 
│   │   └──   ...
│   └── ...
├── 📂 Docker                               # Docker config
│   ├── Dockerfile                              # Parrot image with dependencies
│   └── run-docker.sh                           # Wrapper for "docker run" with local filesystem as volume 
├── 📂 experiments                          # Legacy applications
├── 📂 generated_apps                       # Legacy applications
├── 📂 settings                             # Legacy applications
├── 📂 test                                 # Parrot level meson test suits, "meson test" (TODO: move into subprojects?)
│   ├── POSIX
│   └── Zephyr 
├── 📂 tools                                # Utility shell/python scripts
├── 📂 subprojects                          # Repositories integrated as Meson-Subprojects (can originate from subprojects)
│     ├── 📦 ara[@soso]                         # Automatic Real-time System Analyzer (our analysis framework)
│     │     ├── 📂 appl                             # Applications/Test-systems source code (also see ara-zephyr-apps)
│     │     │   ├── 📂 AUTOSAR
│     │     │   ├── 📂 BareMetal
│     │     │   ├── 📂 FreeRTOS
│     │     │   ├── 📂 Xen
│     │     │   └── meson.build                         # One of many meson subfiles, calls another meson file for each OS
│     │     ├── 📂 ara                              # Primary logic/algorithms
│     │     │   ├── 📂 generator                        # Synthesis
│     │     │   ├── 📂 graph                            # Cython graph datastructures
│     │     │   ├── 📂 os                               # (OS-specific) OS models
│     │     │   ├── 📂 steps                            # Different processing/analysis steps
│     │     │   ├── ara.py                              # Main Python file, starts step manager
│     │     │   └── ...
│     │     ├── 📂 libs                             # OS-specific implementations
│     │     ├── 📂 settings                         # Configuration files for ARA runs (e.g. which steps to run) 
│     │     ├── 📂 test                             # ARA level meson test suits, "meson test"
│     │     ├── meson.build                         # One of many meson subfiles, ARA's primary meson file
│     │     └── ...
│     ├── 📦 ara-libplatforms[@main]            # Libs to deploy synthesized apps onto hardware (e.g. RPI/Beagle)
│     ├── 📦 ara-zephyr-apps[@zephyr-v3.7.0]    # Zephyr applications/test-systems source code
│     ├── 📦 irx[@main]                         # Interpreter for ARA to analyse Zephyr applications
│     ├── 📦 pyllco[github@main]                # Cython LLVM wrapper (does not use the version in our Gitlab!)
│     ├── 📦 svf[github@ara]                    # Fork of external value analysis framework used by ARA
│     ├── 📦 toolchains[@main]                  # Contains (some) meson variables shared accross subprojects
│     ├── 📦 xen-on-pi[@main]                   # Libs to deploy xen onto RPI
│     ├── 📦 zephyr[@parrot-v3.7.0]             # Fork of Zephyr (Repo is called: zephyrproject-rtos)
│     └── ...
├── .gitignore                          # Top-level gitignore
├── .gitlab-ci.yml                      # Automatic CI pipline, runs multiple meson testsuits
├── meson_options.txt                   # Top-level options, do not edit values, use "meson configure"
├── native-*.ini                        # Static paths of toolchains, use in "meson setup"
└── meson.build                         # Main meson file, creates subprojects and calls other meson files

Building Parrot+ARA

Use meson build system, which creates targets for ninja. The binaries and toolchain locations are managed by native files (e.g native-debian.ini or native-arch.ini).

# Create a Meson build directory
meson setup build --native-file native-debian.ini

# You can enable options/applications with
meson setup build --reconfigure -Doption=new_value

# View current options
meson configure build

# Updating meson subprojects (ARA, toolchains, etc.)
meson subprojects update --reset

Running targets

meson setup build --reconfigure -Dbuild_autosar_apps=true -Denable_arm=true
# Run analysis on an Autosar application
ninja subprojects/ara/appl/AUTOSAR/autosar_singlecore_examples_ara_loop1_noopt_mod.pi4.ll
# Run synthesis on an Autosar application using QEMU
ninja ara@@run_autosar_singlecore_autosar_singlecore_examples_ara_loop1_noopt_pi4

meson setup build --reconfigure -Dbuild_zephyr_apps=true -Denable_posix=true
ninja subprojects/ara-zephyr-apps/appl/native_sim-hello_world.ll

Testing + Testsuites

Current evaluation applications/(micro)benchmarks/testsuits/projects

In order to use tests, their correct meson options must be set. Also set the required architectures with -Denable_posix=true -Denable_arm=true -Denable_risc=true.

📦 Parrot
├── posix/build_posix_apps (62 tests) ~60s per test
└── zephyr/build_zephyr_apps (35 for posix, 2 for posix disabled, 37 for riscv disabled, 37 for arm disabled)
📦 ARA
├── hypersse_xen/build_hypersse_xen (40 tests) ~5s per test
├── (wip) automotive_benchmark (wip)
│       ├── automtoive_benchmark_ara_arm
│       ├── automtoive_benchmark_ara_ricv
│       ├── automtoive_benchmark_pi
│       └── automtoive_benchmark_beagle
└── autosar_generator/build_generator_tests (133 tests)
        ├── autosar_generator_posix (52) (with some disabled)
        ├── autosar_generator_pi4 (81) (with some disabled)
        └── not working [autosar_generator_riscv (86) (with some disabled)]
# Run all currently activated tests
meson test

# Shows all tests (in the format: SUITEs - SUBPROJECT:NAME)
meson test --list

# Run all tests of a testsuite (tests can be in multiple suits)
meson test --suite NAME

# Run one test (with longer timeout)
meson test NAME --timeout-multiplier 2

Docker/Podman

All build dependencies including clang, toolchains etc. are preinstalled in the Docker file.

cd Docker
# authenticate with your SRA credentials
docker login scm.sra.uni-hannover.de:5050
docker build -t scm.sra.uni-hannover.de:5050/research/parrot .
# run the container and attach to it
./Docker/run_docker.sh

Required Versions

  • python 3.11.5 or 3.13.5
  • graph-tool == 2.98
  • llvm == 14
  • meson >= 1.10.0

About

*P*rojects regarding *AR*A combined with *R*eal-time *O*perating system applications and their *T*oolchains

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages