Commit bd16ce1e authored by Maciej Lipinski's avatar Maciej Lipinski Committed by Adam Wujek

[tb/wrpc] added comments to the new wrc_main_sim file

parent 19789c08
/* /* ****************************************************************************
* This work is part of the White Rabbit project * This work is part of the White Rabbit project
* *
* Copyright (C) 2017 CERN (www.cern.ch) * Copyright (C) 2017 CERN (www.cern.ch)
...@@ -6,6 +6,20 @@ ...@@ -6,6 +6,20 @@
* Author: Maciej Lipinski <maciej.lipinski@cern.ch> * Author: Maciej Lipinski <maciej.lipinski@cern.ch>
* *
* Released according to the GNU GPL, version 2 or any later version. * Released according to the GNU GPL, version 2 or any later version.
*
* ****************************************************************************
* Description:
* This file provides the main() function that replaces the main function of
* wrc_main.c file when WRPC is compiled for testbench. This is done by
* configuring WRPC using make menuconfig:
* a) by using the default wrpc_sim_defconfig, i.e. "make wrpc_sim_defconfig", or
* b) by chosing in make menuconfig the following opton:
* "Build simple software for test of WR PTP Core in simulatin"
*
* When compiled for testbench simulation, the main() function of this file is
* used. This file includes all the tests needed for different testbenches
* (so far only one...)
* ****************************************************************************
*/ */
#include <stdio.h> #include <stdio.h>
...@@ -20,8 +34,23 @@ ...@@ -20,8 +34,23 @@
void wrc_run_task(struct wrc_task *t); void wrc_run_task(struct wrc_task *t);
/*
* This is a variable that is meant to be set by testbench through memory-manipulation.
*
* To allow this, there are still some elements missing:
* - the test_number variable needs to be at a known address, this is already done
* for other variables (for VLANs?), so the same needs to be done for this
* - testbench needs to be modified appropriately
*
* The idea behind is that different tests for different testbenches are compiled in
* this file, and the proper test is loaded based on this variable. Each testbench
* sets the proper testbench number at th startup
*/
static int test_number = 0; static int test_number = 0;
/*
* Basic initialization required for simulation
*/
static void wrc_sim_initialize(void) static void wrc_sim_initialize(void)
{ {
uint8_t mac_addr[6]; uint8_t mac_addr[6];
...@@ -29,6 +58,7 @@ static void wrc_sim_initialize(void) ...@@ -29,6 +58,7 @@ static void wrc_sim_initialize(void)
sdb_find_devices(); sdb_find_devices();
timer_init(1); timer_init(1);
//Source MAC used by WRPC's Endpoint
mac_addr[0] = 0xDE; mac_addr[0] = 0xDE;
mac_addr[1] = 0xAD; mac_addr[1] = 0xAD;
mac_addr[2] = 0xBE; mac_addr[2] = 0xBE;
...@@ -44,6 +74,23 @@ static void wrc_sim_initialize(void) ...@@ -44,6 +74,23 @@ static void wrc_sim_initialize(void)
spll_very_init(); spll_very_init();
} }
/* /*
* This is a test used by:
* - WRPC testbench located in "testbench/wrc_core" folder of the wr-cores repository
* (git://ohwr.org/hdl-core-lib/wr-cores.git)
*
* This test:
* - sends min-size frames of PTP EtherType (0x88f7) and Dst MAC (01:1B:19:00:00:00)
* with embedded sequence number and flags providing information about the previously
* received frame
* - checkes whether the transmitted frames are successfully received back in a proper
* sequence (it is supposed that the testbench loops back the frames)
* - embeds in the next frame flag and return value regarding the previously received
* frames, i.e.:
* # the flags say:
* 0xAA: this is the first frame (no previous frames)
* 0xBB: previous frame was successfully received
* 0xE*: something was wrong with the previously received frame
* # return value - it is the value returned by the reception funcation
* *
*/ */
int wrpc_test_1(void) int wrpc_test_1(void)
...@@ -71,7 +118,7 @@ int wrpc_test_1(void) ...@@ -71,7 +118,7 @@ int wrpc_test_1(void)
for(j=0; j<80; ++j) { for(j=0; j<80; ++j) {
tx_payload[j] = 0xC7;//j; tx_payload[j] = 0xC7;//j;
} }
//address and EtherType //MAC address and EtherType of PTP
memcpy(tx_hdr.dstmac, "\x01\x1B\x19\x00\x00\x00", 6); memcpy(tx_hdr.dstmac, "\x01\x1B\x19\x00\x00\x00", 6);
tx_hdr.ethtype = htons(0x88f7); tx_hdr.ethtype = htons(0x88f7);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment