실습 환경 구축
이 문서는 빈 SD카드에서 시작하여 CAN 두 채널이 서로 통신하는 상태까지 만드는 과정을 다룬다. 여기까지 완료되면 이후의 실습은 코드를 작성하는 일만 남는다.
완성된 이미지를 배포하지 않고 각자 직접 굽는 이유는, 환경이 어떻게 만들어졌는지 알아야 문제가 생겼을 때 스스로 고칠 수 있기 때문이다. 실제로 실습 중에 마주치는 문제의 대부분은 이 문서에 나오는 단계 중 하나를 건너뛰었거나 값을 잘못 넣어서 생긴다.
Chapter 1. 준비와 굽기#
두 개의 통신 경로#
파이는 두 가지 길로 연결된다. 하나는 와이파이이고, 다른 하나는 내 PC와 파이를 랜선으로 직접 잇는 직결 경로이다. 이 둘은 목적이 다르므로 처음에 구분해 두어야 이후 단계가 헷갈리지 않는다.
와이파이는 인터넷을 쓰기 위한 길이다. 패키지를 내려받고 편집기 서버를 설치하는 작업은 모두 이 경로로 이루어진다. 평소 접속도 이쪽을 기본으로 한다.
랜선 직결은 실습을 위한 전용 통로이다. 중간에 공유기나 스위치를 거치지 않으므로 다른 사람의 트래픽에 영향을 받지 않는다. 교육장에서 여럿이 동시에 접속하여 와이파이가 느려지면 이 경로로 넘어가면 되고, 이더넷 실습(DoIP)에서도 같은 통로를 그대로 사용하게 된다.
| 경로 | 용도 | 주소 |
|---|---|---|
| 와이파이 | 인터넷, 개발, 평소 접속 | 교육장 공유기가 배정 |
| 랜선 직결 | 실습용 예비 경로, 이더넷 실습 | 내 PC 192.168.10.1 ↔ 파이 192.168.10.2 |
두 경로를 모두 연결해 두면 한쪽이 끊어져도 접속이 이어진다.
운영체제 굽기#
라즈베리파이 공식 사이트에서 Raspberry Pi Imager를 내려받아 설치한 후 실행한다. SD카드는 미리 리더기에 꽂아 둔다.
Imager를 실행하면 세 개의 칸이 보인다. 장치는 사용 중인 보드 모델을 그대로 고른다.

운영 체제는 목록 맨 위의 Raspberry Pi OS (64-bit) 권장판을 선택한다. 화면이 딸린 판이지만 우리는 모니터와 키보드 없이 SSH로만 접속할 것이므로 화면 관련 기능은 사용하지 않는다.

마지막으로 굽기에 사용할 SD카드를 선택한다.

저장소는 신중하게 고른다
선택한 장치의 내용은 전부 지워진다. 외장 하드나 USB가 꽂혀 있으면 목록에 함께 나타나므로, 용량과 이름을 두 번 확인해야 한다. 확신이 서지 않으면 다른 저장 장치를 잠시 빼고 진행한다.
첫 부팅 설정#
화면과 키보드 없이 사용하려면 굽기 전에 설정을 미리 넣어 두어야 한다. Imager의 사용자 지정 화면에서 아래 값을 입력한다.
| 항목 | 값 |
|---|---|
| 호스트 이름 | canlab |
| 사용자 이름 | pi |
| 비밀번호 | 안내한 값 |
| 무선 LAN | 교육장 SSID · 비밀번호 · 국가 KR |
| 로케일 | 시간대 Asia/Seoul |
먼저 호스트 이름에 canlab을 입력한다.

같은 와이파이에서 호스트 이름이 겹치지 않도록 한다
여러 파이가 같은 와이파이에 연결된 상태에서 모두 canlab이라는 이름을 사용하면
ssh pi@canlab.local로 접속할 때 어느 파이인지 구분할 수 없다. 여러 명이 동시에 실습한다면
진행자의 안내에 따라 canlab1, canlab2처럼 서로 다른 호스트 이름을 사용한다.
이 문서의 화면과 명령은 한 대를 설정하는 경우를 기준으로 하므로 canlab을 그대로 사용한다.
로케일은 수도 도시 Seoul, 시간대 Asia/Seoul, 키보드 레이아웃 kr로 맞춘다.

