We use Subversion for version control of the WARP repository.
The easiest way to access the WARP repository is to simply browse it via this site.
저장소의 액세스를 위해서 서브버전 클라이언트가 필요한데, 매우 유명한 윈도우용 GUI인 TortoiseSVN 를 설치하여 사용하면 편리합니다.
For direct access to our Subversion server, you will need a Subversion client. The command-line Subversion client is installed in OS X 10.5 by default; installation pages for older versions of OS X are available here. TortoiseSVN is an excellent GUI client for Windows.
Anonymous users have checkout permissions for the entire repository. An account is required to commit changes.
Please remember that nearly everything in the WARP repository is covered by the Rice-WARP open-access license. For code contributed by others, the please look for copyright/license notices included with the code. Please be sure you understand the applicable licenses and agree to abide by their terms before using any of our code.
WARPLab 7 은 WARP v3 과 WARP v2 hardware 에 대해서 지원합니다.
For the 2-radio WARPLab reference design:
WARP v3 nodes use the integrated RF interfaces
WARP v2 nodes must have Radio Boards in daughtercard slots 2 and 3
2-radio WARPLab reference design을 위해선,
WARP3 버전의 경우 내장된 RF 인터페이스를 사용하며 WARP2의 경우는 라디오 보드가 필요합니다.
For the 4-radio WARPLab reference design:
WARP v3 nodes must be equipped with the FMC-RF-2X245 radio FMC module
WARP v2 nodes must have Radio Boards in all four daughtercard slots
WARP v1 users should use the WARPLab 6 reference design.
4-radio WARPLab reference design의 실행을 위해선,
WARP3 버전은 반드시 FMC 모듈 (추가 구매 액세서리) 이 필요하고 v2은 라디오 보드 그리고 v1은 WARPLab 6 디자인을 사용해야 합니다. // 후에 직접 실행해보고 다시 자세한 포스팅을 진행할 예정.
Software Requirements
MATLAB 2011a or later (매트랩 버전 2011a 이상 필요)
PC requirements
Dedicated NIC for WARPLab network I/O
Static IP address in the 10.0.0.X subnet
Open firewall for UDP ports (10000 and [9000:9000+numNodes-1])
NIC 카드1개 필요. 서브넷에 정적 IP주소 할당, 오픈 UDP 포트에 대한 방화벽 필요.
Using Jumbo Ethernet Frames
The WARP hardware design supports Ethernet packets up to 9000 bytes.
WARP를 사용하게 되면 이더넷 패킷의 전송은 9000bytes 까지 지원합니다.
하지만 보통의 NIC 카드의 경우 만약 이더넷 패킷의 크기가 1500 bytes 이상일경우 "점보프레임"으로 고려되고 이러한 점보 프레임은 NIC와 스위치간에 패킷 제한 됩니다.
만약 하드웨어가 점보 프레임을 지원하는 경우는, MTU 설정을 최대로 늘립니다. 어디까지 늘려야 할지는 WARP테스트와 Ping 테스트를 하면서 MAX 허용치를 알수가 있다.
Any Ethernet packet larger than 1500 bytes is considered a "jumbo frame" and support for these jumbo frames among consumer NICs and switches is limited. To see if your hardware supports jumbo frames, increase the MTU setting on your computer to the maximum allowed setting. Then, two tests can determine the maximum usable payload: (a) a ping test, and (b) a WARPLab test.
Ping Test 와 WARP Payload 테스트는 아래의 예시와 같이 진행하면 된다.
Ping Max Payload Test
Once the MTU on your machine is raised to its maximum, you can use pings from your computer to determine whether your switch and NIC can actually send and receive jumbo frames. Make sure you have a board configured with the WARPLab bitstream and a DIP switch of '0' (making its IP address 10.0.0.1).
Windows: Open the command line 'cmd.exe' and type the following:
>ping -l 8000 10.0.0.1
This will send 8000 byte pings to the board. If the board responds, Windows will tell you how many bytes were actually returned. For example, we receive the following using one of our PCs:
Pinging 10.0.0.1 with 8000 bytes of data:
Reply from 10.0.0.1: bytes=8000 time=2ms TTL=32
Reply from 10.0.0.1: bytes=8000 time=2ms TTL=32
Reply from 10.0.0.1: bytes=8000 time=2ms TTL=32
Reply from 10.0.0.1: bytes=8000 time=2ms TTL=32
This shows that the 8000 byte ping packet was returned, and you computer and switch appear to support communicating with a WARP board with jumbo frames. If, however, you receive ping responses that look like this:
Pinging 10.0.0.1 with 8000 bytes of data:
Reply from 10.0.0.1: bytes=1472 (sent 8000) time<1ms TTL=32
Reply from 10.0.0.1: bytes=1472 (sent 8000) time<1ms TTL=32
Reply from 10.0.0.1: bytes=1472 (sent 8000) time<1ms TTL=32
Reply from 10.0.0.1: bytes=1472 (sent 8000) time<1ms TTL=32
Then only 1472 bytes were returned of the sent 8000. This means that the packets were fragmented and that the MTU was not set high enough to support the 8000 byte ping packet.
WARPLab Max Payload Test
If the ping test indicates that your PC and your Ethernet switch support jumbo frames, the next step is to see if WARPLab works with jumbo frames. When node objects are first set up in a WARPLab script, they run a test with their associated boards to see what maximum payload size can be supported.
First, re-run the wl_setup function in M_Code_Reference and select that you would like to enable jumbo frame support. Next, ensure one WARP board is programmed with the WARPLab bitstream and configured with DIP switch '0'. Then, copy and paste the following lines to the MATLAB command line:
clear;
node = wl_initNodes(1);
disp(node.transport.maxPayload)
This will display the payload size the WARPLab has configured itself to use. For one of our PCs, this value returns as 8960, showing the jumbo frame support is correctly working.
Jumbo Frame Hardware Compatibility
알려진 점보 프레임이 호환되는 하드웨어는 아래와 같습니다. 참조해주세요.
Support for jumbo frames varies widely across Ethernet NICs, PCs and OSs. Our observations for a variety of hardware/OS combinations are described below. If you try jumbo frames and have a hardware setup that does or does not work with them, please post to the WARP forums so we can add them to the list.
Known Compatible:
Dell workstation, Windows 7 64-bit, Intel(R) 82573LB NIC
Netgear GS105 gigabit switch
Known Partially Compatible:
Apple 2013 Macbook Pro, OSX 10.8.3, Apple Thunderbolt to Gigabit Ethernet Adapter
Appears to have a "hidden" MTU maximum around 8000 (despite the GUI letting you choose 9000)
Apple 2011 Mac Mini, OSX 10.8.3, Broadcom 57765-B0
Appears to work for MTU < 7000
Known Incompatible:
Ethernet NIC using the Broadcom BCM5755 controller
Apple 2010 Macbook Pro using the Broadcom 5764-B0 controller
WARPLab 은 빠른 UDP 프로토콜의 실현을 위하여 MEX (wl_mex_udp_transport) 라는 코드를 제공한다.
In order to provide better performance, the WARPLab reference design includes a MEX implementation (wl_mex_udp_transport) of the WARPLab UDP transport. This implementation provides significantly higher performance than both the java and pnet transports used in previous WARPLab releases.
MEX implementation은 java 와 pnet 보다 고성능을 제공한다. 지난 WARPLab 릴리즈를 참고하세요.
The wl_mex_udp_transport C code must be compiled using MATLAB's MEX tools before it can be used with the WARPLab reference design. MATLAB uses the Microsoft Visual C compiler for creating MEX libraries in Windows. Please refer to the How-To Compile MEX guide for pointers setting up your MATLAB environment for compiling MEX functions.
WARPLab 레퍼wl_mex_udp_transport C 코드는 반드시 매트랩을 사용하여 컴파일도 되어야 합니다.
매트랩은 윈도우에서 MEX 라이브러리를 만들기 위해서 마이크로소프트 비쥬얼 C 컴파일러를 사용한다. 이에 대한 자세한 내용은 링크를 참조하세요. http://warpproject.org/trac/wiki/howto/MEX_Compile
Once your MATLAB environment is ready for MEX compilation, please follow the instructions below to complete the installation of the wl_mex_udp_transport.
만약 당신의 매트랩환경이 MEX compilation 을 사용할 준비가 되었다면 아래의 순서에 따라서 wl_mex_udp_transport 설치를 완료하길 바랍니다.
To install the WARPLab MEX UDP Transport, please perform the following steps:
NOTE: Make sure you are downloading the WARPLab 7.3.0 (or later) release, or your repository is updated to the WARPLab 7.3.0 (or later) release. In order to use this transport on your system, you must compile the wl_mex_udp_transport mex function (see How-To Compile MEX for more information).
NOTE: The wl_mex_udp_transport in WARPLab 7.3.0 only supports Windows operating systems. However, the transport in the repository has been updated to support both Windows and Unix/Mac operating systems. All command lines in this documentation have been updated to support the new version of the transport but are backward compatible with the WARPLab 7.3.0 release.
기본적으로 윈도우 OS에서만 wl_mex_udp_transport 지원이 된다. 유닉스도 가능하니 일단 저장소를 찾아보라.
1. Within MATLAB, change your directory to the M_Code_Reference directory that you unpacked as part of the WARPLab release.
2. Run wl_setup in order to set up your MATLAB paths. When running wl_setup , you should only see the java transport available. If not, please check your paths to make sure there are no issues.
Now your paths should be set up to proceed. Run which wl_mex_udp_transport to check that you can see the mex files. You should see: <your WARPLab install dir>/M_Code_Reference/mex/wl_mex_udp_transport.m
3. Run wl_mex_udp_transport from the MATLAB command line:
나머지 부분은 원문을 참조하라.
Setting up the WARPLab 7 Framework
Download the latest WARPLab Reference Design Release (Download) and unzip it to a location of your choosing.
Open MATLAB and change the current path to the M_Code_Reference directory from the downloaded archive.
Run wl_setup on the MATLAB command line.
Follow the prompts to configure your WARPLab environment.
WARPLab 7의 셋팅은 매우 쉽습니다. 먼저 레퍼런스 디자인 파일을 설치하여 로컬 폴더에 압축을 풉니다.
매트랩에서 경로추가를 하고 wl_setup 파일을 run 합니다.
그 후 매트랩의 지시를 따릅니다.
Hardware Setup
For your PC:
Assign one of your NICs to the manual IP address specified in the wl_setup step above (default: (10.0.0.250, 255.255.255.0))
Connect the NIC to a 1Gb Ethernet switch
앞서 Getting Start 에서 보여드린 PC와 WARP 간의 연결은 AP나 스위치에 LAN 케이블을 통해서 연결됩니다. 따라서 PC와 WARP 의 설정이 필요합니다. 먼저 PC의 경우는 위와 같은 고정되 IP주소를 지정하고 이더넷 스위치에 연결합니다.
For WARP v3 nodes:
Connect ETH_A to the 1Gb Ethernet switch your PC is connected to.
Set the user DIP switch to a unique value on each node, starting at 0
Configure the FPGA with the Reference Design. The reference bitstreams are included in the Bitstreams_Reference folder from the downloaded archive. Find the bitstream appropriate for your hardware and program the .bit file to the board using the Xilinx iMPACT tool. The .bin file can be used to configure an SD card with the design (see the SD config howto for help using the .bin file).
On boot each node will display its node ID on the right hex display
The bottom green LED will blink until the Ethernet link is up
All four green LEDs will blink when the node is ready to accept commands from MATLAB
ETH_A 포트와 PC와 연결된 스위치간에 LAN 케이블로 유선 연결합니다.
각노드들은 고유한 값으로 DIP 스위치를 셋팅합니다.
FPGA와 레퍼런스 디자인을 WARP에 구성합니다.
이는 비트스트림으로 작성된 레퍼런스 입력 파일을 해당 Bitstreams_Reference 폴더에 복사합니다.
SD카드에 구성하는 방법은 이전의 포스팅에서 설명했습니다.
그러고나면 이제 각각의 WARP는 HEX 디스플레이에 해당 노드의 ID값을 디스플레이 합니다.
그리고 하단의 녹색 LED가 깜빡입니다.
이후 WARP 노드가 매트랩의 명령을 받아들일 준비가 다 되면 4개의 LED들이 모두 깜빡입니다.
예를들면,
Examples
Confirm everything is ready by copying and pasting the following lines to the MATLAB command line:
clear
N = 1;
nodes = wl_initNodes(N);
wl_nodeCmd(nodes,'identify');
disp(nodes)
Note: N can be changed to the number of nodes in your network. When you run these lines of code, you should see the User I/O LEDs on your N nodes blink as a result of the identify command. Additionally, you should see your nodes object vector print status messages to the screen. For N = 2, your status display should be similar to:
Displaying properties of 2 wl_node objects:
| ID | WLVER | HWVER | Serial # | Ethernet MAC Addr |