Dockerfile | ||
README.md |
arm-none-eabi.buildenv
Arm bare metal compilation environment.
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",
"options": {
"env": {
"PLATFORM": "nrf52",
// "PLATFORM": "posix",
"APPLICATION": "blinky",
// "APPLICATION": "spi",
// "APPLICATION": "st7789_lcd",
"${BUILD_CMD}": "eval docker run --env PLATFORM=${PLATFORM} --env APPLICATION=${APPLICATION} -t --rm -v '${workspaceFolder}':/work --user $(id -u):$(id -g) arm-none-eabi.buildenv",
},
},
"presentation": {
"focus": true,
"reveal": "always",
"panel": "shared",
"clear": true,
},
"tasks": [
{
"label": "all",
"type":"shell",
"command": "${BUILD_CMD} make all -j8",
"problemMatcher": {
"base": "$gcc",
"owner": "gcc",
"fileLocation": [
"relative",
"${workspaceFolder}"
]
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "clean",
"type":"shell",
"command": "${BUILD_CMD} make clean -j8",
"problemMatcher": {
"base": "$gcc",
"owner": "gcc",
"fileLocation": [
"relative",
"${workspaceFolder}"
]
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "distclean",
"type":"shell",
"command": "${BUILD_CMD} make distclean",
"problemMatcher": {
"base": "$gcc",
"owner": "gcc",
"fileLocation": [
"relative",
"${workspaceFolder}"
]
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}