01signal.com

Microsoft Windows에서 Xillybus로 "Hello, world" 테스트

Xillybus의 "Hello, world" 테스트

이 글은 Xillybus 시작하기의 세 번째 단계입니다. Xillybus가 포함된 비트스트림(bitstream)을 FPGA에 이미 로드했고, 호스트에는 드라이버를 설치한 상태입니다. 이제 간단한 테스트를 해볼 차례입니다. 이 테스트의 목적은 디바이스 파일이 제대로 생성되었고 실제로 동작하는지 확인하는 것입니다.

이 페이지에서는 Windows 호스트에서 Xillybus를 사용하는 경우를 다룹니다. Linux용 비슷한 페이지도 있습니다.

여기서는 PCIe를 이용하는 Xillybus에 초점을 맞추지만, XillyUSB의 경우도 거의 동일합니다. 차이점은 이 페이지 하단에 정리되어 있습니다.

이 주제에 대한 자세한 내용은 Windows 호스트에서 Xillybus 시작하기 문서를 참조하십시오.

PCIe 장치가 인식되었나요?

장치 관리자(Device Manager)에는 인식된 PCIe 장치들이 표시됩니다. 이 내용은 드라이버 설치 과정에서 이미 다루었습니다.

드라이버를 설치하기 전에는 Xillybus 장치가 "기타 장치(Other Devices)" 목록에 나타납니다. 드라이버를 설치한 뒤에는 "Xillybus"라는 그룹 아래에 이 장치가 표시됩니다. 장치 관리자에 이 두 항목 중 어느 것도 보이지 않는다면 FPGA가 PCIe 장치로 인식되지 않은 것입니다. FPGA에 문제가 있는 것이며, 흔히 FPGA에 로드된 비트스트림이 무엇인지 혼동되어 이런 일이 생깁니다.

이 주제에 대한 스크린샷과 자세한 설명은 Windows 시작 가이드에 있습니다.

드라이버가 제대로 시작되었나요?

다음 단계는 드라이버 상태를 확인하는 것입니다. 장치 관리자에서 Xillybus 그룹의 아이콘(장치 이름은 "Xillybus driver for generic FPGA interface")을 마우스 오른쪽 버튼으로 클릭한 뒤 "속성(Properties)"을 선택하십시오. 팝업 창이 열리면 "장치 상태(Device status)"라는 제목의 텍스트 영역을 확인하십시오. 이 영역에는 "이 장치가 올바르게 작동하고 있습니다."라고 표시되어야 합니다. 이는 드라이버가 Xillybus를 성공적으로 초기화하고 필요한 디바이스 파일을 생성했음을 의미합니다.

다른 내용이 표시된다면 드라이버 초기화 과정에서 문제가 발생한 것입니다. 대개 FPGA의 로직에 문제가 있는 경우입니다. 특히 FPGA 내부의 PCIe 블록(block)이 잘못 설정되었을 때 이런 일이 자주 발생합니다. 예를 들어 데모 번들(demo bundle)에서 PCIe 블록의 파라미터를 변경하면 이런 종류의 오류가 생길 수 있습니다.

문제에 대한 자세한 정보는 Windows의 이벤트 뷰어(Event Viewer)에서 확인할 수 있습니다. Xillybus 드라이버의 메시지를 필터링하려면 "Xillybus"라는 원본(source)에서 온 메시지를 표시하는 사용자 지정 보기(custom view)를 만들면 됩니다. 이 작업 방법은 Windows 시작 가이드에 자세히 설명되어 있습니다.

"Hello, world"

드라이버는 \\.\xillybus_read_8, \\.\xillybus_read_32, \\.\xillybus_write_8, \\.\xillybus_write_32, \\.\xillybus_mem_8 등 다섯 개의 디바이스 파일을 생성합니다. 참고로 IP Core Factory에서 커스텀 IP 코어(custom IP core)를 만들면 생성할 디바이스 파일의 개수는 물론 이름과 속성도 직접 선택할 수 있습니다.