사용자 이름은 pi로 두고 안내받은 비밀번호를 두 번 입력한다.

교육장 와이파이의 SSID와 비밀번호를 입력한다.

이어서 서비스 탭으로 넘어가 SSH 사용을 켜고 인증 방식은 비밀번호 사용으로 둔다. 이 항목을 켜지 않으면 첫 부팅 후 파이에 접속할 방법이 없다.

Raspberry Pi Connect는 이번 실습에서 사용하지 않으므로 켜지 않아도 된다.

설정 내용을 마지막으로 확인한 뒤 기록을 누른다. 굽기는 5분에서 10분 정도 걸린다.

HAT 장착과 부팅#
굽기가 끝나면 CAN FD HAT을 장착한다. 반드시 전원을 뺀 상태에서 40핀을 맞추어 수직으로 눌러 끼운다. 전원이 들어온 채로 꽂으면 보드가 손상될 수 있고, 한 줄이라도 밀려 꽂히면 인식되지 않는다.
HAT을 끼운 뒤 SD카드를 꽂고, 마지막으로 전원을 연결한다. 첫 부팅은 준비 작업 때문에 평소보다 오래 걸리므로 1~2분 정도 기다린다. 굽기 단계에서 넣어 둔 정보로 파이가 알아서 와이파이에 접속한다.
Chapter 2. 파이에 접속하기#
이름으로 찾기#
굽기 때 지정한 호스트 이름 뒤에 .local을 붙이면 IP 주소를 몰라도 파이를 찾을 수 있다.
내 PC에서 PowerShell을 열고 아래와 같이 입력한다.
ping canlab.local

네 번 보내서 네 번 모두 응답이 오면 파이가 켜져서 와이파이에 접속했다는 뜻이다. 응답이 없다면 30초 정도 더 기다린 후 다시 시도한다.
터미널로 먼저 접속#
편집기(VS Code)로 바로 붙는 것보다 터미널로 먼저 접속해 보는 편이 좋다. 터미널이 연결되면 계정과 비밀번호, 망 연결에는 문제가 없다는 것이 확인되므로, 이후 편집기가 붙지 않더라도 원인을 편집기 쪽으로 좁힐 수 있다.
ssh pi@canlab.local

처음 접속하면 이 장치를 신뢰하겠냐고 묻는다. yes를 입력한 후 비밀번호를 넣는다.
비밀번호는 입력해도 화면에 아무것도 표시되지 않는데, 이는 정상이므로 그대로 치고 엔터를 누르면 된다.
프롬프트가 pi@canlab:~ $로 바뀌면 접속에 성공한 것이다. 상태를 확인해 보자.
hostname
ip -br addr
canlab
eth0 DOWN
wlan0 UP 192.168.2.12/24

아직 랜선을 연결하지 않았으므로 wlan0에만 주소가 있고 eth0은 비어 있는 것이 정상이다.
키 인증으로 바꾸기#
여기서 인증 방식을 바꾸고 넘어가는 편이 좋다. 터미널은 비밀번호로 잘 접속되는데 편집기에서만 계속 거부되는 상황이 자주 발생하기 때문이다.
이는 편집기가 비밀번호를 다루는 방식 때문에 생긴다. VS Code의 Remote-SSH는 사용자가 친 비밀번호를 ssh에 직접 전달하지 않고, 임시 스크립트를 만들어 그 안에서 ssh를 실행한 뒤 입력을 밀어 넣는다. 이 경로에서 입력이 제대로 전달되지 않으면 비밀번호가 맞더라도 거부된다. 키를 만들어 두면 비밀번호를 묻는 단계 자체가 사라지므로 이 문제가 원천적으로 없어진다.
먼저 파이에서 exit를 입력하여 내 PC의 PowerShell로 돌아온 다음 키를 만든다.
ssh-keygen -t ed25519 -C "canlab"

저장 위치와 암호를 묻는 질문이 세 번 나오는데 전부 그냥 엔터만 누르면 된다. 저장 위치는 기본값을 쓰고 암호는 비워 둔다는 뜻이다.
질문 자리에 다음 명령을 붙여 넣지 않도록 주의한다
저장 위치를 묻는 자리에 다음 명령을 붙여 넣으면 그 문자열이 파일 경로로 해석되어 실패한다. 명령은 한 줄씩 실행한다.
만들어진 키 중 공개된 쪽을 파이에 등록한다. 아래 한 줄을 통째로 복사해서 실행하면 된다.
type "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh pi@canlab.local "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

