Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 23 additions & 15 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
FROM ubuntu:20.04
LABEL maintainer="Charles R. Portwood II <charlesportwoodii@erianna.com>"

ENV GNU_INSTALL_ROOT="/root/gcc-arm-none-eabi-10.3-2021.10/bin/"
ENV NORDIC_SDK_PATH="/root/nrf_sdk/16.0.0"
ENV PATH="$PATH:/root/gcc-arm-none-eabi-10.3-2021.10/bin:/root/nrf-command-line-tools/bin:/root/.local/bin"
ENV GNU_INSTALL_ROOT="/root/gcc-arm-none-eabi-8-2018-q4-major/bin/"
ENV NORDIC_SDK_PATH="/root/nrf_sdk/15.3.0"
ENV PATH="$PATH:/root/gcc-arm-none-eabi-8-2018-q4-major/bin:/root/nrf-command-line-tools/bin:/root/.local/bin"

ENV BOARD=""
ENV SOFTDEVICE=""
ENV DEBUG=0
ENV NRF_DFU_BL_ACCEPT_SAME_VERSION=1
ENV NRF_DFU_REQUIRE_SIGNED_APP_UPDATE=1
ENV NRF_BL_APP_SIGNATURE_CHECK_REQUIRED=0
ENV NRF_DFU_BLE_ADV_NAME="KAIDYTH_DFU"
ENV NRF_SDH_CLOCK_LF_SRC=0
ENV NRF_SDH_CLOCK_LF_RC_CTIV=0
ENV NRF_SDH_CLOCK_LF_RC_TEMP_CTIV=0


VOLUME [ "/app" ]

Expand All @@ -22,9 +28,9 @@ RUN apt update -qq && \
RUN pip3 install --user nrfutil

# Install GCC ARM
ENV GCC_ARM_NAME_BZ="gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2"
ENV GCC_ARM_NAME_BZ="gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2"
RUN cd $HOME && \
curl -L "https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2" -o ${GCC_ARM_NAME_BZ} && \
curl -L "https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2" -o ${GCC_ARM_NAME_BZ} && \
tar -xf ${GCC_ARM_NAME_BZ} && \
rm -rf ${GCC_ARM_NAME_BZ}

Expand All @@ -35,19 +41,21 @@ RUN cd $HOME && \

# Install NRF SDK
RUN cd $HOME && \
mkdir -p $HOME/nrf_sdk/16.0.0 && \
wget https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK160098a08e2.zip -O nRF5_SDK_16.0.0_98a08e2.zip && \
mv nRF5_SDK_16.0.0_98a08e2.zip $HOME/nrf_sdk/16.0.0 && \
cd $HOME/nrf_sdk/16.0.0 && \
unzip nRF5_SDK_16.0.0_98a08e2.zip > /dev/null 2>&1 && \
rm -rf nRF5_SDK_16.0.0_98a08e2.zip
mkdir -p $HOME/nrf_sdk/15.3.0 && \
wget https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK153059ac345.zip -O nRF5_SDK_15.3.0_59ac345.zip && \
mv nRF5_SDK_15.3.0_59ac345.zip $HOME/nrf_sdk/15.3.0 && \
cd $HOME/nrf_sdk/15.3.0 && \
unzip nRF5_SDK_15.3.0_59ac345.zip > /dev/null 2>&1 && \
rm -rf nRF5_SDK_15.3.0_59ac345.zip && \
mv nRF5_SDK_15.3.0_59ac345/* . && \
rm -rf nRF5_SDK_15.3.0_59ac345

# Install micro-ecc
RUN cd $HOME/nrf_sdk/16.0.0/external/micro-ecc && \
RUN cd $HOME/nrf_sdk/15.3.0/external/micro-ecc && \
git clone https://github.com/kmackay/micro-ecc && \
chmod +x $HOME/nrf_sdk/16.0.0/external/micro-ecc/build_all.sh && \
dos2unix $HOME/nrf_sdk/16.0.0/external/micro-ecc/build_all.sh && \
ls -laht $HOME/nrf_sdk/16.0.0/external/micro-ecc/micro-ecc && \
chmod +x $HOME/nrf_sdk/15.3.0/external/micro-ecc/build_all.sh && \
dos2unix $HOME/nrf_sdk/15.3.0/external/micro-ecc/build_all.sh && \
ls -laht $HOME/nrf_sdk/15.3.0/external/micro-ecc/micro-ecc && \
./build_all.sh

# Install
Expand Down
36 changes: 25 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
BOARD ?=
SOFTDEVICE ?=
BOARD_LIST := $(sort $(subst /,,$(subst boards/,,$(dir $(wildcard boards/*/)))))

rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))

default: check-env ## Builds the bootloaded for selected board
ifneq ($(filter $(BOARD),$(BOARD_LIST)),)
$(MAKE) merge -C boards/$(BOARD)/s140
$(MAKE) merge -C boards/$(SOFTDEVICE)/$(BOARD)
else
$(error Run `make` with a board specified: ($(BOARD_LIST)))
endif
Expand All @@ -17,19 +18,19 @@ help: ## Lists all available commands and a brief description.
all: check-env $(BOARD_LIST) ## Builds the bootloader for all boards

$(BOARD_LIST): ## Builds the bootloader for the specified board
$(MAKE) -C boards/$@/s140
$(MAKE) -C boards/$(SOFTDEVICE)/$@

flash: default ## Builds and flashes the bootloader over nrfjprog
$(MAKE) flash -C boards/$(BOARD)/s140
$(MAKE) flash -C boards/$(SOFTDEVICE)/$(BOARD)

clean_build: clean ## Builds and creates a DFU .zip package
$(MAKE) -C boards/$(BOARD)/s140 dfu_package
$(MAKE) -C boards/$(SOFTDEVICE)/$(BOARD) dfu_package

clean_flash: clean_build ## Performs a clean build and flashes it via jLink
$(MAKE) -C boards/$(BOARD)/s140 erase flash
$(MAKE) -C boards/$(SOFTDEVICE)/$(BOARD) erase flash

usb_flash: check_port default ## Flashes the .zip over USB
$(MAKE) -C boards/$(BOARD)/s140 usb_flash
$(MAKE) -C boards/$(SOFTDEVICE)/$(BOARD) usb_flash

check_port:
ifndef PORT
Expand All @@ -38,13 +39,13 @@ endif

clean: check-env patch ## Cleans the environment for the specified board
ifneq ($(filter $(BOARD),$(BOARD_LIST)),)
@cd boards/$(BOARD)/s140 && $(MAKE) clean
@cd boards/$(SOFTDEVICE)/$(BOARD) && $(MAKE) clean
@rm -rf $(BOARD).hex
@rm -f $(BOARD)_s140.zip
@rm -f debug_$(BOARD)_s140.zip
@rm -f $(BOARD)_$(SOFTDEVICE).zip
@rm -f debug_$(BOARD)_$(SOFTDEVICE).zip
else
@for board in $(BOARD_LIST); do \
cd boards/$$board/s140 && $(MAKE) clean; \
cd boards/$(SOFTDEVICE)/$$board && $(MAKE) clean; \
cd ../../..; \
done
@rm -f *.hex
Expand All @@ -68,4 +69,17 @@ patch: ## Patches the files in the nordic SDK to support additional bootloader f
if patch -p0 -s -f --dry-run --reject-file /dev/null $(NORDIC_SDK_PATH)/$${file} ./sdk/$${file}; then \
patch --forward --unified $(NORDIC_SDK_PATH)/$${file} ./sdk/$${file}; \
fi \
done;
done;
@for file in $(subst ./sdk/,,$(call rwildcard,./sdk/,*/$(SOFTDEVICE)/nrf_bootloader.c)); do \
echo "Copying $$file to $(NORDIC_SDK_PATH)/components/libraries/bootloader/nrf_bootloader.c"; \
cp ./sdk/$$file $(NORDIC_SDK_PATH)/components/libraries/bootloader/nrf_bootloader.c; \
done;
@for file in $(subst ./sdk/,,$(call rwildcard,./sdk/,*nrf_dfu_validation.c)); do \
echo "Copying $$file to $(NORDIC_SDK_PATH)/$${file#./sdk/}"; \
cp ./sdk/$$file $(NORDIC_SDK_PATH)/$${file#./sdk/}; \
done;
@for file in $(subst ./sdk/,,$(call rwildcard,./sdk/,*nrf_dfu_ble.c)); do \
echo "Copying $$file to $(NORDIC_SDK_PATH)/$${file#./sdk/}"; \
cp ./sdk/$$file $(NORDIC_SDK_PATH)/$${file#./sdk/}; \
done;

Loading