안녕하세요
디바이스마트의 블랙조이 솔다입니다
오늘은 버추얼박스의 우분투 환경에서 C를 이용하여
라즈베리파이 피코를 테스트 해보겠습니다
cmake를 이용해서 수동으로 컴파일하다보니
아무래도 Thonny를 활용할 수 있는 python보다는 번잡스럽습니다
그러나 본 포스팅을 보고 그대로 따라하시면 문제 없습니다
그럼 포스팅 출발~
-
먼저 피코를 com포트로 인식시키는 작업을 해보겠습니다
파이썬으로 업로드 해보는 이전 포스팅을 해보셨거나
이미 com포트에 인식되어 있다면 본 과정을 생략하셔도 됩니다
준비물
라즈베리파이 피코 - 링크
USB micro B 케이블 - 링크
연결하기 전에 장치관리자를 먼저 보겠습니다
키보드의 [시작]키를 눌러 [장치 관리자]를 검색하여 실행합니다
USB로 연결하면 보통은 COM PORT로 잡히니 저 부분의 화살표를 눌러
리스트를 펼쳐줍시다
펼쳐보면 COM1은 기본으로 있는 시리얼 포트고
저는 Bluetooth 장치를 연결해놔서 기본적으로 COM8과 COM9를 사용중이네요
피코를 연결해줍니다
따로 LED가 켜진다거나 하지는 않습니다
띠용?
RPI-RP2라는 드라이버가 잡혔네요???
그런데 이렇게 드라이버로 안 잡히시는 분들이 있으실 수 있습니다
그럴때 저 BOOTSEL 버튼이 사용됩니다
일단 피코에서 케이블을 분리 한 뒤
BOOTSEL 버튼을 '누르고 있는 상태'로
케이블을 꽂아주시면 되시겠습니다
그럼 아까 위와 같이 드라이버로써 잡히고
[내 컴퓨터]에서 확인하실 수 있습니다
RP2040 소개페이지가 나옵니다
여기서 스크롤을 조금 내리시면
이런 화면이 나옵니다
옆에 몇가지 절차가 써있고 녹색 버튼이 있습니다
1. 파일을 받는다
2. 부트셀을 누른상태로 보드를 PC와 연결한다
3. 파일을 RPI-RP2 드라이버에 드래그 앤 드롭 한다
라고 되어있습니다
그렇습니다 지금 우리가 하려는 그것입니다
그럼 녹색 버튼을 눌러서 UF2 파일을 받아줍니다
다운받은 파일입니다
좌측을 보시면 탐색기(?)같이 드라이버들이 보이는데
이쪽으로 드래그 앤 드롭 해주겠습니다
드래그 앤 드롭이라 함은 저렇게 마우스로 파일을 누른 상태로 당겨서
RPI-RP2 드라이버 위에서 마우스를 놓아주시면 됩니다
파일이 복사되고 잠깐 기다리면
위와같이 RPI-RP2 드라이버가 없어집니다(!)
이게 어떻게 된 일인지
[장치 관리자]를 확인해보겠습니다
버추얼박스에 설치된 우분투에 피코용 SDK를 설치해보겠습니다
가상환경이 아닌 네추럴 본 리눅스라도 진행방법은 동일합니다
우선 버추얼박스를 실행해서 설치된 우분투를 실행해줍니다
버추얼박스에 우분투를 설치하는 법은 이쪽 포스팅을 참고해주세요
설치하실 때 스토리지 용량은 넉넉하게 20GB 이상으로 해주세요
실행해줍니다
Super키(윈도우키)를 눌러 '터미널'을 검색합니다
결과가 하나뿐이니 엔터를 눌러 실행해줍니다
이렇게 터미널 창이 열립니다
피코가 연결된지 확인을 하려고 하는데
버추얼박스 등의 가상환경의 경우 장치와 가상환경을 연동해줘야합니다
[장치] > [USB] > [MicroPython Board in...]
위와 같이 선택해서 가상환경과 피코를 연결해줍니다
터미널에 'lsusb'라는 명령어를 실행해보면
마이크로파이썬 보드로 연결되어있는 것을 확인하실 수 있습니다
연결이 확인 되었다면 이제 진짜 SDK를 설치하겠습니다
sudo apt update
|
그 전에 업데이트를 먼저 해줍니다
sudo 권한이라서 암호를 요구하니 입력해줍니다
알아서 쭉쭉 업데이트가 됩니다
56가지 패키지가 업그레이드 됐다고 합니다
sudo apt full-upgrade
|
이어서 풀업데이트를 해줍니다
암호를 입력해주시고
용량을 얼만큼 더 쓴다고 계속할거냐고 묻는데
Y를 눌러. 진행시켜. 줍니다.
또 다시 알아서 업데이트 되는 시간...
드디어 업데이트 완료되었습니다
공식 깃헙에서 셋업 스크립트를 가져와서 실행원한을 부여한 뒤
실행시켜줍니다
wget -O pico_setup.sh https://rptl.io/pico-setup-script
chmod +x pico_setup.sh ./pico_setup.sh |
라즈베리파이가 아니라며 위험은 알아서 감수하라고 합니다
암호를 입력해서 설치를 진행합니다
용량이 큰 관계로 시간이 좀 걸립니다...
[리빙 포인트] 심심할땐 솔다 포스팅을 구경하는 것이 좋다
오랜시간이 흐른 뒤 picotool이라는걸 설치 때에 권한을 요청합니다
암호를 입력해줍니다
이후에도 또 다시 인고의 시간이 필요합니다
의존성 때문에 일부 설치를 실패했다고 하는데
이 부분은 정확히 몰라서 넘어갔습니다...(정직)
sudo reboot
|
이제 재부팅 해주시면 됩니다!
-
3단계. 코딩 & 컴파일
드디어 본격적인 코딩시간입니다
일단 특정 폴더에서 작업하기위해 폴더를 생성해주도록 합시다
다시 터미널을 실행시켜줍니다
ls -la
|
터미널에 위와같은 명령어를 실행해보시면
폴더 목록이 나오는데
[pico]라는 폴더가 생성되어있다는걸 확인할 수 있습니다
이 안에 [blink]라는 폴더를 만들고
또 그 [blink]라는 폴더 안에 [build]라는 폴더를 생성해주겠습니다
cd pico
mkdir blink cd blink mkdir build |
순서대로 명령어를 입력해주시기만 하면 됩니다
이제 이 폴더에 세개의 파일을 생성할겁니다
blink C 코드 파일인 [blink.c]
cmake를 이용해 빌드할거기 때문에 필수 파일인 [CMakeLists.txt]
pico sdk에서 제공되는 cmake 파일인 [pico_sdk_import.cmake]
우선 [pico_sdk_import.cmake]을 복사해오도록 하겠습니다
cp ../pico-sdk/external/pico_sdk_import.cmake .
|
cp 명령어를 이용해 손쉽게 파일을 복사했습니다.
남은 두 파일은 직접 작성해야하는데 nano나 vi같은 에디터를 사용하거나
IDE 등을 사용하여 작성할 수 있습니다
저는 직관적인 방법을 선호하기 때문에
윈도우의 메모장에 해당하는 [텍스트 편집기]로 작성하겠습니다
Super키(윈도우키)를 눌러 '텍스트'를 검색합니다
첫번째 결과로 나왔으니까 엔터를 눌러 실행해줍니다
보시다시피 메모장과 유사한 프로그램이 실행됩니다
#include "pico/stdlib.h"
const uint LED_PIN = 25;
int main() { gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
gpio_put(LED_PIN, 0);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
}
}
|
위와같이 소스코드를 입력해줍니다
[ctrl+s]를 눌러 저장해줍시다
경로는 [~\pico\blink]입니다
파일명은 [blink.c]로 저장해주시면 됩니다
저장하고 나니까 확장자가 생겨서 그런지
syntax highlight가 적용되어있습니다
[ctrl+n]을 눌러 새 창을 띄워줍니다
cmake_minimum_required
(VERSION 3.12)
include(pico_sdk_import.cmake)
project(blink)
pico_sdk_init() add_executable
(blink
blink.c ) pico_add_extra_outputs(blink) target_link_libraries
(blink pico_stdlib)
|
이번에는 위와같이 작성해줍니다
이번에도 [ctrl+s]를 눌러 저장해줍시다
역시나 경로는 [~\pico\blink]입니다
파일명은 [CMakeLists.txt]으로 저장해야하는데
대소문자를 구분하니까 꼭 위와같은 파일명으로 저장해주셔야합니다
저장까지 하셨으면 에디터를 모두 종료해줍니다
다시 터미널로 돌아옵니다
cd build
export PICO_SDK_PATH=../../pico-sdk cmake .. |
터미널에 위와같이 입력하시면
아까 생성해놨던 [build] 폴더로 들어가서
pico-sdk 환경변수를 선언해준 뒤 cmake합니다
그럼 쭉쭉 알아서 makefile을 생성합니다
make
|
터미널에 [make] 명령을 해주시면?
pico-sdk cmake에 작성되어있는 절차를 따라
.uf2 파일이 생성됩니다
생성했던 [build]폴더에 들어가보시면
[blink.uf2] 파일이 생성되어있는것을 확인하실 수 있습니다
-
4단계. 업로드
uf2 파일을 얻었으니 드래그 앤 드롭으로 파일을 넣어주기만 하면됩니다
그치만 아까 USB 연결은 했지만 스토리지로 잡혀있지가 않아 불가합니다...ㅠㅠ
당연히 잘 잡힙니다ㅎㅎ
근데 이러면 버추얼박스와 다시 연결해줘야합니다
아깐 MicroPython 어쩌구더니
이번에는 [Raspberry Pi RP2 Boot...]라고 나옵니다
클릭해서 버추얼박스로 연동해줍니다
1~2분 정도 기다리면 저렇게 스토리지가 잡힙니다
드래그 앤 드롭으로 파일을 넣어 주시면?
-
이번에도 완전 분량이 많았네요ㅎㅎ
우분투에서 C나 C++로 라즈베리파이 피코 개발 하실 때
본 포스팅이 도음이 되었으면 좋겠습니다
그럼 긴 글 봐주셔서 감사합니다
0 댓글