Skip to content
/ avp64 Public
forked from aut0/avp64

An ARMv8 virtual platform based on QEMU and VCML

License

Notifications You must be signed in to change notification settings

Meik152/avp64

 
 

Repository files navigation

An ARMv8 Virtual Platform (AVP64)

cmake nightly lint style

This repository contains an ARMv8 multicore virtual platform. It was built at the Institute for Communication Technologies and Embedded Systems at RTWH Aachen University. The following target software configurations were tested (see avp64-sw):

  • CoreMark
  • Dhrystone
  • Whetstone
  • STREAM
  • Linux single-, dual-, quad-, octa-core
  • Xen single- and dual-core

Build & Installation

  1. Clone git repository including submodules:

    git clone --recursive https://github.com/aut0/avp64
  2. Chose directories for building and deployment:

    <source-dir>  location of your repo copy,     e.g. /home/lukas/avp64
    <build-dir>   location to store object files, e.g. /home/lukas/avp64/BUILD
    <install-dir> output directory for binaries,  e.g. /opt/avp64
    
  3. Configure and build the project using cmake. During configuration you must state whether or not to build the runner (vp executable) and the unit tests:

    • -DAVP64_BUILD_RUNNER=[ON|OFF]: build runner (default: ON)
    • -DAVP64_BUILD_TESTS=[ON|OFF]: build unit tests (default: OFF)

    Release and debug build configurations are controlled via the regular cmake parameters:

    mkdir -p <build-dir>
    cd <build-dir>
    cmake -DCMAKE_INSTALL_PREFIX=<install-dir> -DCMAKE_BUILD_TYPE=RELEASE <source-dir>
    make -j `nproc`
    sudo make install

    If building with -DAVP64_BUILD_TESTS=ON you can run all unit tests using make test within <build-dir>.

  4. After installation, the following new files should be present:

    <install-dir>/bin/avp64-runner        # executable program
    <install-dir>/lib/libocx-qemu-arm.so
  5. If the library libocx-qemu-arm.so cannot be found, add the lib folder to LD_LIBRARY_PATH:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<install-dir>/lib/

Run

Run the platform using a config file from the sw folder:

<install-dir>/bin/avp64-runner -f <install-dir>/sw/<config-file>

For more details on run parameters please look here.

To stop the platform, press Ctrl + a + x .


Maintaining Multiple Builds

Debug builds (i.e. -DCMAKE_BUILD_TYPE=DEBUG) are intended for developers that like to make changes on avp64 and want to track down bugs. Note that these builds operate significantly slower than optimized release builds and should therefore not be used for VPs that are used productively, e.g. for target software development. To maintain both builds from a single source repository, try the following:

git clone --recurse-submodules https://github.com/aut0/avp64 && cd avp64

home=$PWD
for type in "DEBUG" "RELEASE"; do
    install="$home/BUILD/$type"
    build="$home/BUILD/$type/BUILD"
    mkdir -p $build && cd $build
    cmake -DCMAKE_BUILD_TYPE=$type -DCMAKE_INSTALL_PREFIX=$install $home
    make install
done

Afterward, you can find the builds in:

<source-dir>/avp64/BUILD/DEBUG    # for the debug build or
<source-dir>/avp64/BUILD/RELEASE  # for the release build

Tutorial

A baisc tutorial that shows how to debug the executed target software using Visual Studio Code can be found in the vscode-tutorial folder. Run the vscode-tutorial/setup.bash script to download the Linux image and Linux Kernel Source files and setup Visual Studio Code. See the corresponding Readme for further details.


Documentation

The VCML documentation can be found here.


License

This project is licensed under the MIT license - see the LICENSE file for details.

About

An ARMv8 virtual platform based on QEMU and VCML

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 77.9%
  • CMake 10.8%
  • Python 6.3%
  • Shell 3.6%
  • C 1.4%