---
title: "[Raspberry] SPI Ethernet - W5500 적용하기.."
url: "https://maker.wiznet.io/bruno/projects/Raspberry-SPI-Ethernet-W5500-/"
markdown_url: "https://maker.wiznet.io/bruno/projects/Raspberry-SPI-Ethernet-W5500-/md"
type: "UCC: User Created Content"
author: "bruno"
author_url: "https://maker.wiznet.io/bruno/"
original_author: "bruno"
original_url: "https://makeutil.tistory.com/99"
published: "2022-03-01"
language: "en"
likes: 0
views: 445
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# [Raspberry] SPI Ethernet - W5500 적용하기..

> [Raspberry] SPI Ethernet - W5500 적용하기..

Original author: bruno (source: https://makeutil.tistory.com/99)

## Article

### [Raspberry] SPI Ethernet - W5500 적용하기..

Maketools2021. 5. 18. 12:01

? 앞서 라즈베리파이를 이용하야 이더캣(EtherCAT) 마스터를 구성할 경우 Realtime 커널 패치를 하는 방법이 있고, 그 외의 방법으로 외부 EtherNet을 사용하는 방법이 있다는 정보를 찾아서 실시간 커널을 지원받지 못하는 시스템에서 해당 장치를 사용할 수 있도록 미리 문서화 해둔 내용이 있어 공개한다.

? SPI Ethernet W5500은 디바이스 마트에서 1만원 정도에 구매가 가능하다. 필자는 라즈베리파이에 연결하였기 때문에 라즈베리파이에서는 2개의 이더넷이 잡힌다. 필요하면 하나더 달던지.. 그러면 3개가....

1. SPI Ethernet 적용

1.1. 디바이스의 연결

? 라즈베리파이의 핀과 구매한 Modue I/O의 핀매핑은 아래의 표를 참조.

![](https://k.kakaocdn.net/dn/vJhmC/btq5aqtr7CK/iOFVo0H80RVz1Cet1idlYK/img.png)

1.2. 테스트 대상

? 테스트 대상 버전은 라즈베리파이 3B+를 이용하였다. 4는 하다 해먹음 안되니까. 그리고 컴파일은 호스트에서 크로스컴파일을 이용하여 관련 파일들을 생성한다.

(1) 라즈베리파이 개발환경 설치

- 커널빌드를 위한 기본 패키지 설치

| $ sudo apt-get install git bc $ sudo apt-get install libncurses5-dev libncursesw5-dev |
| --- |

- 툴체인 설치

| $ git clone?<https://github.com/raspberrypi/tools>?~/works/raspberry/tools |
| --- |

- 컴파일러 환경 설정

? 당분간 계속 쓰려면 사용자 홈디렉터리의 .basrc에 추가해두면 터미널을 열때마다 자동 적용된다.

| $ echo PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin |
| --- |

? 아래는 에디터 없이 .basrc에 추가하는 방법이다.

| $ echo PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin >> ~/.bashrc $ source ~/.bashrc |
| --- |

(2) 커널 컴파일

- 커널 소스 다운로드

??본 문서 작성시점의 최신 커널은?4.19.y이다.?사용하고 있는 라즈베리의 커널 버전이 낮은 경우,?해당 버전을 확인하고 같은 버전의 커널 소스를 받아서 작업하는게 유익

| $ cd ~/works/raspberry/ [$ git clone --depth=1 --branch rpi-4.9.y?](https://github.com/raspberrypi/linux)<https://github.com/raspberrypi/linux>https://github.com/raspberrypi/linux |
| --- |

- 최신버전에서 해보려면 아래처럼

| $ cd ~/works/raspberry/ $ git clone --depth=1?<https://github.com/raspberrypi/linux> |
| --- |

- 컴파일 환경 변수 설정

| $ cd ~/works/raspberry $ mkdir build $ export ARCH=arm $ export CROSS_COMPILE=~/works/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnue abihf-raspbian-x64/bin/arm-linux-gnueabihf- $ export INSTALL_MOD_PATH=~/works/raspberry/build $ export INSTALL_DTBS_PATH=~/works/raspberry/build |
| --- |

- 커널 디폴트 설정 적용

라즈베리파이 3b 및 3b+

| $ export KERNEL=kernel7 $ cd ~/works/raspberry/linux/ $ make bcm2709_defconfig |
| --- |

라즈베리파이 4B

| $ export KERNEL=kernel7l $ cd ~/works/raspberry/linux $ make bcm2711_defconfig |
| --- |

- 커널 옵션 변경

| $ make menuconfig |
| --- |

아래의 커널 설정 화면에서 슬래쉬를 눌러 항목검색 표시

![](https://k.kakaocdn.net/dn/ce9Wed/btq454ydctm/PZ3hAdIkLbE2ckmmK8gQyk/img.png)

wiznet 입력후 엔터

![](https://k.kakaocdn.net/dn/cCqG6F/btq4146iUFX/6dmuz78vZb95We1W9YKDf0/img.png)

Wiznet 항목 찾은후 다음과 같이 설정

![](https://k.kakaocdn.net/dn/rB0YY/btq5befgBV6/fKOKOuRkvGOAUrOaQRphfK/img.png)

변경된 커널 설정 저장

![](https://k.kakaocdn.net/dn/bOi5Lz/btq5c53br53/USpFDzDlFYw2VWkZtRxTuK/img.png)

(4) 커널 컴파일

- 커널컴파일

? 컴파일러 환경 변수를 등록하지 않은 경우 (필자는 이 방식으로 주로 빌드함)

| $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4 |
| --- |

- 앞서 ARCH와 COMPILER를 export로 환경변수 등록한 경우

| linux$ mkdir $INSTALL_MOD_PATH/boot linux$ ./scripts/mkknlimg ./arch/arm/boot/zImage $INSTALL_MOD_PATH/boot/$KERNEL.img linux$ cd $INSTALL_MOD_PATH/boot boot$ mv $KERNEL.img kernel7.img |
| --- |

- 커널 전송

? 라즈베리파이에 빌드된 커널 전송

| linux$ cd $INSTALL_MOD_PATH module $ tar czf ../kernel.tgz * module $ cd .. linux$ scp kernel.tgz pi@&lt;ipaddress>:/tmp |
| --- |

### 여기서 부터 라즈베리파이에서 실행

- 변경된 커널 설치

| ~$ cd /tmp /tmp$ tar xzf kernel.tgz /tmp$ cd boot /tmp/boot$ sudo cp -rd * /boot/ /tmp/boot$ cd ../lib /tmp/lib$ sudo cp -dr * /lib/ /tmp/lib$ cd ../overlays /tmp/overlays$ sudo cp -d * /boot/overlays /tmp/overlays$ cd .. /tmp$ sudo cp -d bcm* /boot/ |
| --- |

- 부트설정

? 에디터를 이용하여 커널이미지를 선택한다.

| $nano /boot/config.txt |
| --- |

? 추가할 내용은 아래와 같다.

| # Add the following option: kernel=kernel7_w5500.img |
| --- |

- 리부팅 및 확인

| $ uname -r 4.19.59-rt23-v7l+ |
| --- |

- 디바이스 트리 변경

? 빌드하느라 고생하셨다.. 사실은 본 가이드 작성시점 이후의 커널에서는 디폴트로 포함이 되어있는거 같다 따라서 오버레이 DTB만 생성 해주면 바로 사용할 수 있다. 그냥 좋은 공부한 샘 치고 넘어가자. 혹시 안되면 해볼 수 도 있는것 아닌가....;;;;

| $ vi w5500-overlay.dts /dts-v1/; /plugin/; / { compatible = "brcm,bcm2835"; fragment@0?{ target = &lt;&spi0>; __overlay__ { #address-cells = &lt;1>; #size-cells = &lt;0>; status = "okay"; spidev@0?{ status = "disabled"; }; spidev@1?{ status = "disabled"; }; }; }; fragment@1?{ target = &lt;&spi0>; __overlay__ { #address-cells = &lt;1>; #size-cells = &lt;0>; status = "okay"; w5500@1?{ compatible = "wiznet,w5500"; reg = &lt;0>; spi-max-frequency = &lt;10000000>; mac-address = [00?08?DC 01?02?03]; interrupts = &lt;22?0x8>; interrupt-parent = &lt;&gpio>; status = "okay"; }; }; }; }; |
| --- |

dtb 파일 작성이 완료되었으면 컴파일뒤 /boot/overlay 폴더에 복사한다.

| # dts compile $ dtc -I dts -O dtb -o w5500-overlay.dtb w5500-overlay.dts # dtb?파일 복사 $ sudo cp w5500-overlay.dtb /boot/overlays/. # config.txt?내용 추가 $ sudo vi /boot/config.txt (내용 추가) dtoverlay=w5500 |
| --- |

- 마지막으로 동작확인

? 라즈베리파이를 부팅해서 ifconfig 명령을 입력하면 eth0 말고 추가된 eth1이 표시되어야 한다.

많이 쓰지 않을것 같아 문서에 캡쳐를 그렇게 해두지 않았는데, 이럴때는 조금 아쉽다.

# 라즈베리파이 EtherCAT을 위한 W5500 모듈 적용... 끝.

---

Source: https://maker.wiznet.io/bruno/projects/Raspberry-SPI-Ethernet-W5500-/
