GiitHub Action에서 nRF52 펌웨어 구축
9967 단어 GitHubActionsCI끼워 넣다BLEnrf52
개요
GiitHub Action에서 nRF52 펌웨어(FW)를 구축하는 방법을 소개합니다.
GiitHub Actions에 공개된 동작 중 nRF52가 사용되지 않기 때문에 구축용 Docker 이미지를 만들어 GiitHub Actions에서 활용하는 방법을 사용했다.
1. Mac의 명령선에서 nRF52의 FW 구축
우선 손 옆에 있는 맥이 FW를 구축할 수 있는지 확인하세요.
nRF52 개발 환경인 Segger Embeded Studio의 emBuild
명령을 사용합니다.$ emBuild -config "Release" nrf52_fw_app.emProject
지령으로 구축할 수 있다면 나머지는 이것을 Docker에 가져가는 것만으로도 가볍다(이럴 줄 알았는데 여기서부터 길다
참조: Building with a SEGGER Embedded Studio project file
2. Docker file을 써서 FW빌딩용 Docker 이미지 만들기
FW 구문을 확장하는 데 필요한 명령을 Docker file에 쓰려면 다음과 같이 하십시오.
FW 구축에 필요한
우선 손 옆에 있는 맥이 FW를 구축할 수 있는지 확인하세요.
nRF52 개발 환경인 Segger Embeded Studio의
emBuild
명령을 사용합니다.$ emBuild -config "Release" nrf52_fw_app.emProject
지령으로 구축할 수 있다면 나머지는 이것을 Docker에 가져가는 것만으로도 가볍다(이럴 줄 알았는데 여기서부터 길다참조: Building with a SEGGER Embedded Studio project file
2. Docker file을 써서 FW빌딩용 Docker 이미지 만들기
FW 구문을 확장하는 데 필요한 명령을 Docker file에 쓰려면 다음과 같이 하십시오.
FW 구축에 필요한
Dockerfile
FROM ubuntu:latest
ARG GCC_ARM_VER=gcc-arm-none-eabi-8-2019-q3-update
RUN apt-get update && \
apt-get install -y libx11-6 libfreetype6 libxrender1 libfontconfig1 libxext6 xvfb curl bzip2 unzip python python3-pip git zip
# nRF Util
RUN pip3 install nrfutil
# Nordic Command Line tools
RUN curl https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-command-line-tools/sw/versions-10-x-x/10-15-1/nrf-command-line-tools-10.15.1_linux-amd64.zip -o nrf-command-line-tools.zip && \
unzip nrf-command-line-tools.zip && \
tar -zxvf nrf-command-line-tools-10.15.1_Linux-amd64.tar.gz && \
rm nrf-command-line-tools.zip
# GCC
RUN curl -L https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/RC1.1/${GCC_ARM_VER}-linux.tar.bz2?revision=c34d758a-be0c-476e-a2de-af8c6e16a8a2?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,8-2019-q3-update -o ${GCC_ARM_VER}.tar.bz2 && \
tar -xvjf ${GCC_ARM_VER}.tar.bz2 && rm ${GCC_ARM_VER}.tar.bz2
ENV PATH="/${GCC_ARM_VER}/bin:/nrf-command-line-tools/bin:$PATH"
# Segger Embedded Studio
RUN curl -L https://www.segger.com/downloads/embedded-studio/Setup_EmbeddedStudio_ARM_v568_linux_x64.tar.gz -o ses.tar.gz && \
tar -zxvf ses.tar.gz && \
$(find arm_segger_* -name "install_segger*") --copy-files-to /ses --accept-license && \
rm ses.tar.gz && \
rm -rf arm_segger_embedded_studio_*
ENV PATH=$PATH:/ses/bin
# nRF5 SDK
RUN curl https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK1702d674dde.zip -o nRF5_SDK_17.0.2.zip && unzip -d nRF5_SDK_17.0.2 nRF5_SDK_17.0.2.zip && rm nRF5_SDK_17.0.2.zip
RUN printf "GNU_INSTALL_ROOT ?= /${GCC_ARM_VER}/bin/\nGNU_VERSION ?= 8.3.1\nGNU_PREFIX ?= arm-none-eabi\n" > /nRF5_SDK_17.0.2/nRF5_SDK_17.0.2_d674dde/components/toolchain/gcc/Makefile.posix
Docker build
Docker 이미지를 만듭니다.환경에 따라 이미지를 만드는 데 시간이 걸린다.
내 환경에서 20~30분 정도 걸렸다.
$ docker build ./ -t nrf52
3. Docker 컨테이너에서 동작 확인
구문된 Docker 이미지를 시작하고 시작할 수 있습니다.
컨테이너의 의도대로 Docker 이미지를 만들지 여부를 확인합니다.# Dockerコンテナを起動して中に入ってみる
$ docker run -it nrf52 bin/bash
# Dockerコンテナ上にemBuildコマンドが入っていることを確認
$ which emBuild
/ses/bin/emBuild
# ビルドコマンドが使えることを確認
$ emBuild
SEGGER Embedded Studio for ARM emBuild - Release 5.68
Copyright (c) 2014-2021 SEGGER Microcontroller GmbH
Copyright (c) 1997-2021 Rowley Associates Ltd.
4. Docker 이미지를 Docker Hub로 밀기
GiitHub Actions에서 Docker 이미지를 사용할 수 있도록 이미지를 Docker Hub로 밀어냅니다.# Dockerにログインする
$ docker login
# Docker Hubにイメージをプッシュする
$ docker push acctoun_name/repository_name:latest
※ Docker Hub은 호스트 Docker 이미지의 서비스입니다.
※ 사전에 Docker Hub에 계정을 만들고 창고에 등록해야 합니다.
5. GiitHub Action 을 쓴 YAML
드디어 GiitHub Actions입니다.원본이 확장 가능한 위치로 밀어붙일 때 자동으로 구축을 실행할 수 있습니다.포인트는 Docker Hub로 밀린 컨테이너를 사용하는 곳이다.name: emBuild
on:
pull_request:
types: [opened, synchronize]
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
# Docker Hubにプッシュしたコンテナを使用する
container:
image: account_name/nrf52:latest
steps:
# ビルド対象のソースコードをチェックアウトする
- uses: actions/checkout@v2
# FWのビルドを実行
- name: emBuild
run: emBuild -config "Release" nrf52_app.emProject
working-directory: ./nrf52_app/ble_peripheral/project/pca10040/s132/ses
# ビルドの成果物(HEX)をアップロードする
- name: Upload HEX file
uses: actions/upload-artifact@v2
with:
name: nrf52_app.hex
path: nrf52_app/ble_peripheral/project/pca10040/s132/ses/Output/Release/Exe/nrf52_app.hex
retention-days: 90
실행 결과
GiitHub Action에 FW 구축
컨디션
# Dockerコンテナを起動して中に入ってみる
$ docker run -it nrf52 bin/bash
# Dockerコンテナ上にemBuildコマンドが入っていることを確認
$ which emBuild
/ses/bin/emBuild
# ビルドコマンドが使えることを確認
$ emBuild
SEGGER Embedded Studio for ARM emBuild - Release 5.68
Copyright (c) 2014-2021 SEGGER Microcontroller GmbH
Copyright (c) 1997-2021 Rowley Associates Ltd.
GiitHub Actions에서 Docker 이미지를 사용할 수 있도록 이미지를 Docker Hub로 밀어냅니다.
# Dockerにログインする
$ docker login
# Docker Hubにイメージをプッシュする
$ docker push acctoun_name/repository_name:latest
※ Docker Hub은 호스트 Docker 이미지의 서비스입니다.※ 사전에 Docker Hub에 계정을 만들고 창고에 등록해야 합니다.
5. GiitHub Action 을 쓴 YAML
드디어 GiitHub Actions입니다.원본이 확장 가능한 위치로 밀어붙일 때 자동으로 구축을 실행할 수 있습니다.포인트는 Docker Hub로 밀린 컨테이너를 사용하는 곳이다.name: emBuild
on:
pull_request:
types: [opened, synchronize]
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
# Docker Hubにプッシュしたコンテナを使用する
container:
image: account_name/nrf52:latest
steps:
# ビルド対象のソースコードをチェックアウトする
- uses: actions/checkout@v2
# FWのビルドを実行
- name: emBuild
run: emBuild -config "Release" nrf52_app.emProject
working-directory: ./nrf52_app/ble_peripheral/project/pca10040/s132/ses
# ビルドの成果物(HEX)をアップロードする
- name: Upload HEX file
uses: actions/upload-artifact@v2
with:
name: nrf52_app.hex
path: nrf52_app/ble_peripheral/project/pca10040/s132/ses/Output/Release/Exe/nrf52_app.hex
retention-days: 90
실행 결과
GiitHub Action에 FW 구축
컨디션
name: emBuild
on:
pull_request:
types: [opened, synchronize]
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
# Docker Hubにプッシュしたコンテナを使用する
container:
image: account_name/nrf52:latest
steps:
# ビルド対象のソースコードをチェックアウトする
- uses: actions/checkout@v2
# FWのビルドを実行
- name: emBuild
run: emBuild -config "Release" nrf52_app.emProject
working-directory: ./nrf52_app/ble_peripheral/project/pca10040/s132/ses
# ビルドの成果物(HEX)をアップロードする
- name: Upload HEX file
uses: actions/upload-artifact@v2
with:
name: nrf52_app.hex
path: nrf52_app/ble_peripheral/project/pca10040/s132/ses/Output/Release/Exe/nrf52_app.hex
retention-days: 90
Reference
이 문제에 관하여(GiitHub Action에서 nRF52 펌웨어 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KentaHarada/items/508b03fd13a042138e6f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)