이 명령을 실행할 때 비밀번호를 한 번 묻는데, 이것이 마지막이다. 다시 접속해 보면 확인할 수 있다.
ssh pi@canlab.local

비밀번호를 묻지 않고 바로 프롬프트가 뜨면 성공이다.
접속 정보 저장#
매번 주소와 계정을 입력하는 대신 설정 파일에 적어 두면 편집기에서 목록으로 골라 접속할 수 있다.
오타로 인한 실수도 줄어든다. 파이에서 exit를 입력해 내 PC의 PowerShell로 돌아온 뒤 실행한다.
New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null
Add-Content "$env:USERPROFILE\.ssh\config" @"
Host canlab
HostName canlab.local
User pi
IdentityFile ~/.ssh/id_ed25519
Host canlab-eth
HostName 192.168.10.2
User pi
IdentityFile ~/.ssh/id_ed25519
"@

두 개를 등록해 두는 이유는 접속 경로를 골라서 쓰기 위해서다.
canlab은 이름으로 찾아가므로 와이파이와 랜선 중 살아 있는 쪽으로 붙고,
canlab-eth는 주소를 직접 지정하므로 항상 랜선 경로로 붙는다.
와이파이가 막혔을 때나 이더넷 실습에서 경로를 확실히 하고 싶을 때 후자를 쓰면 된다.
편집기로 접속#
VS Code의 확장 탭에서 Remote - SSH를 설치한 후, F1 을 눌러 명령 팔레트를 열고
Remote-SSH: Connect to Host를 실행한다.

목록에 방금 저장한 canlab이 나타나므로 그것을 고른다.

여기서 실수가 가장 많이 나온다. 접속 대상을 직접 입력할 때 터미널에서처럼 ssh pi@canlab.local이라고
적으면 접속에 실패한다. 그 칸은 명령을 적는 자리가 아니라 접속할 대상만 적는 자리이기 때문이다.
ssh를 적으면 편집기가 앞에 ssh를 한 번 더 붙여서 ssh "ssh pi@canlab.local"과 같은 명령이 실행되고,
ssh라는 이름의 서버에 접속하려는 꼴이 되어 비밀번호를 계속 묻다가 거부된다.
| 입력 | |
|---|---|
| 잘못된 입력 | ssh pi@canlab.local |
| 올바른 입력 | pi@canlab.local |
목록에서 canlab을 고르면 이 실수를 할 일이 없으므로, 앞에서 설정 파일을 만들어 둔 것이다.
접속할 운영 체제를 묻는 화면이 나오면 Linux를 선택한다.

첫 접속에는 1~2분 정도 걸린다. 편집기가 파이에 자기 서버를 내려받아 설치하기 때문이다.
파이에 VS Code를 따로 설치할 필요는 없다. 창 왼쪽 아래에 SSH: canlab이 표시되면 연결이 완료된 것이다.

편집기가 접속되지 않을 때
무엇 때문에 막혔는지 먼저 확인한다. Ctrl+Shift+U 로 출력 패널을 열고 오른쪽 위 목록에서 Remote - SSH를 고르면 접속 과정이 기록되어 있다.
Permission denied가 보이면 인증 문제이므로 키 등록과 ssh 입력 실수를 확인한다.
Initializing VS Code Server에서 멈춰 있다면 서버 설치 문제이므로, 실패한 흔적을 지우고
파이의 인터넷 연결을 확인한 후 다시 시도한다.
rm -rf ~/.vscode-server
ping -c 3 8.8.8.8
지운 뒤에는 편집기를 완전히 종료했다가 다시 실행해야 한다.
Chapter 3. 실습용 통로 만들기#
여기서부터 랜선을 사용한다. 내 PC와 파이를 랜선으로 직접 연결한다.
1:1로 연결하면 주소를 나누어 줄 장치가 없으므로 양쪽 모두 주소를 직접 지정해야 한다. 와이파이는 공유기가 자동으로 주소를 배정해 주지만, 직결 구간에는 그런 역할을 하는 장치가 없기 때문이다.
내 PC에 고정 IP 지정#
Win+R 을 눌러 ncpa.cpl을 실행하면 네트워크 연결 목록이 열린다.

랜선이 꽂힌 이더넷 어댑터를 우클릭하여 속성을 연다.

인터넷 프로토콜 버전 4(TCP/IPv4)를 선택한 후 다시 속성을 누른다.

"다음 IP 주소 사용"을 선택하고 아래 값을 넣는다.
| 항목 | 값 |
|---|---|
| IP 주소 | 192.168.10.1 |
| 서브넷 마스크 | 255.255.255.0 |
| 기본 게이트웨이 | 비움 |
| DNS 서버 | 비움 |

게이트웨이를 채우면 인터넷이 끊긴다
게이트웨이는 "여기로 나가면 바깥과 통한다"는 의미이다. 인터넷이 없는 직결 랜선에 이 값을 넣으면 PC가 인터넷 트래픽을 그쪽으로 보내려 하므로 인터넷이 되지 않는다. 반드시 비워 둔다.
확인을 눌러 창을 닫고 설정을 적용한다.

값이 들어갔는지 확인한다.
ipconfig

이더넷 어댑터에 192.168.10.1이 보이고, 무선 LAN 어댑터에는 원래 주소가 그대로 남아 있어야 한다.
인터넷은 와이파이로, 실습은 랜선으로 분리된 상태이다.
파이에 고정 IP 지정#
랜선을 꽂고 몇 초 기다린 후, 파이에서 연결 목록을 확인한다.
nmcli con show
NAME TYPE DEVICE
netplan-wlan0-ACES_5G wifi wlan0
netplan-eth0 ethernet eth0

유선 연결의 이름을 확인하고, 그 이름으로 주소를 지정한다. 아래 명령의 netplan-eth0은 예시이므로
화면에 보이는 이름을 그대로 사용해야 한다.
sudo nmcli con mod netplan-eth0 ipv4.method manual ipv4.addresses 192.168.10.2/24
sudo nmcli con up netplan-eth0

여기서도 게이트웨이는 지정하지 않는다. 인터넷은 계속 와이파이로 나가야 하기 때문이다.
서로 연결되었는지 확인#
파이에서 주소가 들어갔는지 보고 내 PC를 불러 본다.
ip -br addr
ping -c 3 192.168.10.1
PC의 방화벽이 ping 요청을 막고 있지 않다면 아래와 같이 응답이 돌아온다.

내 PC에서도 반대 방향으로 확인한다.
ping 192.168.10.2

양쪽 모두 응답이 오면 실습용 통로가 완성된 것이다.
PC에서는 파이로 ping이 되는데 파이에서는 PC로 되지 않을 때
Windows 방화벽이 외부에서 들어오는 ping 요청을 막고 있을 가능성이 높다. 내 PC에서 Windows PowerShell을 관리자 권한으로 실행하고 아래 규칙을 추가한다.
netsh advfirewall firewall add rule name="Allow ICMP Ping" protocol=icmpv4:8,any dir=in action=allow remoteip=192.168.10.0/24

규칙이 들어갔는지 확인하려면 다음 명령을 사용한다.
netsh advfirewall firewall show rule name="Allow ICMP Ping"
실습이 끝난 뒤 규칙을 지우려면 다음 명령을 실행한다.
netsh advfirewall firewall delete rule name="Allow ICMP Ping"
이 규칙은 192.168.10.0/24 직결 구간에서 들어오는 IPv4 ping만 허용한다.
Chapter 4. CAN FD 인터페이스 살리기#
개발 도구 설치#
프레임을 주고받고 관찰하는 데 필요한 도구를 설치한다. 이 작업은 인터넷이 필요하므로 와이파이가 연결되어 있어야 한다.
sudo apt update
sudo apt install -y can-utils build-essential cmake git
can-utils에는 실습 내내 사용할 명령들이 들어 있다. 프레임을 관찰하는 candump,
프레임을 보내는 cansend, 부하를 만드는 cangen이 대표적이다. 설치가 끝났는지 확인해 보자.
which cansend candump cangen

