가끔 라즈베리파이 피코가 오작동하는 것이 느껴질 때가 있습니다. 오작동이 아니더라도 튜닝을 의도한다든가 하는 위자드리급 고수시라면 한번쯤 해볼만한 작업입니다.
우선 RP2040용으로 나온 부트롬은 아래 명령어로 받아올 수 있습니다.
1 2 3 4 5 6 |
]# cd ~ ]# mkdir devel ]# cd devel ]# git clone https://github.com/raspberrypi/pico-bootrom-rp2040 |
해당 사이트에 가보면 해설이 나오는데, 컴파일하는 컴파일러의 버전이 딱 맞아야 합니다. 이후 버전으로 하면 pico-bootrom-rp2040/bootrom/bootrom.ld 의 ROM이 16K로 되어 있는 량을 늘려야 해서, RP2040의 표준에 안맞게 됩니다. 16K를 늘리면 이후 버전 컴파일러로도 컴파일이 되지만, 그대로 두면 오류나고 멈추네요.
그리고 특기할만한 사실은 리눅스에서 작업하지 않으면 generated.h나 git_info.h 등의 헤더가 만들어지지 않습니다. 이는 pico-bootrom-rp2040에 루트에 포함된 CMakeLists.txt에서도 단서가 발견되는데요.
1 2 3 4 5 6 7 8 |
# todo is there a better way - this breaks on windows I presume set_property(TARGET generate PROPERTY IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/generator/generate) add_dependencies(generate generator) set(GIT_INFO_H ${CMAKE_CURRENT_BINARY_DIR}/git_info.h) set(GENERATED_H ${CMAKE_CURRENT_BINARY_DIR}/generated.h) |
라고 되어 있는 부분에서 주석에 나온대로네요.
요약하자면
- 리눅스에서 컴파일해야 한다
- gcc-arm-none-eabi-9-2020-q2-update 버전을 써야 한다
입니다.
위에 예시한 명령어 이후에 입력할 워크플로우는 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 |
]# sudo apt install libusb-1.0-0-dev ]# cd ~/devel ]# git clone https://github.com/raspberrypi/picotool ]# cd picotool ]# cmake -B build -S . ]# cd build ]# make ]# make install |
웹브라우저로 https://developer.arm.com/downloads/-/gnu-rm/9-2020-q2-update 이동
gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 를 다운로드 받음 (호스트 PC가 리눅스이고 64비트 CPU인 경우)
다운받은 파일을 압축풀음
1 2 3 |
]# cp 압축푼 디렉토리 ~/devel/ |
이렇게 하면 ~/devel/압축푼 디렉토리 가 gcc-arm-none-eabi-9-2020-q2-update 디렉토리가 됩니다. 기존의 버전이 높은 arm gcc와 충돌이 없게 홈디렉토리에 압축을 풀었습니다. 압축푼대로 그냥 쓰면 됩니다.
다음으로 아래 명령어를 이어갑니다.
1 2 3 4 5 6 7 8 9 10 |
]# cd ~/devel/pico-bootrom-rp2040 ]# vi CMakeLists.txt # pico_sdk_init() 바로 아래에 아래 두라인을 추가 후 저장하고 나옴 set(CMAKE_C_COMPILER /home/bluenote/devel/압축푼디렉토리/bin/arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER /home/bluenote/devel/압축푼디렉토리/bin/arm-none-eabi-c++) ]# cmake -B build -S . ]# cd build ]# make |
이렇게 하면 기본값으로 부트롬이 빌드되어 bootrom.bin 이 생성됩니다. 이 생성된 bin 파일을 라즈베리파이 피코에 심으세요.
1 2 3 4 5 |
BOOTSEL 모드로 라즈베리파이 피코를 연결 ]# cd ~/devel/pico-bootrom-rp2040/build ]# picotool save bootrom.bin -t bin |
이렇게 하면 빌드된 부트롬이 심어집니다. 정말로 심어진지는 미확인인데, 일단은 picotool로 save 명령을 실행하면 100% 꽉차고 오류없이 완료되네요.