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
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 --resetmeson 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.llIn 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 2All 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- python 3.11.5 or 3.13.5
- graph-tool == 2.98
- llvm == 14
- meson >= 1.10.0