세 경로가 모두 출력되면 정상이다.
오버레이 추가#
HAT을 꽂았다고 해서 바로 인식되는 것은 아니다. 어느 칩이 어느 통로에 붙어 있는지를 설정 파일에 적어 주어야 커널이 드라이버를 올린다.
여기서 주의할 점이 하나 있다. 라즈베리파이는 SPI 통로를 여러 개 가지고 있는데,
그중 두 번째 통로(spi1)는 기본적으로 꺼져 있다. 이것을 켜는 줄을 빠뜨리면
첫 번째 채널인 can0만 잡히고 can1은 아무리 기다려도 나타나지 않는다.
아래 블록을 통째로 복사해서 실행하면 설정 파일 끝에 네 줄이 추가된다.
sudo tee -a /boot/firmware/config.txt > /dev/null <<'EOF'
dtparam=spi=on
dtoverlay=spi1-1cs
dtoverlay=mcp251xfd,spi0-0,interrupt=25,oscillator=40000000
dtoverlay=mcp251xfd,spi1-0,interrupt=24,oscillator=40000000
EOF
실행 후 아래 명령으로 파일 끝을 확인한다.
tail -n 6 /boot/firmware/config.txt

한 번만 실행한다
이 명령은 파일 끝에 덧붙이는 방식이므로, 두 번 실행하면 같은 내용이 두 번 들어간다. 아래 화면처럼 네 줄이 반복되어 보이면 중복된 줄을 정리해야 한다.

설정을 반영하려면 재부팅해야 한다.
sudo reboot
인식 확인#
1~2분 후 다시 접속하여 커널이 칩을 찾았는지 확인한다.
dmesg | grep -i mcp
mcp251xfd spi0.0 can0: MCP2518FD rev0.0 ... successfully initialized.
mcp251xfd spi1.0 can1: MCP2518FD rev0.0 ... successfully initialized.
두 줄이 모두 보여야 한다. 한 줄만 보인다면 dtoverlay=spi1-1cs가 빠졌거나 오타가 있을 가능성이 높다.
이어서 인터페이스 목록과 주소를 확인한다.
ip -br link | grep can
ip -br addr show eth0

can0과 can1이 보이고, eth0에 앞서 지정한 192.168.10.2/24가 그대로 남아 있으면 정상이다.
두 채널 올리기#
인식만 된 상태이므로 통신 속도를 정해 주고 활성화해야 한다.
중재 구간은 500 kbit/s, 데이터 구간은 2 Mbit/s로 설정한다. 이론에서 다룬 두 구간의 속도가
그대로 명령의 bitrate와 dbitrate에 대응된다. 양쪽 채널의 값이 같아야 통신이 이루어진다.
sudo ip link set can0 up type can bitrate 500000 dbitrate 2000000 fd on
sudo ip link set can1 up type can bitrate 500000 dbitrate 2000000 fd on
ip -br link | grep can
이 설정은 전원을 껐다 켜면 사라진다. 매번 두 줄을 입력하는 것이 번거로우므로 스크립트로 만들어 두면 다음부터는 한 줄로 끝난다.
cat > ~/canup.sh <<'EOF'
#!/bin/bash
sudo ip link set can0 up type can bitrate 500000 dbitrate 2000000 fd on
sudo ip link set can1 up type can bitrate 500000 dbitrate 2000000 fd on
EOF
chmod +x ~/canup.sh

점퍼 연결과 첫 통신#
두 채널을 점퍼로 이어 실제 버스를 만든다. can0의 H와 can1의 H를 잇고, L끼리도 마찬가지로 잇는다.
CAN은 두 선의 전압 차이로 값을 읽는 차동 신호 방식이므로 엇갈려 꽂으면 통신되지 않는다.
보드의 종단저항이 양쪽 모두 연결되어 있는지도 함께 확인한다.
상태를 확인했을 때 한쪽만 UP으로 보이는 경우가 있다.
can0 UP <NOARP,UP,LOWER_UP,ECHO>
can1 DOWN <NO-CARRIER,NOARP,UP,LOWER_UP,ECHO>
앞의 DOWN만 보고 명령이 실패했다고 생각하기 쉬운데, 괄호 안을 보면 UP이 들어 있으므로
설정 자체는 정상적으로 들어간 것이다. NO-CARRIER는 버스에 상대가 없다는 뜻이며,
점퍼가 제대로 꽂히지 않았을 때 나타난다. 점퍼를 다시 끼우면 둘 다 UP으로 바뀐다.
이제 실제로 프레임을 주고받아 본다. 터미널을 두 개 열고, 한쪽에서는 관찰하고 다른 쪽에서 보낸다.
VS Code의 터미널 패널에서 + 버튼을 누르면 창을 하나 더 열 수 있다.
candump can1
cansend can0 123#DEADBEEF

