RP2040은 라즈베리파이 재단에서 만든 ARM기반 MCU입니다. 

라즈베리파이 피코에 쓰인 것으로 유명하고 다른 MCU와 다르게 부트모드로 USB를 연결한 다음 뜨는 드라이브에 uf2파일을 복사하면 알아서 펌웨어가 들어가는 편리한 방식을 쓰고 있습니다.

 

문제는 uf2파일을 어떻게 만들것인가인데 우선 리눅스에서는

 

sudo apt update
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential git

mkdir ~/pico
cd ~/pico
git clone -b https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init

export PICO_SDK_PATH=~/pico/pico-sdk echo 'export PICO_SDK_PATH=~/pico/pico-sdk' >> ~/.bashrc


기타 등등.... 

이런식으로 하라고 되어 있습니다. 그런데 이거 좀 많이 불편합니다. bashrc를 쓰는 것도 그렇고 문제가 많지요.

 

그래서 Docker를 통해서 빌드시스템을 만드는 것으로 바꾸기로 했습니다.

 

Dockerfile
0.00MB

 

위 파일을 이용해서 도커 컨테이너를 빌드한 다음 그 안에서 빌드하는 것을 추천합니다.

 

다시 자세히 말하자면 우선 docker를 설치합니다.

 

sudo apt update

sudo apt install docker.io docker-compose -y

 

그리고 조금 위험할 수도 있지만 

sudo usermod -aG docker $USER

이건 사용자에게 도커 사용 권한을 부여하는 명령입니다. 만약 필요하면 쓰세요. 

(전 그냥 귀찮아서 씁니다.)

 

그다음 해당 파일을 다운로드 받거나 다음 내용으로 Dockerfile 파일을 만듭니다.

FROM ubuntu:24.04

# Prevent interactive prompts during installation
ENV DEBIAN_FRONTEND=noninteractive

# Install core build utilities and the ARM cross-compiler
RUN apt-get update && apt-get install -y \
    cmake \
    gcc-arm-none-eabi \
    libnewlib-arm-none-eabi \
    build-essential \
    git \
    python3 \
    && rm -rf /var/lib/apt/lists/*

# Set up the Pico SDK
WORKDIR /opt/pico
RUN git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git
ENV PICO_SDK_PATH=/opt/pico/pico-sdk

# Set up the application workspace inside the container
WORKDIR /project

 

그 다음 Dockerfile이 있는 곳에서 다음과 같이 명령을 내립니다.

 

docker build . -t rpi-builder

그러면 이제 rpi-builder 태그가 붙은 컨테이너가 하나 빌드됩니다.

 

그리고 

docker run -it -v (로컬디렉토리내의 프로젝트 폴더경로):/project rpi-builder bash

 

 

이렇게 하면 도커 내부로 들어갑니다. (-v 옵션이 들어가 있는 것을 보실 수 있습니다. 해당 옵션은 로컬디렉토리와 도커내부 디렉토리를 볼륭링크하는 옵션입니다.)

 

cd /project

여기서 cmake와 make를 통해서 빌드를 하시면 됩니다. 

 

보통은 

mkdir build

cd build

cmake -DCMAKE_BUILD_TYPE=Debug ..

make

 

보통 이런식으로 명령을 내리지요. 빌드가 다 되었다면 uf2 파일이 만들어져 있을 겁니다. 이것을 부트모드로 들어간 라즈베리파이피코를 연결하고 해당 드라이브에 복사한 뒤 USB를 뽑았다 다시 연결하면 펌웨어가 적용 되어 있을 겁니다.

,