Merge branch 'dockerfile' of JF/PineTime into develop

This commit is contained in:
JF 2020-08-19 16:05:53 +02:00 committed by Gitea
commit 38418931f1
6 changed files with 81 additions and 1 deletions

View file

@ -50,7 +50,7 @@ During the project generation, CMake created the following targets:
- pinetime-mcuboot-app : build the firmware with the support of the bootloader (based on MCUBoot).
- pinetime-graphics : small firmware that writes the boot graphics into the SPI flash.
If you just want to build the project and run it on the Pinetime, using *pinetime-app* is recommanded. See ???? for more info about bootloader support.
If you just want to build the project and run it on the Pinetime, using *pinetime-app* is recommanded. See [this page](../bootloader/README.md) for more info about bootloader support.
Build:
```

33
doc/buildWithDocker.md Normal file
View file

@ -0,0 +1,33 @@
# Build the project using Docker
A [Docker image (Dockerfile)](../docker) containing all the build environment is available for X86_64 and AMD64 architectures. This image makes the build of the firmware and the generation of the DFU file for OTA.
## Build the image
The image is not (yet) available on DockerHub, you need to build it yourself, which is quite easy. The following commands must be run from the root of the project.
If you are running on a x86_64 computer :
```
docker image build -t infinitime-build docker/x86_64/
```
And if your are running on an ARM64 device (tested on RaspberryPi4 and Pine64 PineBookPro):
```
docker image build -t infinitime-build docker/arm64/
```
This operation will take some time. It builds a Docker image based on Ubuntu, install some packages, download the ARM toolchain, the NRF SDK, MCUBoot and adafruit-nrfutil.
When this is done, a new image named *infinitime-build* is available.
## Run a container to build the project:
```
docker run --rm -v <project_root>:/sources infinitime-build
```
Replace *<project_root>* by the path of the root of the project on your computer. For example:
```
docker run --rm -v /home/jf/git/PineTime:/sources infinitime-build
```
This will start a container, build the firmware and generate the MCUBoot image and the DFU file. The output of the build is stored in **<project_root>/built/output**.

2
docker/README.md Normal file
View file

@ -0,0 +1,2 @@
Docker images and build script for building the project using Docker.
See [this page for more info](../doc/buildWithDocker.md).

10
docker/arm64/Dockerfile Normal file
View file

@ -0,0 +1,10 @@
FROM ubuntu:18.04
RUN apt-get update -qq && apt-get install -y wget unzip cmake make build-essential git python3 python3-pip libffi-dev libssl-dev python3-dev
RUN wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-aarch64-linux.tar.bz2 -O - | tar -xj -C /opt/
RUN wget -q https://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v15.x.x/nRF5_SDK_15.3.0_59ac345.zip && unzip -q nRF5_SDK_15.3.0_59ac345.zip -d /opt/ && rm nRF5_SDK_15.3.0_59ac345.zip
RUN git clone https://github.com/JuulLabs-OSS/mcuboot.git /opt/mcuboot && pip3 install -r /opt/mcuboot/scripts/requirements.txt
RUN pip3 install adafruit-nrfutil
CMD ["/sources/docker/build.sh"]

25
docker/build.sh Executable file
View file

@ -0,0 +1,25 @@
#!/bin/sh
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
mkdir /sources/build
cd /sources/build
cmake -DARM_NONE_EABI_TOOLCHAIN_PATH=/opt/gcc-arm-none-eabi-9-2020-q2-update -DNRF5_SDK_PATH=/opt/nRF5_SDK_15.3.0_59ac345 -DUSE_OPENOCD=1 ../
make -j
/opt/mcuboot/scripts/imgtool.py create --align 4 --version 1.0.0 --header-size 32 --slot-size 475136 --pad-header /sources/build/src/pinetime-mcuboot-app.bin /sources/build/image.bin
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application /sources/build/image.bin /sources/build/dfu.zip
mkdir -p /sources/build/output
mv /sources/build/image.bin /sources/build/output/pinetime-mcuboot-app.img
mv /sources/build/dfu.zip /sources/build/output/pinetime-app-dfu.zip
cp /sources/build/src/*.bin /sources/build/output/
cp /sources/build/src/*.hex /sources/build/output/
cp /sources/build/src/*.out /sources/build/output/
cp /sources/build/src/*.map /sources/build/output/
cp /sources/bootloader/mynewt_nosemi_4.1.7.elf.bin /sources/build/output/bootloader.bin

10
docker/x86_64/Dockerfile Normal file
View file

@ -0,0 +1,10 @@
FROM ubuntu:18.04
RUN apt-get update -qq && apt-get install -y wget unzip cmake make build-essential git python3 python3-pip
RUN wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz -O - | tar -xj -C /opt/
RUN wget -q https://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v15.x.x/nRF5_SDK_15.3.0_59ac345.zip && unzip -q nRF5_SDK_15.3.0_59ac345.zip -d /opt/ && rm nRF5_SDK_15.3.0_59ac345.zip
RUN git clone https://github.com/JuulLabs-OSS/mcuboot.git /opt/mcuboot && pip3 install -r /opt/mcuboot/scripts/requirements.txt
RUN pip3 install adafruit-nrfutil
CMD ["/sources/docker/build.sh"]