Raspberry pico는 Visual Studio Code를 이용하여 개발하는 것이 가장 편리하며, 공식 안내서에서도 이것을 안내하고 있다.
환경 구성하기
아래의 명령문을 입력한다.
sudo apt install python3 git tar build-essential
해당 명령은 Python3, build-essential 등의 Pico 컴파일을 위한 필수 종속성을 내려받는다.
다음으로는 VSCode 마켓플레이스에서 확장을 내려받는다.


마켓플레이스에서 'Raspberry Pi Pico' 확장을 내려받는다.
시리얼 모니터나 메모리 관리자와 같은 관련 종속성 확장이 같이 설치되므로, 자신이 설치하지 않은 확장이 설치되었다고 당황할 필요는 없다.
우리는 라즈베리 파이에서 관련 작업을 수행할 것이므로, 원격 접속을 하여 거기에도 설치한다.
프로젝트 생성하기
확장 설치가 완료되었다면 이제 프로젝트를 하나 생성해본다.

왼쪽의 Pico 보드 모양의 단추를 눌러 프로젝트 창을 연다.
C/C++과 MicroPython 중 원하는 프로젝트를 선택하여 만들 수 있는데, 아무래도 이런 임베디드 보드는 C/C++로 작성하는 것이 다른 언어로 작성하는 것보다 더 최적화가 가능하다.
솔직히 필자가 MicroPython을 접해본 것이 없기도 해서, 일단 필자는 C/C++ 프로젝트를 생성하였다.
아래와 같은 창이 새로 뜬다. 직접 원하는 대로 설계할 수도 있지만, 일단 예제를 보고 코드 구성이 어떻게 되는지 알아보는 편이 낫다.

[Example] 단추를 누르면 예제를 고를 수 있도록 창 구성이 간단하게 변경된다.
blink 예제를 선택해서 LED를 깜박여보자.

이미지에서 붉은 네모로 표시한 드롭다운 메뉴를 누르면 에제 목록이 나타난다.
목록에서 [blink]를 선택한다.
선택이 완료되었으면 이제 보드 타입과 프로젝트 디렉터리가 저장될 위치를 선택해야한다.

Raspberry Pi Pico는 현재 Pico와 Pico2가 출시된 상황인데, 자신이 가지고 있는 보드의 종류에 따라 결정하면 된다.
디렉터리 위치는 특별히 지정하지 않는다면 사용자의 홈 디렉터리로 지정된다. 그러나, 안 그래도 복잡한 홈 디렉터리인데, 여기에 Pico 프로젝트마저 더해지면 매우 복잡해진다. 다로 'raspberrypico'와 같이 분리하는 것이 좋다.

모든 설정이 끝났다면 [Create]를 누른다.
자동으로 새 창이 열리며, 새로 열린 창에는 Pico 개발을 위한 필수 환경이 갖추어져 있다.
컴파일하기
우리는 에제 파일을 선택하였으므로, 일단 추가적인 코딩을 할 필요는 없다.
VSCode의 Pico 확장으로 예제 프로젝트를 생성하면, 자동으로 컴파일에 필요한 모든 환경을 갖추어 놓는다.
VSCode의 Pico 확장을 기준으로, Pico의 컴파일은 cmake와 ninja를 이용하여 이루어진다.
cmake는 앞서 설명한 build-essential 패키지에 포함되어 있고, ninja는 확장에 같이 포함되어 있다.

컴파일을 위해서는 하단의 [Compile] 단추를 누르거나, build 디렉터리로 이동하여 ninja를 입력하면 된다.
컴파일이 완료되면 여러 파일들이 생겨나는데, 최종적으로 Pico에 복사되어야 하는 파일은 UF2 파일이다.
컴파일 된 파일 옮기기
이전 글에서 설명하였듯, linux 환경에서는 아두이노 R4 Minima와 같은 장치에 작업을 하기 위해서는 추가 설정이 필요하다.
이는 Pico 또한 마찬가지라서, 이런저런 설정을 해주지 않으면 컴파일된 UF2 이진 파일을 바로 Pico에 복사할 수 없다.
그럴 때는 그냥 수동으로 옮기는 편이 편하다. 아래의 절차를 따른다:

먼저 'lsblk'를 입력하여 현재 디렉터리 상태를 확인한다.
Pico는 현재 sda 장치로 인식되어 있다.
임시로 마운트 할 경로를 만들어주자. 아래의 명령을 입력한다:
sudo mkdir /mnt/pico
위 명령은 /mnt 디렉터리에 pico 디렉터리를 새로 만든다.
이제 마운트한다. 아래의 명령을 입력한다:
sudo mount /dev/sda1 /mnt/pico
위 명령은 sda1 파티션을 /mnt/pico에 마운트한다. 즉 Pico의 저장소를 /mnt/pico에 마운트한다.

Pico의 저장소에는 무엇이 들어있는지 잠시 살펴보자.
ls /mnt/pico

내용물을 보면 알 수 있듯, 해당 디렉터리에 UF2 파일을 던져 넣으면 된다.

이미지의 파일이 바로 던져넣을 파일이다.
아래의 명령을 입력한다:




sudo cp build/blink.uf2 /mnt/pico/ && sudo umount /mnt/pico
위 명령은 컴파일 된 UF2 파일을 /mnt/pico에 던져 넣은 후, 바로 마운트를 해제하는 명령이다.
Pico는 UF2 파일이 자신의 디렉터리로 복사되면 그것을 바로 해석하는데, 이 과정에서 자동으로 마운트가 해제된다.
문제는 이 과정에서 미리 마운트를 해제해 놓지 않으면, 다음 마운트를 할 때, 이 녀석이 기존의 디바이스 파일 경로가 아닌 다른 경로로 인식된다는 것이다.
에를 들어, 위의 경우에는 sda 경로로 인식되었으나, 다음번에 마운트하면 sdb, 그 다음에는 sdc…과 같이 경로가 계속 밀리게 된다. 이를 해결하는 방법은 호스트 장치, 지금의 경우는 파이 5를 재부팅하거나, 상술한 방법으로 마운트를 미리 해제해주어야 한다.

재컴파일하려면 build 디렉터리에서 ninja를 입력하거나, [Compile] 단추 또는 Pico Project 메뉴에서 [Complie Project]를 눌러 재컴파일하면 된다.
아니면 build 디렉터리의 모든 내용을 삭제한 후 cmake와 make를 이용하여 재컴파일할 수도 있다.
결과물은 같으니 걱정할 필요는 없다.
단, 이렇게 make를 이용해 빌드하는 경우, 더 이상 하단의 [Compile] 단추와 [Complie Project]를 이용한 빌드는 사용할 수 없다.
이런 경우, 초기 상태로 되돌리려면 Pico Project 메뉴에서 [Configure CMake], 또는 [Clean CMake]를 눌러 CMake 환경을 다시 구성하면 된다.
'Raspberry Pi' 카테고리의 다른 글
| Raspberry Pi #17 - PPA를 이용한 APT 저장소 추가 (0) | 2026.07.01 |
|---|---|
| Linux 모니터링 명령 (0) | 2026.06.01 |
| Raspberry Pi #16 - SSH 접속 키 변경하기 (0) | 2026.03.15 |
| Raspberry Pi #15 - UART 포트를 이용해 아두이노와 시리얼 통신 (0) | 2026.02.15 |
| Raspberry Pi #14 - arduino와 시리얼 통신 주고받기 (0) | 2026.02.01 |
댓글