Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 하드웨어/Raspberry PI Pico

rpi-pico Hello world!(MacOS)

방피터 2022. 8. 6. 11:16

Hello world 지겹지? 응 나도 그래.. MCU에서 printf랑 default로 연결시켜놓으면 좋겠어. 새 MCU할 때마다 아주 그냥 지겨워.. 그래도 뭐 어떻게 디버그할라면 혹여나 text LCD라도 붙이려면 해야지. getting started 문서 chapter 4에 있으니까 참고들 하라고

언제나 말하지만 난 MacOS 기준이야~~ (getting started는 linux 기준으로 되어 있어~)

 

일단 stdin, stdout 일명 스텐다드 인풋 아웃풋! ㅋ 뭐 그냥 serial port야 ㅋㅋ 그중에 stdin은 RPI PICO UART0에 연결되어 있다고 해. 그러면 stdout은? 이것도 UART0와 연결되어 있는데 Cmake에서 USB_CDC로도 연결할 수 있다고 되어 있어. 좋구만!! CmakeList.txt에서 설정할 수 있다는 것 같은데 찾아가 보자구.

 

pico-example/hello_world 폴더를 보면 serial 폴더와 usb 폴더가 함께 있어. usb에 가서 CMakerLists.txt 내용을 살펴보자구.

hello_world usb example

아래가 👇 usb폴더의 CMakeLists.txt야. 문서에는 pico_enable_stdio_usb(hello_usb 1) -> 이렇게 하면 usb enable이고 pico_enable_stdio_uart(hello_usb 0) 이렇게 하면 uart는 disable이라고 되어 있네. 여기에서 hello_usb는 프로젝트 이름정도 되겠구만. 뒤에 0 -> disable, 1-> enable이고... 나처럼 눈치로 하지 말고 문서를 보고 해 그게 니들이 사는 길이야 ㅋㅋ

if (TARGET tinyusb_device)
    add_executable(hello_usb
            hello_usb.c
            )

    # pull in common dependencies
    target_link_libraries(hello_usb pico_stdlib)

    # enable usb output, disable uart output
    pico_enable_stdio_usb(hello_usb 1)
    pico_enable_stdio_uart(hello_usb 0)

    # create map/bin/hex/uf2 file etc.
    pico_add_extra_outputs(hello_usb)

    # add url via pico_set_program_url
    example_auto_set_url(hello_usb)
elseif(PICO_ON_DEVICE)
    message(WARNING "not building hello_usb because TinyUSB submodule is not initialized in the SDK")
endif()

뭐 들여다 보면 뭐하겠나? ~/pico/pico-example/build/hello_world 폴더로 이동 한다음 make -j10 때려버렷!!

 

잠깐! ~/pico/pico-example/build 폴더 만들어 놓은거 기억나니? 안나니? 안나면 👇👇

2022.08.05 - [임베디드 하드웨어/Raspberry PI Pico] - Raspberry Pi Pico 프로젝트 설정 MacOS

 

Raspberry Pi Pico 프로젝트 설정 MacOS

Raspberry PI Pico가 뭔지 모르는 사람은 쿨하게 뒤로가지 누르자! 위즈네트 RP2040 모듈가지고 Zephyr를 하고 있었는데 오리지널 Raspberry Pi Pico(이하 pico라 할거임ㅋ)도 할 일이(돈받고ㅋ) 생겨서 같이

engschool.tistory.com

 

 

자 컴파일이 끝나고 바이너리가 만들어졌겠지 ㅋ usb 폴더로 가자. rpi-pico 연결하고 hello_usb.uf2 파일 복사하면 끝.

uf2 바이너리 복사

잘 동작하는 거 어디서 확인하냐고? 일단 serial 프로그램 있어야 하는데 맥용이 뭐가 있는지 몰라. 찾아봐야지. 아니면 직접 만들던지... 시리얼 프로그램 켜는 것도 짜증나 죽겠어. 없으며 허구헌날 경고창 보면서 다운로드 받아야 하고... 확씨 웹용으로 만들어버려야겠어. 뭐 이건 나중에 하고 일단 맥에서는 터미널에서 명령어 통해서 할 수 있긴 해.

 

터미널에서 아래와 👇같이 입력해보자.

% ls /dev/tty.*

그럼 /dev/tty.usbmodem~~~~~ 이라는 이름으로 연결된 걸 확인할 수 있어.

usbmodem831301 이라는 이름으로 연결된 comport

 

자 그러면 터미널에 연결해보자 아래처럼 👇 보레이트 115200은 걍 때려맞힌거야. 대부분 저거 쓰니깐.

screen /dev/tty.usbmodem831301 115200

 

자 그러면 결과 hello, world!라는 텍스트가 매초 출력되는 걸 확인할 수 있어. 한가지! 나한테만 해당되는 문제인지 모르겠지만 screen 실행 도중에 중지가 안돼. 중지하려면 무조건 USB 빼야하네.. 으으므을민아림ㄴ아러 문제가 있구만...

hello world

UART도 확인하고 싶지만 난 지금 장비가 없으므로 패스하고 대신 hello world 내용을 조금 수정하고 make해보자구. 왜냐고? 그냥 ㅋ 익숙해지라고 ㅋㅋ 한번해서 되면 다 한거 같지? 응 아냐~ 10번 해~ 머리나쁘면 100번 해~ ㅋ

 

원래 초단간한 코드에서 카운터만 추가하고 다시 컴파일한 다음 출력해봤어. 맞어 별건 아닌거 맞는데 ㅋㅋ 그냥 해바바~ ㅋㅋ

counter 넣어봤어.. 수줍..

자 그럼 이제 디버그용 시리얼 포트도 끝났고~ 계속 터미널에서 vim으로 코딩할 수는 없는 노릇이니 😣 VS CODE에다가 설정을 해보자구. 안녕~

반응형