하지만 지금 FPGA에는 데모 번들(demo bundle)이 들어 있습니다. 디바이스 파일 두 개를 사용해 보겠습니다. 이 디바이스 파일들은 사실 운영 체제 객체이지만, 일반 파일처럼 접근할 수 있습니다. \\.\라는 접두어는 Windows에서 저수준 프로그래밍(low-level programming)에 익숙하지 않은 사람에게는 낯설게 보일 수 있습니다. 그러나 이것은 사용자 공간(user-space) 소프트웨어(주로 DLL)가 하드웨어에 접근할 때 사용하는 일반적인 방식입니다.

데모 번들에는 read_8과 write_8 사이에 루프백(loopback)이 있습니다. 즉, 컴퓨터가 write_8에 데이터를 쓰면 FPGA가 read_8을 통해 똑같은 데이터를 되돌려 보냅니다. 이 루프백은 단지 시연용으로만 만들어졌습니다. 실용적인 다른 용도는 없습니다.

테스트 방법은 다음과 같습니다. 컴퓨터에서 명령 프롬프트(Command Prompt) 창 두 개를 엽니다. 두 명령 프롬프트 창 모두에서 디렉터리를 "precompiled-demoapps"로 변경하십시오. 이 디렉터리는 "xillybus-windowspack" 디렉터리 안에 있습니다. 앞서 데모 번들과 함께 xillybus-windowspack.zip을 내려받으라고 제안했던 것을 기억하십시오.

첫 번째 명령 프롬프트 창에 다음을 입력합니다.

$ streamread \\.\xillybus_read_8

그런 다음 두 번째 명령 프롬프트 창에 다음을 입력합니다.

$ streamwrite \\.\xillybus_write_8

이제 두 번째 명령 프롬프트 창에서 아무 내용이나 입력하고 ENTER를 누르십시오. 첫 번째 명령 프롬프트 창에 같은 텍스트가 표시됩니다. 이를 통해 입력한 텍스트가 디바이스 파일로 쓰인 뒤 FPGA에 도달하고, 다시 컴퓨터로 돌아와서 첫 번째 창에 표시되는 과정을 확인할 수 있습니다.

CTRL-C를 누르면 이 두 프로그램을 중지할 수 있습니다.

이 프로그램들의 소스 코드는 같은 zip 파일 안의 demoapps 하위 디렉터리에서 찾을 수 있습니다. 이 프로그램들은 C 언어로 작성되어 있으며, 표준 입출력 API를 사용해 Xillybus의 디바이스 파일에 접근하는 방법을 보여 줍니다. Windows 시작 가이드에는 이 프로그램들을 컴파일하는 방법이 안내되어 있습니다.

이 예제는 단순하지만, 그 동작 원리를 이해하는 것이 중요합니다. 특히 FPGA 안의 로직이 어떻게 이런 동작을 만들어 냈는지를 이해하는 것이 중요합니다. 여러분만의 로직을 통합하기 위한 출발점이 바로 이것입니다.

XillyUSB

XillyUSB를 사용하는 경우에도 위에서 설명한 내용이 모두 적용되지만, 몇 가지 차이점이 있습니다.

XillyUSB에는 showdiagnostics라는 도구가 있어 FPGA와의 물리적 연결 품질을 검사할 수 있습니다. 원시 데이터 링크(raw data link)에 오류가 없는지 확인하기 위해 이 도구를 사용하는 것이 좋습니다. XillyUSB가 완벽하게 동작하는 것처럼 보여도 이 검사를 반드시 수행하는 것이 중요합니다. USB 3.0 프로토콜이 원시 데이터 링크에서 발생하는 오류를 숨겨 주기는 하지만, 그런 오류가 드물게는 버그처럼 보이는 문제를 일으킬 수 있기 때문입니다.

이런 종류의 오류를 참을 이유가 없습니다. 해결 방법은 대개 간단합니다. 예를 들어 컴퓨터의 다른 USB 포트를 사용하면 됩니다.

다른 차이점은 다음과 같습니다.

이 페이지는 영어 원문을 기계 번역한 것입니다. 의문이 드는 부분이 있으면 원문을 참조하시기 바랍니다.
Copyright © 2021-2026. All rights reserved. (dcc38493)