Go to file
2020-04-08 04:21:27 +02:00
Dockerfile Initial commit 2020-04-08 04:21:27 +02:00
README.md Initial commit 2020-04-08 04:21:27 +02:00

perifirmware/perifirmware.buildenv

Bare metal compilation environment for the perfirmware projects for the corePCB periCore.

Creating the image

The following command can be used to create an image from the docker file. It is assume the Dockerfile is located in the same directory.

docker build -t arm-none-eabi.buildenv .

Usage

The working directory of the image is /work. To use the image call it similar to the following examples:

docker run --rm -v $(pwd):/work --user $(id -u):$(id -g) arm-none-eabi.buildenv make

This puts your current work directory into the container, builds your code and afterwards it removes the container.

docker run --rm -v $(pwd):/work --user $(id -u):$(id -g) -it arm-none-eabi.buildenv /bin/bash

This puts your current work directory into the container and starts an interactive bash from the container.

Example output

docker run --rm arm-none-eabi.buildenv arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 9-2019-q4-major) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599]
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Example integration (vscode)

For Microsoft's open source visual studio code, the integration of how to invoke make within the docker container is shown in the following excerpt:

{
    "version": "2.0.0",
    "tasks": [
       {
            "label": "build-elf",
            "command": "docker",
            "args": ["run","--rm","-v","${workspaceRoot}/Tickless demo:/work","--user","1000:1001","arm-none-eabi.buildenv","make","-C","gcc","-j8"],
            "type": "process",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": {
                "base": "$gcc",
                "fileLocation": ["relative", "${workspaceRoot}/Tickless demo/gcc"],
            },
            "runOptions": {
                "reveal":"always",
                "focus":false,
            }
        },
        {
            "label": "build-elf-clean",
            "command": "docker",
            "args": ["run","--rm","-v","${workspaceRoot}/Tickless demo:/work","--user","1000:1001","arm-none-eabi.buildenv","make","-C","gcc","-j8","clean"],
            "type": "process",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": {
                "base": "$gcc",
                "fileLocation": ["relative", "${workspaceRoot}/Tickless demo/gcc"],
            },
        },
    ]
}