작가
델 해치
** UDP를 통한 통신
이 프로젝트의 목적은 Zedboard를 사용하여 UDP를 통한 데이터 전송을 시연하는 것입니다. 이는 약간의 수정을 거쳐 MicroZed 및 기타 Zynq 기반 보드에서 사용할 수 있습니다.
** Vivado를 사용하여 Zynq 시스템 구축
아래 그림을 가이드로 사용하여 Zynq 시스템을 구축합니다. AXI 상호 연결, 프로세서 재설정 및 GPIO 모듈은 선택 사항이지만 나중에 명령/제어/디버깅을 위해 추가하고 싶습니다.
모든 시스템 기본값, 주변 장치 자동 주소 할당 및 시스템 구성 기본값을 사용할 수 있으므로 어떤 것도 사용자 정의할 필요가 없습니다.
시스템을 구축하고 하드웨어(비트 파일 포함)를 내보낸 후 SDK를 시작합니다.
** SDK 및 소프트웨어
SDK가 열리면 파일 -> 새로 만들기 -> 애플리케이션 프로젝트를 클릭합니다.
프로젝트 이름을 지정한 후 다음을 클릭합니다.
사용 가능한 템플릿 목록에서 "lwIP Echo Server"를 선택하고 완료합니다.
이 시점에서 Zedboard에서 Echo 서버를 컴파일, 로드 및 실행할 수 있습니다. PuTTY를 사용하여 작동하는 모습을 확인합니다.
PuTTY를 실행하고, main.c 파일에 정의된 Zedboard의 IP 주소를 입력하고, Port 값을 7로 설정하고, 연결 유형으로 "Telnet"을 선택합니다. 열리는 창에서 문자를 입력하면 해당 문자가 PuTTY에 다시 표시되는 것을 볼 수 있습니다.
** UDP를 사용하도록 Echo 서버 변경
기본 lwIP Echo 서버는 TCP를 사용합니다. 대신 UDP를 사용하도록 변환하려면 제공된 main.c를 이 Github 저장소의 main.c로 바꾸십시오. 또한 echo.c 파일을 교체하십시오.
또한, include.h 파일을 다운로드하여 프로젝트에 추가하세요.
파일을 프로젝트의 project.sdk/project/src 디렉터리에 복사합니다. 그런 다음 SDK에서 "프로젝트 탐색기" 프레임의 줄을 강조 표시하고 F5를 눌러 새로 고칩니다.
** 컴파일 및 실행
이제 코드를 컴파일하고 실행해 보세요. 코드가 실행되면 연결된 터미널 프로그램에서 다음을 볼 수 있습니다.
하단의 점은 Zedboard가 UDP 패킷을 보내고 있음을 나타냅니다. 이는 500mSeconds마다 한 번씩 발생합니다. 패킷은 값이 0x45인 단일 정수로 구성됩니다.
전송되는 패킷을 보려면 Wireshark를 사용하십시오.
UDP 패킷을 Zedboard로 전송하는 방법에는 여러 가지가 있습니다. VLC 미디어 플레이어를 사용하여 UDP를 통해 .mpg 파일을 스트리밍하도록 설정했습니다. 이를 수행하는 방법은 다음과 같습니다.
VLC를 실행하고 미디어 -> 스트림...을 클릭하세요.
파일 탭에서 "+추가"를 클릭하고 미디어 파일을 선택합니다. .mpg 비디오 파일을 사용합니다. 스트림 버튼을 클릭하세요.
다음을 클릭하세요. 대상 설정의 경우 새 대상 상자를 풀다운합니다. UDP(레거시)를 선택합니다. 추가를 클릭합니다. Zedboard의 IP 주소를 입력하고 포트를 7로 설정합니다.
다음을 클릭하세요. "트랜스코딩 활성화"를 선택 취소했지만 이 목적에는 중요하지 않습니다.
다음을 클릭한 후 스트림을 클릭합니다.
터미널 프로그램에서는 VLC 프로그램으로부터 Zedboard가 수신한 UDP 데이터그램의 길이를 보여주는 많은 메시지(Zedboard로부터)를 볼 수 있습니다.
** 개선 사항
이 프로젝트는 주로 UDP를 사용하여 Zedboard 또는 기타 Zynq 보드를 사용하여 데이터를 보내고 받는 방법을 시연합니다.
나는 이를 사용하여 Zedboard에서 PC로 미디어를 스트리밍하고 VLC를 사용하여 미디어 스트림을 볼 것입니다.
** 신용 거래
Lance Simms는 UDP를 사용하는 매우 훌륭하고 복잡한 프로젝트를 여기에 게시했습니다: http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
내 프로젝트는 해당 코드 기반을 기본 UDP 원칙으로 축소하여 사용자 지정 프로젝트를 위한 쉽게 확장된 플랫폼을 제공합니다.