관찰 중인 터미널에 아래와 같이 찍히면 두 채널이 이어진 것이다.
can1 123 [4] DE AD BE EF
CAN FD 프레임도 보내 보자. #을 두 개 쓰면 CAN FD 프레임이 되고, 바로 뒤에 오는 숫자가
데이터 구간의 속도 전환 여부를 나타낸다.
cansend can0 123##1112233445566778899AABBCC

can1 123 [12] 11 22 33 44 55 66 77 88 99 AA BB CC
대괄호 안의 길이가 8을 넘었다는 것은 클래식 CAN으로는 담을 수 없는 프레임, 즉 CAN FD 프레임이 오갔다는 뜻이다.
Chapter 5. 확인과 문제 해결#
완료 확인#
아래 여섯 가지가 모두 되면 환경 구축이 끝난 것이다.
- 편집기 왼쪽 아래에 접속한 이름이 표시된다
- 비밀번호를 묻지 않고 접속된다
- 내 PC와 파이가 서로
ping에 응답한다 can0과can1이 인터페이스 목록에 보인다can0에서 보낸 프레임이can1에 찍힌다- 8바이트를 넘는 프레임이 오간다
증상별 확인 사항#
| 증상 | 확인할 것 |
|---|---|
| 이름으로 파이를 찾지 못함 | 호스트 이름이 다른 실습생과 겹치지 않는지, 전원과 부팅 시간, 굽기 때 SSH와 와이파이를 넣었는지 |
| 터미널은 되는데 편집기만 안 됨 | 접속 대상에 ssh를 함께 적었는지, 키 인증이 되는지 |
| 편집기가 설치 중 멈춤 | 파이의 인터넷 연결, ~/.vscode-server 삭제 후 재시도 |
| PC에서는 파이로 ping이 되는데 반대 방향은 안 됨 | Windows 방화벽의 Allow ICMP Ping 규칙 |
| 양쪽 모두 ping이 되지 않음 | 서브넷 마스크, 양쪽 주소 대역, 랜선 연결 상태 |
can0이 보이지 않음 |
설정 파일 오타, 재부팅 여부, HAT 장착 상태 |
can1만 보이지 않음 |
설정 파일에 dtoverlay=spi1-1cs가 있는지 |
한쪽 채널만 UP |
점퍼 H-H · L-L 연결 상태 |
command not found |
도구 설치 단계를 건너뛰지 않았는지 |
| 보냈는데 찍히지 않음 | 점퍼 연결, 양쪽 속도 값 동일 여부, 종단저항 |
문제가 생겼을 때는 단순한 쪽부터 하나씩 확인하는 것이 빠르다. 이름으로 응답하는지, 터미널로 접속되는지, 키로 접속되는지, 편집기로 접속되는지 순서로 확인하면 어느 단계에서 막히는지가 곧 원인의 위치가 된다.
접속 경로 바꾸기#
와이파이가 느려지거나 사용할 수 없을 때는 랜선 경로로 넘어간다.
두 경로를 모두 연결해 두었다면 한쪽이 끊어져도 접속이 이어지지만,
랜선으로 확실히 붙고 싶다면 주소를 직접 지정하거나 앞에서 만들어 둔 canlab-eth를 고르면 된다.
ssh pi@192.168.10.2
전환이 되는지 미리 확인해 보고 싶다면 파이에서 와이파이를 잠시 꺼 본다. 다만 이 실험은 파이가 손에 닿는 곳에 있을 때 하는 것이 좋다.
sudo nmcli radio wifi off
sudo nmcli radio wifi on
다음 실습을 위한 준비 상태#
| 구분 | 값 |
|---|---|
| 호스트 이름 | canlab |
| 사용자 | pi |
| 파이 주소 (랜선) | 192.168.10.2 |
| 내 PC 주소 (랜선) | 192.168.10.1 |
| CAN 채널 | can0, can1 |
| 중재 구간 속도 | 500 kbit/s |
| 데이터 구간 속도 | 2 Mbit/s |
이후의 실습은 모두 이 환경 위에서 진행된다. 이더넷 실습에서도 오늘 만든 랜선 통로와 주소를 그대로 사용한다.