Embedded Linux USB Ethernet Gadget 사용하기
LAN이나 WiFi가 없는
보드에서 개발하기엔 불편한 부분이 많다.
가장 불편한 부분은 수정하여 빌드한 바이너리 파일을 보드에 올려 테스트 할 떄마다 전체 커널 이미지를 다시 올려야하는 수고스러움 이다. 이때 유용하게 사용할 수 있는 방법이 USB Ethernet gadget을
연결하여 NFS등을 사용하는 것이다.
USB Ethernet Gadget 커널 설정 방법
Kernel menuconfig의 Device
Drivers > USB support > USB Gadget Support에서 Ethernet
Gadget (with CDC Ethernet support)를 선택한다. RNDIS support도 선택해야 한다.
특정 프로세서에서는 kernel config이외에 다른 설정이나 소스
수정이 필요한 경우도 있다. Allwinner 의 A20이나
A64등의 경우 usb gadget 커널 드라이버 소스에서
is_udc_enable=1을 해주는 등의 소스 수정도 필요하다.
Sunxi_udc.c
static u8 is_udc_enable = 1;
커널 빌드 후 이미지를 디바이스에 올린 다음 부팅한다.
부팅 후 ifconfig를 사용하여 usb0의 ip를 설정할 수 있다.
디바이스를 windows PC와 USB로
연결하면,
디바이스 드라이버를 설치하라고 나오는 경우 커널 소스의 Documents/USB/linux.inf를
설치한다.
USB Serial Port라고 인식하는 경우, 장치 관리자에서 드라이버 업데이트를 선택하여 수동으로 위 linux.inf 드라이버를
설치한다.
드라이버는 서명이 안되어 있어, 드라이버 인증을 사용하지 않는 모드로
부팅하여 사용하던지, 관리자 모드의 windows powershell에서
아래 명령어를 사용하고 리부팅 후 설치해야 한다.
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
[note] enable 명령어 ->
bcdedit.exe -set loadoptions ENABLE_INTEGRITY_CHECKS
연결이 완료되면 아래 그림과 같이 연결된다.
IP는 수동으로 설정하면 된다. 디바이스에서
설정한 IP와 같은 서브넷 주소를 사용하면 된다. 그리고, 서브넷 접두사 길이는 24로 설정한다.
VirtualBox등을 사용할 때 네트워크 설정에서 아래와 같이 Linux USB Ethernet/RNDIS Gadget을 선택하면 된다.
댓글
댓글 쓰기