jamesadevine / pldi-artifact-evaluation

0 stars 0 forks source link

Docker Image and Dockerfile

A Docker image and DockerFile are provided, which automate the steps of building the artifacts mentioned below. To make most efficient use of time, we suggest using the artifacts that were automatically built from the sources (both artifacts and sources included in the Docker image). Of course, the evaluators may want to build from sources themselves - a docker file (./Dockerfile) and build step are provided in this case.

Docker commands:

Loading prebuilt docker image

  1. Download the prebuilt docker image pldi_ae_container.tar.gz
  2. Open a terminal at the location where pldi_ae_container.tar.gz was downloaded.
  3. Load the docker image: docker load -i ./pldi_ae_container.tar.gz

Building Docker image (optional)

  1. Download the dockerfile Dockerfile
  2. Open a terminal at the location where Dockerfile was downloaded.
  3. Build the docker image: docker build --platform linux/amd64 -t pldi_ae_container .

Starting the container

  1. Start a container: docker run --platform linux/amd64 -id --name=pldi-ae -t pldi_ae_container:latest

Copying prebuilt files from the container

  1. Copy prebuilt files from the container: docker cp pldi-ae:/artifacts ./artifacts

Running shell in Docker

  1. Start an interactive session with the docker container: docker exec -it pldi-ae bash

Docker cleanup:

To purge the docker image if building from scratch or loading in a different version:

  1. Stop the running container: docker stop pldi-ae
  2. Remove the image: docker rm pldi-ae

Getting Started Guide

This evaluation is unusual for PLDI as it involves Jacdac hardware (now commercially available) for creating embedded/embeddable systems using a plug-and-play design.

Jacdac hardware

You will need the following hardware to perform the evaluation:

  1. A micro:bit V2 "Go Bundle" (https://www.sparkfun.com/products/17288) which includes:

    • a micro:bit V2
    • battery pack
    • micro-USB cable (for connecting micro:bit to PC)
  2. KittenBot Kit A with micro:bit Jacdaptor (https://www.kittenbot.cc/products/kittenbot-jacdac-kit-for-micro-bit), which includes

    • Jacdac cables
    • 1 micro:bit Jacdaptor (a bridge between micro:bit and Jacdac bus)
    • 2 keycap button modules
    • 1 slider (potentiometer) module
    • 1 rotary encoder module
    • 1 light sensor module
    • 1 magnetic field sensor module
    • 1 LED ring module
    • 1 passive Jacdac hub
  3. a Jacdac accelerometer module, available in KittenBot Kit B or this one: https://microsoft.github.io/jacdac-docs/devices/microsoft-research/jmaccelerometer30v10/

We have flashed the micro:bit you have received with the "microbit-jukebox" app, a MakeCode application that demonstrates the plug-and-play capability of Jacdac; we will give instructions on how to build the application yourself as well.

NOTE: Figure 1(a) of the paper shows some Jacdac modules that are in Kit B from KittenBot (https://www.kittenbot.cc/products/jacdac-kit-b-elite-module-suite-redefining-electronic-interfacing), which we did not include in the hardware above. We included the hardware needed for the running example ``night light'' featured in the paper.

Evaluation overview

The evaluation consists of five parts:

  1. Work with pre-programmed micro:bit and Jacdac hardware
  2. Work with the Jacdac web site
  3. Deploy and work with "night light" exampe from paper (HW and SW)
  4. Check the automatically generate stats that go into Table 2 and 3.
  5. OPTIONAL: examine full sources of various figures in the table

There are optional steps to repeat the steps to build artifacts from sources.

Step-by-Step Instructions

1. Work with the pre-programmed micro:bit and Jacdac hardware

2. Work with the Jacdac web site

3. Deploy and work with the "night light" example

4. Inspect .tex for Tables 2 and 3 generate automatically by analysis of firmware object files.

5. OPTIONAL: inspect sources of various Figures in paper