행복한 하루

Raspberry Pi에서 W5100S-EVB-Pico MicroPython 빌드시켜 보기 본문

IoT

Raspberry Pi에서 W5100S-EVB-Pico MicroPython 빌드시켜 보기

변화의 물결 2023. 4. 18. 00:05

 

 

안녕하세요.

 

  W5100S-EVB-Pico는 Raspberry Pico 버전에 유선 랜 통신이 가능하게 한 모듈인데요. 웹서버로 사용해 볼 겸 해서 사이트에 나온 데로 MicroPython을 컴파일해서 올려보는 것을 테스트해 보았습니다.

 결론적으로 말하면 빌드는 되어 uf2 파일까지는 만들 수 있습니다. 그러나 아래 테스트대로 하면 pico 기본 동작은 하나 저의 옵션 설정 및 기능 미숙으로 network 라이브러리가 포함되지 않아 network 동작까지 포함한 펌웨어 파일을 만들어내지는 못했습니다.

   아래 내용을 참고하시어 대략적인 방법은 이렇구나 확인하시면 어떨까 합니다.


1. 사전 준비

  - 처음에 환경설정 자세히 보지 않고 윈도우에서 작업을 해보려고 했는데 빌드 시 에러가 발생해서 진행하지 못했습니다. 그리고 다시 글을 보면 Linux 나 Unix에서 해야 한다고 있다는 것을 알게 되었습니다. ^^;

 

 - 기존 리눅스 PC가 있다면 거기서 Docker 컨테이너를 만들어서 이용하면 됩니다. 아니면 라즈베리 파이에서 Docker Container를 생성해서 빌드하면 됩니다.

 

 - Ubuntu Container 하나 생성합니다.

$ docker run -dit --name wiznet_compile ubuntu

 

- 생성한 Container에 접속합니다.

$ docker exec -it wiznet_compile bash

 

  - 컨테이너 안에서 업데이트와 컴파일에 필요한 라이브러리들을 설치합니다.

   ( 빌드하면서 에러나는 부분까지 포함해서 여러 가지 설치하였습니다.)

root@ea814d40d1d6:/# apt update
root@ea814d40d1d6:/# apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential libstdc++-arm-none-eabi-newlib vim git python3 -y

 

2. 소스 컴파일

1) 소스 다운로드 하기

 root@ea814d40d1d6:/ # mkdir src
 root@ea814d40d1d6:/ # cd src
 root@ea814d40d1d6:/src# git clone https://github.com/Wiznet/RP2040-HAT-MicroPython.git

 

2) 하위 모듈 다운로드 및 패치하기

root@ea814d40d1d6:/src# cd RP2040-HAT-MicroPython/
root@ea814d40d1d6:/src/RP2040-HAT-MicroPython# cmake CMakeLists.txt

 

  - libraries 경로에 새로운 디렉터리와 파일이 생성된 것을 확인할 수 있고, 실제 빌드할 위치로 이동합니다.

root@ea814d40d1d6:/src/RP2040-HAT-MicroPython# cd libraries/ports/rp2

- 바로 make를 실행하면 라즈베리 파이 micropython-lib를 찾을 수 없다고 옵니다.  이것은 옵션을 바꿔서 하위 모듈 먼저 make를 실행하면 라이브러리가 생성되는 것을 확인할 수 있습니다.

 

  - 사용하고자 하는 보드에 맞게 보드를 선택해 줍니다. 어떤 보드들이 있는지 확인해 보면 PICO와 PICO_W도 있습니다.

 

  - 여기서는 W5100S 제품으로 선택하고 진행합니다.

root@ea814d40d1d6:/src/RP2040-HAT-MicroPython/libraries/ports/rp2# make BOARD=W5100S_EVB_PICO submodules

 

  - make로 빌드를 진행합니다. 그러면 최종적으로 firmware.elf 파일이 생성됩니다. 여기까지 왔다면 기본 컴파일은 완료되었다고 생각할 수 있습니다.

root@ea814d40d1d6:/src/RP2040-HAT-MicroPython/libraries/ports/rp2# make

3. elf를 uf2로 변환 및 다운로드

  - firmware.elf 파일(MicroPython)을 생성했지만, W5100S나 Pico에는 다운로드할 수 있는 파일은 아닙니다. 이것을 다시 uf2로 변환해 주어야 하는데, 그 프로그램은 build-PICO/elf2uf2/ 디렉터리에 있었습니다.

root@ea814d40d1d6:/src/RP2040-HAT-MicroPython/libraries/ports/rp2# build-PICO/elf2uf2/elf2uf2 build-PICO/firmware.elf ./custom_micropython.uf2

 

  - 위와 같이 실행하면 custom_micropython.uf2 파일이 생성됩니다.

 

  - 이 변환한 uf2파일을 다시 컨테이너 밖으로 복사해야 합니다. docker cp를 사용해서  라즈베리 파이 쪽으로 복사할 수 있습니다.

 

docker cp wiznet_compile:/src/RP2040-HAT-MicroPython/libraries/ports/rp2/custom_micropython.uf2 .

  - 이제 라즈베리파이에 ftp, 원격프로그램(vnc) 혹은 usb를 통해 PC로 옮겨서 W5100S 보드에 다운로드합니다.

  - W5100S의 BOOT_SEL 버튼을 누른 상태에서 USB 연결하면, 폴더가 나타납니다. 여기에  만든 custom_micropython.uf2 파일을 넣고 부팅을 기다립니다.

4. 실행해 보기

  - Thonny로 연결해 보면 “MicroPython v1.19.1-604-g3ed017677-dirty on 2023-04-17;” 빌드한 날짜와 버전이 나옵니다.

  - 그런데 W5100S 사이트에서 제공해 주는 ping 소스를 실행해 보면 network 라이브러리가 없다고 실행되지 않습니다.

  - 그러나 import network와 def w5x00_init():, w5x00_init() 등 주석으로 처리해서 실행하면 LED가 깜박이는 것은 확인할 수 있었습니다.

   - 기본적인 PICO 기능의 micropython만 빌드된 것으로 보이며 옵션이나 설정이 잘못된 것을 확인이 필요해 보입니다.  실수하고 있는 부분이 있다면 댓글 공유 부탁드립니다.

  

  - 위의 방법으로 펌웨어 교체후 정상 동작을 하지 않을 경우 아래 링크에서 이미 빌드된 uf2 파일을 다시 받아서 설치해 주면 처음 상대로 돌아옵니다.

https://github.com/Wiznet/RP2040-HAT-MicroPython/releases

  

감사합니다.

 

 

<참고사이트>

1. ethernet Example Getting Started

https://github.com/Wiznet/RP2040-HAT-MicroPython/blob/main/Ethernet%20Example%20Getting%20Started%20%5BMicropython%5D.md

2. Using the Raspberry Pi Pico on Ubuntu

https://www.gibbard.me/using_the_raspberry_pi_pico_on_ubuntu/

3. w5x00_Ping_Test.py

https://github.com/Wiznet/RP2040-HAT-MicroPython/blob/main/examples/PING_TEST/w5x00_Ping_Test.py  

 

 

Comments